From f3216366e9d56bb0d1c160b376aa178639abc57e Mon Sep 17 00:00:00 2001 From: Prithvi Moses Date: Sat, 1 Aug 2026 12:46:52 +1000 Subject: [PATCH 1/2] s1-secops-skills v1.2.16: sync claude-skills v1.2.16 release Vendored MCP (s1-secops-mcp) 1.2.3 -> 1.2.4: defect-review fixes across lib/tools (retry-after backoff, uamSetStatus write verification, cred rotation, HTTP transport) plus the new regressions-2026-07-31 test suite (npm test green, 56/56). All skills re-synced. Plugin 1.2.14 -> 1.2.16; install docs bumped to image s1-mcps:1.2.5 / vendored npm 1.2.4. dist rebuilt. --- .claude-plugin/marketplace.json | 2 +- mcp/s1-secops-mcp/README.md | 2 +- mcp/s1-secops-mcp/deploy/README.md | 28 +- mcp/s1-secops-mcp/deploy/bridge/README.md | 10 +- .../deploy/bridge/s1-secops-mcp-bridge.mjs | 30 +- .../deploy/caddy/Caddyfile.example | 2 +- mcp/s1-secops-mcp/deploy/install.sh | 66 +- .../deploy/systemd/s1-secops-mcp.service | 7 +- mcp/s1-secops-mcp/lib/auth.js | 4 +- mcp/s1-secops-mcp/lib/credentials.js | 15 +- mcp/s1-secops-mcp/lib/hec.js | 12 +- mcp/s1-secops-mcp/lib/http-transport.js | 30 +- mcp/s1-secops-mcp/lib/s1.js | 351 +-- mcp/s1-secops-mcp/lib/sdl.js | 18 +- mcp/s1-secops-mcp/lib/server-core.js | 4 +- mcp/s1-secops-mcp/lib/uam-ingest.js | 28 +- mcp/s1-secops-mcp/package.json | 4 +- .../scripts/regen-readme-tools-table.mjs | 2 +- mcp/s1-secops-mcp/scripts/smoke-test-http.sh | 19 +- mcp/s1-secops-mcp/scripts/test-mac.sh | 40 +- .../tests/http-origin-guard.test.mjs | 2 +- .../tests/http-transport.test.mjs | 6 +- .../tests/regressions-2026-07-31.test.mjs | 177 ++ mcp/s1-secops-mcp/tests/smoke.test.mjs | 11 +- mcp/s1-secops-mcp/tests/ssrf-path.test.mjs | 4 +- .../tests/stdio-transport.test.mjs | 5 +- mcp/s1-secops-mcp/tests/test_uam_ingest.mjs | 12 +- mcp/s1-secops-mcp/tools/hyperautomation.js | 12 +- mcp/s1-secops-mcp/tools/mgmt-console.js | 37 +- mcp/s1-secops-mcp/tools/powerquery.js | 14 +- mcp/s1-secops-mcp/tools/sdl-api.js | 8 +- mcp/s1-secops-mcp/tools/uam-ingest.js | 12 +- .../.claude-plugin/plugin.json | 2 +- plugins/s1-secops-skills/README.md | 12 +- .../dist/hyperautomation.skill | Bin 66456 -> 66709 bytes .../dist/mgmt-console-api.skill | Bin 2152211 -> 2150778 bytes .../s1-secops-skills/dist/powerquery.skill | Bin 99660 -> 99590 bytes ...plugin => s1-secops-skills-v1.2.16.plugin} | Bin 2830358 -> 3238794 bytes plugins/s1-secops-skills/dist/sdl-api.skill | Bin 44132 -> 43994 bytes .../s1-secops-skills/dist/sdl-dashboard.skill | Bin 94425 -> 94403 bytes .../dist/sdl-log-parser.skill | Bin 173068 -> 172721 bytes .../s1-secops-skills/dist/sdl-solutions.skill | Bin 176459 -> 586407 bytes .../dist/soc-investigator.skill | Bin 16818 -> 17034 bytes plugins/s1-secops-skills/docs/docker.md | 10 +- plugins/s1-secops-skills/docs/installation.md | 2 +- .../skills/hyperautomation/SKILL.md | 105 +- .../references/api-integration.md | 60 +- .../references/autonomous-soc-template.md | 30 +- .../references/building-blocks-catalog.md | 8 +- .../references/building-blocks.md | 68 +- .../hyperautomation/references/connections.md | 16 +- .../references/functions-reference.md | 2 +- .../hyperautomation/references/snippets.md | 34 +- .../references/validation-rules.md | 38 +- .../references/workflow-schema.md | 28 +- .../skills/mgmt-console-api/SKILL.md | 317 +-- .../references/CAPABILITY_MAP.md | 44 +- .../references/POWERQUERY_RECIPES.md | 4 +- .../mgmt-console-api/references/TAG_INDEX.md | 2 +- .../references/UNIFIED_ALERTS.md | 26 +- .../mgmt-console-api/references/WORKFLOWS.md | 10 +- .../references/common_params.md | 16 +- .../references/tags/Accounts.md | 122 +- .../references/tags/Activities.md | 144 +- .../references/tags/Agent_Actions.md | 78 +- .../references/tags/Agent_Support_Actions.md | 2 +- .../references/tags/Agents.md | 2112 ++++++++-------- .../references/tags/Agents_Repository_Beta.md | 16 +- .../references/tags/Application_Management.md | 780 +++--- .../tags/Application_Management_Settings.md | 8 +- .../references/tags/Application_Risk.md | 42 +- .../tags/Application_Risk_Deprecated.md | 98 +- .../references/tags/Auto_Upgrade_Policy.md | 68 +- .../references/tags/Cloud_Funnel.md | 20 +- .../references/tags/Cloud_Resources.md | 86 +- .../references/tags/Config_Overrides.md | 58 +- .../references/tags/Custom_Detection_Rule.md | 90 +- .../tags/Datalake_Unified_Actions.md | 32 +- .../references/tags/Deep_Visibility.md | 54 +- .../references/tags/Default_Reports.md | 108 +- .../references/tags/Device_Control.md | 232 +- .../references/tags/Dynamic_tag_rules.md | 88 +- .../tags/Exclusions_and_Blocklist.md | 350 +-- .../references/tags/Exclusions_v2_1.md | 362 +-- .../references/tags/Filters.md | 146 +- .../references/tags/Firewall_Control.md | 250 +- .../references/tags/Forensics.md | 36 +- .../references/tags/Gateways.md | 140 +- .../mgmt-console-api/references/tags/Graph.md | 36 +- .../references/tags/Graph_Query_Builder.md | 98 +- .../references/tags/Graph_Query_Management.md | 66 +- .../references/tags/Groups.md | 70 +- .../references/tags/Hashes.md | 4 +- .../references/tags/Hyperautomation.md | 226 +- .../mgmt-console-api/references/tags/ISPM.md | 42 +- .../references/tags/Inventory.md | 718 +++--- .../references/tags/Inventory_AI_ML.md | 618 ++--- .../tags/Inventory_AI_ML_Filters.md | 294 +-- .../references/tags/Inventory_Account.md | 618 ++--- .../tags/Inventory_Account_Filters.md | 294 +-- .../tags/Inventory_Application_Integration.md | 618 ++--- ...ventory_Application_Integration_Filters.md | 294 +-- .../tags/Inventory_Cloud_Application.md | 618 ++--- .../Inventory_Cloud_Application_Filters.md | 294 +-- .../tags/Inventory_Cloud_Surface.md | 1210 ++++----- .../tags/Inventory_Cloud_Surface_Filters.md | 594 ++--- .../references/tags/Inventory_Container.md | 1762 +++++++------- .../tags/Inventory_Container_Filters.md | 866 +++---- .../tags/Inventory_Data_Analysis.md | 618 ++--- .../tags/Inventory_Data_Analysis_Filters.md | 294 +-- .../references/tags/Inventory_Data_Store.md | 818 +++---- .../tags/Inventory_Data_Store_Filters.md | 394 +-- .../tags/Inventory_Developer_Tool.md | 618 ++--- .../tags/Inventory_Developer_Tool_Filters.md | 294 +-- .../references/tags/Inventory_Device.md | 834 +++---- .../tags/Inventory_Device_Filters.md | 402 +-- .../tags/Inventory_Endpoint_Surface.md | 1290 +++++----- .../Inventory_Endpoint_Surface_Filters.md | 630 ++--- .../references/tags/Inventory_Filters.md | 340 +-- .../references/tags/Inventory_Function.md | 618 ++--- .../tags/Inventory_Function_Filters.md | 294 +-- .../references/tags/Inventory_Governance.md | 618 ++--- .../tags/Inventory_Governance_Filters.md | 294 +-- .../references/tags/Inventory_Identity.md | 994 ++++---- .../tags/Inventory_Identity_Filters.md | 482 ++-- .../tags/Inventory_Identity_Surface.md | 986 ++++---- .../Inventory_Identity_Surface_Filters.md | 482 ++-- .../references/tags/Inventory_Network.md | 618 ++--- .../Inventory_Network_Discovery_Surface.md | 832 +++---- ...ntory_Network_Discovery_Surface_Filters.md | 406 ++-- .../tags/Inventory_Network_Filters.md | 294 +-- .../references/tags/Inventory_Notes.md | 16 +- .../references/tags/Inventory_Server.md | 1874 +++++++------- .../tags/Inventory_Server_Filters.md | 922 +++---- .../references/tags/Inventory_Storage.md | 810 +++---- .../tags/Inventory_Storage_Filters.md | 394 +-- .../references/tags/Inventory_Tags.md | 240 +- .../tags/Inventory_Unified_Actions.md | 1806 +++++++------- .../references/tags/Inventory_Workstation.md | 2160 ++++++++--------- .../references/tags/Live_Updates.md | 16 +- .../references/tags/Locations.md | 48 +- .../references/tags/Log_Collection.md | 414 ++-- .../references/tags/Long_Running_Query.md | 12 +- .../references/tags/Mobile_Integration.md | 126 +- .../references/tags/Network_Discovery.md | 228 +- .../tags/Network_Discovery_Self_Enablement.md | 56 +- .../tags/Network_Quarantine_Control.md | 206 +- .../tags/Platform_Detection_Rules.md | 122 +- .../references/tags/Policies.md | 22 +- .../mgmt-console-api/references/tags/RBAC.md | 126 +- .../references/tags/RemoteOps_Forensics.md | 54 +- .../references/tags/RemoteOps_Scripts.md | 220 +- .../references/tags/Remote_Ops_MMS.md | 86 +- .../references/tags/Saved_Searches.md | 6 +- .../references/tags/Sentinel_Deploy.md | 68 +- .../references/tags/Service_Users.md | 50 +- .../references/tags/Settings.md | 84 +- .../mgmt-console-api/references/tags/Sites.md | 164 +- .../references/tags/System.md | 6 +- .../references/tags/Tag_Manager.md | 8 +- .../mgmt-console-api/references/tags/Tags.md | 48 +- .../mgmt-console-api/references/tags/Tasks.md | 98 +- .../references/tags/Threat_Intelligence.md | 92 +- .../references/tags/Threat_Notes.md | 32 +- .../references/tags/Threats.md | 514 ++-- .../tags/Unprotected_Endpoints_Discovery.md | 152 +- .../references/tags/Updates.md | 106 +- .../mgmt-console-api/references/tags/Users.md | 254 +- .../references/tags/VCS_Integration.md | 140 +- .../references/tags/alerts.md | 106 +- .../references/tags/licenses.md | 2 +- .../references/tags/marketplace.md | 64 +- .../references/tags/overview.md | 8 +- .../references/tenant_capabilities.md | 10 +- .../scripts/baseline_anomaly.py | 52 +- .../scripts/bootstrap_creds.sh | 58 +- .../scripts/build_source_report.py | 15 +- .../mgmt-console-api/scripts/call_purple.py | 2 +- .../scripts/call_unified_alerts.py | 14 +- .../skills/mgmt-console-api/scripts/pq.py | 4 +- .../mgmt-console-api/scripts/purple_ai.py | 16 +- .../mgmt-console-api/scripts/s1_client.py | 22 +- .../scripts/search_endpoints.py | 10 +- .../scripts/smoke_test_queries.py | 14 +- .../scripts/uam_alert_interface.py | 4 +- .../scripts/unified_alerts.py | 101 +- .../skills/mgmt-console-api/tests/README.md | 124 +- .../tests/test_alert_indicator_pivot.py | 12 +- .../tests/test_alert_mutation_lifecycle.py | 18 +- .../tests/test_alerts_dual_api.py | 14 +- .../tests/test_custom_rule_lifecycle.py | 10 +- .../tests/test_ioc_lifecycle.py | 22 +- .../tests/test_islegacy_guard.py | 12 +- .../tests/test_saved_filter_lifecycle.py | 8 +- .../tests/test_scheduled_report_lifecycle.py | 10 +- .../tests/test_star_rule_lifecycle.py | 128 +- .../skills/powerquery/SKILL.md | 133 +- .../examples/behavioral-baselines.md | 52 +- .../powerquery/examples/detection-library.md | 14 +- .../powerquery/examples/investigations.md | 28 +- .../references/commands-reference.md | 58 +- .../powerquery/references/detection-rules.md | 26 +- .../references/fields-and-schema.md | 12 +- .../references/functions-reference.md | 20 +- .../skills/powerquery/references/pitfalls.md | 88 +- .../references/syntax-and-operators.md | 28 +- .../s1-secops-skills/skills/sdl-api/SKILL.md | 58 +- .../sdl-api/references/auth_and_limits.md | 4 +- .../skills/sdl-api/references/methods.md | 26 +- .../skills/sdl-api/scripts/bootstrap_creds.sh | 58 +- .../skills/sdl-api/scripts/sdl_cli.py | 23 +- .../skills/sdl-api/scripts/sdl_client.py | 22 +- .../skills/sdl-api/tests/smoke_test.py | 2 +- .../skills/sdl-dashboard/SKILL.md | 132 +- .../examples/panel-showcase.json | 4 +- .../references/community-examples.md | 12 +- .../references/lessons-learned.md | 42 +- .../references/panel-type-cheatsheet.md | 28 +- .../scripts/panel_safety_check.py | 6 +- .../scripts/validate_dashboard.py | 4 +- .../skills/sdl-log-parser/SKILL.md | 166 +- .../examples/01-cef-over-syslog.json | 4 +- .../examples/02-json-with-envelope.json | 4 +- .../examples/04-multiline-stack.json | 4 +- .../examples/05-rewrite-and-mask.json | 6 +- .../sdl-log-parser/examples/06-alias.json | 2 +- .../examples/07-juniper-srx-rtflow-ocsf.json | 6 +- .../examples/08-gron-capture-template.json | 8 +- .../09-aws-cloudtrail-assumerole-ocsf.json | 16 +- .../examples/10-linux-pam-session-ocsf.json | 16 +- .../examples/11-akamai-siem-cef-ocsf.json | 12 +- .../references/ai-siem-catalog.md | 40 +- .../references/builtin-parsers.md | 32 +- .../sdl-log-parser/references/mappers.md | 72 +- .../sdl-log-parser/references/ocsf-mapping.md | 44 +- .../references/ocsf-schema-documentation.md | 108 +- .../references/parse-directives.md | 22 +- .../sdl-log-parser/references/syntax.md | 58 +- .../references/testing-workflow.md | 14 +- .../skills/sdl-solutions/SKILL.md | 4 +- .../alertnoise_autoresolve_ha.template.json | 4 +- .../scripts/dac_sync.py | 14 +- .../assets/exclusion_detection.template.json | 2 +- ...lusion_detection_ha_workflow.template.json | 2 +- .../ingesthealth-watchdog-email-example-1.png | Bin 0 -> 248042 bytes .../ingesthealth-watchdog-email-example-2.png | Bin 0 -> 217204 bytes ...th_baseline_builder.workflow.template.json | 2 +- .../ingesthealth_detections.template.json | 14 +- ...ctions_parser_drift_optional.template.json | 4 +- ...gesthealth_watchdog.workflow.template.json | 2 +- .../assets/onboarding_detection.template.json | 2 +- .../assets/rba_console/README.md | 2 +- .../assets/rba_console/index.html | 11 +- .../assets/rba_console/server.py | 22 +- .../assets/rba_risk_register.savelookup.pq | 23 +- .../assets/ueba_baseline_savelookup.pq | 19 +- .../assets/ueba_dashboard.template.json | 12 +- .../assets/ueba_detection.template.json | 6 +- .../ueba_refresh_workflow.template.json | 2 +- .../references/asset-enrichment.md | 6 +- .../references/custom-detection-exclusions.md | 7 +- .../references/data-source-onboarding.md | 2 +- .../references/ingest-health-monitoring.md | 29 +- .../references/ueba-anomaly-detection.md | 5 + .../skills/soc-investigator/SKILL.md | 27 +- 265 files changed, 22367 insertions(+), 22130 deletions(-) create mode 100644 mcp/s1-secops-mcp/tests/regressions-2026-07-31.test.mjs rename plugins/s1-secops-skills/dist/{s1-secops-skills-v1.2.14.plugin => s1-secops-skills-v1.2.16.plugin} (61%) create mode 100644 plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth-watchdog-email-example-1.png create mode 100644 plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth-watchdog-email-example-2.png diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f67ba98..046cb15 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -14,7 +14,7 @@ "name": "s1-secops-skills", "source": "./plugins/s1-secops-skills", "description": "SentinelOne SecOps skills for Claude: PowerQuery threat hunting and STAR/Custom Detection rules; Management Console API; Singularity Data Lake API; SDL dashboards; log parsing (OCSF); Hyperautomation SOAR; z-score anomaly baselining; autonomous DFIR alert investigation (soc-investigator); and one-prompt SDL solutions: source onboarding, asset enrichment, UEBA, ingest health, detection exclusions, Risk-Based Alerting, alert noise reduction, and Detection as Code.", - "version": "1.2.14", + "version": "1.2.16", "author": { "name": "Prithvi Moses", "email": "prithvi.moses@sentinelone.com" diff --git a/mcp/s1-secops-mcp/README.md b/mcp/s1-secops-mcp/README.md index 74c452a..d4ac36c 100644 --- a/mcp/s1-secops-mcp/README.md +++ b/mcp/s1-secops-mcp/README.md @@ -65,7 +65,7 @@ Add this to `claude_desktop_config.json` (or `.mcp.json` for Claude Code): "mcpServers": { "s1-secops-mcp": { "command": "npx", - "args": ["-y", "@pmoses-s1/s1-secops-mcp@1.2.3"], + "args": ["-y", "@pmoses-s1/s1-secops-mcp@1.2.4"], "env": { "S1_CONSOLE_URL": "https://usea1-yourorg.sentinelone.net", "S1_CONSOLE_API_TOKEN": "eyJ...", diff --git a/mcp/s1-secops-mcp/deploy/README.md b/mcp/s1-secops-mcp/deploy/README.md index 41cae57..1568c4f 100644 --- a/mcp/s1-secops-mcp/deploy/README.md +++ b/mcp/s1-secops-mcp/deploy/README.md @@ -1,5 +1,7 @@ # Deployment guide +The canonical team-VM walkthrough for most users is **[docs/vm-deployment.md](../../docs/vm-deployment.md)** (one-line install, per-user bearer tokens, Caddy TLS, client config, day-2 ops). This file is the full deployment reference behind it: all three topologies below, plus the AWS-specific gotchas and internals the walkthrough links to. Credential keys are in [docs/credentials.md](../../docs/credentials.md). + Three supported topologies, in order of complexity. | Topology | Who runs it | Transport | Auth | Use this when | @@ -10,7 +12,13 @@ Three supported topologies, in order of complexity. ## A. Single user, local (stdio) -`curl -fsSL https://raw.githubusercontent.com/Sentinel-One/ai-siem/main/mcp/s1-secops-mcp/deploy/install.sh | bash` +Download the installer, review it, then run it (avoid piping a remote script straight into a shell). For production, pin the URL to a tagged release commit instead of `main`: + +```bash +curl -fsSL -o /tmp/s1-mcp-install.sh https://raw.githubusercontent.com/pmoses-s1/claude-skills/main/s1-secops-mcp/deploy/install.sh +# review /tmp/s1-mcp-install.sh, then: +bash /tmp/s1-mcp-install.sh --user +``` That runs `install.sh --user`, which: 1. Confirms Node 18+ is present (errors out with install hints if not). @@ -52,7 +60,7 @@ Or, equivalently, by package name without the install: "mcpServers": { "s1-secops-mcp": { "command": "npx", - "args": ["-y", "@pmoses-s1/s1-secops-mcp@1.2.2"] + "args": ["-y", "@pmoses-s1/s1-secops-mcp@1.2.4"] } } } @@ -126,7 +134,7 @@ Team members connect from their Claude clients with their own bearer token. Audi 3. **Run the installer in server mode:** ```bash - curl -fsSL https://raw.githubusercontent.com/Sentinel-One/ai-siem/main/mcp/s1-secops-mcp/deploy/install.sh | sudo bash -s -- --server + curl -fsSL https://raw.githubusercontent.com/pmoses-s1/claude-skills/main/s1-secops-mcp/deploy/install.sh | sudo bash -s -- --server ``` It creates the `mcp` user, drops `/etc/s1-secops-mcp/credentials.json` (placeholder) and `/etc/s1-secops-mcp/bearer-tokens.json` (one freshly-generated admin token, printed once to stdout), installs the systemd unit, and starts the service. @@ -257,7 +265,7 @@ curl -s https://mcp.s1.internal/healthz # in front of the proxy ## Connecting Claude Desktop to a remote MCP -Claude Desktop's `claude_desktop_config.json` only accepts stdio-based MCP servers in current stable builds; the `type: "http"` form gets rejected with "not valid MCP server configuration" on load. To connect Claude Desktop to your VM's HTTPS endpoint, use the bridge script shipped in this repo at [`bridge/s1-secops-mcp-bridge.mjs`](./bridge/s1-secops-mcp-bridge.mjs) — a 40-line zero-dependency Node script that translates Claude Desktop's stdio into POST requests against the MCP HTTP endpoint. +Claude Desktop's `claude_desktop_config.json` only accepts stdio-based MCP servers in current stable builds; the `type: "http"` form gets rejected with "not valid MCP server configuration" on load. To connect Claude Desktop to your VM's HTTPS endpoint, use the bridge script shipped in this repo at [`bridge/s1-secops-mcp-bridge.mjs`](./bridge/s1-secops-mcp-bridge.mjs), a 40-line zero-dependency Node script that translates Claude Desktop's stdio into POST requests against the MCP HTTP endpoint. Each team member drops the script anywhere on their machine (typically `~/.local/bin/s1-secops-mcp-bridge.mjs`) and points Claude Desktop at it: @@ -276,7 +284,7 @@ Each team member drops the script anywhere on their machine (typically `~/.local } ``` -Then Cmd+Q and reopen Claude Desktop. See [`bridge/README.md`](./bridge/README.md) for install, smoke-test, and troubleshooting steps. Claude Cowork users can keep using the native `type: "http"` config (it supports remote HTTP MCPs in current builds) — only Claude Desktop needs the bridge. +Then Cmd+Q and reopen Claude Desktop. See [`bridge/README.md`](./bridge/README.md) for install, smoke-test, and troubleshooting steps. Claude Cowork users can keep using the native `type: "http"` config (it supports remote HTTP MCPs in current builds), only Claude Desktop needs the bridge. ## AWS-specific gotchas @@ -297,19 +305,19 @@ HTTP 400 urn:ietf:params:acme:error:rejectedIdentifier The ACME server refuses to issue a certificate for this domain name, because it is forbidden by policy ``` -Caddy auto-falls back to **ZeroSSL** (also free, also publicly trusted, no policy block on `amazonaws.com`). Use the email-shorthand form `tls ` and Caddy handles the fallback transparently. The right end state is a cert with `issuer=ZeroSSL ECC DV SSL CA 2` — verify with: +Caddy auto-falls back to **ZeroSSL** (also free, also publicly trusted, no policy block on `amazonaws.com`). Use the email-shorthand form `tls ` and Caddy handles the fallback transparently. The right end state is a cert with `issuer=ZeroSSL ECC DV SSL CA 2`, verify with: ```bash echo | openssl s_client -connect $HOST:8764 -servername $HOST 2>/dev/null \ | grep -E "^(issuer=|verify return code)" ``` -For long-term peace of mind, use a real domain instead (Route 53 A record pointing at the Elastic IP) — both LE and ZeroSSL issue without restriction and the hostname survives instance replacement. +For long-term peace of mind, use a real domain instead (Route 53 A record pointing at the Elastic IP), both LE and ZeroSSL issue without restriction and the hostname survives instance replacement. ### Caddyfile: don't mix `tls` shorthand with `issuer acme` block ```caddyfile -# WRONG — Caddy errors: "cannot mix issuer subdirective with other issuer-specific subdirectives" +# WRONG: Caddy errors: "cannot mix issuer subdirective with other issuer-specific subdirectives" tls prithvi@example.com { issuer acme { disable_http_challenge @@ -343,7 +351,7 @@ The hardened service file we ship omits two systemd directives that would otherw - `MemoryDenyWriteExecute=true` - `LockPersonality=true` -Both block the W+X memory mappings V8 needs to JIT JavaScript. Adding them causes the service to silently SIGTRAP at startup with `Result: core-dump` and ~5 MB peak memory — no useful log output. If you customize the unit, leave both off. +Both block the W+X memory mappings V8 needs to JIT JavaScript. Adding them causes the service to silently SIGTRAP at startup with `Result: core-dump` and ~5 MB peak memory; no useful log output. If you customize the unit, leave both off. ## Troubleshooting @@ -359,7 +367,7 @@ Both block the W+X memory mappings V8 needs to JIT JavaScript. Adding them cause These are supported but not first-class: -- **Docker / docker-compose.** Not shipped in this version. The single-file Node binary doesn't need it. If you want a container, the install is `FROM node:20-alpine` + `RUN npm install -g @pmoses-s1/s1-secops-mcp@1.2.2` + `CMD ["s1-secops-mcp", "--transport", "http", "--host", "0.0.0.0"]`. Mount creds at `/etc/s1-secops-mcp/credentials.json` and tokens at `/etc/s1-secops-mcp/bearer-tokens.json`. +- **Docker / docker-compose.** Not shipped in this version. The single-file Node binary doesn't need it. If you want a container, the install is `FROM node:20-alpine` + `RUN npm install -g @pmoses-s1/s1-secops-mcp@1.2.4` + `CMD ["s1-secops-mcp", "--transport", "http", "--host", "0.0.0.0"]`. Mount creds at `/etc/s1-secops-mcp/credentials.json` and tokens at `/etc/s1-secops-mcp/bearer-tokens.json`. - **External bridge (`supergateway`, `mcp-proxy`).** Pre-1.1.0 deployments used these to wrap the stdio-only server. They still work; this server's native HTTP mode is functionally equivalent and removes the extra process. Prefer native unless you have a specific reason. diff --git a/mcp/s1-secops-mcp/deploy/bridge/README.md b/mcp/s1-secops-mcp/deploy/bridge/README.md index 6e28004..81775ca 100644 --- a/mcp/s1-secops-mcp/deploy/bridge/README.md +++ b/mcp/s1-secops-mcp/deploy/bridge/README.md @@ -6,18 +6,18 @@ A small stdio↔HTTPS proxy so Claude Desktop can talk to a team-shared `s1-seco Claude Desktop's `claude_desktop_config.json` only accepts stdio-based MCP servers in current stable builds. Adding a remote server via `type: "http"` gets rejected with "not valid MCP server configuration". The bridge wraps the remote HTTPS endpoint as a local stdio process, which Claude Desktop accepts. -Claude Cowork and Claude Code don't need this — both support `type: "http"` natively. +Claude Cowork and Claude Code don't need this, both support `type: "http"` natively. ## What's in the box -- [`s1-secops-mcp-bridge.mjs`](./s1-secops-mcp-bridge.mjs) — the script. 40 lines, zero external dependencies. Requires Node.js 18+ (uses the built-in `fetch`). +- [`s1-secops-mcp-bridge.mjs`](./s1-secops-mcp-bridge.mjs): the script. 40 lines, zero external dependencies. Requires Node.js 18+ (uses the built-in `fetch`). ## Install (per team member, one-time) ```bash # Download the script mkdir -p ~/.local/bin -curl -fsSL https://raw.githubusercontent.com/Sentinel-One/ai-siem/main/mcp/s1-secops-mcp/deploy/bridge/s1-secops-mcp-bridge.mjs \ +curl -fsSL https://raw.githubusercontent.com/pmoses-s1/claude-skills/main/s1-secops-mcp/deploy/bridge/s1-secops-mcp-bridge.mjs \ -o ~/.local/bin/s1-secops-mcp-bridge.mjs chmod +x ~/.local/bin/s1-secops-mcp-bridge.mjs @@ -72,7 +72,7 @@ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \ | `fetch error: ... UNABLE_TO_GET_ISSUER_CERT_LOCALLY` | Server is using a private CA (e.g. `tls internal`); Node doesn't read the system keychain | Use a publicly-trusted cert on the server (Let's Encrypt or ZeroSSL). See [../README.md#aws-specific-gotchas](../README.md#aws-specific-gotchas). | | `bridge fetch error: ... ENOTFOUND` | DNS doesn't resolve `MCP_URL` host | Verify with `nslookup` or `dig`. If using an AWS public DNS, it may have changed; re-check the EC2 console. | | 401 from upstream in the log | Wrong / revoked bearer token | Ask the admin for a fresh token; replace `MCP_BEARER`. | -| Bridge starts but Claude Desktop times out | Node version too old | `node --version` — need 18+. Built-in fetch was added in 18. | +| Bridge starts but Claude Desktop times out | Node version too old | `node --version`: need 18+. Built-in fetch was added in 18. | ## How it works @@ -84,7 +84,7 @@ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \ The bridge reads one JSON-RPC message per line from stdin, POSTs it to `MCP_URL` with the `Authorization: Bearer ` header, and writes the JSON-RPC reply to stdout. JSON-RPC notifications (messages with no `id`) get no reply, matching the spec. Errors get translated to a JSON-RPC error envelope so Claude Desktop sees something useful instead of a hung process. -There is no session state, no buffering, and no SDK dependency — it's just stdin → fetch → stdout. +There is no session state, no buffering, and no SDK dependency; it's just stdin → fetch → stdout. ## Security notes diff --git a/mcp/s1-secops-mcp/deploy/bridge/s1-secops-mcp-bridge.mjs b/mcp/s1-secops-mcp/deploy/bridge/s1-secops-mcp-bridge.mjs index 7a66154..56a8905 100644 --- a/mcp/s1-secops-mcp/deploy/bridge/s1-secops-mcp-bridge.mjs +++ b/mcp/s1-secops-mcp/deploy/bridge/s1-secops-mcp-bridge.mjs @@ -38,12 +38,13 @@ import { createInterface } from 'node:readline'; -const URL = process.env.MCP_URL || (() => { throw new Error('MCP_URL not set'); })(); -const BEARER = process.env.MCP_BEARER || (() => { throw new Error('MCP_BEARER not set'); })(); +// Named MCP_URL (not URL) so the global URL constructor is not shadowed. +const MCP_URL = process.env.MCP_URL || (() => { throw new Error('MCP_URL not set'); })(); +const BEARER = process.env.MCP_BEARER || (() => { throw new Error('MCP_BEARER not set'); })(); const log = (...a) => process.stderr.write('[bridge] ' + a.join(' ') + '\n'); -log('starting; target', URL); +log('starting; target', MCP_URL); const rl = createInterface({ input: process.stdin, terminal: false }); @@ -68,7 +69,7 @@ rl.on('line', async (line) => { inFlight++; try { - const res = await fetch(URL, { + const res = await fetch(MCP_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -76,12 +77,29 @@ rl.on('line', async (line) => { 'Accept': 'application/json', }, body: raw, + // A hung upstream must not wedge the bridge forever; 120s covers the + // slowest LRQ tool calls with headroom. + signal: AbortSignal.timeout(120000), }); - if (isNotification) return; + if (isNotification) { + // Drain the body so the keep-alive socket is released. + await res.text().catch(() => {}); + return; + } const text = await res.text(); - if (!res.ok) log(`HTTP ${res.status} from upstream: ${text.slice(0, 200)}`); + if (!res.ok) { + // Non-OK upstream: emit a JSON-RPC error envelope (not raw text/HTML) so the + // client always receives valid JSON-RPC and a meaningful diagnostic. + log(`HTTP ${res.status} from upstream: ${text.slice(0, 200)}`); + process.stdout.write(JSON.stringify({ + jsonrpc: '2.0', + id: msg.id ?? null, + error: { code: -32603, message: `upstream HTTP ${res.status}`, data: text.slice(0, 500) }, + }) + '\n'); + return; + } process.stdout.write(text.trimEnd() + '\n'); } catch (e) { const cause = e.cause ? ` cause=${e.cause.code || e.cause.message || JSON.stringify(e.cause)}` : ''; diff --git a/mcp/s1-secops-mcp/deploy/caddy/Caddyfile.example b/mcp/s1-secops-mcp/deploy/caddy/Caddyfile.example index 7c2d7c4..84d1363 100644 --- a/mcp/s1-secops-mcp/deploy/caddy/Caddyfile.example +++ b/mcp/s1-secops-mcp/deploy/caddy/Caddyfile.example @@ -15,7 +15,7 @@ # end-state cert should have `issuer=ZeroSSL ECC DV SSL CA 2`. Port 80 must # be open in the SG for HTTP-01 to complete. # -# DO NOT mix `tls ` with an `issuer acme { ... }` block — Caddy errors +# DO NOT mix `tls ` with an `issuer acme { ... }` block: Caddy errors # with "cannot mix issuer subdirective with other issuer-specific subdirectives". # Pick one form: the email shorthand on its own line, OR a full `tls { ... }` # block with the email moved inside the `issuer acme` stanza. Not both. diff --git a/mcp/s1-secops-mcp/deploy/install.sh b/mcp/s1-secops-mcp/deploy/install.sh index 4c7827f..6e38c39 100755 --- a/mcp/s1-secops-mcp/deploy/install.sh +++ b/mcp/s1-secops-mcp/deploy/install.sh @@ -18,26 +18,39 @@ set -euo pipefail +# Token and credential files must never be world-readable, even for the +# instant between creation and the explicit chmod 600 below. +umask 077 + # ─── helpers ───────────────────────────────────────────────────────────────── -c_red() { printf '\033[31m%s\033[0m\n' "$*"; } -c_green() { printf '\033[32m%s\033[0m\n' "$*"; } +c_red() { printf '\033[31m%s\033[0m\n' "$*"; } +c_green() { printf '\033[32m%s\033[0m\n' "$*"; } c_yellow() { printf '\033[33m%s\033[0m\n' "$*"; } -c_bold() { printf '\033[1m%s\033[0m\n' "$*"; } +c_bold() { printf '\033[1m%s\033[0m\n' "$*"; } step() { c_bold ">> $*"; } -ok() { c_green " ok: $*"; } -warn() { c_yellow " warn: $*"; } -die() { c_red " error: $*"; exit 1; } +ok() { c_green " ok: $*"; } +warn() { c_yellow " warn: $*"; } +die() { + c_red " error: $*" + exit 1 +} PKG="@pmoses-s1/s1-secops-mcp" MODE="user" while [[ $# -gt 0 ]]; do case "$1" in - --user) MODE="user"; shift ;; - --server) MODE="server"; shift ;; - -h|--help) + --user) + MODE="user" + shift + ;; + --server) + MODE="server" + shift + ;; + -h | --help) cat </dev/null 2>&1; then - c_red "Node.js is required but not found on PATH." - c_red "Install Node 18+:" - c_red " macOS: brew install node@20" - c_red " Linux: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs" + c_red "Node.js is required but not found on PATH." + c_red "Install Node 18+:" + c_red " macOS: brew install node@20" + c_red " Linux: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs" exit 3 fi NODE_MAJOR="$(node --version | sed 's/^v\([0-9]*\).*/\1/')" @@ -134,7 +151,7 @@ fi step "Setting up $CONF_DIR" mkdir -p "$CONF_DIR" if [[ ! -f "$CRED_PATH" ]]; then - cat > "$CRED_PATH" <<'EOF' + cat >"$CRED_PATH" <<'EOF' { "S1_CONSOLE_URL": "https://usea1-acme.sentinelone.net", "S1_CONSOLE_API_TOKEN": "REPLACE_WITH_API_TOKEN", @@ -169,7 +186,7 @@ if [[ "$MODE" == "server" ]]; then else TOKEN_ADMIN="$(node -e 'console.log(require("crypto").randomBytes(32).toString("hex"))')" fi - cat > "$TOKEN_PATH" <"$TOKEN_PATH" < "$ENV_PATH" <"$ENV_PATH" < "$SVC_PATH" + "$SCRIPT_DIR/deploy/systemd/s1-secops-mcp.service" >"$SVC_PATH" systemctl daemon-reload systemctl enable s1-secops-mcp >/dev/null 2>&1 ok "wrote $SVC_PATH and enabled the service" @@ -244,8 +262,10 @@ EOF elif [[ "$MODE" == "server" ]]; then cat <": "", ... } + * 1. MCP_BEARER_TOKENS_FILE: path to JSON: { "": "", ... } * Allows per-user tokens with stable names for audit logs. * File mode is enforced via the install script (0600 recommended). - * 2. MCP_BEARER_TOKENS — comma-separated raw tokens (no per-user names). + * 2. MCP_BEARER_TOKENS: comma-separated raw tokens (no per-user names). * Names default to "token-1", "token-2", etc. * * If neither is set, HTTP transport runs with NO authentication. The server diff --git a/mcp/s1-secops-mcp/lib/credentials.js b/mcp/s1-secops-mcp/lib/credentials.js index 2043609..adb6180 100644 --- a/mcp/s1-secops-mcp/lib/credentials.js +++ b/mcp/s1-secops-mcp/lib/credentials.js @@ -1,5 +1,5 @@ /** - * Credential loader — zero dependencies, synchronous. + * Credential loader: zero dependencies, synchronous. * * Resolution order (highest wins): * 1. Environment variables @@ -34,7 +34,7 @@ function tryLoad(dir) { } function discoverCredentials() { - // 1. S1_CREDS_FILE — explicit absolute path. Useful for VM deployments and + // 1. S1_CREDS_FILE: explicit absolute path. Useful for VM deployments and // secret-store integrations (Vault / Doppler / 1Password / sealed-secrets) // that render a credentials file to a known path at boot. const credsFile = process.env.S1_CREDS_FILE; @@ -120,8 +120,15 @@ export function hasS1Creds() { return !!(c.S1_CONSOLE_URL && c.S1_CONSOLE_API_TOKEN); } -/** True if minimum required credentials for SDL are present. */ +/** True if minimum required credentials for SDL are present. + * Any key in the auth chains counts: read-only deployments configure only + * SDL_LOG_READ_KEY / SDL_CONFIG_READ_KEY and are still fully usable. */ export function hasSdlCreds() { const c = getCreds(); - return !!(c.SDL_XDR_URL && (c.SDL_CONFIG_WRITE_KEY || c.S1_CONSOLE_API_TOKEN)); + return !!(c.SDL_XDR_URL && ( + c.SDL_CONFIG_WRITE_KEY || + c.SDL_CONFIG_READ_KEY || + c.SDL_LOG_READ_KEY || + c.S1_CONSOLE_API_TOKEN + )); } diff --git a/mcp/s1-secops-mcp/lib/hec.js b/mcp/s1-secops-mcp/lib/hec.js index b32dbab..d7c1c50 100644 --- a/mcp/s1-secops-mcp/lib/hec.js +++ b/mcp/s1-secops-mcp/lib/hec.js @@ -8,13 +8,13 @@ * Source of truth: S-26.1 User Guide, "Singularity Data Lake > Data Ingestion > * Additional Integrations > HTTP Event Collector (HEC)", p.4723-4726. * Host : S1_HEC_INGEST_URL (e.g. https://ingest.us1.sentinelone.net) - * Endpoints : /services/collector/raw (raw text — recommended for logs) + * Endpoints : /services/collector/raw (raw text, recommended for logs) * /services/collector/event (structured JSON) * Auth : Authorization: Bearer (the same Management Console API token the other tools use) * Scope : S1-Scope header is REQUIRED (accountId or accountId:siteId). Without it HEC returns 400 "Missing S1-Scope header". * Parser : ?sourcetype= query param. Other query params become fields in the UI. * Pre-parsed: /event with ?isParsed=true indexes already-structured JSON fields directly, with no SDL parser. - * Compress : optional "Content-Encoding: gzip" (or zstd) — recommended, lowers egress cost. + * Compress : optional "Content-Encoding: gzip" (or zstd), recommended, lowers egress cost. * Limits : 10 MB uncompressed per request, 1000 requests/sec, 2 GB/sec per account. */ @@ -122,9 +122,11 @@ export async function hecIngest(logContent, { parser, fields = {}, scope, endpoi // committed) and HEC has no idempotency key, so retrying risks duplicate // events inflating SDL counts. Fixed 2026-07-29: no automatic 5xx retry. if (res.status === 429 && attempt < 3) { - // Retry-After may be an HTTP date; Number() of that is NaN -> fall back to delay. - const ra = Number(res.headers.get('Retry-After')); - await sleep(Number.isFinite(ra) && ra >= 0 ? Math.min(ra * 1000, 30000) : delay); + // Retry-After may be missing or an HTTP date. Number(null) is 0, so a + // missing header must fall back to the exponential delay, not sleep 0ms. + const raRaw = res.headers.get('Retry-After'); + const ra = Number(raRaw); + await sleep(raRaw && Number.isFinite(ra) && ra >= 0 ? Math.min(ra * 1000, 30000) : delay); delay = Math.min(delay * 2, 8000); continue; } diff --git a/mcp/s1-secops-mcp/lib/http-transport.js b/mcp/s1-secops-mcp/lib/http-transport.js index aa14b9e..2e11bf9 100644 --- a/mcp/s1-secops-mcp/lib/http-transport.js +++ b/mcp/s1-secops-mcp/lib/http-transport.js @@ -25,7 +25,7 @@ import { createServer } from 'http'; import { authenticate, isAuthConfigured, warnIfNoAuth, authSourceForLogging } from './auth.js'; import { err as makeErr } from './server-core.js'; -const MAX_BODY_BYTES = 4 * 1024 * 1024; // 4 MB — well above any normal MCP call +const MAX_BODY_BYTES = 4 * 1024 * 1024; // 4 MB, well above any normal MCP call function log(...args) { process.stderr.write('[s1-secops-mcp] ' + args.join(' ') + '\n'); @@ -75,8 +75,12 @@ function readBody(req) { req.on('data', (chunk) => { size += chunk.length; if (size > MAX_BODY_BYTES) { + // Stop reading but do NOT destroy here: the caller must be able to + // write the 413 response first. Destroying the request tears down the + // socket and the client would see a connection reset with no body. + req.pause(); + req.removeAllListeners('data'); reject(new Error(`Request body exceeds ${MAX_BODY_BYTES} bytes`)); - req.destroy(); return; } chunks.push(chunk); @@ -124,7 +128,7 @@ async function handleMcp(req, res, dispatch, clientIp, bindHost, bindPort) { // SECURITY (no-auth mode): a configured bearer token normally blocks // browser-driven requests, because a web page cannot forge an Authorization // header. The documented no-auth loopback mode has no such gate, so a - // malicious page — or a DNS-rebinding attack — on the operator's own + // malicious page, or a DNS-rebinding attack, on the operator's own // workstation could otherwise drive this server via cross-origin fetch() // and invoke every state-changing tool with the tenant API token. Per the // MCP Streamable HTTP spec we reject any browser Origin and validate the @@ -150,6 +154,9 @@ async function handleMcp(req, res, dispatch, clientIp, bindHost, bindPort) { raw = await readBody(req); } catch (e) { audit(`${new Date().toISOString()} | ${clientName} | - | - | 413 body-too-large`); + // Send the 413 first, then drop the connection once the response has been + // flushed. Destroying the request before responding loses the error body. + res.on('finish', () => req.destroy()); sendJson(res, 413, makeErr(null, -32600, e.message)); return; } @@ -174,6 +181,16 @@ async function handleMcp(req, res, dispatch, clientIp, bindHost, bindPort) { return; } + // Validate JSON-RPC request shape before dispatch: reject scalars, null, and + // objects without jsonrpc:"2.0" + a string method as -32600 (Invalid Request) + // instead of silently treating them as notifications. + if (msg === null || typeof msg !== 'object' || msg.jsonrpc !== '2.0' || typeof msg.method !== 'string') { + const badId = (msg && typeof msg === 'object') ? (msg.id ?? null) : null; + audit(`${new Date().toISOString()} | ${clientName} | - | - | 400 invalid-request`); + sendJson(res, 400, makeErr(badId, -32600, 'Invalid Request: expected a JSON-RPC 2.0 object with a string "method"')); + return; + } + const isNotification = msg.id === undefined; const ts = new Date().toISOString(); @@ -193,7 +210,7 @@ async function handleMcp(req, res, dispatch, clientIp, bindHost, bindPort) { return; } - const status = response.error ? 200 : 200; // JSON-RPC errors are 200 with error envelope + const status = 200; // JSON-RPC errors still return HTTP 200 with an error envelope audit(`${ts} | ${clientName} | ${msg.method} | ${summarizeParams(msg.params)} | ${response.error ? `200 jsonrpc-error (${response.error.code})` : '200 ok'}`); sendJson(res, status, response); @@ -245,8 +262,11 @@ export async function startHttp(dispatch, { port, host, path }) { log(`HTTP server error: ${e.message}`); if (e.code === 'EADDRINUSE') { log(`Port ${port} is already in use. Pick a different --port.`); - process.exit(1); } + // Any server error before a successful listen (EACCES, EADDRNOTAVAIL, + // invalid host, ...) is fatal: exit nonzero so systemd/Docker restart + // policies see the failure instead of a silently dead server. + process.exit(1); }); await new Promise((resolve) => server.listen(port, host, resolve)); diff --git a/mcp/s1-secops-mcp/lib/s1.js b/mcp/s1-secops-mcp/lib/s1.js index cac287e..7009771 100644 --- a/mcp/s1-secops-mcp/lib/s1.js +++ b/mcp/s1-secops-mcp/lib/s1.js @@ -1,5 +1,5 @@ /** - * SentinelOne client — Mgmt Console REST API, LRQ PowerQuery, Purple AI, UAM GraphQL. + * SentinelOne client: Mgmt Console REST API, LRQ PowerQuery, Purple AI, UAM GraphQL. * * Auth patterns: * Mgmt REST API → Authorization: ApiToken @@ -70,9 +70,12 @@ async function doFetch(url, opts, retries = 3, { allowRetry = null } = {}) { // Retry on 429 / 5xx (idempotent methods, or explicit opt-in, only) if ((res.status === 429 || res.status >= 500) && attempt < retries && methodRetryable) { - // Retry-After may be an HTTP date; Number() of that is NaN -> fall back to delay. - const ra = Number(res.headers.get('Retry-After')); - const wait = Number.isFinite(ra) && ra >= 0 ? Math.min(ra * 1000, 30000) : delay; + // Retry-After may be missing or an HTTP date. Number(null) is 0, so a + // missing header must not be treated as "wait 0ms": only honor the + // header when the raw value is present and parses to a finite number. + const raRaw = res.headers.get('Retry-After'); + const ra = Number(raRaw); + const wait = raRaw && Number.isFinite(ra) && ra >= 0 ? Math.min(ra * 1000, 30000) : delay; await sleep(wait); delay = Math.min(delay * 2, 8000); continue; @@ -233,11 +236,12 @@ export async function lrqRun(query, { startTime, endTime, hours = 24, maxRows = // Poll until done (30s expiry, poll every 1s) let lastStepSeen = 0; let result = null; + let pollDelay = 1000; const deadline = Date.now() + 5 * 60 * 1000; // 5 min hard timeout try { while (Date.now() < deadline) { - await sleep(1000); + await sleep(pollDelay); const pollUrl = `${b}/sdl/v2/api/queries/${queryId}?lastStepSeen=${lastStepSeen}`; let pollRes; try { @@ -248,9 +252,18 @@ export async function lrqRun(query, { startTime, endTime, hours = 24, maxRows = } if (!pollRes.ok) { - const body = await pollRes.text(); + const body = await pollRes.text().catch(() => ''); + // A transient 429/5xx on a single poll must not cancel a running + // query: keep polling (doubling the interval up to 5s, still well + // under the 30s poll-expiry window) until the 5-minute deadline. + // Other 4xx responses are permanent and remain fatal. + if (pollRes.status === 429 || pollRes.status >= 500) { + pollDelay = Math.min(pollDelay * 2, 5000); + continue; + } throw new Error(`LRQ poll failed (${pollRes.status}): ${body}`); } + pollDelay = 1000; // healthy poll: restore the normal interval const state = await pollRes.json(); lastStepSeen = state.stepsCompleted ?? lastStepSeen; @@ -279,7 +292,7 @@ export async function lrqRun(query, { startTime, endTime, hours = 24, maxRows = // Cap rows // Confirmed: LRQ API returns columns as descriptor objects {name, cellType, ...}, not strings. - // Must use col.name (not col itself) as the row key — col.toString() produces "[object Object]". + // Must use col.name (not col itself) as the row key, col.toString() produces "[object Object]". const rows = rawRows.slice(0, maxRows).map(r => { const obj = {}; columns.forEach((col, i) => { obj[col.name ?? col] = r[i]; }); @@ -299,155 +312,15 @@ export async function lrqRun(query, { startTime, endTime, hours = 24, maxRows = // ─── Purple AI ──────────────────────────────────────────────────────────────── // Reverse-engineered from live network traffic on usea1-acme.sentinelone.net. // -// IMPORTANT: purpleLaunchQuery is a GraphQL QUERY (not mutation). -// Variable wrapper is `request` (type PurpleLaunchQueryRequest), NOT `input`. -// The prior implementation used mutation + PurpleLaunchQueryInput — both wrong, -// causing HTTP 400 "invalid query" at the middleware layer. -// // Endpoints: // Purple AI LLM → POST /web/api/v2.1/graphql (ApiToken auth) // SDL/History → POST /sdl/v2/graphql (Bearer auth, same token) - -function randomHex(len = 32) { - return Array.from({ length: len }, () => Math.floor(Math.random() * 16).toString(16)).join(''); -} - -/** - * Run a Purple AI natural-language query. - * - * Flow: - * 1. purpleLaunchQuery (contentType=NATURAL_LANGUAGE) → PowerQuery string - * 2. Return the generated PowerQuery + token for downstream SDL execution. - * - * Returns { powerQuery, viewSelector, timeRange, token, status, resultType } - */ -export async function purpleAiQuery(userInput, { viewSelector = 'EDR', hours = 24 } = {}) { - const now = Date.now(); - const startMs = now - hours * 3600 * 1000; - const conversationId = randomHex(32); - const feedItemId = randomHex(32); - const msgId = randomHex(32); - const consoleUrl = `${base()}/`; - - // Confirmed correct shape from live API validation (2026-05-03): - // - operation type is `query` not `mutation` - // - variable name is `request` not `input` - // - type is `PurpleLaunchQueryRequest` not `PurpleLaunchQueryInput` - // - inputContent MUST appear at the top level of `request` (confirmed: HTTP 400 - // "missing input value at $request.inputContent" when omitted) - // - PurpleUserDetailsRequest schema (confirmed from live validation error): - // { accountId: ID!, teamToken: ID!, sessionId, emailAddress, userAgent, buildDate, buildHash } - // Does NOT have siteIds or groupIds. - const inputContentPayload = { - userInput, - viewSelector, - displayedTimeRange: { start: startMs, end: now }, - resultsPq: null, - powerQueryForResults: null, - additionalFieldsForPq: null, - contextId: null, - userDetails: null, - }; - - const gqlBody = { - operationName: 'purpleLaunchQuery', - variables: { - request: { - isAsync: false, - contentType: 'NATURAL_LANGUAGE', - consoleDetails: { - baseUrl: consoleUrl, - version: 'S-26.1.3#69', - }, - // Top-level inputContent required by PurpleLaunchQueryRequest schema. - inputContent: inputContentPayload, - conversation: { - id: conversationId, - messages: [ - { - inputMessage: { - id: msgId, - feedItemId, - conversationId, - createdAt: new Date(now).toISOString(), - messageType: 'INPUT', - contentType: 'NATURAL_LANGUAGE', - inputContent: inputContentPayload, - }, - }, - ], - }, - }, - }, - query: ` - query purpleLaunchQuery($request: PurpleLaunchQueryRequest!) { - purpleLaunchQuery(request: $request) { - token - resultType - status { state error { errorType errorDetail origin } } - stepsCompleted - result { - message - summary - maskedMetadata - powerQuery { - query - viewSelector - timeRange { start end } - } - suggestedQuestions { - question - powerQuery - viewSelector - timeRange { start end } - } - } - } - } - `, - }; - - const data = await apiPost('/web/api/v2.1/graphql', gqlBody, { allowRetry: true }); // read-only launch - - if (data.errors?.length) { - throw new Error(`Purple AI GraphQL error: ${data.errors[0].message}`); - } - - const plq = data?.data?.purpleLaunchQuery || {}; - const state = plq?.status?.state; - if (state && state !== 'COMPLETED') { - const err = plq?.status?.error || {}; - const detail = err.errorDetail || ''; - const origin = err.origin || ''; - // AsimovError from LaunchQueryManager = LLM workspace layer rejected the request. - // Root cause: purpleLaunchQuery NATURAL_LANGUAGE requires a browser-session teamToken - // (obtained from /sdl/v2/graphql) that service-account API tokens never have. - // purpleAlertSummary (ALERT_ENTRY) does not have this limitation and works fine. - if (detail.includes('AsimovError') || origin === 'LaunchQueryManager') { - throw new Error( - 'Purple AI NL query failed: the LLM workspace layer (LaunchQueryManager) rejected this ' + - 'service-account request. purpleLaunchQuery NATURAL_LANGUAGE requires a browser-session ' + - 'teamToken that API-token service accounts do not have. Use purple_ai_alert_summary ' + - '(ALERT_ENTRY) instead, or run the query interactively in the Purple AI browser console.' - ); - } - throw new Error(`Purple AI state: ${state}${detail ? ` (${origin}: ${detail})` : ''}`); - } - - const r = plq.result || {}; - return { - token: plq.token || null, - resultType: plq.resultType || null, - status: plq.status || null, - powerQuery: r.powerQuery?.query || null, - viewSelector: r.powerQuery?.viewSelector || viewSelector, - timeRange: r.powerQuery?.timeRange || { start: startMs, end: now }, - summary: r.summary || null, - message: r.message || null, - suggestedQuestions: r.suggestedQuestions || [], - maskedMetadata: r.maskedMetadata || null, - }; -} +// +// The dead exports purpleAiQuery and purpleAiInvestigate were deleted +// 2026-07-31. Their MCP tools were removed 2026-05-03: purpleLaunchQuery +// NATURAL_LANGUAGE and aiInvestigation/run both require a browser-session +// teamToken that service-account API tokens never obtain (AsimovError / +// SERVICE_ERROR). purpleAlertSummary (ALERT_ENTRY) has no such limitation. /** * Get a Purple AI natural-language summary for a specific UAM alert. @@ -500,128 +373,6 @@ export async function purpleAlertSummary(alertOcsfJson, { userDetails = null } = }; } -/** - * Trigger and poll Purple AI auto-investigation on a UAM alert. - * - * Step 1: alertTriggerActions with id="S1/aiInvestigation/run" - * Step 2: poll aiInvestigations until status=COMPLETED or FAILED - * - * Returns { verdict, markdown, investigationSteps[], alertId } - */ -export async function purpleAiInvestigate(alertId, { scopeId, scopeType = 'ACCOUNT', timeoutMs = 5 * 60 * 1000 } = {}) { - // Resolve account scope from user profile if not provided - let resolvedScopeId = scopeId; - if (!resolvedScopeId) { - const userInfo = await doFetch(`${base()}/web/api/v2.1/user`, { - method: 'GET', - headers: { Authorization: `ApiToken ${jwt()}`, 'Content-Type': 'application/json' }, - }); - resolvedScopeId = userInfo?.data?.scopeRoles?.[0]?.id || userInfo?.data?.id; - if (!resolvedScopeId) throw new Error('Could not resolve account scopeId for aiInvestigation. Pass scopeId explicitly.'); - } - - const scope = { scopeIds: [resolvedScopeId], scopeType }; - - // Step 1: Trigger investigation - const triggerBody = { - operationName: 'AlertTriggerActions', - variables: { - scope, - filter: { or: [{ and: [{ fieldId: 'id', stringEqual: { value: alertId } }] }] }, - viewType: 'ALL', - actions: [{ - id: 'S1/aiInvestigation/run', - payload: { - aiInvestigation: { - buildDate: new Date().toISOString(), - buildHash: '', - consoleVersion: 'S-26.1.3#69', - scope, - tenantId: resolvedScopeId, - userAgent: 's1-secops-mcp/1.0', - sessionId: randomHex(32), - userTime: new Date().toISOString(), - }, - }, - }], - }, - query: ` - mutation AlertTriggerActions($scope: ScopeSelectorInput, $filter: OrFilterSelectionInput, $actions: [TriggerActionInput!]!, $viewType: ViewType) { - alertTriggerActions(filter: $filter scope: $scope actions: $actions viewType: $viewType) { - ... on ActionsTriggered { - actions { actionId skip { id } failure { id errorMessage errorType } success { id } } - } - ... on TriggerActionsError { - errors { errorMessage } - } - } - } - `, - }; - - const triggerRes = await uamGraphql(triggerBody.query, triggerBody.variables, 'AlertTriggerActions'); - const triggerData = triggerRes?.alertTriggerActions; - if (triggerData?.errors?.length) { - throw new Error(`aiInvestigation trigger error: ${triggerData.errors[0].errorMessage}`); - } - const triggered = triggerData?.actions?.[0]; - if (triggered?.failure?.length) { - const f = triggered.failure[0]; - // SERVICE_ERROR without errorMessage = LLM-layer rejection (same root cause as - // purpleLaunchQuery AsimovError). aiInvestigation/run requires a browser-session - // workspace; API-token service accounts are rejected at the service layer. - if (f.errorType === 'SERVICE_ERROR' && !f.errorMessage) { - throw new Error( - 'aiInvestigation SERVICE_ERROR: the AI investigation service rejected this service-account ' + - 'request. Like purpleLaunchQuery, this feature requires an active browser-session workspace. ' + - 'Trigger the investigation interactively from the Purple AI card in the alert detail panel.' - ); - } - throw new Error(`aiInvestigation trigger failure: ${f.errorMessage || f.errorType}`); - } - - // Step 2: Poll GetAlertAiInvestigations - const pollQuery = ` - query GetAlertAiInvestigations($alertIds: [ID!]!, $scope: ScopeSelectorInput) { - aiInvestigations(alertIds: $alertIds, scope: $scope) { - alertId status purpleAiStatus investigationStep verdict timestamp result restrictionReason - } - } - `; - - const deadline = Date.now() + timeoutMs; - const steps = []; - let lastStep = null; - - while (Date.now() < deadline) { - await sleep(4000); - const pollRes = await uamGraphql(pollQuery, { alertIds: [alertId], scope }, 'GetAlertAiInvestigations'); - const inv = pollRes?.aiInvestigations?.[0]; - if (!inv) continue; - - const step = inv.investigationStep; - if (step && step !== lastStep) { - steps.push(step); - lastStep = step; - } - - if (inv.status === 'COMPLETED') { - return { - alertId: inv.alertId, - verdict: inv.verdict, - markdown: inv.result, - investigationSteps: steps, - timestamp: inv.timestamp, - }; - } - if (inv.status === 'FAILED') { - throw new Error(`aiInvestigation FAILED: ${inv.restrictionReason || 'unknown reason'}`); - } - } - - throw new Error(`aiInvestigation timed out after ${timeoutMs / 1000}s`); -} - // ─── UAM GraphQL ───────────────────────────────────────────────────────────── /** Execute a raw UAM GraphQL operation. */ @@ -641,7 +392,7 @@ export async function uamGraphql(query, variables = {}, operationName, { readOnl * List UAM alerts using the correct `filters: [FilterInput!]` schema. * * IMPORTANT: The `alerts` query takes `filters: [FilterInput!]` (flat AND-joined list). - * Do NOT pass `filter: String` or `OrFilterSelectionInput` — those belong to mutations only. + * Do NOT pass `filter: String` or `OrFilterSelectionInput`: those belong to mutations only. * * Each FilterInput is: { fieldId, : } * Valid comparators (confirmed via introspection): @@ -664,10 +415,10 @@ export async function uamListAlerts({ severity = null, // e.g. 'CRITICAL', 'HIGH' detectionProduct = null, // e.g. 'EDR', 'STAR' searchText = null, // fullText search across all fields - // Time range — specify either ISO strings OR epoch ms; both become dateRange { from, to } + // Time range: specify either ISO strings OR epoch ms; both become dateRange { from, to } startTime = null, // ISO string "2026-05-03T07:32:00Z" or epoch ms number endTime = null, // ISO string or epoch ms; defaults to now when startTime is set - // Raw FilterInput list — overrides all convenience params above when provided + // Raw FilterInput list: overrides all convenience params above when provided filters = null, } = {}) { @@ -694,7 +445,7 @@ export async function uamListAlerts({ const toMs = endTime ? (typeof endTime === 'number' ? endTime : new Date(endTime).getTime()) : Date.now(); - // Correct FilterInput field: dateTimeRange { start, end } — NOT dateRange, NOT date_range + // Correct FilterInput field: dateTimeRange { start, end }, NOT dateRange, NOT date_range builtFilters.push({ fieldId: 'detectedAt', dateTimeRange: { start: fromMs, end: toMs } }); } } @@ -803,14 +554,25 @@ export async function uamAddNote(alertId, noteText) { /** * Update the status of a UAM alert via alertTriggerActions. * Valid status values (confirmed via Status enum introspection): NEW | IN_PROGRESS | RESOLVED - * Note: FALSE_POSITIVE is not a status — it is an analystVerdict value. - * To mark false positive: use uam_set_analyst_verdict with a FALSE_POSITIVE_* value instead. + * Note: FALSE_POSITIVE is not a status; it is an analystVerdict value. + * To mark false positive: there is no dedicated tool. POST the raw + * alertTriggerActions mutation with the S1/alert/analystVerdictUpdate action + * via s1_api_post to /web/api/v2.1/unifiedalerts/graphql. + * + * The mutation result is verified: a __typename-only selection previously + * reported success even when the backend skipped or failed the action + * (observed live: status stayed unchanged). Fixed 2026-07-31. */ export async function uamSetStatus(alertId, status) { const query = ` mutation SetStatus($filter: OrFilterSelectionInput, $actions: [TriggerActionInput!]) { alertTriggerActions(filter: $filter, actions: $actions) { - __typename + ... on ActionsTriggered { + actions { actionId skip { id } failure { id errorMessage errorType } success { id } } + } + ... on TriggerActionsError { + errors { errorMessage } + } } } `; @@ -821,5 +583,28 @@ export async function uamSetStatus(alertId, status) { actions: [{ id: 'S1/alert/statusUpdate', payload: { status: { value: status } } }], }; const data = await uamGraphql(query, variables); - return data?.alertTriggerActions || null; + const result = data?.alertTriggerActions || null; + if (result?.errors?.length) { + throw new Error(`uamSetStatus trigger error: ${result.errors[0].errorMessage}`); + } + const action = result?.actions?.[0]; + if (!action) { + // Empty actions array: the backend applied nothing (e.g. the filter matched + // no alert). Same silent-success class as skip-without-success; fail loudly. + throw new Error( + `uamSetStatus applied no action for alert ${alertId}: the backend returned an empty actions list. ` + + 'Verify the alert id, then re-check with uam_get_alert.' + ); + } + if (action.failure?.length) { + const f = action.failure[0]; + throw new Error(`uamSetStatus failed for alert ${alertId}: ${f.errorMessage || f.errorType || 'unknown error'}`); + } + if (!(action.success?.length) && action.skip?.length) { + throw new Error( + `uamSetStatus skipped for alert ${alertId}: the backend did not apply the status update. ` + + 'Verify the alert id and that the transition is valid, then re-check with uam_get_alert.' + ); + } + return result; } diff --git a/mcp/s1-secops-mcp/lib/sdl.js b/mcp/s1-secops-mcp/lib/sdl.js index 7c6e41c..4a28ef3 100644 --- a/mcp/s1-secops-mcp/lib/sdl.js +++ b/mcp/s1-secops-mcp/lib/sdl.js @@ -3,7 +3,7 @@ * * Auth routing (mirrors the Python SDLClient behavior): * putFile → config_write_key - * getFile / listFiles → config_write_key || config_read_key || console_api_token + * getFile / listFiles → config_read_key || config_write_key || console_api_token * V1 query methods → config_write_key || config_read_key || log_read_key || console_api_token * * All SDL endpoints live at SDL_XDR_URL (e.g. https://xdr.us1.sentinelone.net). @@ -25,7 +25,9 @@ export function keyCandidates(chain) { const c = getCreds(); const chains = { config_write: [c.SDL_CONFIG_WRITE_KEY, c.S1_CONSOLE_API_TOKEN], - config_read: [c.SDL_CONFIG_WRITE_KEY, c.SDL_CONFIG_READ_KEY, c.S1_CONSOLE_API_TOKEN], + // Least-privilege first, mirroring the Python SDLClient chain + // (config_read, config_write, console). + config_read: [c.SDL_CONFIG_READ_KEY, c.SDL_CONFIG_WRITE_KEY, c.S1_CONSOLE_API_TOKEN], // Confirmed: SDL_CONFIG_WRITE_KEY does NOT grant "View logs" permission on /api/query. // SDL_LOG_READ_KEY must be first in chain for V1 query to succeed. log_read: [c.SDL_LOG_READ_KEY, c.SDL_CONFIG_READ_KEY, c.SDL_CONFIG_WRITE_KEY, c.S1_CONSOLE_API_TOKEN], @@ -89,7 +91,7 @@ async function sdlFetch(method, path, { body, chain = 'config_read', extraHeader try { data = JSON.parse(text); } catch { data = text; } if (res.status === 401 || res.status === 403) { - // Wrong-scoped key — fall through to the next candidate in the chain. + // Wrong-scoped key: fall through to the next candidate in the chain. const msg = typeof data === 'object' ? JSON.stringify(data) : text; lastAuthError = new Error(`SDL API ${method} ${path} → ${res.status}: ${msg}`); authFailed = true; @@ -109,12 +111,12 @@ async function sdlFetch(method, path, { body, chain = 'config_read', extraHeader // ─── Config file operations ─────────────────────────────────────────────────── -/** POST /api/listFiles — list every configuration file path on the SDL tenant. */ +/** POST /api/listFiles: list every configuration file path on the SDL tenant. */ export async function listFiles() { return sdlFetch('POST', '/api/listFiles', { body: {}, chain: 'config_read' }); } -/** POST /api/getFile — read a configuration file by path. +/** POST /api/getFile: read a configuration file by path. * Returns { path, content, version, ...status }. */ export async function getFile(path) { return sdlFetch('POST', '/api/getFile', { @@ -123,7 +125,7 @@ export async function getFile(path) { }); } -/** POST /api/putFile — create or update a configuration file. +/** POST /api/putFile: create or update a configuration file. * Pass expectedVersion (from a prior getFile) to enable optimistic locking. */ export async function putFile(path, content, expectedVersion) { const body = { path, content }; @@ -133,7 +135,7 @@ export async function putFile(path, content, expectedVersion) { return sdlFetch('POST', '/api/putFile', { body, chain: 'config_write' }); } -/** POST /api/putFile with deleteFile:true — delete a config file. */ +/** POST /api/putFile with deleteFile:true deletes a config file. */ export async function deleteFile(path, expectedVersion) { const body = { path, deleteFile: true }; if (expectedVersion !== undefined) body.expectedVersion = expectedVersion; @@ -144,7 +146,7 @@ export async function deleteFile(path, expectedVersion) { // Deprecated Feb 15 2027 but still the only way to get full event JSON per-event. // Use for schema discovery; use LRQ for hunting. -/** POST /api/query — retrieve raw event JSON for schema discovery. +/** POST /api/query: retrieve raw event JSON for schema discovery. * Returns { matches: [{ timestamp, message, attributes }] }. */ export async function v1Query(filter, { maxCount = 5, startTime = '24h', endTime } = {}) { const body = { diff --git a/mcp/s1-secops-mcp/lib/server-core.js b/mcp/s1-secops-mcp/lib/server-core.js index 63e4dbe..49346fc 100644 --- a/mcp/s1-secops-mcp/lib/server-core.js +++ b/mcp/s1-secops-mcp/lib/server-core.js @@ -64,7 +64,7 @@ const RESOURCES = [ { uri: 'sentinelone://soc-context', name: 'SOC Analyst Operating Instructions', - description: 'CLAUDE.md — Principal SOC Analyst operating instructions including investigation workflow, evidence discipline, anomaly detection playbook, MITRE ATT&CK mapping, and tool usage priorities.', + description: 'CLAUDE.md: Principal SOC Analyst operating instructions including investigation workflow, evidence discipline, anomaly detection playbook, MITRE ATT&CK mapping, and tool usage priorities.', mimeType: 'text/markdown', }, { @@ -94,7 +94,7 @@ const PROMPTS = [ export const SERVER_INFO = { name: 's1-secops-mcp-server', - version: '1.2.3', + version: '1.2.4', }; export const PROTOCOL_VERSION = '2024-11-05'; diff --git a/mcp/s1-secops-mcp/lib/uam-ingest.js b/mcp/s1-secops-mcp/lib/uam-ingest.js index 046094d..9b00afd 100644 --- a/mcp/s1-secops-mcp/lib/uam-ingest.js +++ b/mcp/s1-secops-mcp/lib/uam-ingest.js @@ -1,16 +1,16 @@ /** - * UAM Alert Interface client — pushes OCSF indicators and SecurityAlerts + * UAM Alert Interface client: pushes OCSF indicators and SecurityAlerts * INTO Unified Alert Management via the SentinelOne HEC ingest host. * * This is a SEPARATE API surface from the Mgmt Console: * Host : S1_HEC_INGEST_URL (e.g. https://ingest.us1.sentinelone.net) - * Auth : Authorization: Bearer (NOT "ApiToken" — endpoint rejects ApiToken) + * Auth : Authorization: Bearer (NOT "ApiToken", endpoint rejects ApiToken) * Body : concatenated JSON, gzip-compressed, Content-Encoding: gzip * Scope : S1-Scope: [:[:]] (mandatory) * * Endpoints: - * POST /v1/indicators — OCSF behavioral indicators (batch: N per call) - * POST /v1/alerts — OCSF SecurityAlert (ONE per call — see below) + * POST /v1/indicators : OCSF behavioral indicators (batch: N per call) + * POST /v1/alerts , OCSF SecurityAlert (ONE per call, see below) * * Critical constraints (empirically confirmed on your-tenant 2026-04-22): * - ONE alert per POST /v1/alerts. Multi-alert bodies return HTTP 202 but the @@ -90,9 +90,11 @@ async function hecPost(path, payloads, scope, retries = 3) { // payloads carry metadata.uid, which the stitcher dedupes on, so a re-POST // after an ambiguous 5xx does not double-ingest. (2026-07-29 review note.) if ((res.status === 429 || res.status >= 500) && attempt < retries) { - // Retry-After may be an HTTP date; Number() of that is NaN -> fall back to delay. - const ra = Number(res.headers.get('Retry-After')); - await sleep(Number.isFinite(ra) && ra >= 0 ? Math.min(ra * 1000, 30000) : delay); + // Retry-After may be missing or an HTTP date. Number(null) is 0, so a + // missing header must fall back to the exponential delay, not sleep 0ms. + const raRaw = res.headers.get('Retry-After'); + const ra = Number(raRaw); + await sleep(raRaw && Number.isFinite(ra) && ra >= 0 ? Math.min(ra * 1000, 30000) : delay); delay = Math.min(delay * 2, 8000); continue; } @@ -181,7 +183,7 @@ export function buildFileIndicator({ }, severity_id: 2, attack_surface_id: 1, - // OCSF Fingerprint array — dict form causes silent stitcher drop even on HTTP 202 + // OCSF Fingerprint array: dict form causes silent stitcher drop even on HTTP 202 file: { name: filename, type_id: 1, @@ -200,7 +202,7 @@ export function buildFileIndicator({ * type_uid, etc.) and observables. The stitcher resolves the full indicator from a * prior /v1/indicators POST via metadata.uid. Use with ingestAlert() (two-call flow). * true: related_events[] embeds the full indicator context (file, device, actor) inline. - * No separate /v1/indicators POST is required — everything ships in one /v1/alerts call. + * No separate /v1/indicators POST is required: everything ships in one /v1/alerts call. * Use with ingestAlertInline() (single-call flow). */ export function buildSecurityAlert({ @@ -216,7 +218,7 @@ export function buildSecurityAlert({ const ts = nowMs || Date.now(); const uid = indicator.metadata.uid; - // related_events[] entry — shape matches Python build_alert_referencing(). + // related_events[] entry: shape matches Python build_alert_referencing(). // type_uid comes from the indicator's own type_uid field (set by buildFileIndicator). // inline=true embeds file/device/actor so the alert is fully self-contained; // inline=false is reference-only and relies on the stitcher resolving metadata.uid. @@ -260,7 +262,7 @@ export function buildSecurityAlert({ }], category_uid: 2, category_name: 'Findings', - // S1-specific extension class — NOT the generic OCSF 2002. + // S1-specific extension class: NOT the generic OCSF 2002. // Using 2002 causes silent drop; 99602001 is what the stitcher expects. class_uid: 99602001, class_name: 'S1 Security Alert', @@ -356,7 +358,7 @@ export async function ingestAlert({ * * Differs from ingestAlert() in two ways: * - No separate /v1/indicators POST (no HEC indicator call at all). - * - No sleep — the indicator data is embedded inline inside the alert's + * - No sleep: the indicator data is embedded inline inside the alert's * finding_info.related_events[] entry (file, device, actor fields included), * so the stitcher does not need to resolve a uid from a prior indicator POST. * @@ -421,7 +423,7 @@ export async function postIndicators({ scope, indicators }) { /** * POST a single raw OCSF SecurityAlert to /v1/alerts. - * ONE alert per call — the stitcher silently drops all but one in multi-alert POSTs. + * ONE alert per call: the stitcher silently drops all but one in multi-alert POSTs. */ export async function postAlert({ scope, alert }) { if (!scope) throw new Error('scope is required.'); diff --git a/mcp/s1-secops-mcp/package.json b/mcp/s1-secops-mcp/package.json index 74953ad..b355f1f 100644 --- a/mcp/s1-secops-mcp/package.json +++ b/mcp/s1-secops-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@pmoses-s1/s1-secops-mcp", - "version": "1.2.3", + "version": "1.2.4", "description": "MCP server orchestrating SentinelOne skills, APIs, and SOC analyst context. Stdio or Streamable HTTP transport with per-user bearer auth for team deployments.", "type": "module", "main": "index.js", @@ -20,7 +20,7 @@ "start": "node index.js", "start:http": "node index.js --transport http", "dev": "node --watch index.js", - "test": "node --test tests/smoke.test.mjs tests/stdio-transport.test.mjs tests/http-transport.test.mjs tests/ssrf-path.test.mjs tests/http-origin-guard.test.mjs", + "test": "node --test tests/smoke.test.mjs tests/stdio-transport.test.mjs tests/http-transport.test.mjs tests/ssrf-path.test.mjs tests/http-origin-guard.test.mjs tests/regressions-2026-07-29.test.mjs tests/regressions-2026-07-31.test.mjs", "regen:readme": "node scripts/regen-readme-tools-table.mjs" }, "engines": { diff --git a/mcp/s1-secops-mcp/scripts/regen-readme-tools-table.mjs b/mcp/s1-secops-mcp/scripts/regen-readme-tools-table.mjs index d8adbcb..af2cf1b 100644 --- a/mcp/s1-secops-mcp/scripts/regen-readme-tools-table.mjs +++ b/mcp/s1-secops-mcp/scripts/regen-readme-tools-table.mjs @@ -60,7 +60,7 @@ const TOOL_SKILL = { const GROUPS = [ { label: 'PowerQuery', prefix: 'powerquery_' }, { label: 'Mgmt Console', test: n => /^(s1_api_|purple_ai_|uam_(list|get|add|set))/.test(n) }, - { label: 'SDL API', prefix: 'sdl_' }, + { label: 'SDL API', test: n => n.startsWith('sdl_') || n === 'hec_ingest' }, { label: 'Hyperautomation', prefix: 'ha_' }, { label: 'UAM Ingest', test: n => /^(uam_ingest_|uam_post_)/.test(n) }, ]; diff --git a/mcp/s1-secops-mcp/scripts/smoke-test-http.sh b/mcp/s1-secops-mcp/scripts/smoke-test-http.sh index 7ebe82e..a41825f 100755 --- a/mcp/s1-secops-mcp/scripts/smoke-test-http.sh +++ b/mcp/s1-secops-mcp/scripts/smoke-test-http.sh @@ -47,7 +47,10 @@ AUTH="Authorization: Bearer $TOKEN" JSON="Content-Type: application/json" FAILED=0 -fail() { echo " FAIL: $*" >&2; FAILED=$((FAILED+1)); } +fail() { + echo " FAIL: $*" >&2 + FAILED=$((FAILED + 1)) +} pass() { echo " PASS: $*"; } echo "=== 1. healthz (no auth) ===" @@ -67,17 +70,17 @@ INIT_BODY=$(curl -s -X POST "$URL" -H "$AUTH" -H "$JSON" -d '{ } }') PROTO=$(echo "$INIT_BODY" | jq -r '.result.protocolVersion // "missing"') -NAME=$( echo "$INIT_BODY" | jq -r '.result.serverInfo.name // "missing"') -VER=$( echo "$INIT_BODY" | jq -r '.result.serverInfo.version // "missing"') +NAME=$(echo "$INIT_BODY" | jq -r '.result.serverInfo.name // "missing"') +VER=$(echo "$INIT_BODY" | jq -r '.result.serverInfo.version // "missing"') [[ "$PROTO" == "2024-11-05" ]] && pass "protocolVersion=$PROTO" || fail "protocolVersion=$PROTO" -[[ "$NAME" == "s1-secops-mcp-server" ]] && pass "serverInfo.name=$NAME" || fail "serverInfo.name=$NAME" +[[ "$NAME" == "s1-secops-mcp-server" ]] && pass "serverInfo.name=$NAME" || fail "serverInfo.name=$NAME" [[ "$VER" != "missing" ]] && pass "serverInfo.version=$VER" || fail "serverInfo.version missing" echo echo "=== 3. tools/list count ===" TOOLS_COUNT=$(curl -s -X POST "$URL" -H "$AUTH" -H "$JSON" \ - -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \ - | jq '.result.tools | length') + -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | + jq '.result.tools | length') [[ "$TOOLS_COUNT" == "26" ]] && pass "tools/list returned 26 tools" || fail "tools/list returned $TOOLS_COUNT" echo @@ -107,8 +110,8 @@ BAD_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST "$URL" \ echo echo "=== 6. method not found (expect -32601) ===" ERR_CODE=$(curl -s -X POST "$URL" -H "$AUTH" -H "$JSON" \ - -d '{"jsonrpc":"2.0","id":4,"method":"does/not/exist"}' \ - | jq -r '.error.code // "missing"') + -d '{"jsonrpc":"2.0","id":4,"method":"does/not/exist"}' | + jq -r '.error.code // "missing"') [[ "$ERR_CODE" == "-32601" ]] && pass "unknown method returned -32601" || fail "unknown method returned code=$ERR_CODE" echo diff --git a/mcp/s1-secops-mcp/scripts/test-mac.sh b/mcp/s1-secops-mcp/scripts/test-mac.sh index 97882ba..400a250 100755 --- a/mcp/s1-secops-mcp/scripts/test-mac.sh +++ b/mcp/s1-secops-mcp/scripts/test-mac.sh @@ -1,16 +1,16 @@ #!/usr/bin/env bash # -# Mac validation script for s1-secops-mcp v1.2.2. +# Mac validation script for s1-secops-mcp (version read from package.json). # # Runs the same test matrix as Linux: # - syntax-check every .js/.mjs file -# - npm test (smoke + stdio + HTTP suites, 22 assertions) +# - npm test (smoke + stdio + HTTP + regression suites) # - regen:readme --check (no doc drift) # - sanity-run the server in stdio and HTTP modes # # Run this from the s1-secops-mcp/ directory on your Mac: # -# cd ~/path/to/ai-siem/mcp/s1-secops-mcp +# cd ~/path/to/claude-skills/s1-secops-mcp # bash scripts/test-mac.sh # # All checks should pass with green PASS markers. Any FAIL line should be @@ -22,11 +22,17 @@ PASS_COUNT=0 FAIL_COUNT=0 green() { printf '\033[32m%s\033[0m' "$*"; } -red() { printf '\033[31m%s\033[0m' "$*"; } -bold() { printf '\033[1m%s\033[0m' "$*"; } - -pass() { printf ' %s %s\n' "$(green PASS)" "$1"; PASS_COUNT=$((PASS_COUNT+1)); } -fail() { printf ' %s %s\n %s\n' "$(red FAIL)" "$1" "${2:-}"; FAIL_COUNT=$((FAIL_COUNT+1)); } +red() { printf '\033[31m%s\033[0m' "$*"; } +bold() { printf '\033[1m%s\033[0m' "$*"; } + +pass() { + printf ' %s %s\n' "$(green PASS)" "$1" + PASS_COUNT=$((PASS_COUNT + 1)) +} +fail() { + printf ' %s %s\n %s\n' "$(red FAIL)" "$1" "${2:-}" + FAIL_COUNT=$((FAIL_COUNT + 1)) +} step() { printf '\n%s\n' "$(bold "$1")"; } # ─── 1. Environment ─────────────────────────────────────────────────────────── @@ -47,7 +53,7 @@ fi pass "Node $(node --version) on $(uname -srm)" if [[ ! -f "index.js" ]]; then - fail "Not in the s1-secops-mcp directory" "cd to .../ai-siem/mcp/s1-secops-mcp first" + fail "Not in the s1-secops-mcp directory" "cd to .../claude-skills/s1-secops-mcp first" exit 1 fi pass "running from s1-secops-mcp directory" @@ -100,12 +106,14 @@ fi # ─── 5. CLI flag sanity ─────────────────────────────────────────────────────── step "5. CLI flag sanity" -if [[ "$(node index.js --version 2>/dev/null)" == "1.2.2" ]]; then - pass "--version returns 1.2.2" +# Read the expected version from package.json so this check never goes stale. +PKG_VERSION="$(node -p "require('./package.json').version")" +if [[ "$(node index.js --version 2>/dev/null)" == "$PKG_VERSION" ]]; then + pass "--version returns $PKG_VERSION" else - fail "--version did not return 1.2.2" "Got: $(node index.js --version 2>&1)" + fail "--version did not return $PKG_VERSION" "Got: $(node index.js --version 2>&1)" fi -if node index.js --help 2>&1 | grep -q "s1-secops-mcp 1.2.2"; then +if node index.js --help 2>&1 | grep -q "s1-secops-mcp $PKG_VERSION"; then pass "--help renders" else fail "--help broken" "$(node index.js --help 2>&1 | head -5)" @@ -116,8 +124,8 @@ fi step "6. stdio round-trip" STDIO_REPLY="$(printf '%s\n%s\n' \ '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"mac-test","version":"1"}}}' \ - '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \ - | node index.js 2>/dev/null)" + '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | + node index.js 2>/dev/null)" TOOL_COUNT="$(echo "$STDIO_REPLY" | tail -n 1 | node -e 'let s=""; process.stdin.on("data",d=>s+=d); process.stdin.on("end",()=>{try{console.log(JSON.parse(s).result.tools.length)}catch(e){console.log("ERR")}})')" if [[ "$TOOL_COUNT" == "26" ]]; then @@ -132,7 +140,7 @@ step "7. HTTP transport round-trip" PORT=$((10000 + RANDOM % 1000)) node index.js --transport http --port "$PORT" --host 127.0.0.1 >/tmp/mcp-test-mac.log 2>&1 & SERVER_PID=$! -trap "kill $SERVER_PID 2>/dev/null || true" EXIT +trap 'kill $SERVER_PID 2>/dev/null || true' EXIT # Wait for healthz for i in $(seq 1 30); do diff --git a/mcp/s1-secops-mcp/tests/http-origin-guard.test.mjs b/mcp/s1-secops-mcp/tests/http-origin-guard.test.mjs index 45815b9..b78138c 100644 --- a/mcp/s1-secops-mcp/tests/http-origin-guard.test.mjs +++ b/mcp/s1-secops-mcp/tests/http-origin-guard.test.mjs @@ -3,7 +3,7 @@ * * The documented no-auth loopback mode (`s1-secops-mcp --transport http`, no * bearer tokens) used to dispatch any POST /mcp regardless of Origin or Host, - * so a browser page — or a DNS-rebinding attack — on the operator's workstation + * so a browser page, or a DNS-rebinding attack, on the operator's workstation * could invoke every state-changing tool. After the fix, in no-auth mode: * - a request carrying any Origin header is rejected 403 * - a request whose Host header is not the loopback bind is rejected 403 diff --git a/mcp/s1-secops-mcp/tests/http-transport.test.mjs b/mcp/s1-secops-mcp/tests/http-transport.test.mjs index e83fc3b..78d4d89 100644 --- a/mcp/s1-secops-mcp/tests/http-transport.test.mjs +++ b/mcp/s1-secops-mcp/tests/http-transport.test.mjs @@ -18,13 +18,15 @@ import { test } from 'node:test'; import assert from 'node:assert/strict'; import { spawn } from 'node:child_process'; -import { mkdtempSync, writeFileSync, rmSync } from 'node:fs'; +import { mkdtempSync, writeFileSync, rmSync, readFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join, dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; const __dir = dirname(fileURLToPath(import.meta.url)); const SERVER = resolve(__dir, '..', 'index.js'); +// Expected version comes from package.json so release bumps cannot go stale here. +const PKG_VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url))).version; async function waitForHealth(port, attempts = 50) { for (let i = 0; i < attempts; i++) { @@ -89,7 +91,7 @@ test('http: POST /mcp initialize returns server info', async () => { const body = await r.json(); assert.equal(body.id, 1); assert.equal(body.result.serverInfo.name, 's1-secops-mcp-server'); - assert.equal(body.result.serverInfo.version, '1.2.2'); + assert.equal(body.result.serverInfo.version, PKG_VERSION); }); }); diff --git a/mcp/s1-secops-mcp/tests/regressions-2026-07-31.test.mjs b/mcp/s1-secops-mcp/tests/regressions-2026-07-31.test.mjs new file mode 100644 index 0000000..02b1b71 --- /dev/null +++ b/mcp/s1-secops-mcp/tests/regressions-2026-07-31.test.mjs @@ -0,0 +1,177 @@ +/** + * Regression tests for the 2026-07-31 code-review fixes. + * + * 1. Retry-After backoff: a MISSING Retry-After header must fall back to the + * exponential delay. Number(null) is 0, so the old code slept 0ms and + * hammered the backend on every 429 without the header. Numeric headers + * keep their exact prior behavior (seconds, capped at 30s). + * + * 2. uamSetStatus result verification: the alertTriggerActions mutation used + * to select only __typename, so a failed or skipped action still returned + * as success (observed live: status unchanged after a "successful" call). + * It must throw when the response carries a failure entry, or a skip with + * no success. + * + * 3. normalizeS1ApiGetParams: an inline ?isLegacy= already present in the + * path must be honored; appending a conflicting isLegacy=false query param + * contradicts the caller. Mirrors _maybe_inject_islegacy in the Python + * twin (sentinelone-mgmt-console-api/scripts/s1_client.py). + */ + +import { test } from 'node:test'; +import assert from 'node:assert/strict'; + +// ─── Retry-After backoff (mocked fetch, no network) ────────────────────────── + +test('doFetch: 429 with MISSING Retry-After waits the exponential delay, not 0ms', async () => { + process.env.S1_CONSOLE_URL = 'https://mgmt.example.invalid'; + process.env.S1_CONSOLE_API_TOKEN = 'tok'; + const callTimes = []; + const realFetch = globalThis.fetch; + globalThis.fetch = async () => { + callTimes.push(Date.now()); + if (callTimes.length === 1) return new Response('slow down', { status: 429 }); // no Retry-After header + return new Response(JSON.stringify({ data: { ok: true } }), { status: 200, headers: { 'Content-Type': 'application/json' } }); + }; + try { + const { apiGet } = await import('../lib/s1.js'); + const r = await apiGet('/web/api/v2.1/agents'); + assert.deepEqual(r, { data: { ok: true } }); + assert.equal(callTimes.length, 2, 'GET should retry once after the 429'); + const gap = callTimes[1] - callTimes[0]; + // First exponential delay is 500ms; the old bug slept Number(null) === 0ms. + assert.ok(gap >= 400, `retry after missing Retry-After must back off ~500ms, got ${gap}ms`); + } finally { + globalThis.fetch = realFetch; + delete process.env.S1_CONSOLE_URL; delete process.env.S1_CONSOLE_API_TOKEN; + } +}); + +test('doFetch: numeric Retry-After header keeps its prior behavior (0 -> immediate retry)', async () => { + process.env.S1_CONSOLE_URL = 'https://mgmt.example.invalid'; + process.env.S1_CONSOLE_API_TOKEN = 'tok'; + const callTimes = []; + const realFetch = globalThis.fetch; + globalThis.fetch = async () => { + callTimes.push(Date.now()); + if (callTimes.length === 1) { + return new Response('slow down', { status: 429, headers: { 'Retry-After': '0' } }); + } + return new Response(JSON.stringify({ data: { ok: true } }), { status: 200, headers: { 'Content-Type': 'application/json' } }); + }; + try { + const { apiGet } = await import('../lib/s1.js'); + await apiGet('/web/api/v2.1/agents'); + assert.equal(callTimes.length, 2); + const gap = callTimes[1] - callTimes[0]; + assert.ok(gap < 400, `Retry-After: 0 must retry immediately as before, got ${gap}ms`); + } finally { + globalThis.fetch = realFetch; + delete process.env.S1_CONSOLE_URL; delete process.env.S1_CONSOLE_API_TOKEN; + } +}); + +// ─── uamSetStatus result verification (mocked fetch, no network) ───────────── + +function gqlResponse(alertTriggerActions) { + return new Response(JSON.stringify({ data: { alertTriggerActions } }), { + status: 200, headers: { 'Content-Type': 'application/json' }, + }); +} + +test('uamSetStatus: throws when the response contains a failure entry', async () => { + process.env.S1_CONSOLE_URL = 'https://mgmt.example.invalid'; + process.env.S1_CONSOLE_API_TOKEN = 'tok'; + const realFetch = globalThis.fetch; + globalThis.fetch = async () => gqlResponse({ + actions: [{ + actionId: 'S1/alert/statusUpdate', + skip: [], + failure: [{ id: 'alert-1', errorMessage: 'status transition rejected', errorType: 'SERVICE_ERROR' }], + success: [], + }], + }); + try { + const { uamSetStatus } = await import('../lib/s1.js'); + await assert.rejects( + () => uamSetStatus('alert-1', 'RESOLVED'), + /status transition rejected/, + 'a failure entry must surface as a thrown error, not silent success', + ); + } finally { + globalThis.fetch = realFetch; + delete process.env.S1_CONSOLE_URL; delete process.env.S1_CONSOLE_API_TOKEN; + } +}); + +test('uamSetStatus: throws when the action is skipped with no success', async () => { + process.env.S1_CONSOLE_URL = 'https://mgmt.example.invalid'; + process.env.S1_CONSOLE_API_TOKEN = 'tok'; + const realFetch = globalThis.fetch; + globalThis.fetch = async () => gqlResponse({ + actions: [{ actionId: 'S1/alert/statusUpdate', skip: [{ id: 'alert-1' }], failure: [], success: [] }], + }); + try { + const { uamSetStatus } = await import('../lib/s1.js'); + await assert.rejects(() => uamSetStatus('alert-1', 'RESOLVED'), /skipped/); + } finally { + globalThis.fetch = realFetch; + delete process.env.S1_CONSOLE_URL; delete process.env.S1_CONSOLE_API_TOKEN; + } +}); + +test('uamSetStatus: throws when the backend returns an empty actions array', async () => { + // Found by the 2026-07-31 A/B probe pass: an ActionsTriggered response with + // actions: [] means nothing was applied (e.g. filter matched no alert), and + // the guard must not resolve silently. + process.env.S1_CONSOLE_URL = 'https://mgmt.example.invalid'; + process.env.S1_CONSOLE_API_TOKEN = 'tok'; + const realFetch = globalThis.fetch; + globalThis.fetch = async () => gqlResponse({ actions: [] }); + try { + const { uamSetStatus } = await import('../lib/s1.js'); + await assert.rejects(() => uamSetStatus('alert-1', 'RESOLVED'), /applied no action/); + } finally { + globalThis.fetch = realFetch; + delete process.env.S1_CONSOLE_URL; delete process.env.S1_CONSOLE_API_TOKEN; + } +}); + +test('uamSetStatus: resolves when the action reports success', async () => { + process.env.S1_CONSOLE_URL = 'https://mgmt.example.invalid'; + process.env.S1_CONSOLE_API_TOKEN = 'tok'; + const realFetch = globalThis.fetch; + globalThis.fetch = async () => gqlResponse({ + actions: [{ actionId: 'S1/alert/statusUpdate', skip: [], failure: [], success: [{ id: 'alert-1' }] }], + }); + try { + const { uamSetStatus } = await import('../lib/s1.js'); + const r = await uamSetStatus('alert-1', 'IN_PROGRESS'); + assert.equal(r.actions[0].success[0].id, 'alert-1'); + } finally { + globalThis.fetch = realFetch; + delete process.env.S1_CONSOLE_URL; delete process.env.S1_CONSOLE_API_TOKEN; + } +}); + +// ─── normalizeS1ApiGetParams inline ?isLegacy= override ────────────────────── + +test('normalizeS1ApiGetParams: inline ?isLegacy=true in the path is honored', async () => { + const { normalizeS1ApiGetParams } = await import('../tools/mgmt-console.js'); + + // 1. Inline isLegacy=true must NOT be contradicted by an injected param + const a = normalizeS1ApiGetParams('/web/api/v2.1/cloud-detection/rules?isLegacy=true', {}); + assert.equal(a.isLegacy, undefined, 'inline ?isLegacy=true must suppress injection'); + + // 2. Inline snake_case is_legacy also counts + const b = normalizeS1ApiGetParams('/web/api/v2.1/cloud-detection/rules?limit=5&is_legacy=false', {}); + assert.equal(b.isLegacy, undefined, 'inline &is_legacy= must suppress injection'); + + // 3. Case-insensitive match, mirroring the Python twin's re.IGNORECASE + const c = normalizeS1ApiGetParams('/web/api/v2.1/cloud-detection/rules?ISLEGACY=true', {}); + assert.equal(c.isLegacy, undefined, 'inline override must match case-insensitively'); + + // 4. No inline override -> still injected (the original guard is intact) + const d = normalizeS1ApiGetParams('/web/api/v2.1/cloud-detection/rules', {}); + assert.equal(d.isLegacy, false, 'plain path must still get isLegacy=false injected'); +}); diff --git a/mcp/s1-secops-mcp/tests/smoke.test.mjs b/mcp/s1-secops-mcp/tests/smoke.test.mjs index f75d395..f75fb17 100644 --- a/mcp/s1-secops-mcp/tests/smoke.test.mjs +++ b/mcp/s1-secops-mcp/tests/smoke.test.mjs @@ -8,8 +8,13 @@ import { test } from 'node:test'; import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; import { ALL_TOOLS, TOOL_DEFS, SERVER_INFO } from '../lib/server-core.js'; +// Single source of truth for the expected version: package.json. This keeps +// the test from going stale on every release bump. +const PKG_VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url))).version; + const EXPECTED_TOOLS = [ // PowerQuery (3) 'powerquery_enumerate_sources', @@ -44,8 +49,8 @@ const EXPECTED_TOOLS = [ 'uam_post_alert', ]; -test('server version is current', () => { - assert.equal(SERVER_INFO.version, '1.2.3'); +test('server version matches package.json', () => { + assert.equal(SERVER_INFO.version, PKG_VERSION); }); test('ALL_TOOLS exposes exactly 26 tools', () => { @@ -102,7 +107,7 @@ test('normalizeS1ApiGetParams auto-injects isLegacy=false on /cloud-detection/ru // Regression guard: without isLegacy=false the S1 API silently omits // queryType="scheduled" PowerQuery rules and the caller gets a // misleadingly-empty response. This was a repeated production failure - // before the auto-injection was added — do NOT remove this guard. + // before the auto-injection was added: do NOT remove this guard. const { normalizeS1ApiGetParams } = await import('../tools/mgmt-console.js'); // 1. Missing isLegacy → injected as false diff --git a/mcp/s1-secops-mcp/tests/ssrf-path.test.mjs b/mcp/s1-secops-mcp/tests/ssrf-path.test.mjs index 59479f0..2c80bf0 100644 --- a/mcp/s1-secops-mcp/tests/ssrf-path.test.mjs +++ b/mcp/s1-secops-mcp/tests/ssrf-path.test.mjs @@ -4,7 +4,7 @@ * Verifies that the s1_api_* client (lib/s1.js) can no longer be steered into * changing the request authority via an attacker-supplied `path`. A path like * "@evil.example/x", ".evil.example/x", "//evil.example/x", or "/\evil/x" used - * to redirect the authenticated request — and the tenant ApiToken — off-host. + * to redirect the authenticated request, and the tenant ApiToken, off-host. * After the safeUrl() fix, every one of these must throw BEFORE fetch runs, and * a benign path must still resolve to the configured console origin with the * ApiToken attached. @@ -87,7 +87,7 @@ test('ssrf: origin-pinning backstops paths that pass the leading-slash check', a // "//evil" is caught up front by the single-leading-slash rule. await assert.rejects(() => apiPost('//evil.example/x', {}), /must be a string starting with a single/); // "/\evil" passes the leading-slash rule (starts with one "/") but WHATWG URL - // normalises the backslash to "/", yielding a foreign authority — the origin + // normalises the backslash to "/", yielding a foreign authority; the origin // check is what stops it. This proves the two layers are both load-bearing. await assert.rejects(() => apiPost('/\\evil.example/x', {}), /may not change the request origin/); assert.equal(calls.length, 0); diff --git a/mcp/s1-secops-mcp/tests/stdio-transport.test.mjs b/mcp/s1-secops-mcp/tests/stdio-transport.test.mjs index 5e517ca..1eea5b3 100644 --- a/mcp/s1-secops-mcp/tests/stdio-transport.test.mjs +++ b/mcp/s1-secops-mcp/tests/stdio-transport.test.mjs @@ -12,11 +12,14 @@ import { test } from 'node:test'; import assert from 'node:assert/strict'; import { spawn } from 'node:child_process'; +import { readFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, resolve } from 'node:path'; const __dir = dirname(fileURLToPath(import.meta.url)); const SERVER = resolve(__dir, '..', 'index.js'); +// Expected version comes from package.json so release bumps cannot go stale here. +const PKG_VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url))).version; function runOnce(messages, { timeoutMs = 10000 } = {}) { return new Promise((resolveP, rejectP) => { @@ -78,7 +81,7 @@ test('stdio: initialize returns expected envelope', async () => { assert.equal(r.id, 1); assert.ok(r.result); assert.equal(r.result.serverInfo.name, 's1-secops-mcp-server'); - assert.equal(r.result.serverInfo.version, '1.2.2'); + assert.equal(r.result.serverInfo.version, PKG_VERSION); assert.ok(r.result.capabilities.tools); }); diff --git a/mcp/s1-secops-mcp/tests/test_uam_ingest.mjs b/mcp/s1-secops-mcp/tests/test_uam_ingest.mjs index e89b3bf..56ab211 100644 --- a/mcp/s1-secops-mcp/tests/test_uam_ingest.mjs +++ b/mcp/s1-secops-mcp/tests/test_uam_ingest.mjs @@ -1,5 +1,5 @@ /** - * Live HEC ingest test — posts only, no polling. + * Live HEC ingest test: posts only, no polling. * Outputs the alert titles to poll for via uam_list_alerts. * * Run from the s1-secops-mcp directory: @@ -18,10 +18,10 @@ const ts = new Date().toISOString().slice(0, 16).replace('T', ' '); // ── Test 1: two-call mode ──────────────────────────────────────────────────── const titleA = `MCP Test [two-call] ${ts}`; -console.log(`\n[1] Two-call mode — title: "${titleA}"`); +console.log(`\n[1] Two-call mode, title: "${titleA}"`); const resA = await ingestAlert({ scope, title: titleA, - description: 'Automated live test — two-call mode.', + description: 'Automated live test, two-call mode.', hostname: 'mcp-test-two-call', filename: 'test-two-call.exe', }); console.log(' indicator_uid :', resA.indicator_uid); @@ -31,16 +31,16 @@ console.log(' alert HEC :', resA.alert_response?.status, JSON.stringify // ── Test 2: inline mode ────────────────────────────────────────────────────── const titleB = `MCP Test [inline] ${ts}`; -console.log(`\n[2] Inline mode — title: "${titleB}"`); +console.log(`\n[2] Inline mode, title: "${titleB}"`); const resB = await ingestAlertInline({ scope, title: titleB, - description: 'Automated live test — inline mode.', + description: 'Automated live test, inline mode.', hostname: 'mcp-test-inline', filename: 'test-inline.exe', }); console.log(' indicator_uid :', resB.indicator_uid); console.log(' alert_uid :', resB.alert_uid); console.log(' alert HEC :', resB.alert_response?.status, JSON.stringify(resB.alert_response?.body)); -console.log('\nDone. Now poll UAM with uam_list_alerts — allow 30-60s for alerts to surface.'); +console.log('\nDone. Now poll UAM with uam_list_alerts, allow 30-60s for alerts to surface.'); console.log(`POLL_TITLE_A=${titleA}`); console.log(`POLL_TITLE_B=${titleB}`); diff --git a/mcp/s1-secops-mcp/tools/hyperautomation.js b/mcp/s1-secops-mcp/tools/hyperautomation.js index 539f04c..5b2754e 100644 --- a/mcp/s1-secops-mcp/tools/hyperautomation.js +++ b/mcp/s1-secops-mcp/tools/hyperautomation.js @@ -1,5 +1,5 @@ /** - * Hyperautomation tools — sentinelone-hyperautomation skill + * Hyperautomation tools: sentinelone-hyperautomation skill * * Tools: * ha_list_workflows List Hyperautomation workflows (with scope/state/sort filters) @@ -17,7 +17,7 @@ * * Deletion is a soft, recoverable HTTP DELETE (validated 2026-06-13): * DELETE /workflows/{id}?accountIds= (or ?siteIds=) - * The older POST /workflows/archive returns 500 on this tenant — do not use it. + * The older POST /workflows/archive returns 500 on this tenant: do not use it. * * Import scope: the public import endpoint accepts ?accountIds= or * ?siteIds=; with no scope it returns a misleading 403 on a scoped tenant. @@ -112,7 +112,7 @@ export const tools = [ // ─── ha_get_workflow ────────────────────────────────────────────────────── { name: 'ha_get_workflow', - description: `Get a single Hyperautomation workflow by workflowId and revisionId. The revisionId (= workflow.version_id) is returned by ha_list_workflows — always pass both IDs for a direct fetch. If revisionId is omitted, the tool will scan the first page of workflows to find the current revision, which is slower. Returns the full workflow object including trigger configuration, action steps, integration dependencies, scope, and version metadata.`, + description: `Get a single Hyperautomation workflow by workflowId and revisionId. The revisionId (= workflow.version_id) is returned by ha_list_workflows; always pass both IDs for a direct fetch. If revisionId is omitted, the tool will scan the first page of workflows to find the current revision, which is slower. Returns the full workflow object including trigger configuration, action steps, integration dependencies, scope, and version metadata.`, inputSchema: { type: 'object', properties: { @@ -160,7 +160,7 @@ export const tools = [ // ─── ha_delete_workflow ─────────────────────────────────────────────────── { name: 'ha_delete_workflow', - description: `Delete one or more Hyperautomation workflows. Uses the REST DELETE /hyper-automate/api/v1/workflows/{id} endpoint (validated 2026-06-13) — a soft, recoverable delete (the console offers a "Restore workflow" action), equivalent to clicking Delete in the Hyperautomation UI. Scope the call to where the workflow lives with accountIds (account-scoped workflow) or siteIds (site-scoped); a 404 "Object not found" means the id is not under that scope or is already deleted. Requires Hyper Automate.write permission. NOTE: do NOT use the older POST /workflows/archive path — it returns 500 on this tenant.`, + description: `Delete one or more Hyperautomation workflows. Uses the REST DELETE /hyper-automate/api/v1/workflows/{id} endpoint (validated 2026-06-13), a soft, recoverable delete (the console offers a "Restore workflow" action), equivalent to clicking Delete in the Hyperautomation UI. Scope the call to where the workflow lives with accountIds (account-scoped workflow) or siteIds (site-scoped); a 404 "Object not found" means the id is not under that scope or is already deleted. Requires Hyper Automate.write permission. NOTE: do NOT use the older POST /workflows/archive path; it returns 500 on this tenant.`, inputSchema: { type: 'object', properties: { @@ -247,7 +247,7 @@ export const tools = [ // ─── ha_export_workflow ─────────────────────────────────────────────────── { name: 'ha_export_workflow', - description: `Export all Hyperautomation workflows as a ZIP archive. Returns metadata about the ZIP (size, content-type) plus the first 200 bytes of the base64-encoded content. NOTE: The export API (confirmed via live backtest) returns ALL workflows — there is no per-workflow filter. Use ha_get_workflow to read a specific workflow's JSON definition instead. Export/import endpoints were not captured in the v1 network trace; this tool uses the confirmed /public path.`, + description: `Export all Hyperautomation workflows as a ZIP archive. Returns metadata about the ZIP (size, content-type) plus the first 200 bytes of the base64-encoded content. NOTE: The export API (confirmed via live backtest) returns ALL workflows; there is no per-workflow filter. Use ha_get_workflow to read a specific workflow's JSON definition instead. Export/import endpoints were not captured in the v1 network trace; this tool uses the confirmed /public path.`, inputSchema: { type: 'object', properties: {}, @@ -274,7 +274,7 @@ export const tools = [ const buf = await res.arrayBuffer(); const base64 = Buffer.from(buf).toString('base64'); return JSON.stringify({ - note: 'Export returns all workflows as a binary ZIP. Per-workflow filtering is not supported. METADATA ONLY: this tool does not return or persist the ZIP content — use the console UI or a direct API call with file output if you need the archive itself.', + note: 'Export returns all workflows as a binary ZIP. Per-workflow filtering is not supported. METADATA ONLY: this tool does not return or persist the ZIP content; use the console UI or a direct API call with file output if you need the archive itself.', contentType: res.headers.get('Content-Type') || 'application/zip', sizeBytes: buf.byteLength, base64Preview: base64.slice(0, 200) + '… [truncated]', diff --git a/mcp/s1-secops-mcp/tools/mgmt-console.js b/mcp/s1-secops-mcp/tools/mgmt-console.js index c18874a..4984423 100644 --- a/mcp/s1-secops-mcp/tools/mgmt-console.js +++ b/mcp/s1-secops-mcp/tools/mgmt-console.js @@ -1,5 +1,5 @@ /** - * Management Console API tools — sentinelone-mgmt-console-api skill + * Management Console API tools: sentinelone-mgmt-console-api skill * * Tools: * s1_api_get Generic GET against S1 Mgmt Console REST API @@ -13,10 +13,10 @@ * uam_add_note Add analyst note to an alert * uam_set_status Update alert status (NEW, IN_PROGRESS, RESOLVED) * - * REMOVED (2026-05-03 — confirmed non-functional for API tokens): - * purple_ai_query — requires browser-session teamToken from /sdl/v2/graphql that + * REMOVED (2026-05-03: confirmed non-functional for API tokens): + * purple_ai_query : requires browser-session teamToken from /sdl/v2/graphql that * API-token service accounts never obtain. Use Purple MCP instead. - * purple_ai_investigate — same root cause (SERVICE_ERROR). Use Purple MCP instead. + * purple_ai_investigate : same root cause (SERVICE_ERROR). Use Purple MCP instead. */ import { apiGet, apiPost, apiPut, apiDelete, apiPatch, purpleAlertSummary, uamListAlerts, uamGetAlert, uamAddNote, uamSetStatus } from '../lib/s1.js'; @@ -25,7 +25,7 @@ import { apiGet, apiPost, apiPut, apiDelete, apiPatch, purpleAlertSummary, uamLi * Defensive normalization for GET /cloud-detection/rules calls. * * Without `isLegacy=false`, the S1 API silently omits queryType="scheduled" - * PowerQuery rules from the response — no error, no warning, the response + * PowerQuery rules from the response: no error, no warning, the response * just lies by omission. Promoting "empty response" to "tenant has zero * scheduled detections" without isLegacy=false is the failure mode this * guard exists to prevent. Exported for unit testing. @@ -35,6 +35,11 @@ export function normalizeS1ApiGetParams(path, params) { if ( typeof path === 'string' && /\/cloud-detection\/rules(\/|\?|$)/.test(path) && + // Respect an explicit inline override in the path query string, e.g. + // /cloud-detection/rules?isLegacy=true; do not append a conflicting + // isLegacy=false. Mirrors _maybe_inject_islegacy in + // sentinelone-mgmt-console-api/scripts/s1_client.py. + !/[?&]is_?legacy=/i.test(path) && p.isLegacy === undefined && p.is_legacy === undefined ) { @@ -47,9 +52,9 @@ export const tools = [ // ─── s1_api_get ─────────────────────────────────────────────────────────── { name: 's1_api_get', - description: `Generic GET request to the SentinelOne Management Console REST API (v2.1). Use for ALL read operations: listing, counting, and exporting. The S1 API uses GET for every read — listing, counting, and exporting are always GET, never POST. The path should start with /web/api/v2.1/. Returns raw JSON response. For paginated endpoints, use the cursor or skip/limit params. Count examples: path="/web/api/v2.1/agents/count" returns {"data":{"total":N}}; path="/web/api/v2.1/threats" params={"countOnly":true} returns pagination.totalItems. Export example: path="/web/api/v2.1/threats/export" (no extra params). Get agents by IDs: path="/web/api/v2.1/agents" params={"ids":","} (comma-separated query param). + description: `Generic GET request to the SentinelOne Management Console REST API (v2.1). Use for ALL read operations: listing, counting, and exporting. The S1 API uses GET for every read: listing, counting, and exporting are always GET, never POST. The path should start with /web/api/v2.1/. Returns raw JSON response. For paginated endpoints, use the cursor or skip/limit params. Count examples: path="/web/api/v2.1/agents/count" returns {"data":{"total":N}}; path="/web/api/v2.1/threats" params={"countOnly":true} returns pagination.totalItems. Export example: path="/web/api/v2.1/threats/export" (no extra params). Get agents by IDs: path="/web/api/v2.1/agents" params={"ids":","} (comma-separated query param). -⚠️ CLOUD-DETECTION RULES — MANDATORY isLegacy=false: For ANY GET on /cloud-detection/rules (listing, name search, queryType filter, scope filter) you MUST pass params.isLegacy=false. Without it the API silently omits queryType="scheduled" PowerQuery rules and returns only events-type rules — there is no error, no warning, the response just lies by omission. This handler auto-injects isLegacy=false when it sees a /cloud-detection/rules path and the caller forgot it, but always pass it explicitly so it shows up in audit logs. Promoting "empty response" to "tenant has zero scheduled detections" without isLegacy=false is the failure mode this guard exists to prevent.`, +⚠️ CLOUD-DETECTION RULES, MANDATORY isLegacy=false: For ANY GET on /cloud-detection/rules (listing, name search, queryType filter, scope filter) you MUST pass params.isLegacy=false. Without it the API silently omits queryType="scheduled" PowerQuery rules and returns only events-type rules; there is no error, no warning, the response just lies by omission. This handler auto-injects isLegacy=false when it sees a /cloud-detection/rules path and the caller forgot it, but always pass it explicitly so it shows up in audit logs. Promoting "empty response" to "tenant has zero scheduled detections" without isLegacy=false is the failure mode this guard exists to prevent.`, inputSchema: { type: 'object', properties: { @@ -78,7 +83,7 @@ export const tools = [ // ─── s1_api_post ────────────────────────────────────────────────────────── { name: 's1_api_post', - description: `Generic POST request to the SentinelOne Management Console REST API (v2.1). Use ONLY for write and action operations: create IOC, isolate agent, add exclusion, create custom detection rule, trigger RemoteOps, etc. The path should start with /web/api/v2.1/. NEVER use POST for listing, counting, or exporting — all reads are GET. POST to a read path returns HTTP 404 because the path does not exist in the API (e.g. POST /agents/ids, POST /threats/summary, POST /export/threats are all wrong). Before calling, verify the path exists with: python3 scripts/search_endpoints.py "". The body is NOT auto-wrapped — pass the complete envelope, e.g. {"data": {...}, "filter": {...}}.`, + description: `Generic POST request to the SentinelOne Management Console REST API (v2.1). Use ONLY for write and action operations: create IOC, isolate agent, add exclusion, create custom detection rule, trigger RemoteOps, etc. The path should start with /web/api/v2.1/. NEVER use POST for listing, counting, or exporting; all reads are GET. POST to a read path returns HTTP 404 because the path does not exist in the API (e.g. POST /agents/ids, POST /threats/summary, POST /export/threats are all wrong). Before calling, verify the path exists with: python3 scripts/search_endpoints.py "". The body is NOT auto-wrapped; pass the complete envelope, e.g. {"data": {...}, "filter": {...}}.`, inputSchema: { type: 'object', properties: { @@ -104,7 +109,7 @@ export const tools = [ // ─── s1_api_put ─────────────────────────────────────────────────────────── { name: 's1_api_put', - description: `Generic PUT request to the SentinelOne Management Console REST API (v2.1). Use for full-replacement updates: update agent policies, replace exclusion rules, set system configuration, update firewall/device control rules, update group settings, etc. The path should start with /web/api/v2.1/. The body replaces the resource in full — include all required fields, not just the changed ones. Consult the swagger reference at references/tags/ in the sentinelone-mgmt-console-api skill before calling. Examples: path="/web/api/v2.1/accounts/{id}/policy" body={"data":{...policy fields...}}, path="/web/api/v2.1/system/configuration" body={"data":{...}}.`, + description: `Generic PUT request to the SentinelOne Management Console REST API (v2.1). Use for full-replacement updates: update agent policies, replace exclusion rules, set system configuration, update firewall/device control rules, update group settings, etc. The path should start with /web/api/v2.1/. The body replaces the resource in full; include all required fields, not just the changed ones. Consult the swagger reference at references/tags/ in the sentinelone-mgmt-console-api skill before calling. Examples: path="/web/api/v2.1/accounts/{id}/policy" body={"data":{...policy fields...}}, path="/web/api/v2.1/system/configuration" body={"data":{...}}.`, inputSchema: { type: 'object', properties: { @@ -130,7 +135,7 @@ export const tools = [ // ─── s1_api_delete ──────────────────────────────────────────────────────── { name: 's1_api_delete', - description: `Generic DELETE request to the SentinelOne Management Console REST API (v2.1). Use for delete operations: delete IOCs (DELETE /web/api/v2.1/threat-intelligence/iocs), delete unified exclusions, delete custom detection rules, delete remote scripts, delete firewall/device control rules, delete tags, etc. The path should start with /web/api/v2.1/. Many S1 DELETE endpoints accept a filter body (e.g. IOCDeleteSchema uses accountId + one other field) — pass it as the body param. Some accept query params only (body can be omitted). Consult the swagger reference at references/tags/ in the sentinelone-mgmt-console-api skill for the exact filter schema before calling. WARNING: deletions are irreversible. Confirm the target ID/filter before executing.`, + description: `Generic DELETE request to the SentinelOne Management Console REST API (v2.1). Use for delete operations: delete IOCs (DELETE /web/api/v2.1/threat-intelligence/iocs), delete unified exclusions, delete custom detection rules, delete remote scripts, delete firewall/device control rules, delete tags, etc. The path should start with /web/api/v2.1/. Many S1 DELETE endpoints accept a filter body (e.g. IOCDeleteSchema uses accountId + one other field); pass it as the body param. Some accept query params only (body can be omitted). Consult the swagger reference at references/tags/ in the sentinelone-mgmt-console-api skill for the exact filter schema before calling. WARNING: deletions are irreversible. Confirm the target ID/filter before executing.`, inputSchema: { type: 'object', properties: { @@ -202,7 +207,7 @@ export const tools = [ // ─── uam_list_alerts ────────────────────────────────────────────────────── { name: 'uam_list_alerts', - description: `List UAM (Unified Alert Management) alerts via GraphQL. The PRIMARY alert API in S1 — covers all alert types (EDR, STAR, cloud, identity, third-party). Uses the correct FilterInput schema: dateTimeRange { start, end } for time windows (epoch ms). USE THIS instead of Purple MCP search_alerts for time-scoped searches — the Purple MCP sends date_range (snake_case) which UAM rejects; this tool uses dateTimeRange (the actual schema field). Convenience params (status, severity, startTime, endTime) build FilterInputs automatically. For deeper analysis, follow up with uam_get_alert.`, + description: `List UAM (Unified Alert Management) alerts via GraphQL. The PRIMARY alert API in S1, covers all alert types (EDR, STAR, cloud, identity, third-party). Uses the correct FilterInput schema: dateTimeRange { start, end } for time windows (epoch ms). USE THIS instead of Purple MCP search_alerts for time-scoped searches; the Purple MCP sends date_range (snake_case) which UAM rejects; this tool uses dateTimeRange (the actual schema field). Convenience params (status, severity, startTime, endTime) build FilterInputs automatically. For deeper analysis, follow up with uam_get_alert.`, inputSchema: { type: 'object', properties: { @@ -223,7 +228,7 @@ export const tools = [ }, status: { type: 'string', - description: 'Filter by status. Uses stringEqual FilterInput. Valid values (confirmed against live tenant): "NEW", "IN_PROGRESS", "RESOLVED". "OPEN" is NOT a valid value and silently returns 0 results. "FALSE_POSITIVE" is an analystVerdict field, not a status — use uam_set_status to set analystVerdict separately.', + description: 'Filter by status. Uses stringEqual FilterInput. Valid values (confirmed against live tenant): "NEW", "IN_PROGRESS", "RESOLVED". "OPEN" is NOT a valid value and silently returns 0 results. "FALSE_POSITIVE" is an analystVerdict field, not a status; uam_set_status cannot set it. To set the analyst verdict, POST the raw alertTriggerActions mutation with the S1/alert/analystVerdictUpdate action via s1_api_post to /web/api/v2.1/unifiedalerts/graphql.', }, severity: { type: 'string', @@ -239,7 +244,7 @@ export const tools = [ }, startTime: { type: 'string', - description: 'Start of time window. ISO-8601 string ("2026-05-03T07:32:00Z") or epoch milliseconds as string. Builds a dateTimeRange FilterInput on detectedAt using { start, end } — the actual UAM schema fields confirmed by introspection.', + description: 'Start of time window. ISO-8601 string ("2026-05-03T07:32:00Z") or epoch milliseconds as string. Builds a dateTimeRange FilterInput on detectedAt using { start, end }, the actual UAM schema fields confirmed by introspection.', }, endTime: { type: 'string', @@ -271,7 +276,7 @@ export const tools = [ // ─── uam_get_alert ──────────────────────────────────────────────────────── { name: 'uam_get_alert', - description: `Get full details for a specific UAM alert including analyst notes. ALWAYS call this before making a verdict — notes may contain MDR verdicts (False Positive / Benign / Resolved) that take precedence over detection engine severity. Returns alert fields plus a notes array from alertNotes query.`, + description: `Get full details for a specific UAM alert including analyst notes. ALWAYS call this before making a verdict; notes may contain MDR verdicts (False Positive / Benign / Resolved) that take precedence over detection engine severity. Returns alert fields plus a notes array from alertNotes query.`, inputSchema: { type: 'object', properties: { @@ -301,7 +306,7 @@ export const tools = [ }, note: { type: 'string', - description: 'Note text. Cite evidence inline. Avoid vague statements — be specific about what queries were run, what IOCs were checked, and what the results were.', + description: 'Note text. Cite evidence inline. Avoid vague statements, be specific about what queries were run, what IOCs were checked, and what the results were.', }, }, required: ['alertId', 'note'], @@ -315,7 +320,7 @@ export const tools = [ // ─── uam_set_status ─────────────────────────────────────────────────────── { name: 'uam_set_status', - description: `Update the status of a UAM alert. Valid values: NEW (reopen), IN_PROGRESS (actively investigating), RESOLVED (threat contained and remediated). Note: FALSE_POSITIVE is NOT a status value on this API — it is an analystVerdict. To mark an alert as a false positive, add a note explaining why and set status to RESOLVED. Always add a note via uam_add_note before closing an alert.`, + description: `Update the status of a UAM alert. Valid values: NEW (reopen), IN_PROGRESS (actively investigating), RESOLVED (threat contained and remediated). Note: FALSE_POSITIVE is NOT a status value on this API; it is an analystVerdict. To mark an alert as a false positive, add a note explaining why and set status to RESOLVED. Always add a note via uam_add_note before closing an alert.`, inputSchema: { type: 'object', properties: { diff --git a/mcp/s1-secops-mcp/tools/powerquery.js b/mcp/s1-secops-mcp/tools/powerquery.js index 9317915..97a9ceb 100644 --- a/mcp/s1-secops-mcp/tools/powerquery.js +++ b/mcp/s1-secops-mcp/tools/powerquery.js @@ -1,5 +1,5 @@ /** - * PowerQuery tools — sentinelone-powerquery skill + * PowerQuery tools: sentinelone-powerquery skill * * Tools: * powerquery_run Run a PowerQuery via the LRQ API @@ -39,13 +39,13 @@ export const tools = [ // ─── powerquery_run ──────────────────────────────────────────────────────── { name: 'powerquery_run', - description: `Run a SentinelOne PowerQuery against the Singularity Data Lake using the LRQ API. The LRQ API is async — this tool handles the full launch-poll-cancel lifecycle and returns results. Use for threat hunting, telemetry analysis, dashboard panel validation, and STAR rule testing. Auth: Bearer (same token as mgmt API). Time range defaults to last 24 hours if startTime/endTime are omitted.`, + description: `Run a SentinelOne PowerQuery against the Singularity Data Lake using the LRQ API. The LRQ API is async; this tool handles the full launch-poll-cancel lifecycle and returns results. Use for threat hunting, telemetry analysis, dashboard panel validation, and STAR rule testing. Auth: Bearer (same token as mgmt API). Time range defaults to last 24 hours if startTime/endTime are omitted.`, inputSchema: { type: 'object', properties: { query: { type: 'string', - description: 'The PowerQuery string. Use pipe-separated commands: | filter | group | sort | limit | columns. Three distinct wildcard idioms — use the right one: (1) FIELD PRESENCE / ATTRIBUTE WILDCARD: field=* means "field is present/non-null", e.g. dataSource.name=* | group count=count() by dataSource.name — use this as a query-opener or whenever you need "all events that have this field". (2) ALL-COLUMN TEXT SEARCH: * contains \'value\' or * matches \'regex\' in the initial filter (before the first |) searches ALL indexed fields — use when the user asks to find text anywhere in the event, e.g. dataSource.name=\'MySource\' * contains \'evil.com\'. Dramatically faster than message contains. (3) EMPTY FILTER (all events): start with | and no initial predicate, e.g. | group ct=count() by event.type. Do NOT use bare * alone as the initial filter — that causes HTTP 500 ("Don\'t understand [*]"). Beyond filtering, | datasource [from ] reads SentinelOne-managed inventory (assets, alerts, vulnerabilities, misconfigurations, metering; e.g. | datasource assets from \'surface/identity\') and | savelookup \'\' persists the result as a reusable lookup table (see references/datasource-command.md in sentinelone-powerquery).', + description: 'The PowerQuery string. Use pipe-separated commands: | filter | group | sort | limit | columns. Three distinct wildcard idioms; use the right one: (1) FIELD PRESENCE / ATTRIBUTE WILDCARD: field=* means "field is present/non-null", e.g. dataSource.name=* | group count=count() by dataSource.name; use this as a query-opener or whenever you need "all events that have this field". (2) ALL-COLUMN TEXT SEARCH: * contains \'value\' or * matches \'regex\' in the initial filter (before the first |) searches ALL indexed fields; use when the user asks to find text anywhere in the event, e.g. dataSource.name=\'MySource\' * contains \'evil.com\'. Dramatically faster than message contains. (3) EMPTY FILTER (all events): start with | and no initial predicate, e.g. | group ct=count() by event.type. Do NOT use bare * alone as the initial filter; that causes HTTP 500 ("Don\'t understand [*]"). Beyond filtering, | datasource [from ] reads SentinelOne-managed inventory (assets, alerts, vulnerabilities, misconfigurations, metering; e.g. | datasource assets from \'surface/identity\') and | savelookup \'\' persists the result as a reusable lookup table (see references/datasource-command.md in sentinelone-powerquery).', }, startTime: { type: 'string', @@ -99,9 +99,11 @@ export const tools = [ required: ['dataSourceName'], }, async handler({ dataSourceName, maxEvents = 5, startTime = '24h' }) { - // Escape single quotes to keep tenant-defined source names from breaking - // (or altering) the V1 filter expression. - const safeName = String(dataSourceName).replace(/'/g, "\\'"); + // Escape backslashes first, then single quotes, to keep tenant-defined + // source names from breaking (or altering) the V1 filter expression. + // Quote-only escaping let a trailing backslash neutralise the added + // escape (e.g. name\' -> \\' which re-opens the string). + const safeName = String(dataSourceName).replace(/\\/g, '\\\\').replace(/'/g, "\\'"); const filter = `dataSource.name=='${safeName}'`; const result = await v1Query(filter, { maxCount: Math.min(maxEvents, 50), startTime }); diff --git a/mcp/s1-secops-mcp/tools/sdl-api.js b/mcp/s1-secops-mcp/tools/sdl-api.js index 1db71e6..c9001f7 100644 --- a/mcp/s1-secops-mcp/tools/sdl-api.js +++ b/mcp/s1-secops-mcp/tools/sdl-api.js @@ -1,5 +1,5 @@ /** - * SDL API tools — sentinelone-sdl-api, sentinelone-sdl-dashboard, sentinelone-sdl-log-parser skills + * SDL API tools: sentinelone-sdl-api, sentinelone-sdl-dashboard, sentinelone-sdl-log-parser skills * * Tools: * sdl_list_files List all config files on the SDL tenant @@ -31,7 +31,7 @@ export const tools = [ // ─── sdl_get_file ───────────────────────────────────────────────────────── { name: 'sdl_get_file', - description: `Get the content and current version number of a SDL configuration file. Use before sdl_put_file to read the current version for optimistic locking (pass the returned version as expectedVersion). Supports any file type: parsers (/logParsers/), dashboards (/dashboards/), alerts (/alerts/), lookups (/lookups/), datatables (/datatables/). Always read before overwriting — this prevents concurrent-edit conflicts.`, + description: `Get the content and current version number of a SDL configuration file. Use before sdl_put_file to read the current version for optimistic locking (pass the returned version as expectedVersion). Supports any file type: parsers (/logParsers/), dashboards (/dashboards/), alerts (/alerts/), lookups (/lookups/), datatables (/datatables/). Always read before overwriting; this prevents concurrent-edit conflicts.`, inputSchema: { type: 'object', properties: { @@ -51,7 +51,7 @@ export const tools = [ // ─── sdl_put_file ───────────────────────────────────────────────────────── { name: 'sdl_put_file', - description: `Deploy or update a SDL configuration file. Always call sdl_get_file first to obtain the current expectedVersion — this prevents overwriting concurrent edits. If creating a new file, omit expectedVersion. File type conventions: parsers go to /logParsers/, dashboards to /dashboards/, alerts to /alerts/, lookups to /lookups/. Requires Configuration Write key (SDL_CONFIG_WRITE_KEY) or a console JWT that has config write permissions.`, + description: `Deploy or update a SDL configuration file. Always call sdl_get_file first to obtain the current expectedVersion; this prevents overwriting concurrent edits. If creating a new file, omit expectedVersion. File type conventions: parsers go to /logParsers/, dashboards to /dashboards/, alerts to /alerts/, lookups to /lookups/. Requires Configuration Write key (SDL_CONFIG_WRITE_KEY) or a console JWT that has config write permissions.`, inputSchema: { type: 'object', properties: { @@ -79,7 +79,7 @@ export const tools = [ // ─── sdl_delete_file ────────────────────────────────────────────────────── { name: 'sdl_delete_file', - description: `Delete a SDL configuration file (parser, dashboard, alert, lookup, datatable). Use with caution — deletion is permanent. Always read the file with sdl_get_file first to confirm you have the right path and version.`, + description: `Delete a SDL configuration file (parser, dashboard, alert, lookup, datatable). Use with caution; deletion is permanent. Always read the file with sdl_get_file first to confirm you have the right path and version.`, inputSchema: { type: 'object', properties: { diff --git a/mcp/s1-secops-mcp/tools/uam-ingest.js b/mcp/s1-secops-mcp/tools/uam-ingest.js index e2c6d98..a1f0224 100644 --- a/mcp/s1-secops-mcp/tools/uam-ingest.js +++ b/mcp/s1-secops-mcp/tools/uam-ingest.js @@ -1,5 +1,5 @@ /** - * UAM Alert Interface tools — push OCSF indicators + alerts INTO UAM + * UAM Alert Interface tools: push OCSF indicators + alerts INTO UAM * via the SentinelOne HEC ingest host (ingest.us1.sentinelone.net). * * Tools: @@ -22,7 +22,7 @@ export const tools = [ Two-call mode (inline=false, default): POST indicator to /v1/indicators, sleep 3s, POST SecurityAlert to /v1/alerts referencing the indicator uid. The stitcher resolves the full indicator into alert.rawIndicators. Best for testing deep indicator stitching and the Indicators tab in UAM. -Inline mode (inline=true): POST a single SecurityAlert to /v1/alerts with the indicator's file/device/actor fields embedded inside finding_info.related_events[]. No separate indicator POST, no sleep — one round-trip. Best for rapid alert creation or when a single call is preferred. +Inline mode (inline=true): POST a single SecurityAlert to /v1/alerts with the indicator's file/device/actor fields embedded inside finding_info.related_events[]. No separate indicator POST, no sleep, one round-trip. Best for rapid alert creation or when a single call is preferred. Both modes return indicator_uid and alert_uid. The alert surfaces in UAM within 30-60s. Requires S1_HEC_INGEST_URL in credentials.json.`, inputSchema: { @@ -62,7 +62,7 @@ Both modes return indicator_uid and alert_uid. The alert surfaces in UAM within }, inline: { type: 'boolean', - description: 'When true, embed indicator data (file, device, actor, observables) directly inside the alert\'s finding_info.related_events[] and POST only to /v1/alerts — no separate /v1/indicators call, no sleep. When false (default), use the two-call flow: POST indicator first, sleep, then POST alert.', + description: 'When true, embed indicator data (file, device, actor, observables) directly inside the alert\'s finding_info.related_events[] and POST only to /v1/alerts; no separate /v1/indicators call, no sleep. When false (default), use the two-call flow: POST indicator first, sleep, then POST alert.', default: false, }, }, @@ -79,7 +79,7 @@ Both modes return indicator_uid and alert_uid. The alert surfaces in UAM within // ─── uam_post_indicators ────────────────────────────────────────────────── { name: 'uam_post_indicators', - description: `POST one or more raw OCSF behavioral indicators to /v1/indicators on the SentinelOne HEC ingest host. Batching is supported — pass multiple indicators in the array and they are sent in a single gzip-compressed request. Each indicator must carry metadata.profiles=["s1/security_indicator"] and a unique metadata.uid (used as the join key when an alert references it). After posting, wait at least 3s before posting a SecurityAlert that references these indicator uids (use uam_post_alert or uam_ingest_alert which enforce the sleep). Requires S1_HEC_INGEST_URL in credentials.json.`, + description: `POST one or more raw OCSF behavioral indicators to /v1/indicators on the SentinelOne HEC ingest host. Batching is supported; pass multiple indicators in the array and they are sent in a single gzip-compressed request. Each indicator must carry metadata.profiles=["s1/security_indicator"] and a unique metadata.uid (used as the join key when an alert references it). After posting, wait at least 3s before posting a SecurityAlert that references these indicator uids (use uam_post_alert or uam_ingest_alert which enforce the sleep). Requires S1_HEC_INGEST_URL in credentials.json.`, inputSchema: { type: 'object', properties: { @@ -104,7 +104,7 @@ Both modes return indicator_uid and alert_uid. The alert surfaces in UAM within // ─── uam_post_alert ─────────────────────────────────────────────────────── { name: 'uam_post_alert', - description: `POST a single raw OCSF SecurityAlert to /v1/alerts on the SentinelOne HEC ingest host. IMPORTANT: one alert per call. The HEC stitcher silently drops all but one alert in a multi-alert POST body (HTTP 202 still returned), so this tool rejects arrays. To send multiple alerts, loop this call. Always post indicator(s) first via uam_post_indicators and sleep at least 3s before calling this — posting an alert before its indicator uids are registered causes a silent drop. Requires S1_HEC_INGEST_URL in credentials.json.`, + description: `POST a single raw OCSF SecurityAlert to /v1/alerts on the SentinelOne HEC ingest host. IMPORTANT: one alert per call. The HEC stitcher silently drops all but one alert in a multi-alert POST body (HTTP 202 still returned), so this tool rejects arrays. To send multiple alerts, loop this call. Always post indicator(s) first via uam_post_indicators and sleep at least 3s before calling this; posting an alert before its indicator uids are registered causes a silent drop. Requires S1_HEC_INGEST_URL in credentials.json.`, inputSchema: { type: 'object', properties: { @@ -114,7 +114,7 @@ Both modes return indicator_uid and alert_uid. The alert surfaces in UAM within }, alert: { type: 'object', - description: 'Single OCSF SecurityAlert object. class_uid MUST be 99602001 (S1 Security Alert extension class) with type_uid 9960200101 — the generic OCSF 2002 is silently dropped by the stitcher even though HEC returns HTTP 202. Must have metadata.uid, finding_info.related_events[] each referencing a previously-posted indicator via uid. Each related_events entry needs class_uid, type_uid, category_uid, activity_id, severity_id, time, message, and observables[] with type+typeName.', + description: 'Single OCSF SecurityAlert object. class_uid MUST be 99602001 (S1 Security Alert extension class) with type_uid 9960200101; the generic OCSF 2002 is silently dropped by the stitcher even though HEC returns HTTP 202. Must have metadata.uid, finding_info.related_events[] each referencing a previously-posted indicator via uid. Each related_events entry needs class_uid, type_uid, category_uid, activity_id, severity_id, time, message, and observables[] with type+typeName.', additionalProperties: true, }, }, diff --git a/plugins/s1-secops-skills/.claude-plugin/plugin.json b/plugins/s1-secops-skills/.claude-plugin/plugin.json index d398fbe..c4d271a 100644 --- a/plugins/s1-secops-skills/.claude-plugin/plugin.json +++ b/plugins/s1-secops-skills/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "s1-secops-skills", - "version": "1.2.14", + "version": "1.2.16", "description": "SentinelOne SecOps skills for Claude: PowerQuery threat hunting and STAR/Custom Detection rules; Management Console API; Singularity Data Lake API; SDL dashboards; log parsing (OCSF); Hyperautomation SOAR; z-score anomaly baselining; autonomous DFIR alert investigation (soc-investigator); and one-prompt SDL solutions: source onboarding, asset enrichment, UEBA, ingest health, detection exclusions, Risk-Based Alerting, alert noise reduction, and Detection as Code.", "author": { "name": "Prithvi Moses", diff --git a/plugins/s1-secops-skills/README.md b/plugins/s1-secops-skills/README.md index 51e56fc..85d741b 100644 --- a/plugins/s1-secops-skills/README.md +++ b/plugins/s1-secops-skills/README.md @@ -371,7 +371,7 @@ Prerequisite: Docker Desktop (macOS/Windows) or Docker Engine (Linux), running. **Step 1: Pull the image (all three MCPs)** ```bash -docker pull ghcr.io/pmoses-s1/s1-mcps:1.2.4 +docker pull ghcr.io/pmoses-s1/s1-mcps:1.2.5 ``` `:1.2.3` is the current pinned release (bundles s1-secops-mcp 1.2.2, purple-mcp v0.7.0, virustotal-mcp 1.0.21). `:latest` also works; pin an explicit version for reproducible, forensically consistent installs. About 250 MB compressed. @@ -394,7 +394,7 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o "-e", "SDL_LOG_READ_KEY", "-e", "SDL_CONFIG_WRITE_KEY", "-e", "SDL_CONFIG_READ_KEY", - "ghcr.io/pmoses-s1/s1-mcps:1.2.4", + "ghcr.io/pmoses-s1/s1-mcps:1.2.5", "sentinelone-mcp" ], "env": { @@ -413,7 +413,7 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o "run", "-i", "--rm", "--pull=missing", "-e", "PURPLEMCP_CONSOLE_TOKEN", "-e", "PURPLEMCP_CONSOLE_BASE_URL", - "ghcr.io/pmoses-s1/s1-mcps:1.2.4", + "ghcr.io/pmoses-s1/s1-mcps:1.2.5", "purple-mcp" ], "env": { @@ -426,7 +426,7 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o "args": [ "run", "-i", "--rm", "--pull=missing", "-e", "VIRUSTOTAL_API_KEY", - "ghcr.io/pmoses-s1/s1-mcps:1.2.4", + "ghcr.io/pmoses-s1/s1-mcps:1.2.5", "virustotal-mcp" ], "env": { @@ -470,9 +470,9 @@ smoke test s1 skills Claude checks all three MCPs, confirms each skill is loaded, and reports any missing credential or unreachable endpoint. You can also test the image straight from a terminal, no Claude Desktop required: ```bash -docker run -i --rm ghcr.io/pmoses-s1/s1-mcps:1.2.4 help # lists the three bundled servers +docker run -i --rm ghcr.io/pmoses-s1/s1-mcps:1.2.5 help # lists the three bundled servers echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}' \ - | docker run -i --rm ghcr.io/pmoses-s1/s1-mcps:1.2.4 sentinelone-mcp + | docker run -i --rm ghcr.io/pmoses-s1/s1-mcps:1.2.5 sentinelone-mcp ``` The second command returns one JSON line with `serverInfo.name = "sentinelone-mcp-server"`, and stderr shows `Tools: 26 registered`. diff --git a/plugins/s1-secops-skills/dist/hyperautomation.skill b/plugins/s1-secops-skills/dist/hyperautomation.skill index 74b11335e5e377dc54c130539ad894d6f2923194..aaeb59f71ae8abf7c568ad969260bb92401e01ca 100644 GIT binary patch delta 56450 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

PtY@Yzs>%v2ZJ&?s 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 z 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 diff --git a/plugins/s1-secops-skills/dist/mgmt-console-api.skill b/plugins/s1-secops-skills/dist/mgmt-console-api.skill index ec076c4d2882692bfe5554add8d51ce24416c2c8..cec5cf7b3876023b16e05efbc53ae65813ab2445 100644 GIT binary patch delta 452411 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

C?AHNp zR!_-pBjO#c(@BXe&kdF%QmX+z#K^w!hwssuL{S9zBMy+7(w({+)j3>_;+Ryz;aDnk z8)mT2=m*f+`0av?L5z7`Zcqo=!f&{y2*HE>+EFr}D8Mns#K~|w&u&_PS_n@23>IJ} z`?AFz<6!FS=p}9u%`TdK%2eH!yrQpcI(n|VIZ3Ztlr~x-m3O4KUcDoFt}#jD~PqQ41ZXg4=5%k5srr4eWEHR?cD z9)LWl$%<++?9^J~ws*M^Rd5>z=ntPGay-WxEqwF}AlRM6%ZsYFOq|E4k4RrF_fq~(C?luGF}Jt zv#*arJEhAZKb4_$PXVhh1QE4`Gg+U2L2vgM_|K@MtIgboXE{*&wA4J)1o79%sDQg9 z<@s1aGMansEA%T7Mc>IT_d3XL!AvX04NbiwNOzAE_%0|HqU@lg;}G+mp~<>fQbmETSDKIfJ9LoE8?*VUTrDZVu>WXIR+d zUsy_*vqUL`KE%8yt{C|{K?iKqZ?6tEjZ{bgJ_z!fh|_5SSW_v!vQ~Fss$>TYV}V=3 zA~@Z+V9&=u{vlGXkp}|T#woA;I~nm3YOHPSH6_stANE&?|C~nnJrydgh^}p|ZAfWIR=$UCV%(aBVFza; z3*Csy(~>f!~e2&#pg>A+TRTb~^^=)vjcew#CUg!nE z9(w#oZmUoFQF>l!rBMZZspFEP*$lfT;FzGMuLf?ZwEO!e(r7#X+g8a=l0I#@8M9>7#k4PE{8~tD;Wkq_x zQV1>Xn@W4B%se1u#fGd_u0tk(&0n;}U73Tyu%bSyydiIX0}7w4`eg>E8HE{Pj<<*OPh3U%vKsu}4dw@ue{$0mM$7xKvQ*iXQ)?umiYu|fZzwruyS z-)KHJ_$yOAzag4fYcl;V;H=FIctHW{*#95je{>NH|2CyN+PRtiKydi!kg_c6@Y@~u zftxRW7&+1X;xqYUD6S5|1PO0Ua7bT(aK!RetUg&~yOqwA!vw{nDSHp@NPd5-Ly9*X zCQYK&Do)oP_ZToG&)sv zqaU^kv=vv+9-r&5hZ<7urFbua-^6}@>XjCGSWeFQ_bb4$ZwsVvio8EIyKXxo?utQk zNcWe@kDL;HT2cJ1WPJ0>FV-~P4#qcj%_f6QfOVOi}$?94Chj&&Ik93-L)OD=)9e3XHiGSv6Vw%qn8{ zkwjB%Ewh0H=j1UpFh0Jd_|cWTaP^4LL@JXK{fIkRe9Zkm*B&stPMF*gW}gU_^gmp~ z|4vdv0D`)@Npl_NBE<2 zNU<5AoJsXp{X3Q<@uW@IQpsa?9R@}+#GvQxVp=n|TlXM}2pmB3p%}_QH)OD(lT-#| z{*la9{+7%(jYUKKmdvjHFUf3~sYAR#F2e^eWfGJEl>P>BG|2^&KsO~eO|_#bDhTc^ie$z))s0*z9B(U@{WwV@|uO^xJjWmh~CUfjG)>#eUE@ zUX3UuoAi_dBVPARI+t!+HCXOr7*ro}99Q${p#+>6qZavkL2U=nB|@OfnHtBGbWm>8 zV3+(|-=A-`+wMAv#SPW>OEw0RjhQGgGT-$l@*}-Mi8B}Tfk7!OdYwP# zfVsuy0y4|vwS=~B%B(CUDG!a4aSX@bUv(4^LYNqX5$KpOccCc-93Uq8Vb!Xa^)tL-gM{XDUzSI^cYRm@q zc*xg@9d&Kvv{$((gC}%hy)8e|(n%d9lkgmSTqm62~MkXRqiKv6b-s^}WlW0E8yZw!Vrv@qJ@!CpBLY9O7)F=aoLM8L&a zl30vXguZ~?5EF&qVuXM^jAlsGVPYW(M02DJGAI=NfA9&7$AtQ2IG+GO;)V3NheRZ_ zo1>F-Sr4a6>(Ow_pmelWYZ(CXq253-MPugbD}Et|11M#!PS)mVE&&O#%UGSpXk^Gd z#4+q(1Jtw3#<>&<2({uEWNHp@1%aJXz_nFOy6Peo3#A-;oPh{3(3bmR#GCk$-%v#+ z3Ywz7fiIyT)x-^`=LVEPR;7DVqS-S7Q48*u!Ic6zZw%BS>>=#?K6-$l>M#Vibf9w( zQ9V31bn($=E?OlRwK!>O-3h9rn8={yNzt(f^+t0$#pC@D zPJt0JnD8z*XnJk_?wY`W8iXQ;SZ3|nmuuKMlZRI2!OHVvMYSf!ZCxGNIL@PCljOQa z%3fRKYzJk^9{Cl8Yj;5FyK=?Zf}yVF?>Rhl%bXvmPGwqSnt#SZmKh!d6;Md6I-#y~VbA7eXX~T6q>$1p5IYe!h_bc*H+e9g!)i zf_?o$U_G&bpp{|3Fj=s89Ocdg6qy`y#1M)P)MmgO=?A<0xJpgnYavzq{n6O7q2R2mu#yx6Q=YEa$x0kj;$o*^gu|J5e6(WuM&m z27=sF_A98j#Udv9dna$bac|zlXP}sn@GO<$Qm z)c_u|ULH4W%dI}=ysnk<&RMtuUeB};kir>=?xnSxv1^~0#MzG;w)?74$v*Z^A9iJU zuTZ-NL=J%M%R6*kk+@(+II67vYiGP#=z*efG>+%OO8yW5`(sJ1cqG5&`G0ghljja$i*0mwH)HCtMu-U7>9{o~ z=g6&)!r@Pkt6s z|KEPy9qX?-l{*uv@8|v|{J;E`XL_VE|21Oq(J|y_5hGoJ4m_*4I1PAebW~jm=>G4~ zY%Q2S+|(LbBy%Ahg~xuR9(TDJ1%I>EQs;A$9H*%&KGF34zE5&SfjkX%YO(Qa~`_m!6v znTo-iI*Nwdj`7oAGAz)Fi?;41;Wi7~ki>T30Z_^WI*kU+cFG-1;@)1r%;R%=8tt?4 z9GQh9cHY$=DP$^Erp}rfN&$Q#8SrFW-OB zp~)Ymi-OA*kDxP0WBou#U4PM~v2_z7{eSp6$LP$uZQaJUZQHhO+eyV0r-C;X+qP}n zwv9@~wsrIEea~%opVrR#yXODd`WkaQ{joPf>l1hN>!2p>E5~G3wT3F_TcnSTG=4D2 z4~yHciVb!&Zrex-A1l)H1EZ|Wc9;(XlV-f7LWk?cv*8`1YIhcS4rZ;XZ(FIgpb)I_pdAfXTN6cH^YB>^dgp`G9;%0?X}&~g1eSl?}~ zGyHG1(_~ea2CzJ9Y0ohc*sLbDsZL!yo6|0E{|)qPrg)reDl<)Bm~a)s8KUUT^%Yx5 z-m`VD`L=-^qoOV+se?gECc5G5lNa>7r<-jLcf@HBWc!$it2Qmw|UN>fiIM^`&NfECb?u$My5?ch$QPU8J^&~CxCLSw3Z7poGgm7?m6Y=n3U~=#Y+ek`&>Gi~{5-KNlb2GkD zz-gP`?^M9PUML65@K;i&xlsTnKrBahNR&RL`ObzpSuKce61znP|zuAt!&;qnFB3oS}$#{Xvl5&YW z7XQX?i)GTGJuEz#s(L99=5wG}o2$2{%&#h)nbZ9n=)ivYWz)+Kw-*93yB5b5s`o^X%N^_d4M&BmI_@qfr^FxiN5T$ZO-#y&gP)FmswIv!y|F$^8AoR=_vj zzD<8b_v4EULr?m5{e{I#kPRavcN~7?neRkcqNTjOj2@qVc>m%;n^_mEszPIRV|jS# zr8--q#vQ{?YL;+IkPkKhPD&GRDz_OB4xbz26?R6zOrW$<&I{TDI1U!MqH6K@Sn@Ch zOA-zosOQl`3pJLOVyekMk|+lPYxQEuL&O~MEA;4{TO`euq%@n$5yQh5&S^FkOlO?HRWp*#*lrC2R8?&P z1ebt^Me+Siar0>buooO;t}3Q{tIT!D+)gNh`nB= zSSEgf2)UFH^z~{{d^c1e>L7b;btrIufpvl-;mL|=zfe=LtiA(b#CBT(I&M>mJrvU_ zwp8SfKg37cWhfqnh116i^y?rAFdAg3P8jO)lo#PuBn(Ue_tDBolE;BU%ScEiVl&vV z?7!1P`5TCu!%c}8&(+IAU6)SUW%AW3*F$%Zc$mmbqj1|Y-Pv$h?*>y#Q`1ooF=0A` zXBA?56<}6Wz*BAo@_g{h?l$3deT1I$l@M$YY=%E{hHG#CFWG4jv#CqnJhN4)Icda8 zf0G@6>M%BH=^O3B#kHE89F!X^ztK+m-)NUSt*ww>IBk$)h8N^%7>rM^+tpf+4{40A zu}5Osos z`)Q_Uu}KEubT;`BwSct2xN4V z*CAL^kocLH%ri3l0LZUiLw<4@1PFn_4am#qORZT`ql!^i+J;x=f2N{&SlwMpL$h>? zk5sIR8Al;gUzreyG(&LS9Ii)%dWVIhkqT_vQb+z9*#Z8AcFY<~KaZpEroSEe%=#r~Xr7jHAw|6QUn0 zcNxwOzzX-eP_cpCv>d79K7cl9B(a&|MssAvIz{Uk7$0nf@jL6Uj+?SbNQayBjSW;M z+*`to--hPU2tU6-tKoKaC_p-7S#ksj!HdRM4(X9SyOoeGWd}1)z>(gOF12h5K4>7| z%8L-GnJNhZ;24VvxIl0gd&)#LF90-p*1C7s zpPL2x_l$85>+V{!bX{{5FqKv=SZO6t$u*5$o%5Ehe+HVF0s%?*Dbe>E=up(a%+}q% z`Rib0FT3Bav+ZVm=H&A|f;vQinG1+zvxV3D+um5XYXcI3$;5##dA=yz`U;njqFPc7 zcq}Bjh&Ae@|AH)KnWo}Y2&dQpAk)M=IeqDlk`572KT6d}hV!eO$C<>Sc@?hykDqRA zM8Z|ATECvH7~6`m!hF|4uMr&hv+67pIY@eP&K<`14bDysjPpNE@N~AEHaIZ4pHz(!aVbUT7Gua|8@9Ap+}hKn zO&rWxIyO#5k)X$yLm6#iSGIc%w!zqbyA#z-F%8yPbhf(c8LJ zBXL-y;86V)wNdH=0vL>?6J@foE(q~D0l&oUXBfBj^$cSRyf_5%sRh&7KZfJ#W|loq z)<_vdeY~y@r?^oknOIu+796(mHpdgcOT*+K=InAdqlKoS_9JP;B9#WI>SuNc@b>+! zL?CV>1)mmb`r>QpZZZ@^;A|-?ifeLfewB=TC$uwJnr3o8#k%uk&mhT5~ z+RlsD>{_U*{Qj|AIl+(pj6VJ_t}r}URzDzsu`P^88y}@`1>oYb(fL5``b4q|(}=@^ zB4@Pr6NpU%smam9QuFkzSbq0V0@CU~9TR7XIH9K|v((->9m90y3KdlPm^9KAQITv& z^HP=X`1S<#^aM$^1exyc^%T>71LZ@>A%qherUU2pqpevi=zjYZAxT;@QT*xXPDl%t0+7IO4jYNO zK!&L%q{%VQ2wP5qbKV85-gv8T@neF3Q(?$vXIJLTG#I<+siyFAhQYKNLMBx`L21){$N(GTpDLTfhebQjo;5?6@E(fy}6Qp0y ztTXCu4&Rd=6jc*O_?BA#0TfU$2d06xLiKW(zBVZ`bkAZj+)GDEFe`rMX`6WTgP~;; zj<+5%+D;X4;XpUAspEocgX_-Rk`D$Wk`$+D*J%RP?_%bXQQO!-OiAz`FXL97SFEMc&GtS7wu^G z?-F2(CF9KgNu*)&FO<;{n5bcp4~F%lZ-q}9(1^SdaR3oqG~EtcdBC||2-rcbIRQ5S zTj4Rl71-Uvc>lH$0j^6x1xE}9u=QMGX)1OOI4}#@xeVns)>1jB#9iT)F#O7a1UM^+ z^`94myyQ!m@>1tUR&I=tkrHby(-aEtNr`Va(eT)Dkc4|UwpfFiMY+A0T@rvF`ekePcmwk^kI0} z3288Ox|6Dp>p_%>BoPVXGriAf7gp#9eB~sC`BNjNQ)N zusjxjfn&DP`8x-#Y=;(JLh>XbGzFV4zVKr@1qB~RuX9S^-vD=53|rpbDWp*1=y)v& zq~KkH>-m@Y(Cb6I~9k0KKjns)iaXUvvMhozoKL^MSoF z4%QJaw*jf1A3O5fnKQ6~4E;^D$e{>?hH2pPw(-3mHrcZY3Bz2O_c~ov=VDzH_=JQl z8&#PIyVx*qiTG@WXqI(smMp0bFdb^ghjRBAOc@mG@3EWP(f;TdaV(zx?pme>U!(Jtvwh}- zi-gvrlRjj=!=m0l_U_|};#8YdL#A`&Q8Mho#{sIVs14 zQ&(=7j%lGU(@t@S-x;)*~e(`OBxi)pN5Ek6)hhpOl#>7BE`}Qe36`hI&6G8ieq2*4BWVM$|R`YFX}#0azeOsTtQO! zK&#fGWdm9VPG|}GbcD@%#j8uBg@A(>U|hrdBe2o=ufKT&AR_2-yP#x8;%U`^@GZ)I zWJLZ=md~`S9Z%pecB%QXhD$X>ADy5vTSEC~CW83gtZ}>IwFmlqE^IKwpit5(I2dwi zxT%bnH^OceH_;-Wim1z9hc~kK-^isya3tWo`m}AqUX$zN@K(_42vA5Y$0)h905MS~ z-byBdEg&87sS`51btowzsL3o8T9Pa6UdGic{tV7Tpufl~W4aF(LjDFlbC)e0zL-|L zQ19yK$ONUsv(SEFS6V7)m{Kx*c6JvyT#oCq_U|H5`?Yk(?CI32V0x%*FXzV8;=44ErjaEj#b!XOk=__J2et)Q^XlU zUTS*aOEV9SXa_k2P4~QKB3lJR%$t}KOajZBaB?C8D9@Nx%^>Zn-2O`RBG``Umi49_ z=>v}&m2`y~2(xjxVMYfUsF&F#L*-$0eYXEqVV7bc&qwzY!=GdiD9W8j*Buah z-tQm5Qqz*VA87m|MAa733XI9gpa0EmB&(wGQTlBf6;0Wm23GzbDN$2jk(3k7XQrmr zA5-YXOteGnR8*#(N(Gi0xT<`K=BLFanSsT5*#&TYPxsR_WI`;l61tsxkpL2#>09QW z*Jan^`2cvkmz}*aQB}#+Y^9OEF_0+vA+bcMUX>e2>H9yGO${0wfSr)FXD284DzD5I zF*;rMktu}ei!`#6bVuk89J3n?Th1M+cDN&dS-L0L^vcXP@kCvXl6Y8C5wL* zIa%+|{9?*LnM({U#vW-*H^s4$6>Cxq*nPJ4SneS}5EzJ>!g4S%*j*9^J>WPwEsk~tZw6Ku#L`}V#ASMsj4X6H~epQGTH-yFT+Uhuj z#nmprwQjzqvMJ8j&G45lRnHC&1~o%&xnZ8(Zv@A+qvqWc*I7vkWpXhc=XHwqNau+O znM$?9D2&b)_ralvZse{-&i=+FM`>A<@D(QvJj!dD_2UAF3Gdc9+o3(w3(`bQ+3)EDukcFfbkIF=t8i?J@*W&TR&$vekLM;@kV^)p}gp#h=4LD z(@zTD@h}3&1GOb!iDMkf@C3!P&*HJ}(F#|ws?bB-(cuG?qmNxCrrxRJ3@B+SFzQ(7 zv$Fn0-_T3BK9Us7tf&z3e%~vJI2-!7GPLh8KnU*H?_cedMX#2zbFQLBMGwOT|0Cyb zMkP;VLfK#SyfeWR$SnXdm#u91M>r?!NRH&p=6HS(`=O1t3gr z9D%^X!Bau=m*tmmc4Ev);QLK2%nyZHQ$7n=JI?@fh7 zk(^q9K^9NML#RoAZg=7KfUe$1fi`yTXt?wK28uEksm2cuRSRXQJCNYH-ugwM;6!~z zFap9H7sU?29-EwQubrYEx0cWSr5{IRJD}o@l!ogF+o86`E+|)Kyhqp$;zy7BAd)m{SyF%M;qK_@WJdEzdW~H?noX&FOeEDucNr9A(Y+Api zLVKbjwt`G^q;U>~=aR(AOi(4Eo!O_UO-<_v5);}&YrF1ms0*AMgk`&0OTXoadYEI0 zAqn1cEFB&?24%+n>Jcv=>1CB4iC9dV}Q~4-Pc| z13+8Sv-y0MnbH|aUEJw=hk1b`dSq|-t=`6Q$ER4t0}Cz6(p63Q$_MH$yu`TLwSD+K z0%2IESXGg>eV`1c9TB2#_qs2MzX%N)k|WIYbQ*)?^f4X{NFSS;6|tv=_CPiVUQqzO zxgyr3Q%#vrX?6(6@C*MYz=!u*zoXO88nff$XAiNC0EGV)m92LjKGywEvbCxS5#gDCS` zRoa(=ya+7v|K2$Mt9lL%0E$WDt-1gr{HMr`I*dIKwIcR~;D$Z0xljW55B-MQU1Qu*0yPO9b7B|DDI+%5@P;LPP$*O-WBzk`+(O<ejlv5$0^! z*NYy1f53@bO(ICxJMoFy7gZ3>8!7K5<7!`}fB&+?*ypVeGXRJCFh)9+W%&A#S|2~= z%7Dh2eN%rl$GRh)0fPdtNtwsKhFyhGu0=$-XHH~u?CA1*VC2H(@k&x~a{!Jh``ko* zEEF;P=NPq|UM|NG@Bve{TXsV=L`$9NLWZ+=(Yq?dXv1E|IX~;ySxV;fvENi^%eneIziwqj}$KBMTY$9S@ zmp}^2GB5?;i~*Bdv5!#M5k6-(B%jLGwExG6v)WHD6N<)^Ifzt8<9wPlMCV4fPueB& z8i$5O)#gFS!jz4;gtXO*bvre{6X^OK%po@cIw6_kzZ+D|Q~88>1`@sQLvQaI zDxl$g%0eav=;@N~xuLif?2y7Zx(p~=j4(s3rhcRq^sm%*7!Vi?T(&oLRL{M4F0>`) z_0cm;n;tQmGCK`RA<>Kjm83(J$tZXf7oMq-=+phkS+u=UGp^8?0J<(Kk1rAde`qH} zoW#im2rOl!($eIyG6D-Eic9NTxU^rvnLhz9nfVA~^MjlMj6`V#fWdH{XO1CrUiVDw zfz~O0!Ehiu90AI}0#MJpbys$4%HQcJjpXb|B;qp3>d<5&%96vljg0z3HIiWPE*IvY zARPCMe+v*PqoI06U1aK9H6qEj=BrGDt&m^?M5T@R^2wCh?0RW5=Gs`SD0qOI{?GwW zrpk=RD52ZKHd;k_6wvZHm_j6Cr`k2Yh52O(PLR}+GC;omkWtD$?Yf)OMnksLM5D$8 z)*TxkR>0j+V+W-#NV(Q>jF{ceG8>%sOTy@4a8Y$yCPdDN8Vn4A($z4bVOj&G1JHk+Bt)@!xQm^0=3z`D^bPD& zz;o+02ecTplxIq;i?(OpgZ|wlxl=7nldqYu!bEScpNP`Ckf^z>v)VY;*^BH3)|8w0 z*+PxRqZ~@*4fmxTik2{bq2^Yw?)MaJNS92&WX{x-8$F$h7q?ag#w=mM*V#O%c>2tk z+Kq;T1nBNju|1$E8}%W7mb+5Se*#!W_AlQiKY0?oBc${c7&rt}8(dMj;dQo}M|Gya&X&3}O#b*N;7H~n`Qpns648tbnzcrAbOZ~&d z`P;fAy~gg}{iZ@fE*ouD(u~(3uE4@Qup4_fg*ZZay+R@^tU5$mjunG%d5z43fHG}D zK7)6(4>ruXb9vd9Rd6&P*w(PS)|+K9@#=}IJ zXWr+r6d+~-6$mb_5&+vp(~s9Fs*!T{mjT4!8D(pz2CPfa* zcr5#Pth%{W01Mf!N)-N4Fbqzf2=PpoK;#+i$hCvW(mh%s3SG8$h=JlC)p0P0u5E5J zSPK7=F;^n?Gu3dDpD>$mh&~TnvE-_&3Ps&B3jnPq*5^sYLcyU>>tO16pdpx$k$|9L z^BmPyTs^XLl`pc1vnI~$ExXLZ@J_Bk=LnX$mEc>vU_yaj{nNK!C!#na!rVcM1H|w0 zq8R(}--%~TuMj2ab1#q+)7~Qp(E~m`j5`P5dPP?gfP6@b~NYCvQ@0$@sxhvAg~d0S`BDKRMbgWh)U4Lry2$GdF*{RPi>jBe7hbLqd!CsRwuo+4qDNQwn0EYS_3gQ zmRGFnBUNGJ+8&kxO?_Qg6Dg88O;G z{H4?2b?!5Chm-mW_Je7A-ADHZdCl@o1YPi}Cd-DYv#WHVhF124&9uInapX-!y*t%tg44Wh3pD`DpS-;F-?QNKfUB1ac^kip*MCx>9pLd0)mY;_Zr4)M=+M$#x=q zZxbJhbpF!Og6nP)w@h;%HHUg)%-ni(B<4fo>>7SIzDP#OX1!{;LemVe%KPQ$>!ZK} zD{wli=5i=`F%a!`hM;E66RGp7*Fm+2eg%Ix3O!yYZ(sOZt3$e#vg3w1b|1t`f39&1V~fTM4ArimoVjxy0%>fO?+- zV^W^)bhDj`l2V;suQe83OiiVWZe!k~lfL}clv@YTvbCfoU#m$y+o~81^@-;^U!~1T z>4gI&fR8+y(yPcaxbg+@du23Rs?9^!VC}*!JO2Qe@71iLEk6Ok?b|rd^AHWhnYfGI z!hT}Lz0CcojVdPGFLuB+;x7Po*n?T9$mOGfQhbX(UqSV!@wyP6DX>ogyP_*4u1hcS zJu{k0v{r*YSLU;q+{e<;8|9VOAr*=e81;v~g_Z zeO7D*cgPf)pU)4-fwOy}+WUG$kj-gtGY^_NZKf z+k#9bDfwB+@=O@zIYk~66Ww8{rRg6pz~qpiDr+&Wl}`p3S*41dNq?+Ek`|Fb+EUxe zWrdH8q7MAk#@Le)@$3 z6ls-x>n4rZkv}5=POd^2qW3f^lxiqD{7;xjBFYb#A2JpVs3uvvq+&cgpxXm(BrJ0@ zvW7W+FjnyZFzxR`7dBCdex>LkGFY1UJKb<&PmxEyw=TCl_&;viNqXbr4gpXN2E%i6 z8++~}g54+IJv}L=&u0WzO*Uowt#85J!+}gi$1n*|BP1A5ee>s3INiWZ7O6i=jF1vh z+xQlrsGlo}Q!6Gu6P)4vfCFa~ruqblbh>k4Ji!ljs$y^__At20jnl4xraFKvMjXA6 z-b08k?&hPC61&c|?~g8lbmxd6uSoAbxTQdfybR{l`Km;Yp?}<*q#^aS7K3|=q0 z&A+e$ym6o&ug3l66NlXRlGVs-CaL6aG5Zy0r7!a}$!7gQykS4JPkgPm^N4-a-uw(LT)xRZk7Q6zJ(-D41pKEM(1Veh;X$vLHW#B%%ZMrs z<>m2Y&vd4NVmb+!ZAmJ=ML0Kk_fq^*Xc(E-yU;D&?mLRajij3H)OSr5*B@BJFyW3r zfH>xSKFVzxG0+j2hfS&i*EACMbiUg`>hf*Kcl{p-dtSDuH3Uw257aFqESvP~oKfn> zI0i_4u@(^1(Lv*rUX=k;i>l`)(!wXQ7FvjNly(F4MSkr@FOEkT&y#)^l!i^v;~A;ep}q0KIk0um;iKb``pJ;M7DUx)eU7pL^>SFIf*~ z-d{ZkQjDNrTy%b==s)frs09gwTz+$Y;OGXcAoW~??nQZfXu14oMUeKv&8|cp~Kj2pwonVG)AeSyi)$zaCg+C2ki|Ki_8v zecQ9?1U}vFM$E6?Ymx#Aa)g%pfFJ=dRSsq3OX=IcCE-hC7a=KJ->ZQ37y#wPP|%c>1``d6D#>)Sm$2NSR2gCD|${D}P2 zAz9~Bl$4Fx#_z5gJvd)PfFQNU%$$I@dYFa9iJ{di^pJN{LfWR;-M{i@$71J{`~-#B zgvVNShx+qL{~(cJZ|)^H=>eb^*V{Xr@@9CekRvKEZ^;g^TEC~31_?Qc2iw=ZO#Qi& z{`)Zo;-`641ca=e+e~v;dv<;K&pP6or9s6O+|;%gcTIbD796B@3YW9y8Oln&R8(fv zW-|yox*W#~wGd1(i-x$E#`;*3W#Sz|0waW9`db6WoQiCo!Dy+r1b6_|qH6P)tdNu< zocMO$U4smKKKaj#LVa_{J_305#9&SWE7+ooA`9;(qJ2%s#lbjG%5792c4MW)zXuDR zxiG`vZw`YvpO@B}N}?BE&EZXYu6-nsg{3%p$Yn2rPHChh#527i2e-&^B*2n|e~+&9 zPN)L^oT08*4%3WTTm}LlmYjd56Xq>((ujDQOss<42=GCo{!ktA^mFG7d3pe~b`+~6 zisLtYeX?f0;Q$Mocu!#|({e6EYg9o2hWoRGtpg2ZWQjr1Xr6S-&5SrWnl&E4o(I}N zi_mM5(Wk@y3QuGfzLk@A9p%qCI+%=iq?$gcEwa^hWI|)&PTUJfBaU4=y*V8mx5I(Q z2JzT|l2#`C5Nz@L=kNJgbg6HC;{aatf$?rJuw3smnh5>3`IX@k_kG%USGy`wjyC&-NL5bcMUeF-N$fSe;fexpXe3T=nf163IsHb1O!9{ga>42Y3D+3>R|7j zAjFQEoDB?-lAA^Z^}oTGhOEN|6I}P3Cen#HEXv3ULC9u!6BUT96;n$GTmb!sOZif= z9)EmMk8k2d=d7D!9l^3o2^Go14e5*WGP2yj8s^L!6ji;9lX2sfr=%oOPL6)RRoGal zx_2Yj;|S@{Al_0ez?`(0-C94NNz^X2j_2|9!@o>_tl3n8J)(W6>WhoTL=%? zN-TE{g0VdWb82od+r0>Rl3m0?P*lj!bsXY7O_XgT?t`z`#6 z${PDUwlzDO^o$_}EBAF!Iprsh@7HQ%tSgk>cDNYA`Xi|U8u`LSl-o!qQ}7C`_ybS6 z5!URvSm6;bG0@(J>s&a~pv5IPY#J`hN{MFRWpuKKKspG3VXG{H0OHSfl5wfR9mp#q zn#L*TY^Ria1sPB-1P~~@bQN)keVo`ce{??33T0r-B=%e;@$TNq5F}(JY8uVp;G2AE zeS7qzRfKdCapjDakvx6`=mW_wu>u}C9Ghv_lBk|IwLV$< zW|LfGF_{7lP;8-9mb}vhn$lbiXc%D_TJ}zC#1UZtQs)CT2yGcK>Ty&+w&BEmuqL8# zaHC>o()N(uu0Q)`k&CW^GZE&#ip+t`Fc??Jun&-e$gFJDyvoBPm$#KPU&vyP={`zY z)p6q+cJE&<7V=4BmP_7&wtib{N{b>e9J>ZZ2rmMEsYt60;&u?aid~BucM6S7tn?NtwOZ1smH1L7m? z0&^Z1?j!?9k+{z4`kx&0cObE~$G=NZ2{hayH7UH9vOR#c^GiL>EizBSssMs1p4Af$ zy_Ss|fhkOeUXDCF0Y+Wl|32LAN+RT>0RaM91plWikTL~6{eNw^m{QZX*|H1y?9mP~^lBmahO=zxKZ8%^&iKZ}+-7`e~mC_Xa?SF!1R$Q^uPqC6Vmy z;D|1e<20LrAzIos$s- zN$pBrX6Z41gnVJAPRaC0v8ttr$&%n7<5q#i=Qtj96TgnvQo8Z zgjBDnb>;;(+yZdu#kTHSG5M)y9GTf+QoPqG@m3c4Eyn|wr7!=^%iNC^1ED1$GHnDF zMld%wo;b6!Y2_8Tzz%jSsC6ykxTSmw`Hk~yRxL2OcU**-J{M*3Z1OX8^7hX9!-YXJ zc-9Lx{8FLsSH_Hd+1zqniu3)C+BsJn{C%CDq?M4H-NXP7*YwmC;lJ)CAw5P*C{nQP zH{`YcQ+??A&T{>@ciHfDZE?H3dj*!3Ss{;~v}fd;qm_(&#~GAPmtVI&(l;BB0+{p6 zc*h1hlp8DYMO2?J!-Mzb#8z)hJ}S+q^z5qrVw z^{NcRct?V?!6~m^O$v=ha=I6)5@4w@sk4AVa9Uxg_yhy5WP6J=fn6}q`L7>B1{s=E zD``4`Z;Ix{@%1QCRI|6`1IFUKECFX>d;aI$rr|+SZpXe=&@r#9F$B9YjLc!y zv4{|1k23<1$Nbopjljqus4Th)zj5K%JMB1mFWlbrVF?O-#Dzs`n}w**bxOds`~y3I zk!%7<88vju3otsr#`~#y1@K%IHYDk7#Ck>T%PXJPe5tTl8IHfD@~{GN7Z!+|5#K_{3PQQTkHnAHiM6Q# z+nbx38Nd$0_E#zng{iT5Lk$>AR{4di( z7LMM*`FL%{R7;b;NeMl(fClrp;@5SWoidLQ1>&fsv%200(D2|Tz9TSueBxJ}zfjk- zzv^Hsc8Mvhi&zBdIZ=Qe;u7zFC!i6qm&$e0?oh^}nq1Qc>DC%aU1=kY4u#Sb0F(56 z!tZi6-C0YROTbNjZs+C8Fx>+{`GS^vX&0pQ+p;Vg*PK-_6m$od08T>pgOowJet9{* zJ}V)R;l-2zTxb|j%ea_E^=t@{6pLu8Gam(;C%OlF6hN#!X^%LIw2hK95*nq7MQ3ZX z=m*H^G_ki#_YX37s^RqdVMuz^iliidyF$983lgdvRU7;l`j69!>nW6&{I51oI5ss5 zyd_~QhupE3i|$FYfX-x@lA?T_uZmdfC?Md=2y*)G^&0y?Ib@WwA4BQeN+q2H2$y#D z^o4XpH?&J&a95R~=&Lkh{FUwP;^eh~^S4!gZCinn7Af?Lfbhe8teRM!*xKGgm`xDk zN--Uq$;`7#5Rwj>7nl`#ba`%i8+f<)5k>W>*N&ON~?!bmzkomekmeAMh(z9FuQ`|mYK28NBSga(UO z7dIKjACl3e0LIlKml~js_+kAqE!CH)H7crY0Cb1k73V;8p(CN9A+#HKm)8Kp?u$b1 z!fv6rj6Qya1R=m_L{+Gd0{Hb(>NIGM<8}98qys*97V{VGz)0VeRe*5B1&#zKI?f^j z{F6G42*uwr{Nl23?djJ_BXJlf6RZ~6u#CrbaWlI_B`k}mkwzEo+i=v*ECAcqJL&hf z#J(z>|Q_5=YAc$ahFPcj|H{Gm; z2#t;StqlHx~`b4uBGTjbXS%mO>m?X$!V9i_b#o6ctTz@7L_rp zIfVwejO`6{A*bX5we62;zvk>+yncw@0St@do)P9&xw#!&HZCsXIzZ>*&~RJ{e_fzr z!Qd;FZ0?;H({*6{0AlW?dgSADyqp_QinY4j*nkm-X9>Tc_X}~;SoB9G$yJ#*xQZqH zonhU_rlGbbW=HPwC&8#LO?K$3*~T9gUY-ayO=8xY;@meLdPm`MiKVN&y#t@$8KCK! zdGFz6{y=^5$k^5-6BtQac5$)vuvtaa%s7{BWa1tvha%K`tJw-hjRp_z1%s9nj6`A1q&7+SI8wa^dt%#mkiSpn*&I&!z=;`R2zN#SY9;O-Ojs zNnliH+RJHwiGkvk!^bb5CU-mpH^sjR2}g zxiKe~5J9FOJp)7iza@)*iQSwxI8grSRQq9o5<@@IwjHtK5}mM+Wn)9f>(0uFk4<6> z!wy~wM5UefdD8+Li$<-oSfV=;P{Kjt27LbX3ABfQ5>AaOQO@0FVL`E^TJhlCFUA$8 zhqYzjwB1FDXvlaqdJ+k*coLYSAlNjckR$3U^N$<^M)GNvhv#$^U>F^(gXq+c_H7oi ze|A(LfDqyX`U^Y@kGDlsgex}5*QjHdMtmt+;X2`~*lI!yOkrBhUOU&j-;?8jIbo;B zodK*LL&IYcOzpGHLyQI-~X7IPEB8pfuc4|o^A|0a5NQ~oURX!&EJHm-TW$Em+YeU}o<30%DPeZ#g z2A(*<7J#YI9NW>F2xPJqoBrG@NWDrOScQHuH|N=m8LJ;JBGrG_=NaFuj4joXg}`6z zfOI!Fs*g=DJJaX=`9?HjQ~Dj+1ef&K-;54j6cG~)vUPVPkSske$6xG6nXh$?Q%%(c z(;btgzc(CkZ`*OQ21q7-ovXSTI(3>{yD|I+IzS5k;2K@BcaX#OpwhM%8ZM`v&X)an z6G9XU*bI*h!cC?;Twj(36fD zct zH-I2CGo8yMGj!nP>CAbYh!rmd`P2AqFnJT{m-K@<*op8H2Kta43ag{KCD;fV+Pa-Z z*jiM0>7N}t<^b8}Aeh*R)Vw#H?Gqdx;ON#2MJ><(ufDDMyR!53_JscSO_7DAlLmpn z#9O(w8U?CrFGlQPzGDUZL3DXBCMQ-ta=?j6;IyRMU#)2@Cs1aId6-RUt}GCYz1D{+ zFo&|x8ZDRH+KJQcok(N(@Zp;D=6fp66gd z>c+9u`Gi7oC(TxphT+tjD!CSw9IP4CasvbXh->Z>N8$3?nT&>&wMp@Km+G4>!+_Jl zs=aKmwkZb`Q@cj{inYX-tD-h^(RSYKarUEQm&(Gp-+@0#P~Xk@&LK&Izx*#S$dsv+ z@8BOxf4V7~<{hk;Hum~IvEwwE8g6Ra=bnJX{?y1l2oAH4)t+OF?X@>IS;fa6hC{t8 zP<89mwAZ$hHzI~l3=s0KW%03|X98f{CZWbh4L`2XV*l=w;I{kWe!a6}l$Gy{#Qq;Kn87M=$O>p7}N#40F#UbX)z#~)+s7y zRLYvkabG`CNOj0)A*gaF(L>uV_DLUNw1Qnkxe-^| zwajj{#B>x>c@*K{ebvOTq8Nbj5N?BSq_`jG^0`0>h@E}{JO56~KIDgdIR#ZsC?J7` zo9hO!t*qFSYdaldXw=cLb-H^s#uTNy6;RaMa!uv+|G<%CXlZMz%9tJ>zzsF9HV=|= z^+Q&NL|T2t8t<=^Dg_HaC~Pu+B8S~41AZNbel)Uw$*MpI`>9SJa8?&b_VSG%MjdfMw$%He>fQ{HDZIvL5V{F9w>k`|`(^*W2_w?5is zQMeF>Y5%2XA%hcV>8syvhZ){7zQ&|i7n}%e1o!sVm@!;n|Ke>@r4TsrB^`e&Pzfgxdv==g9P*qDjHVX=ar=5rp>ozqK6 z>2aEvA(|CK5|`--#$D4Qd84;@9Q-Q55QC)f92 zyx4FR(F{OB>}6y!o|Hi{$UOY7oGgbzU~~h@Q`)GX|xgm9Mv z?qlC^ZF?e;je)sf7T#MaTxF^%^35Mo{mVuMKkAFLx$`&MWh!%(iPMMv__V&-!A$}3 z@<$5a|DBMH`EtK%*8)tdp$q6@yV1uTo?O(_O$Z=u73# z97BpK0%F;f4@ajcs0$MnphUvD0aifpn!69j@j6Oh|CP3Gdd1!DG-!4uh36L!97iK! zz#uujk31y*mgR$ZFX$iw(aC3>Daby+qOEk)v?{lo0<3f=6z`rSt&o&D0HRf+*3Hy}O z&=`brINQ{6jq;uLWft(cOhA=*-8Xt~D`XfcW#R-!UMLLYRNEmWCj3>fy0&{!?iuR= zq2YWo7luZNsNQL-gG2b_PmJ~d<)e=jgMB#sD_;I}oEmJg0(}nluJKB}(hKb2D6E^} zzr7Dn^jchMgLO%ONBf%ApkH_k4@b4y)(jmF6sK*&P)`gn3Jz9CZSnhyoNhAH=fl7L zRvLB!@^kHx^B-zMUeyObDh(MH=RSA4Cj_M}zpT;#Y*W2Ij`iX1|Nq_3CB`qS)ny9$ ze=h!Ge|tV)QLyHtjU|fV=_WtJEG9<93)j&l=?FLNIqjpQ*gq=~zof_Zef4vCPYVjLJsmM})(DHzvYUXF))C|64WdGDX*Zoe?eM`kp3cy)z6< zDt*~$rCBqWwcN%fv&0gHoXfx2KzSqoyZbPTAo*)i>5V8^wo{<^cHEmkXJzEwA!D33 zIJO-r&2t+$PvRs2worI>V<&Xa(*=6k8kcP?iv#oWCNF&zz!6yQT{zw}V~$0cZs^Ye zk!+yZw~&AGeqynE_zo0-R7a!`B5+On;A>BLQkJ%-^e}IT8Nx&sL8YiOi~KW=BqtBs zD@WG2q>U;0#J9gPi$*2@Wu|R8NlAIY>v=EmfDQU7-H4?q)pZ5dU@Sr8ct9cG=AK%- z*~XteB67SIK%a$X-M4^LfWw|?z8c*9U7$K?yZ@|n_3>EDm#=KZ)FPXP-=<;73$|q~ zgXJq7h?lZ&)nXh=1Z%bv2>tvM4nFAt(=Gx4sk)YY_+YS?8BE&Gl)W8o|Xk&P|TRm~@a9J;{S&T)q&x z43CQ5=F63E8gpMk+f`gaUJ>EJ@IXJ&zM<)gWzI=4CCC(;=uJMsvHXB+gQ6t1c*3@W zf03h?%f^sxM_M|sa1WsGPuZlNK8f!vOTb_QT(WnG$DFx3xhZ$Sw49}F!&O~8eaSy& zW>1_$oGt`tg{p);;}TRMoXR%HueFEsoZ?tNuOKPg=^3(Y{BZZC`57{gE_x3g(J8Nh zQ)K#X+YCprdAH2TF_z*ZZQ0%7wuIe-y@W?#_iq5zPM&zQYn@dlb0Q^a^to<<6P2ou^F3*}nhfn{020XUmmcC9Q4*l*w= zx2G^-M3%6U+NWs2MU=E?!B@!+fkjn~Rh0|v#u3F9qP5(tA`Xu>@gK{o&Cw|5!zQiD$E1FgWO!lEQwGAq4H^#}V&jXC(TBM>txpHQAQ)pFG{ z9FzrIg*|qerS}_;9Rr327Jbhn%L#tPT{tgSClN9VEa8l&ejq3!A(91rGDDFG-=Z*97xL6zfb)EuM zxg4ZvXY3P6%j_c-qh*Y`pe44+b)TL|l}0rXG^>yW3qq>BLD(I~#G*^_MS8#$zLtv* z7xXBM9Od1)6iw+}mInnRKElS4{X-ked4a>GfDTXx;R5`$-xNk|OS$WkO?sy(Ol{16 z9FJPk_y^v)KmrD=fh`&49O8tS{3p{KwpdZfVJ0J}xa<+cX_$GsO2~2;9r%NUKDGH3 zgBH=O5ekU`4@=lkNt(%n!2sBooDQ`Sp|Yb;CBQx{@PKLkK4AQ#w4XhANboJ*trK}! zZ4AJ3IwcccAeQtQloL)t(?aW@8&~w1OV(;Gc|Gz=^6q|+=v&`jLMo}RpK?5fM}!N@ z8W}9qL0MTUYAG9;FzYDBX!(s&`+S!)Jm~7;1Km<@y<%Bagt^-2FYP}t;5nR&Hl!<& zE`BnkZ7lj3m3>E+7Pp=RjW&XTEhmzT4h4`MbJNBrX4qvD{+5pADWs-AyGoCT=y zawln61&d)oLUCR&W?hpCwLDST;=w z=$cZItY5rs+Osw#d2+L~Y@hI0t9Sp&pyN!OqB&09IqJuztWZL=FyYknKyP_yV5Z^v z^2|9t?c23(smG(j)n%}1t2e*A*8?~^G**q^SwJ(ftWYHKUqIwocFk8(5r4=XHWHw} z@%%Z}MQL+Qo{3(p(`quyv2VwkgOl!MuQH1DgM`~-ea~>rj_{~ME$d1IcQlIo^3eHD z#3esi(!NNLrCXGpFAA<-wwf9T>a~bx{>{xV$UPKs?=%id;|A<`#k!%58AlSdjp#IiVSl( zzr0L~vQ4mADP;MIk8HgZvTpR=Z?D>;r|yEL4CQ(A2f}FUjtFYa1D$XCTyZgf_d55i zZsITQI~K_YXruP?O02c^kXQnu-qZIFc@O69k>Tf9D0BMv*Yv_HwN20^52Y;Bm48d~ zPA|*{VoN)@Sk%j7TG`zGK8!|%*kKfX_gEG6Jwji>yLf_sjZI0*GDBDcnnC>9U=QRa zU+bc6v_g4h_N`)Y7eb@8*)%`Z;CPd89>s&o!x#6y&}R$#T(s9Yz8nSAAPhME-h11l z9FB!Gs#t8LW-zLRFR0f&PZ9ACX!UxEj@EJ^=cbXI&uz_FPZ zfEzyGpyqQ(NUG!wGSz;r6I|?`{kUmn=C$VcCtY~|?|+;z5S#4jwcm|L60B6g9B|Ck zT^L}bRJ|-hg#Se~vZQfthr@yKSzAh&^s}BZ-c;NY$GFp9T}g>3=0b}-ut0Zg5ss`r zhp6;03eB~?kAIq9BiE!?cxL*J%xR85w=bj!`_5;l{SLRsz?}OqeQ}~i%a>dw$*P=r z!?szk%Yb9>_Zr~TY6yYD$Zt&9vyJ}>A8+I+CR44H1+9KegsynOa_dwD>)9H2E2}OO z+ikYaTg^60)NVz#Qq_iGr%r;lD8UYS0d{0fsV2B$+kGwBOgerEXG9o>F_C7url?i$ zQ|Ti`nuHjFI=m?*=a-adqc&69ZV1JT)rI6adT08%g*RZ(uOv24s9qPRMr7b}>b`nN zX6pcu!zk25l>^oH;9a|>vF1}BmybqmodC7!SUXzci3Jl$;QN79$rfumjqa}+Hv)a7x*)lKoi4fh6I;~gFim?e}cBCXo zdq5qyIR&tR-RU9FI*2EcPp$jq$_kUZjs#L4XHL7P+2-Vp z!5l)-F;#0HwkuZ0)fA59qbEkCOuS*?JUKrRdU5nZY%n;^YLIwKXpm||MdxBh0QLbr zDNCeIjhsu5q5cu_bUJa%70#C?YSOr4MRBROLMnl8C3SEEY z&xjm{NqWd94@9^1XoTb#dM2!sc*1D9ND-^;Xy`~4SVeI2GPJ>h;hFnfaOQb=6Ny}HLJUJbfko%t+-Hwo zkTtvq$Y((YUeRRX?DXU4h2VakeOVKij2vp2ZmH4y_h3XG1MA}UUS->a$de*wi1h%@ zLQHs&GK=-3H|?SBK@MGp*Z>DiAOyZfniYFPKX< zN-uwu(Po#90s(Kgnd3`N_qQt>JF}sM*RVz^Of#xo)$P;GVvmZ1p_?=nh!{Ye2e*9h z_M}E8^wj$S(qPfQf+}sX{dlLGE|viI`tdm}+8tg3yYe7E10VsEgc z6F1Pxr@zn+Y^E0Qa zY4)unY53jC@d$eV^j-qqJD#5&-F-iv-}+|?TgB~pv7RZ$5vd$<@^bay4V?HBr;z>=U z?T1N2N#-NWnpsHC{V5N%z##(YneIEQb>_98*qSj^Cbo00{?;jQ*eVap;9d~onE)YC zM!D5F9a;7baK@CC{g{KwvAoy0Fxt3U>!64Y0wADx()>_leude1$A7{Ok#Av1wFd5C z1(Dgfu-4JP+CbgJsAkYwrC*Qox4}q^BBohbpcE2YJ(w*gn6Ux;|sE zjJD!$pxJVFJe(AyYOhtVURj4#41N62W-US_!92>; z?No)Bg@!a6G1Q`tJrC4qwodmOnTOry>(5xb!fLYjQq%}u*HKr1S$e5PlR^nVF?bzX zSTgkWRWc*&`^(x76(3+eWX`p5OJr^O&OCHygnlAWAQJHzp(}Nb z^HFIoN&i@vaBbDYSTOIe!73ZIXq^rW<>4iG33Sm%ghIGfBf^{bO@=o^P7EQ z^(tR&C*l?Bvk3(-5gqGd`+IDQS~nh{e(8!0`tHadM5%G1vC&_4hJwUhRB_7**K@pR z6BMHgtTAdwXs<=V2S2iGTCZagslr774U+!HM$PfQuB|q8`@zqz zE#n5)t^RxaXL2Lui5Ec6T4$TzLl@_V`l~B>Azi;XH!?imWBgtkpKahW9p!D zh;vA&H`qe5;PGy?n?+&~Vwp#Nuv1Gmskk^}Cugoqeq+C9D0)F7zwI-3jgAoybyYgq z^s)4eG?2rOZI3@9MD=Sj-wK4mtU0SGbI`QnAV30&)DPf!6hgWt*G5ukLbwVl1!THd zi(6lbGd#b$0YXTS+2Cd{duX2@pvxc}L2mtUlfU!pe;tCEIZwB;ys&&UyJ@g%8_wAL zNDaZu3PzTj2uB2kvS}d%A&pqD<4~Jad)3S}wYVIRZV#@~8P}dGt*h5!q2lz2gb1SU z0tNiSj$pfEmq7xK{tdy&OB52M^!};s#@f8CS9mQ1rrr`CrVxxw&royuRC| z`mH+_kP6;pFaz(0zZHxXHV#nWp?~H-C)L(Bq36y@Vs-=VF}6Bv^8In`+@i2eJG+UP z2+mtUORz?T=|c8hjrJ-s2voc1D;>U5p|7Bf3O2E zmj{SVMO&z^5f_s0x z%iEVuPG`od=YAhW`bI|UH10KrPwcJj%Zn=!2{;UW*s*kTXaYkq<2;W$P*jF7okQ9W zA#yNyOeHNuv=@PiHkQg_|jY(jgX-m0tbe z_7`O{@S~j#J9SK%&10@MVrYp#6Mq&>i1xVgMMbNHoYsrV(bPTU8J4C%jc5Us+>H)8 zj0a$_JsMh>N#3$=nR?}XAxuA!{`xEbtu~dXPW{Xu;l=I7mlY57az2rMft~Fy4y7Ci zJ74n1lD`&E)+0_B6g%zKe*S4X%XBnII4R~S@=L}#7uQ?eOO@gi(WSSI_eE$M^KZjL zAVAs0$`$1@%EmiP-S7rCZ8f+Mc)E1NVZ z*#AR~B*sv(mX;3d!DBr8_A99RZO8k9NE$^#D_CX1j~Dpqk*ntfUq2I+o2fu= z?mA~W!Vgtys@>=);n3Vjby17je1VjUGjDwSHmxHSz{=EATZrWYS}Eest8xYDN@{2vm`~{VMda*Xr&?Z#yZ{?7eEB+;fBK-3EK$& z;$<*nmq6NilXyr6xSMwnG$=1>-mN$A{OKVr+zb}NUg<*hiUM^q5Eg-lvmwvTS`V1; z5(0<-n%D)QavERfN|8q_$)jD1eArBdy~O4nP5&Gjmb!a*yiga{BM3`GNirZS5dk~F z=2L>P?%5LCr|TVVYuM@)1-RHX)rJOdA;B6C!8DbQQ7~o)LH$6W<%+gVGRXf!ZKr|b zZU)1iIlPQreoSymW?bou!fvnJ&khJ?MUn*vG>!jyG3*|5zD)Lx`>+)Xryo{MgsO6ElPL%f4>}O}E!w58c_VxoPeQ?~-Vp-iyV;9p!nkVk|32F}uD4nGMGK;4w^38El(38b$vd zZFK8sVjj*9LkhKtD=&Ojmij%y8%tczUw1j;gSN}p(-pJ7jeZ?09NgX(>OQF}duo2* z$*}LDfP1~EwHl5`NC5NLIQ!bW0XqB`1u?6tgSBn0w$vu8nk|}Za>WMw8(nr^hYvD0 zZQt4G{sNi_L;~Df!u>q1^}C-B3VP1>>R67r4R!9awL8+i2fprF$6KyW=z3}wf5(0# ze$Z{5fBnaN2(iO_b^tICkmaB=w0# zrJM8Y7Tz@TZm9)z*qP1YLkTn!(DR00zDWmFtCC1mezDhG%X>TJ|elkl%$n{9V*G%`BZot`CkLA z<21Hy+kjNkKZuPDa~s*N;;<836!+BtAmJ0SXe_W_z2fPh5)MHGNfmCqrB|6j^9m*0T!4R)k&?5CrEz7|RNhMl}8 zYyvrynu+K|6KKdlNpa(pD!FPx!+9RyBc{kkx`A}^)*t>?PGH)z;P%S()dS4cFiLQ| z6+B1VkOp~~0jVimD=&MQOYJjk9u(>~X8^N%8&Ijv*#6EK*bh?*nsU>B_jkCnKUM+$ zABb?m%`h$wQZvSTBM4eH=5Mbdv0sULy#Ud#LDwhY-knShjPKE(=ep#}A9xqnwMFH>NQl zfMsUz=oIeRj(sx(9nx<=_)oaioiuZ>ehd$YO@E<8>iqugBOhn%IZL$sme@OP$zpR- zVgCK+BpSGY?Z#a#ZDOxy0*+XoTpe1jnp3XaG-A=G`qXacG%SoiI}UvKkV;r1!8v`o zJIX5OECy2bk1NvOm%Wp#j%_JMUC{b|0Ef{_$cxGvgtRh%EZf^ zf!+*DLm2^{rQ8mw1`oIn>k{W^Dt&8m26pOOqt4$ggp{pCeewfYcakjFTt!p@Fu+0# zgDv0e+OlwFgF0F$=8IN85v+zZ$=cN8bXE=PKD17$bdUb#n=C5d3xF0jiKr6S(`$oj z_K};QAWP*HdF+fx+nuHF%mL#F-8`#}Gub3`{$?P5WNe+_})SPLpFJ6WEX3il3R|I;P%Brzs1=KLEXo5`IjEd+B_(5gJoRqD%R-t?0MB-FX<7dje2uW+;+wQyaTcNivBePR{03XOXg|kdFnes{Yc}I#d{sAy75tSH=F@ zgXwBW#$3HeG~%kQu(k1Lhh!@9ROWL9<`#t1?4x8tZ||70gs;0aii>P+WDQdK>I*6o z*vX;2``2V)V+fV&fE5->j`gIGU}wdSz3t8Rzn1dWqA}fTa@2lqcvU1-*eelqbb=1Xeu&|D%-z{lh(_bdXs|y{D(wS#Kw`B!tzUc!BKx>>e6a`Q z+q~o~(_W$7S8^`^pU50ZSj+5k<$ljeLCf6gXrs!kG$Qq>00q5!aWO=!c`glz)Wr}6 zYOxicif&w?3Yq!ce83z%I3Q)@H3Wxs_JQrMLkeWF5DodqM15-yg(DbShBnP3I1j^6 zb2Zxs;?Z7L2SoGW>;N8uOTlrSptvdQnTld|nQvtC-dtjnF89%;H!XR}k1h;kB@XRH z?!4%*E<-&lK;pc^4r^0O&Q0Vb-#|8Zyyk+M&KF+i>qclOCgCrZ-e6N-8rA4a(=7T1 z+iR;Cyw&!bXW4bBk{}=D&1er14OHT9w9&a{ZGOAuk}rAAEO)uMtQc{ym@oA8PET} z`cp>DSdJAKs5{)!i8nS#6f85uM5~#9PdfNM>92@m=6x3bC2DYDyl-Zkurd_PmM`pS z4|vln#@yvYXSQGK!nNDmmfTlw({$c&&Ir)_PU+)hOK2Moo#FJ zWlPf*Ps)@2&ioAfvTLT+8>CYSzoT|%a`w(@iYjhvb9L+6E&Dspzh@;-N^AB6-&u)0 z@;^qMC;$rfHkQVgrq1-XCaNmXK%oC0x7y0p0~QDv?D6~h^3RlJNxk20T>z>3okr}? zOp!3C0=l(Hl0+_C$f>MiOz#3%t-*b3i;b%K?HbSfayJAi5sOU(WUb14r)$mg-UMM+ zN{n~64DSR>At?NC;56m{7uO%)=m)w5@Xm749O#VnJE@xt6evNP`>VU@$@{S&%N$jF z-F8*3+gv8S;_8#0XA~mM1oM~Z1;5`D>?B!24}H8*VjC{{niJEaZwmQ>Sf+Rakiuo= z697Ukjg{@XD>hICMUWkk1%hg7fTKd4r%G<)Y7hlQJMRRg2{V~2)iXjsrH%yxP>g9` z7STdI+J6l^;EV4tiWs&~_>+GR{DJOC&_gjbwUHOSZ{!A9Qwbxmg2!JsGv=2_1twBA z;89_cwPPM7Re?0dX-0g}_bQJ;fsBy9bPd4Gg5$?~l#7Xhe7JgUWi zfDV`*lU3zmKt>G7O4BFT?5FiYbB?YrV(E}!^(j6Sx)-=^-V7TP36U-U#Oba-QH~3D z;h@Q2Y2S0E8Bbk>)RoL6Y?ygI8IWSo?h_ULK&OiTAuj|M_x58QKTm1#0SW#feg>RT z7F|{3H#}I+l?MyiLeOEhK0)|9vG#`00>+@WA@8|!FfpA+^!QrYz@AOU)|<9uyO>>y z&4{CY_F20a2K`c7uIuLmKt#UPiK5efw%c+=$?}w$eYW!kYZ^X*xp9)jFvijnR`3{T z8?=x8DS>3AT^d6rO*+S@bz5n!`nR;4OKrBP^E-^blyez`W6FVYfobhIKDI$T^{Y|(-0x7qgU>)Rmoxl9ty_)-|dQnR_ z^Nwb{2;nYBQ2JT2oaft!XIy|((&a=5-%*x-<1{v+wj`S|S@&hAKw#OjY6?q}7@Yk0 zrD6)rAF%cVi!~~2PXT9&@+Hfxpq>v>_<{h?{h+UY!{=H$a77BWgnF?87uF~-4EloM zz==!_Z=;7~N(2>AK!S&sNk(-Q7*836ZFW;>*me*?)t7vBAaUtwMb1_S`c@7VyBp*oGTp*m-7QzzxMijeLja6o(A~;tQlu2%jn9H>5XylKlF1fG zyF_ieNASzI3D9#@8z9KZhcKrf%%nn1tOfx9g53W$}qkb0fu{RuA*}wJN zyZPbf=kz8|fkphv8#5AY!&eN%#RTOJQ3req0$~8e$nJ2H_VJ7?z~+TtfK>#iAjUwyC_W}h8OMd9a2yRMK>+Pk_Q>rBtzqlj0!QPx$cI;;aYJf zWlUvS5k!ruK=2kB3nZ3T<|j`pSbkos#{>1MR8*;aLj}3I zCcy9F_jtAa<~G$L?0(G%I`0F1pLYwlLae@fzv>n=dl8$N$Xy>jA&B#$^H^7z6Eh*0 z0-b{Vnz*1ehtHPVx5;1?Zrv%_rH_7rQwEaD;i19;Rw$=Dndx78{0$e+l=lv#t#BGw573-|1Tz4nSCJnim{s{H zMsQ}IzR-CDxo|-fTl`%m8Kc@_J2>-;@yKi1n$r;`=+DnnRJ`}NSo(;6cuj)liXnDA zVa<@)FlHZ9qD=f5?a6>La{*p1Fz92`u{A~uhs*&R<-OCv-p96XZ@?}^4YR%Gy>xcb z`lPStiV%aKM{wC|aZLc|;obcCagFxXfA`@@U^}r;7y4Jr^)FUT2E|73(Qw_yO_I_B zAuSrQo)*ebE{6+}JObE8fq{mwlTvgC!ZU(iug~M%aQ|neI^FXn+h6nG_-9Xyms=_y zsUncnq^aGcMDZg@`fjq}% z?M>?*=-Vw3kr0c;c>MYynM<0taf&f3BE}mdqvrS&idfT$s!adx?SDAMgACy?i!S{b zQX+$rc&LNeJH1&0h=!?JAw`2nBDFb)GaHmCOtc%Mdek1 zubwIeAWUNXEQdp>Th+9nW&?wY!3a8Ti!(!J!Br*|@(e$D!gCZ3uu!Q=D{z*%D*(cE z);D6O8L=9m3%-MM<13DdmLI7%cAF*YI5F#$DpHO-S@Ft}3>AyZ2;E}5UsZSBv z3XV9r5tayn_Ajej&mHvH+Ya%@1+THXkJ;ZM(OA#4PGVTl&YFoXmkVD*=aDMvlt+Rx znR*r{x2!^WYviGOAT2O9Ea7GUZ2OoktxTOD1yGzxm-R%dAQ~(*T#1^;c^+M% z+SIz{HVL-p-kCanWUq23y$x*WX!+t>idQL>Fi^WCl9so$u=1(LSE5vQS%0QMSx1 zEWZOJ_)4I6;(72pMZh5en%1SI(RdqHtELH%48g#tTyxq;UP`!_22BeaJwHdh49?z$9Fl2=$2+$JHi_2& zFhJIu1z1_scsI7e7?FVzIW>g&;jDuyLX@`m7^QVH%55B@Po#v%4pIsaT!hHl_;qJ6 zYtDpD&5+9D0ZCy4)W!2~gUXCL>nW;Z2>Ez4i?cuKWbOOdGi?&#R>`sJWUc$yb2;NQ zDAEqbiL%*3p9X6dGpt0KefgTbjV3bzG`kxK8E!dGvT4o$jI&9Xg!qHI>zT2i+{nV` zZw=zrVdx$x$OGrvpwS>qmmAU{Qx;W6t*;55*{Rc~Qo!=s9+TowJ zHmFZ?lUHf=sBG5_eygW`x2RHSRP>oyYDw9Fa(+W|e8^AP9yj`wJectho{T%d_)U^= zg`H2h_}s8;tlhQ(n%vyR7Q$+meWDhtDJv#-23yhLBm{?W;$uN_Wp!X|j(v?i6>Rlo zU(cP^wIZe^Au=~)tv#+984y*2Y_Y+#jbYsU>jyRoPY+Gf-y*v^YG`I=6_9BgY*&z- z_XucL=+4ZOxeYm8S%@?4^=&1QqzCu{G6m_)TlA}I9hTJroL}qeoJ@k6ncf-Bk*U~E z5bBYs?c6KyFV0m~QZxMa<*q$|=9+bs>TnI>+E@ihx?oT@`+M@2`Agq3|9;0<`^LYH zltx~y=Ayrl7vN!p>+10AFIrT zYlY2^q6_H)#7*908_Cjy%Y9T$!hPBn1Dka}pd$`|K{%Dp#NIp6Qlw*zRq`nMnq8y81zAzVRnmHaqg=T6EK zXLV82;XSJK(tTXxu!7cU)NkokS4XPmw@^=Bq&PSMZJlPsw#uC%Md%wTJCyw-NscKr z#kQN&-BJ?_MQ|)MZsklpPD8`MK+@WLz;qwdTQ3ej8jhuU{hdKTckbBCRQ^gc4)!=Z zP)#$S-qk>dznbTzBZ)mQCt3rV1s&ZE5E7n|s`Pc&4OWLsuOp4DAU;eUgZ;0=H5@~j5>`ZQb;GG!JA20J zA%K?)41GA>{cGlRC)+mScH2u{X4SYxtluCuB6IZH@ z_VjD+s)?Z(hMCorkjtFUOyw(-;yi~+m8n}mD|HUvXiFy8u5=qV29;E^mV_Y_JNvf! zZ=0s`tnQh$UXK~QueIV1rYbwQN}R#7k-C3dUf8c-J+=Cr-#dK!Xmzy&T3;Hea4P(H ziJebAUHZaZ;N4$pc+dK|aCm;~0-8!+kETkk-(C!pDjWCFOjjkWpl;d4L?vhJHw=9K zsH~kh?6PQRxlQprHvL|J-mvEV?qV7V&Twvq_#vAAYeulSPlU^kAc1pCYDGZtKcOBJ zuJxx5-zk-U77!5oKT7fRsS5FgP^rDSgy8>MDPC9mJGsK}d#)wSNF9m0q*l`@$+$e-3IdN=mWOm8^zgq3a$NGJbk_Vp3o{;D%e=wqPzz} z3l9$ReO-Kf9tc-t6bFm3h7s+@2GPn&1^B=R%1N@!f)>D85XHq;rjVYGPftnS>5d|X z!OS!rs}1qt8$V9&jQel@gfxoh;V6r$Pcatn;AY1`3S+)ev}DVXP{ADu{fztiOaU-A z;~`a`ZGFClbSXz=V?CLSWl;!7m}!HU9I|XA5V&^eNt?227KiVh2gSq7DwXK(AExwv z&uYh71Xjs|V@`u#r9_DgQyQf#B8e3iZxE)}i$nyIizN^Qvj)NP@L)P)nvY#u>lN|l^Q z+KDESx?e&0iM6wpwyzL6QX8R=F-I%jd_#f1Mx^Wn=oT3xOsJSNF`k@XkA z5Nopga{TyXcKcBD)l7SqU8=LM7!7C^JN?>^8pKPolr5y{zD+hvbO3(hBo4~HYEgw_ zoAAP*3CNI-k>eyBlL(RYF#w+vU}9Crus0Tc%wPSjjo`|RJ|MG#DN?_-iYl=s(7K>G zY{0$l&kjG9D%Ba}$FqmTcW1E$J1J<&vAEd;9sF_l3BgqSKah&Q*};RBsoy}tmvl{@ z>=T+B?imK$GBU$zlq8DFO@RI$4Re(74Vc=U zQWQF9@AyMd4RuVlH)w01iHHfak36rY9eo~)&mgnmqa!A??oZ9=6{4v%y*+ulWnSo(v0z{2$ zTNpG9ns7oR;NaIA^BV_Y+Fu3q#b4z^3M2nAiZc_US3Vfqn(O9Ft*}iMmih%VGY3I} z7*k0nPieQ}x*X`W3X8h}*b=N6IJ}>uPfe*NmDVkmc$o6#1^^8SL#UE8x-u+R05&vu z5(k^%r*;Jni81F3$6R_c1ME?>zDbztj*IDXS9czO_`44o_4gC^FyxyL$R}2MZ3dXa zw-q=CIS!{;t%Vrjj|cfPAVSH zHC`}<>MAoMS#mxHfyEA9-O(T~Y$|yHp0gHef~HjW3Gg?0)q!ky;$F|lQ|zEVce(Nf zWIwk;FoNcYaErm?sLSoqJpRVHCe^s<}Ud12*wNUK`u*VDC0=-umB9i%@s;il0OJV2w7;{rZAY(@28!(rN- zmr5iq{nA%=D0sbYi925Vc$PN)_sK?+P0N}gAH8Nj!68&Z%~3na85=D@%!jkJnzqiR zP|b3=Yc8waEp1Z1Ojf_Y45MBRjn$Y7MyT{HT4NtvL%6bv_Jr$^i z@SeW9Gz0fI*rqY(LXzyQ#VB?<7LG z!MGrEat}++r#S%}@wZ%0XBqcvHL40v03CvZey%E4T2`u*8GrUnnx}~jD-6Lb4giiE z0-}Ihg8-^Xr|HLx9=q~68(-P8V2Fs-N~0};nE62s zbis1Pt61%Bi{-5-`D$EmYrZ0K6|iSeCDAwuws0-!J4?V4r7hvFVqWNf2Bpl6C+No9 z??c*Re(gQeE%_2)E2c?2nzZ~te-kx+*@XpVC#nQv%ku5R0zMZ@m{Y#EoH~w?w2*gQ z{b)wunc)8!h{GNyZxj={OsgzhMoDaBqLk;VRxO`t+rXb${y3pUuR`u)4xm}-j0j)Y z?do1=v~#3T)vVV%eAHnu@p+Gzh^?;-9woj_lGo0K&!hRXy@Vy6;A24qUp4%MHu~6| z7`lq=8%HWVbB2E5Opo`jbswtNa@*!4S4>>SfVJIMhq|bSo2DzjI#9eq=w$=!nP%9M zAY!>+ks~fKk}6V*9mxh<3^0=4O|JGdhT^wv%IUOI=~$m_hQ&~CxYk9`Bynb?OO9&^ z_K{}}PxiAW*R;yIN{*4)gj!+&ym`YC+2v-}~(2%`YfeMt7;&xN$kk z>y#JWWlrcS{ka*ptD+&p_6?AedmAD;+zZc7K! zbTy5z{z^ElWL1v@l57R8&t>BL0H0o=*AdjT4?<#4aRNLlue z1{p>!7>fK?A%pdBHQOD{w~Qk$iK_G{riH#<2$Op+FTaU5+W|(v)6SXwEp?$K;g0ipw+o7YEfLYor?<^%jQeuo`WFG@lH z$Q{K$!bz;yrw=A&R;{QWoGm_6$%e@M%XL7{YF~wi3k3pI{%qZn^ZsT;@P`Q~Z_@tm z&Zu=2BVBb|Kikd8{ifqlsXzm^gmK6XsyA>UGUJc`Edc)a?fBor{zGwDGK>J~F53l#!M{&drS<}Xcw^I$7# zZ>;^dy!PLl(X=4jd>!A-=m_k8FulL?InsZqWO4o_dH)8Pp#wOPd{@-r;!<@a;096RU~Xi2qxOb$&HOhlqQpFhVX;B`7K6*(dsRF)1MPi3VKvIx(MyOfA_ z=e5Q>M&$5l9#<8fQaL8CNU1H$6r7%h%{QuJqUqn!Vl+o(CXOGxP_NW8hE#|D^uG33 z_8OILA;wfI`VFvf8F3>3$yT42Qk>V%zO+Cqt}vskQd#oM$x+Gxq65|f$twbv0#TR; zCbP~fGRPE*AN@aky>oPC&9^NacgHq5wrwXJ+qP}*Bpr0nv2EKnI=1a}Y;WjG`5>AW(c)%$hWx0c16@yS&fF zsIn%Lty?zTyo+mHxMuYkRGa4}mV4_?bqvbtCsp?IT-l}BMv;({F-eTSHTlV8>mn3`sJ$%Jz@1?bPw*(I`mC|I zR!a?1r2B;8{U>L4J9ZxLvw*(^zrZbe6m4})DK!lqR?0Fqb?NT^E2|G?bk zMJEM7?U^yuI75<-7B%Nsk1eG21D>uVOgO(>n#1yEii%qInJJdNn=4@FV3U1=?|;AjSP(VV_!AzsHnN@O#&ni==Lm|~0l%n9gPi>c^Eiv(X z^_ByWXTtJ?QAO&T08|Qc*jeoA+kmt1z+VjIgAgXCoH7xHT5xklmkm$Y$>W>Q%sT8q z;n<d;ZAfN7d>g{oR+@hxDk}DAL|gCvM}mo(i_m*zI2hRne^3 zOI5@io}S$In9+sOH_=Jw<34xhs-WvfM#=gH->GJWxdaF(kjH} zNr}B6V*lTr!H2{9yGg71yq0U{zF^8@hf8?Evo0Jdkt@Jy zmh9n;usv)q^S`D-mAiQSxVuv>Y5I7O>t@PADE2Fk(%uEObdHH8HsCw%HRmp5KTau@ zdH2W6IOiT@RZ_LapxE5!ps?9cc7~iW2(vjTk}0M2ZI4Ucpdm5ER{jo6cabb^#$Uo` zA+SC}9WU0pQmpSVdMhOU{qo;m_bqBZat=5Ukhp;VJnf2|T%Gg(=5BPfm2tT+J~eks z$Qhtb2@4(!+3oefu`f;h2V*wMDyc}^VYNlHPh#iE<<6tGoJsE&Hh%T4XvG~vAM-j-lbB0Du3oqhI)Hf>&31i7BB4|2TTA_7NgN>mk80({KF?d zttKM7HrBSjt!_O$KH8a%{-dtv=<}MjE|)ulh9fKFcd}pXY-acPz|SbM{-d*#=D~aj zJp!6lxEHDu_6yOlcBwPp7VbX8YLEcqY8<`O?fTjc0Py(#P82%D`q;3Ji(k>HcB z(fxSO$^fW_5a3>Ie&fsM5T#Z^vywd8$m*Ta$`&%G(bf-Ku^O6)#Yg_(C|QrPFKF38 zmTd{pgTPG3*I~d4lcF-h_=m6wW{DZsARg2~B^j|Mg5T-0YEBA&mZ&lqJ*?2J#w3nS zCU#d6`Z8YH^g|}jngcr9VL#o|l;aCAu{d=4UPx60_T_-r z1aQ`Ew`~@8_65XAt~591V5MStC_*%nkc**+d%!s&P`2<(yj-AbR9oR*vWg2CgV@;3 zVFoC!@D7zM{T-SzdLu`9`rx&}Shoo9x_w_CCWu;-p1vC4{3ESL^)G2X$c!id7#Wru zPIYGKVMjoEF4}+^;T>Gczu^}fq?Ap&3%!CDq|36u)Q^81KkLnl<-!SobR;zu)2F1w&kJ2R?6S`kldD+QQ)oBxVq0o zs?bZOL}zXnGxO{lMSJMrEUpzV|Dv06D{t#mfSaN|Hc=>|TRTA)g6wA-2IT@ZBAME8 z^O9O10T$9Br%WXR6AKi$*)ni!n)*I7Y9PLOy0A~B&)SeitCYtd?l);dlpgYTwXS62 zq2MTmEB>T5a{2e1P|Be8$;>-5tDSP_+K#DzV0}B~tN|d98uHL++w2%lD&vcPI4+Ni zr%(J4)?J91pw$lX)DJf}@MxeVWIQ-cxwm^+3)c0oIOJVjgB^sB9HQ~1w9ZICN1X;0HFCq^pF-af|ppmECD1Aw8OBQic9gJk)`{6PxrcJ!I^)nBz|) zZ*3;D89_mtJ8ES#1(Mwi?_)YJidH<*3cn4GvNluqBr`%by8rhph$s-pc#!n-)f8{& zIF$m4&+wY13X|4NN;7TqYqqSW56MNaPY=4k&_v;21o&5kqVky0qeQEewdagMWWmq|J6ewG^noRI`zrUyG5j(dP@Ydd< z35i`qHt{{zSq#xblr;gia)aSCR7gBzUh>=D2PT=355AV)$r}4oAJg{M-n87*8F2`X z$$RO*?UQKN7BCre!0>`)R{M*l4|0KpAF=s{=YG?5PS|-NO=E1NHhUr7ikmKg*>V0- zxsEHwbtA8p55_0}Xu<~v>%Lzj#kj~OPeXUm;;_0Q48rLs)t3M(ioaMk?yb@5x`lcU z0~>RimL_zkepb-1$Ir6Hs5(+|%sL`W>X!^H$AC0kJasT(|IwMj!l5huU6V1Ug1%Ft zP#j}5n%WsB$(*mqbmar0^A)((`%s<(|Z0v$yMODrZUjmB zoA_|3^|S+;hpxI{iektVd`#pvF;FVBupTh4oXHL8W+7krIt&tcX;ZB1G}yX`VM}va zv|l~PT~xf^Z432i+`8`LDq#w{aJG^}M#F6vbLdLXMutHT{z#I2bB+8>K!D63QDKtb zW(Knj3fc)cE9d-O%iHWHw_DrOtv8=zrDfMlUn}~R=kw~dZde3o=X=15uB0)roS)F~ zK!>p+csqg9!riDnVP)*zH8#|NC0giau{10N8oE_S;LhVx6NVSFBS5h)VDbcc^X2W0 zv2CDxUF{Cy`7 zmqNWK)C#RemWLWK%>umrll`?DXHcv8hevYE?8};J&b^PuR`Pw;?21#RpGLE%+26=L z;DlJ|l%o7zCiJ)T2{T2`N>yYMj8ZX0Y~lzk9;*sxyjAPfnkX4F-u5E6r>2HhO(=bDJ&Y|OK z{uvPF3y$yOz0KuBOKfx;M|JG<2k;!E1KkgT#amG6X^ON+(nveDjB(=a_n*%m%7J|_ z*s)S-Nkgk54=$IKZ%ae7gAUdf-btE{=p;j<91tXef?-nl86fNf75tQ`>>m*34JxCP zGXO@0L0Kyp=KERpC8xfNh5K|+Sz4Y9Yn}Zgt_oFhFIkrP?(bgRtK)Va5x@-p#4r-P zLciJ?D@ZVgr`|&MS7Aoy890JJ;D2){I$yZHk++uU>VKN~TAlp0;QMkJx=RS=G2&b6 zBJzbRVupY=F)QY8#I7btCFSdeJkH|gv+h|Ap06LO-%82_bs) z|3?V;Z?Tt)((;{+%)jo@ZzxxI;r@8}RNBZ@Ol3O1+>&$&+gTyTsdpn(XKPF;eI0Ck-J& zYe)x>ih*v-YuLfJL>a8e{veDgAyX&r(6W=LLc3pjgl}zEGU0HHQC^Ga%n9jF<+$X# zfs`H4l1!sCoGWz7oTO0-ru{|Vaq7;^pf`QCG=rbXnVMZOB`*q;%Hv&fy4^=<7B96g zPAY2@nYAvRj?0u*T&<$1JF(}ipm7zQ-cmWqbdNLXQVN{9*d;b=RVI?e9({SXsLaed z3hyB5R!LA>EbCJ~NH|}TZKz$gV{c$X|DOMK_&!W{wpgkd@i|E}jrxeP{zN&LRzoO@ z95fH@#GwEdr}7zy`6-uukqHwz_12`qLLH1wbC7so%$#|<LEn@WlUUf48kFGHOVz zvauA8JC)bQxl`lCPM}fBBXODoJaPUV+feD?7~=;H$FFuk=%__#54^ug_P62B!Ceyk z(mXAA9M-tD#|wXY?EHFrYExOC`dlQ_{1&Jeh=~+8pN?r_C*p%o?{lJ!4hT4 zBMB9dWeCw8W{e^huGj^hlfg1;ng5rW8k)2)@Z%?dH#kC9I)$ZQ&dNX=NpV9I)|aH3 zdTTO2knh>Jd{NHJ7TiqkPUKR>h#)b5aBOyG_wsP~!iPWdo2ukdC^>4?hCX*~=E>{H zOw_FMY{;r&(8^zAO|kD7et2(YV$j72@btW=5Q8^r%U^;TQ^QCl=V^$3K`mW6U9~1er6;}<;Nr=;T8&Hsq2<<|s1@l1 z6)mloIcFWbYiH7fxA>~8VB~5}puz;}*S68`n4der6<*Sz39TkPnFTj0%`Xp~pf`2% z{*WeC%6A&XHZ4=vFuJpy#+ii(=BpEY!1)UJYJXjj97lwT={x^`%;M%iS%2;MKnXmX zd=V0xQ~QGesQ1YN$o#sS$&4@n?%-XlSLcwDS7)z)CPs`LB568^9yoOaj1@H8C6x(5 zix%u&EgQn~tQ{4Mo`FP2=hZa&-ndKbVWKGIrDV*GIT(~)L`T?Ar=8jfq4~z3UKbE_ zm`L$3soX}rNWA2OKnYsWQ!}>tt^sI$|_> zTHROcbwch=fA!Ra#27MX!a<&?yCC!gcl!XNx;{UbxI*`Yfk$8x%)+u zu47e^8vy_B)J+BjO2-)%2nZQjGNTTd!2f=XLEC=)ccR}?HRX86I97rUJbO=%J^sjz z#rLKLD@kZ1S`&876SHx0E?Olg#GAdxjJDeF$E1uiQhxcSG}mfpf#R;q70-v?_0$aR zHX~!-^$76Z!merQZ%E4rW_o)cx9a6Dw>D~kC3&BFZrZq|XaRiu?st^rY7rt2GCkOp z^SRz~b=c?ra`i9SH-X89iTf*_Z-3}sT@ZaQb1(T^+SNBMRGVMfs`>HpI*!nlyT9S- z+-{u|>@)pfY6?SQ4EJYx_ww4PxIbpvk)OV#rtPPz_MqA%z^jv2ZNcci+4$?5V6K`1 znCzmyuGzCOxP!uuF|Yr<)OJ&I^3%9xK=+nVI{vN31GTYi-eoNCvyJkm4#h^hSXHSY zgD=E#VlbN1qa~!3VPdGyMKc(^yL&3Gf@f?Zgk>e`K=uoH&6iiAF`6V3E1C6M$y60d zv?9qyTx@zPty(KowaCyJaeN%@Yu2enAW*fH!)tWOuz@Gq5P$lVT0Y+55qYwlr#IMU zL`J!2mDwf|JS?oT?AHNe4I@H)f41hny^5Ym6aUE00~QV)Du`@1ap-hpRM{ zi0Sg;UikY0$aTLuAlLeAO@GrC`Q*vVZtSd9Xg4(}&tu+Ip$G5zDJg13B zKXu89oGoxwCPN%x<2z{RgyjYgEVb<}pdL-SL9&i5ZvGJv{D#qwMQQ0G&)dSdhOISJ z{f>RZ5LWV%WE-W(7V|}6UKy9KwQVqoOuv8eCB4KxF7ydQbc+pf&mj?^Hpa#{dFosI zSFSkQ6Wf$tjWP!2MfL=|M6?LbkaXNaYP{#S@Zhq-@2YW#*)$G?E}2N}KpckMkmPb4 z9KBT74HFcOX?iqW6Ly!Cbf~*9NTxdP>W}-&Bx%x5!K&!XLWK>HO(|h8FFsfjg;-;n z9EA4p`~{P+MmeKkR;}GS40jI?h-6GU?dlEquwm zMK2p<0E8^nBp;%U(^PvQJfKa|A8yH157X&BOk;p>jU~!_;oOV9rrDOU!14jZLwto& zGubA5;j$JoBfBB&EQ~d6Pf=g%=BtSla`;Kp&)6?=-lBX7`c>J ztr!&yu`Pd7wr<4G1)zU@nRM{4a*Yu0`_r##Bt8qJWu3^c;R17qUyjNKwTBfv5&|y1 zms85#>9!^6T)iIUN|5Y498k2uJ#1W{pE6leH@QgzSD zmp@H0I^1Q@Fbhh|8H->RS`#-Yew9Ll{kqP*RlXcVm=dk-+kMffrr&8KVnaASN?xKe ze8yh!+D8>J=YeieJ#xbrMH~ijX1%8AhhMIb6!4;SRQGOesQG=G61g0em3RjO3cXyL zZ$W-#GS)TYA04M~Q-0eu)y*<^(y9^eSd3R5VC-nFUwgU&%15jnsqEZ>ADg@01r=8{ zmB28IO1Y_0ZZxcq#2}qbcB_73pwk+ws=sA6u!0}1=mH@F`?FwlQ(Ct4W3DM=-O}}> z23_{S%6?y2G{)7Wo(1tkGv0JV=;#NJ^z_NvX{dqQ13$&+ zey6RvS=JLtux~tw;9(hxSq&JAX!$v2lNf3WR{&Va0G_Oj>yjwRUbeq}Cw$uwP!&Yt zVkz6S?I%q%CkVJwz8xX^V=x-7Z^l`Ec1!OqGs-LCrCP2;`(q0}JyWXJL(M!k&y#cA zxuv#b9Uc9G7Snu(UDEw#Ovy%2Hucrr4RvUOj-vK)*Sliqej zqW~sq^Z2ZmXJ)OoM$!sbwmLPXqHcD{d)dP{f2r7L6Ff5TLaNp&xN8?YN2QnBeQ^gb zHNN|9dxe#1g7;Bar!g`08;a_xsDp#xAe*A*ia)iezfD^#t;2ShgiNxR=l@ zt|K;?M2P*;0gq_IG0OW1p((%-$z1?{(h7)RY4joOwC)jc+bJ1mW|gT+~sp<`BTyk zW?C+G3o*O;t^6z*k?wT8TK)Wv2*3@#A4IF}LXN~jxQ#rX9<2GwQhhwYdf}>N&jRO| zlSn=xM%c|=*)z2{BB7y;h=}EV70f4y`p_Vm_sd#bAh?g(S)hR(M|sQ*3tPF#Xpg>q z6&RmmTm_f0w^+fv?C#IJEp;?;0Lr~;zOM{Mm5k4O*Jr;9k1DK_C|K#{Anir2X{ACntkW&GvPo&=Nmqv;eg#H1_mfNj` zh}~WildEP=60j2tU+FH=p9wPYwj9~~M~K+b9YuVGX-99j*mOf zN-Zykv7VG_3VnqX+At*@huGILRe4T}jD zh8WjXOrI1P?r0@<05Kw-+;G-)i-JX@Ep(B6Sqy)UKeuk@w}$c76p8jm3ttGE{BV;o z?n)bqKo_?klHHozv7^&QWsdRpqDhqE<@%@y8nlJKESp(+OjIMF4<^qy5Z*Eg`|C$EoI>(KG zQ$+W=@<}5(inWE6gW`9;fIh)ut0$nJNe)8;XjFZqGB! z{E9C8IRkM)eGIG&xfFQ0tY^FZwwtO;SpO3Rp?jZL(^cTrNFw!Fx3!6~*6e9JO21|; z%BOB5ZA2rW)CXD?QB~bUc(zkateBz*3-|HI`>5%mRjO)MG4FT{Q;k-bVFw;g5474Z zdxO)`ER-5hHH*c-Yf@({3xj>vgEl)0O`$EHU`0{Kc~w9~5 z%v?yJHl7#bnJje?9`gPk=taw`y1it4p7k5iz&%3LDJ|Do8H~btn=I5WkGn4rnbn2- z6vn&1*cgaYIE9G ztSTTRAXZ#xcP=4BgnB~4QGS4NIJhnWyHDe+;jVo z`_ELg<|E{QxZ4YQzL9OQpVlR3-FembX9)n@JLh$Hv)SXg-+j&RD@{!QDzS>XHJ&F2 z1`EYreg?BHIy`dWVaR`_kuB z96e~v>N2wiezl^%Z_Jw5Nnt}^cN`RQpCaH!jD(OwdYBrIIvMwTh*napL1)D_pmacN z0_07?lI0oq(em_Xjp<>0{={eUI1k=<)K+$}+c&8}mWiEA+Diw`4id%{aGt zRi$PVxHXHyHOe_(xaSz44i+ypSBovf8}QREYo=Po+Ynto1WA1SbZ8QIT} zPDHfl&dN>Nm|j;PNPpbJ-`^#WMnkG+J^rreIGnE9%WTVav$OK_ICRXt%A)NB6 zv?Xr*ZDWd2#IlK-R&>~#>xB;R(#5LsG^dz`^sYB0c%Q0Jq#CtoxK4e^cLpO;wiiq9 ziBs<9Zt|-3X)K%)Z#=c=wd!Z_MIVj-&aF~(w$ytf+_n=_YQvbwWZmtTHm+~9Pn?L) z2;(1^hhLxZd@&cT^HM{=Q0j|?`F8>CTh8CSHdOX(WG4GBq>sP8HyOnOB(80z)f&ZX z@q}0up_5tY3lqf>>dQ13$i*Z5{dxO4^-Mkr$QDi5>vb;|-yCi`jN*7&ZC6o?QvAl& zP|LC8ES8ITy-#w5??s?^TA+%N$KmKV>#{dH49B>`_uC6T0zYeWY)6x-NePUE<4hd< z{K0|w%`hhJx(;H6z&V8*P>qcUZA*yb>P3!PvBg+iAZLi*5~2=rvT*zDe=8giHqAzk zM;80TRr7-N=la5d6CxUy27Vj!vZa7vE0~OxXh{DGhWZiKtVX{jgI*N<{~{{gEA9hFXC8jC3j(PdnAD_{mdc*+}KOYRjY=5Q$qiW zLCZ5I2E4{5oETG$;X)5aZkLXpUqTv|Y?eTcf3Str3ihBj5DDSRX(2$^N=%24m>~<{ zqWlwizs-S%HjPn$f;OF&9Y7g17_%Zy5E8~dyU0+0`Yw^80M#v)Ak`Qm;CSZ*u##*x;?a@OP>7(TpOFa!07j?n}4p4D>H zzk-_v^+1CMGb(&qQyv!jHUBdI1I)y@zW&oWB+J$(NCcME^D@=hZ61I?6iFkN=oP2^h+vU@7SMFfYlKa!v1d%VIB$z{X6iV8~z)- zYa(NU)hR$BgKB;b5K|!X?{mThtMh1*xG2yur$z*;yXp*DnFNG57UchP$~*1N5GG6* z1ON3*tVnd!n8A8~TGqh9-5nvb2bqP8C*wW!4uIn`H=#R+Rxl&n{RTLxF;#&fL92=T z(9`o?0T6g*SrYw=~EvTSQj+gn_U#v2&fyVeiLl#KHBhGCC0`Wgxg#_o<+| zEXan4rKNq=UP3RX=jT3;dqx5R4>nEs4{Sr^2!Y`IJ1}7if=8B}Otnv5oqa)g^%@(f zRcZ7H1qBD9DGWpuLqX1PThcl(l9_!^-YcsG6cXH$5_*Cy%j95+Y^*>Hqh!|6XYv9~ zD^9|@%mMHA?pr{7bwH7yjaeRbJi z56R1>TjK8@exvx&fv4ZvFM(oNYkA!CMP1$E?grN6_xq-n5%~j?D5c(hjnOiNTY2IB(N-%+5|W?VaY-_9SeY$veT9Bk_SWxf@7>mFM;!Br6?k8|5H!f zV6{L*Id9X_wh=hQB9;=5gC{bkV`}A1O=N(|uRjdYP$4{$yGqrS$Uy2%{;T+s(YQ8<%7F@Qe1vVi)4-Lt(xqA zU(y2qxu&fKk@{Hl!^>F~EWCAze`rT_9+YKW%9>Wyu-#wbQQx>7g(@d}Dc!a; z{Q!e0bc*(!?eBWIkgB(hWMV}DLg0KG!=|!?7tZ^tQYLw~NIa^6-R^PK^Ld7*i!W4V zL%d#5*LS`RJ{@t2SLP6a_h1G~GX#)=VN=NZf zckzifk#{!$gk9Yn$tAn}l9wTp}`BQp3~_-c~CF-zUN+lJWM) zF^_&4z0u|`)yqfJdSm*}7mHO40`o`oQ<-1;<8x=-+<=C0jv(MUjHWMgPmhj#cuf4<{|Org_G}8D$Z26 z8CX2$kG~0+=%}rFsFyxE;ZmfIkm?I4b1Tw%kyL^)2S)mWEF%4Hn1~Lku2Vj|IoJazEa4mIWElyk zEM;qED~*1+@?RG(m^n}gNGFw(OvEyG+a)rJ-(58^5Qz^Ch$X|htFJ7KrBp81jx6$g4s<`@yWY|}%A7SUePaPyCHmo* zxk!^5l_+EIj0*wy9C{!4N0sF6-MW&opzI=J9`+jQ2@f}~*?{LdJ;|Q#O7auWQ?6xc z`#MdX-b>Nn3`ZT*V#KkO3|uw{V^uqv>K$JD>+MxRhR@vo@A%_}R24vgPv5v`&){#nl1zS^HWTCdMZ z`U$@#FQG^6bOOc!{7Oy52i)J|_T+dXor3{k#Wg@6k@8W2mJ#T&kJ_a%=M+SY#wsT> z7a(<|ins|C30@XQp__F^a?YWO3~+GlWA{P>k0k*?Uous+N7o3_Dd^d9j#9sn<4fdR zgU5A4)6kSviyO;5YsF|x{uRg?QlZA^{gR;lr$Qp(IBno* z91cz)A8UDuk`JgUUYGRPjmh7Uxfd+9oO)vsw7~lS{SNY$pteUiD-r$W*5b3w`#x>b z!UVgR3V&(Q{_xE{oN06VICBa-1Js9-Ie0)~ejNApu2~Av0~y1$o$|b02$xf+kZK0S z8w^@lDg3#HTHiLPARJ*a_Dl^mIFanlNr2*c8JtT2e<83c5-@1xXKaxNg8vc{ncWt!yaxX548d$Uu5A&_=J=00fy+jWT>F{?G+~ zWBA5Bu7AnZ({z``0GgDRlIX8}?7I9}*UUlReQzaMtQAks1AhJi>r$>cKEX&l5QTV+ zyBBM~8w~)@cY2yFr5DP$w}cFzzh6TBF~ZkRmeSQjf)Oqw{`^NRS_RAAgNmA}{_b4g z8Y$t5Tc@sEVTYa+=BK>DXjHypXft&>)Ygg6lx=A=UEzL^eZ5h0fHy4-+Sn<9ljRU2 zk3>LPGVvrowWdH1%EH%tggdM#k|msGf_CxSf;_+sD-%@Q9o^&wcCfyPEQEp(3kDk! ze%kY+?o`G=z_I0Bn>;!Jq@Uv#)-nn*Zru>cFSScCXwf*+7o(cZSY(R`YNG%-BjoS4 zNZ4JoIL?YydpbVK#5_j1=K89vvm+yLhS2Fk#lc@-^7k~vSgI43%q{9mMVdZaZZR}UD9(m747%}`qw^ZGj zP9p_g&0%6idZeJ6ha1x#_-b#&!^)*xmp5M&F}S)C5HaB?f`@7(iNp$XU_k_eIi!Kn zjix?n%p2bh5(GSge18%?XJyUS^Oh@w=KblVjuX5AzlIXkUeV zru>!gT?12X{LkTg!QbGKMkAS+=X-%sewV#Amzws-a&H!EP!(r<`)votC3-yx5*Y0( zcwI$Mf8G$-?;`U4^6^7aXGCL%W%$fCw>-X91xYkr)Zt}fbnx;_&Ag2{A7n|tNm(k- z8haXblO0EK%Ld8zG47I}?)*hosO8pgHS9CL({nUpc^$j!Hw%CGBZh>^^&kKO;u*?I z?l~CGnU`Pw=uB>Wi3)ZxlU^I-;Uiv&`GMjzy=Vgr(nm6XMuX22>@DCz3kFn2$WE}w-tBuRW%_Fz+ zhVC_=KC%KAdHl3m<9cU4fQ1pqTL!^AW26b6nm$67F7w;foK5mb8Bv#du=@hMD z9ti71Y}{$iNJ1F-n;=<-zei^2IAsjR(cGy) z?EEz+A1c8V`5sR9-uBP#hW#gpvq)Lb{T@q#`cwiet27(QWC zqH!GGi!}ML*$4wI#K*6+#T)BH5}DokmxR)0{BD6kpOTF~z~ApAMJ>1%e%!(+e1w{L zLz87im=$?cq+^2zg#DGE`>DSKfWRzDr(7GW~CJ>QsEs>{P&^ z|1cMOk%6;wK5{P3(zT2*_G&t&!9@~&lFi0rt<1DMA!?0kvPEW5I3E_oqv@#)ALk4U zx7zo$;RbV{NN7j)dr*})hsV$^zT0-k-+1zh3H+buaG9xw8%dp(*c8Jufa;^r#5?gL z_DvZjGrbH<4#!#4&AD00WS8C}J-#A7_id{7F(QqdJ>v z`DV}0nj)S(B3xRAT33Qy$E2j*apLVcaNsGg%$$6%nATrni?BMeFG;gT>Rb(*R^qsU zfkwvP+`;CB*yoOFrNRXy{8o{<2uBT2MCBuxFnemb!>uFuX~K4-kWCG6dgcM)vhvqa z_NDwAN2^CO*sXuuT}~T<2O5}nuZ!ftaYm5vea|XcghiTo9(b$#PjUF91u7fOyjkLh zV!R2Rr`&DE!+b2_$4tJ$Nib3uE~Y2k!F)0bL)3**uB%3*F3=;odMakY*kCh35V`1fgoySAczBL&zcxyegvi zbS6YHZJxm6Mpw054K|dmK)c8klTB2(J5B~0Hl5+`ugW`U5K!fx!70c{!*Y?Zhvo}8 z(P+*nQy$Mh@v%MmarF5_G?$-v>g=_`<)e1I(TA;cvcJC{cJ`5HcJY+nmk1N5+wuz_ zordcF^@;eS5}}ZsS=s0I;}A6w;5=_|mN8`7_4FyiU6xKb!oy5>G~$WJNzaibXU{t^ z_A`I#-OGx4OdD+_(d9Z)yyt~KXsZMdA?n~_ll(@pPBC@=x7nAn9vlRJ!6ylSd3Ne3 z$v2vgN9B4WiQzRosjAqM{e%kB`G-57WQs9CV(~)o{p$RA&`{~opMuqk*0?0M+Vjdr+bwdfOg$@O3Jh2j~(mZByXditTBeq9;em%9#xvi7ZB~}a=fl- zyx|jh_gqVk>`8oafk76Xy>0~V*+`V$OLKZj0UD)D{=W zCpM@yB?89N0%ncC3QE6Km%a7Rj)SDi!a{eCfShvsT-HI5Rn=j0lP|p~ht2qwY~9(>Gd$@P$Dqr@54`y3@R@%D^fe;{qMTT459$N8 zHZs7_{S=cD|7Kop442mwMYTdOJ($1$v2?#{ddW|mbo2K2xxY%4RQQfBZt=? zON6n&!I*1_EKsst_y-|QU1rSMt0lBWuq64+fs%MESCo7?qj||l?l47)+K)OTC!8POruuwGuwLn*sX9Y0-vRdOK5{Fw zD{pHv!CzlXkU`mqkAHzHl7Lx>{>$%`amQdI&Jl;$sz&ZDr%28^B@G+%NJe*j`6zgM z18ovRz8f`h=@>F8Re!Pk{1o8nDe^hfPubkuU0my1EC>9*N3Ut~l~aK&ggA(-m-GOvzeT(r zM^z#&7V_3$?glq9UjX;DJF@3jdj5|qJGFDJkMJ{)i1Dq`?(vUQJUaV^z8%Jou8yY` z_s&+m2e*k@pz2NP8KvO<4Rmj2Ne3M6>I`Z&$#Tc^ZNk=*3_VYPf>1R0IG&mWJ@2tE z9A>5z$ydNlGWZw>7k2q18(uS>rJpwTtyzgc6|dnzb|=d7IX;s%IZc)z--E6xLyQ7I z{mMm`Gj>4uc#TTfYQM#`C5S!u8&-dhD%&c3$t>Ff{)O3x7zHQpWq!pckCz&M5z3_Q zlXcC(Uc>tDx0pQ(Ah5bD2YQlzF2}GDST=YuND;=-&SCzzPm`(o3CSHMhSw-$@+4&) zsh@~cJN?kpIJJl8wn2G_&4el*BJh7Wd&{7>o^5d(Cs=To5Zv8@ySux)yTe9;I|R4j z?(Po3-Q8V+dtQD=?mg$+|M~J(O?CCG?p^a?cFlD6Ue9{GZ72m}HCbVJqf8f-jJ$9c9q;WH>@^gKgT?f77l+*YWHG74BC|g; zTbBjlp-)GZQ22Z+y)%@6t{sazcZ24o`ruNm4AIUk!r;D2|6u3^3>&!0aE$I2c$UhrlrKkE_@q?kOb zq?M%#V+%Es8;+Z3&9qd@@wq8qZW?>Jlnmf6PS%H~WRK)$^VwnXcdytAujtGRt@}ort3=^Noa((HQQxv%&a48|QtzT(q=btkO<%CxV`Fg@2j2~Rwhvb5l`&sC3 z!Kbo+hO@GjuMdwHzTY1}rnH%akZL{n(4gL;{(`WcC)F$}F+_ywDG{3HYY~c@Iiq*X z{#q4Ivqle{60Z%|M)^MUG{NBy1lBK_-h1<61dMC z?Jc8(E8^a#D&qca$?FodO$H+&!Y}oC*4QQV7_?YP+SC=Ft<^wYUf?_>*agLMNccR( zwBD$CFGsb^HWsiF0Ml(J?F?%)2>m5qGp%EbO&Bb7FZ5IMOi8Vu>bK3C9?vRmaq z>U>dypOUg7aadhfvJIa7uy`#K$*w?R1j$GlrD}cP2qPtd?~nNLwY0W7N7b^!aTa+lff!ItmTh&FWLE#$>QPi=si2sssMe@n{7}i zIS$l>pmOHJ(DEx4ohVVn-_L$qtF(HE;=b@_CaEKr{ zmGGxQQl&UW3i*KQVNmGPDgjgGB{$`AYczflB&_;ZA)qg~H<5%(D3gA;^5%-9EK6+} zc68vJQABh1wYuabw~-KsJic-*y+}vLQk4y)xkZ0mT)LPi2Eunyc@9yP@_+H(*SdXH z>LYrCt|U+3hwW>gQhI#x3b*uulBR5Y_k>x5{k^8Mm)#j!vaP(G=`E2jfuM{^Dn3cjoI6VKu7GBa%-6HSPh+ z07)^R5y`I@*8M2A^Ovja085=>C^%J_{nKJJhRB z;@mjxxDZj5?!gPdT zs+l9BGDBqVuiyuNDNzdIf%qU7VorW2IkYKUT3mpB;r<$O1>E1*~8HVH8wtfA2ze< zHo*Ic)@gN)E6j=@W(uOz;4aQNZ-v?SEeg0ax8ZUbf;v{Q%bnKe()TgAqIw=t$$Vuz z%h+Mrrlr43We)GKdA=k{AEq*QG_J~i>(SkXk#P@CGu>0s%BafRs+93O()1MH+NCK;Rdc>J7&)qEdlaiXa~n z(2PXWQn~XZxYy(B;%4P=Re>ceuN0({oaw+XKc$V4w4OoVfbRrj)JbLEnwDDat-tOY zl>CpXEWDVyKYhX^JprKx^E5~I3FfPwk?VxD$%d|tpcBixwGQ%wVAL0Y##?6K{1bIXJe&hfsP{^^nn5w9ZIr0D8$O)3(}B{ zGUf`&$oS*;7@m+bg(pC@+j zpmc?bl0cX5th<^u1qCQ;Ser&f#qf6Ir-AAYqyzDTPbcYH(cOy`>#W|~(;{1V!Fq#N zsKJwz2+VxjrnkfIhhH2-{0(XxB=6dWNa~N^hhxmlvycXK`8~#gFW5Z#(uexk+VZ%a zfm+6OHVAx=F;e5Et zxEbgN@>$kCvR^7H$X|CHV@_l6_*ZL(X)F%^uk_pOJDeP^X}l(cThy2D9JS6w&Tc`A?doHHg-G@nbpdOz24Ec4Tj z_VnL8&ejr0v*4GoseUx!{Ln3y_rYlefg}?B5+s=iYC`O?sG4#QReQPI(P&uVN*o3tK)bE7`TqfL~_Yl!#rSF4wpk#VjogYMgz7S0v zMDRB)U$VWdn|7_9xuw79nbmDp9JbwgH)UNe-28d?=#-tiHmp}RuFku*t=Ouqo?Eu* zoL6yFmu1?4xW4@5Dl^aStXmJCytEnBj9y(|Fao$8|A75FbZE*_wDboW1jJA)c~TXO zJh?Ox4CBB4g=yLRrQ3YJ&~p&)s`uaJu$f`)VIy=}BjR5$mT5J>f(l78Pp76WA=&T8 zz29^b>sU#8P0FX1_cb?CaGQ+d-hlhkH@QWGCrJJy-b?hmK%N6U_f?)eglH2^l-cCg zz0L#F{iQnqWQ!OA*R?Ly^nKe|$){&^UlGT$QbqB^cDvWuT-`Puz>8QuvwU{-c58CL z71d^(;e4=@+iDDH=IK8l7ra0C>LnCijUdQM{F#hJS`aDbMO%OaWG+|`SDB^-svd$S zTQKjpKM)pG@$n96 z%cOVzFr4L++Y&SvQj##)dX?T~F(4!<6#`ZQE_iUo;Qj3P{9(Ds?Z1}`{?MxIX z3|k)ph(V)0$65)k5M3FcIXNS@s;lLAZ;`1kTVNI2!^fe^){tb|mq^KH#>Mi&()36s zW#oF4ywVV4G2?Gf@3=SXHm=&^dl4+Q!h}596G*3^@%H1e%R(qv+e;8&qFyv@r8#X$ z2ElsUro@^<@gW)pi4hdQY=iJZ(Xi#ohjsl1NSNUey!^Z-S%&%;;E^!Yw}>khW?8;Z zwqmZQUtCi(t_tUP4U!T(jijs)22^-YHmNtIL+VwsVEVpIW#`%*$t4snQjay%v+o!s z9pA?f5%gjnVQ_1#HTXo?X8vC2!)H0Xr0r;6+CHev_2y^_T7CLZ*CI~FJ|~2RU-b|H zy&>A$yn4GFP%*tUipDl$+C~VIt6tFOt}h~Rwt_gl5>B7UDVRQ^7d|7y`9YxkCX2Pw zABsr)JTLq01`n?xp`B)i(;g5R&wS8Z;>U;4hE&Tb}~t$&#b zQ)p;`->YYe`P^Nc!v0m*Kd3ad{8?5U#wSazJ&f4h`1e+wzNBG2>_IA)OW(Vm`zL2= zCzqk57n9)RC3rz0S01ts^&Q*T{kSX9pTrYB2v_D00j4 z7)Zl)Y@e3<`+xF~65-exk`Fw`F9f+j-$+>Qg{LZL@OcbYw<~%RUMQSzBoTkvm7T;g zyv^v4$=XR#jhtq>+-sS7$ zc@0HFwxYA1KU1GNQYVr>qfsU!Xg#4^F;%TRG)Pf=RS+!}f4_9#@apJ~27Gv|$YxIr zP*L^ik(Gjp34MLgh+fV+sYMin}uI~bO5653DuA8CX$i2eLa&kVvfrU%n>DxlO1 z-5#On#7H$!+B=s@6d4qL2x0-I@aC z5`-u#Q?+<_5S@$-RC|9jbJkO#!E%)HRL?v!gqn2tM7#&lNp4s!W|XoyG#%r$nO=P> zp6tMFtttI@M*DKKb@kZBZWp}@U8Q?jAXgQ0McLtdnB0U=sP4FhnMO))t3;iCpzJ!D z^sS4QS43P@@2lD(BUP6!k+#ANl^=oTs^c#)O2>gSDNa68WyIB{3?W373A%U?p{ZJupfe`JVA8a>DQUw=P0v&$l&)`#YwqM)7ytp=&eh)^oySCTtM&a9?xf>1P{%2^{E`h!CxtYLD z8u09G;?4g(MB>l$Q7_(UkATiYC=2US*))z^7E~>^|GQsEC|YO9X6&E;C_MRRnH$Xb z69|YPTQUPTD0wnn78v4xT}WtdD&dNKj=n)*t*mJdgr$ zSRFG=mWLIF_iRvzg;0Cn#= znkR>*(=&rwvY)b4?s{I(%<@IWlhXJ7M?w}GAxGZVW4)E!ki%;JT@DA{3n9#MMeL|3 z_s%y*GcT_fNZGh6;^q)xrk;3*T$sW>N!_g^_V27M1bZtats7|TR^McaEhC;MPR~6P zqC)4?O`0@*g9Gx6{7OL5DOSjB(ivKk@^{Zv*-h!<;rj59SPy+ZBnv~d5ErsKK9{dQ zIO>AghmB<%KCjlHM{BTd|M}8e{3ZMIUdWd}Pw&?5cNdE>UHERTe|`s(dSu`aO*@-v z@ktQHGe&X=9=XUO#OZ^gnK89)|Di?~$(1YE{)Lnn70->zl!Y-25C_r>ZRG!jsHFT=p~cKfR>U^F>^6(*k2DD*xgsba z85wCE%8v@SK8X{H)~cshZ&Lyx@gv6QGlWzfwD8@Yf+8Xl3eImhWtSuRTj#}E! zuky~I%D3v~p(ij)z-=ja`8C*fNZ!;~zeL6UTw!t9BLT)wcLdyHDz~2c_4P$ByZiS$ z%a`#o;BtHOUe{=QIz4kyHWl7Fo@T!3a)CQZvTQ%e@>|}i^iqhSU#WxTyMgtu($WnX z{Q7Se1k)R$5_+Od1*?;p7sD10`hUt-pF}cNgfWELT0vw40Mzg}y+_1j^kRQl2F4Jn zajBwzdAy^hXr>)`F(G%b-Djvm)u@MDG@gQU^;hZO{`3pv$HUc-0(V>-EOs_4Kl?cL z1DK+@PNhlQ0ubsUo~q2SG03;r_?sfBns~w}72LD_8R3z#!u+>lw=m2SizSv*nP8w{ z`Ha%0k6g5u)QVk!Oy!I(=c0?a7DPP6BqYCMV1k46g`=an4yUQh zyhWsL-eXLBq(hmZ5Y+8HB*VlHk%rxv)GPLbrR-zy2GC>`zKSpB$bv*nZWls8QRtJ~ z>jd*lHO|8c(GO?%Bo5lWVVsb#4ltSI_=K;;|DI|j6*X?V6sdFlbhn3M?CRIzw9NaJ zchSG1cH>>!O%4%VBxk!zg}Yir#mPwOdr$R_}0vccRz(-M|waxn&1o*&vJtO zN)pc=6{s_y@Y(S;K;)AAsq|CK3AvXz=)}^#QwSV`JniiZ;h`5>T4e?Yy2jU+YBRA4 z!)nf;7MGap!VM&s2y7QCsdXIv6A{~HhtVH11S`=FglH20RsRA6>ad9mwGg3x%%#Gx~I98U@t?* z_1@Z3nMp+JPGiM8w_p=?Y_H%YQ(=oc3I#hna6|4)LK70k6bx2g9jW#{lIB|lqS-(I zp_4EtMc%S{O+!J)Z3QiReSVtE#7JDZ_<4)#`1SEhW6GsOtG@|Z`w=7DObZ&}9=ys3 z-y7gt)-NYXOdSz)Gkj=#9Vp@-vcZ$+?QI@SCwgY3Zv4EUw$PK49dznV6o0{qY< zDsL;ZMug$D*s*!>gIPQ}J8X=k`cw1}AjspyW3`yUB@k@#Q#1nx?FK3mKXp;YErb(; zl;DI^cg9zCI>)b92H=TQFQ5r@jLI1u;HwQg`kHH0$q|DsHB&wy$Ku4eh3vrvz&nQ=C1t*M zzI#kG#N1J{6h%@>jk++jB)z2-13GaTn$*trp3MCU@z@9w2ily1#zR1Mp4Q!)S#A$q zk-XZch}V&Sg1gzcsI5T{s2RxfIr_kei zdL`j)6TU{w>L;C1l-ClsieW7?yPyi)XLdP{=tW?m^)Czp@ubkC_xtSD4tyFTb&m2# z?gF#7%98&mSpQ`Wo9(B4OhoUgeARDFXxBFt-SbDi!yg?{7M#;^2f3FyiwuYzpEMrQ zwi)S2vN00=JU3x%UdTFCShd(W@Vz#5`oER6>r_v{sCxJPT!CS;!?xaFdQ8}0O1V6t zZnt1q?pU&D)oLuP$=g1#2?R)mYrvqa5(cPPxSe%gk-SEU4uN~=7-WE7<%p@TaP>k;+c4 ziJ?>Wl$sS?%t+J9jt0&}^PV@sJl^llLlas0?ikWf%V$D|uV>#B&HNYiZ>9I2F3)aeSNXT$TslxTnGS2r+xTI#>VDktnd)w2Mt|jk#Qk)|Nf?uuidJDmjm?0hFxVVS*7HL{GOF`Q&o9)}C*(p==}az? zE!bV&CawG#Op}WcliKN=Y|FLU(76f>L{cUA(+%hxtLv*OF%>hF)23~MZ3h*@A_57H z7>etQ^Hxm}2hT4mNV(%D!3xEgUe3U}c(Tba@IZo(iaEapyVT6*S7-@K2iT4-y<3kW zqd$xOtoHiSl}D2(iY`kg^rP6@c&!^k<>u}9>E+>a(`6|$U+%-t5C>Bmrp%8)hvj0w zz8Xo2vqW!@Td&;ZteU#G;F+S4q9nj80KFycEJZ6Yk+hUXRf9vBD($6!@P-Ne!1;h4 z@4EdfR!1~6LIQ2Qp;ABWrACVmL8nwU=kbVIJ#~X|iOn1dmWrIK1_Qrv5hYC(cH7z1 z`J+4vg0=JuQG;ATsnPN;HE|84Wy~#7WSzVzBf>jxW%T38`W70&E#!GHS&(jG0^p`a zw;#J|oBY_^dv04)xMv)#xw-%hA?)H$xq^O{b@4XalbeLXtG$=z1;iFDS(|dijubkx z6YeVn4XPSAC0`7gZXivOjNBmm_o7#qN%}^;{ZyvwMoO8iG4{{$S7-vT5w|fYx-5#Q zT7?}dME$q;tOG>AU%8N)RZ#7nFkP4SwF_iDU8p-?#!@;ld?^QZymSFFDr-5Rb{#{- zH~|Ndhk$g}@nsTBC9$sbFs@`r0Rd)@*mU^uB8l$Z_S1FmwBgf)6bDjBiP}sv)Jh+Z zVOdv}$`?I>d~Q2OrJWsQ>(cab(o3B*$5JDyveM8K-2opf;!8znqFrO6U(^Yd8q|HM zM(vA7*<2!gOL&%|gkk_yO0wt9Dn zuA1?X7W-v29{7Cjp-7 zdCh?q>>1}-{w(Jhuk1Z%xznyxvvji09C)&FwzM=UMsyaRmJ2yrdfpo$YD2J4nZrVC zl+H8p&ma}wV^Umu{wyJo3@*~pQLK*FHY_s~{T5n%?S>e9No|E)jIsVF;bgwP%Ix< znRK<2Nm!v+yv#qG+|U+jdXYfOdMIHEu5N}MN(B`P*zEQZv2n1}3>N9FK(Qra@lY`A zr>6`0Fg|%fiWka+KoRw6z!|z)u1$Dm6b(L)x1XakfZ0oQ|)t{e!@ zd;*`<0OGfPPZx~66BlsUp)7_66RmaF5h~RkAm|Qu7AX&T=Cx^>4LYY$LZ&P*nC~vp$08<49%hYhvu-Xd9Fh3DUhfxqOI!=)C~D?vP6+X7DN= zfW!@8oBassLTK=!d|Sjz`8c9JNC@3s8+>l58awyqyqT%q=+ndGK=Snd#TC|uA9D`G z{B9PrwyH8|zZYue`?D~d69euVKk1ny=Gg)O+q+*45MjK;mxOu=Q0`-^L%#Enoc-6(Bdb6! zHp-fhcYTuvbEI&WHJW=Kd+Nki>YlXuCHYI&Z7E&Jw}L*7WZ=H4%NFjHv+}r2rb*Sv z`S^0eB98b6$T+u`K9vfLrlf=Q2^Y-RC?N9vEnTi{JG%-w@79j@i9P!@T~3V30=Tx^ z|2bR_+zfX;?QMEr|8wY6?(Ad2`#AZZgV~J-;IGL%=e#q^wI4ITlzm+8J5m=ExVB-h zf14;0S7vaqCtT2cJuHFYWWUDtA|vI`NFFqxg!CM{i1dc4_zpux`RBXxe8dxZ{sP|R z+n0Y|!~N{eK`loF0VxVfmahh7N`|ii!}_mBPIx+YYi!r+T><=hntfsE8$5W|jnxSm z3go{%&Tswt3}mF%baWeLl75`oPJaQINl4>RBpfpF>=8XB+taY)`nJ7eI*HZxQK?TQ z@qUS@Ec{58j(un^PK_le2fmh%J)qNDJw5O30d1GR`a;~?_FhwYvSxYsfal}8^qWm5 z2iXGS2JT5s*h4Fs?F=@TM3pw59?N@sN6%Kju5FR$klERU5X(u33J(?CeMGzAK3MT8 zzgyViN|t#QF&C5KO6$@xgt9NPvKOSpcS%xUU68f=BlRe$uEUutS=p8kGS)p`T1O~qV6&fWw;8G0ahOKbiuz& z>kLpH@-|_r=0dwWweGe0AV*=WJ%$Q|374+<= zUQ_W^Y3cXCpFX@ds3FXPK|e!)F49X#z^H1@ku~|(u0IIQQzHJahuY;!Y6YoUtMIfw zMFc%x{vBuV%lEY`aM~nR$i_-Z-RMn6=of{n{1fC*Vfbqwjrndi8Pu2y!K*a0`mMXK zf^?@jemeDJk)~R?pJK&SmG?z=3|8jg8grJnKNK(^3o^n-Q`L<%=6|r#(GJpz=-b(UnirR(SqJYH3c#f;3-H;)^-*@OjmqF&kJH;#7tm4ch&qljeeO`3_A_8a{u zDQvRAg%Ns_z>TLKj0a)moFehdr9!!crlEhcXJ%s zBPrK5p)uyTZ@=l84PsXV+Y>jA)x8QFvu`Y(R=Vd~eE0OY&4B;pEeNNUr*G#9SC`=4 z2*h`az-)m;dd;dH&@XNHX2x2>IBr|7>cjL%83?XA65Mc;fzvL0vs8;FMqW>^U7tzk zfQnVO7M85$Vq8t{09=hQy>+vKcZcCxD59FcnXm~-7mDd$tt*T<#FU>b20rD_-$a;E zsejYY4N&jYpaA%r`!y4uQ;G@EwU4%acEgi>xhR%SVRJ8EOZ)9dk#$!0d4%Ts{ISO` zrXk^i64~I3wbMe9z|Llw3c3H;4~Nh^+0KRND8ix_IPV_b3oJtq zz+PtsX)i=_3^|7X@*?hD@#C$(Z$_$-zO?VNNIq2A1RKzYY2^UJefyMm5P+~b|Kk0w zCzkc|&7MM)m?iXeirAugt(N=M68tSL2V{hHGej?099h6;&zIlMFWlOyR!tuxWZ2(g z^nwi1x~eeGB{4#o6NIyH`#=tiz>hp^XX$kTHpmD9a!V$m{HYKbD-Z|$DJB>ec8pdi z;>l!GnG>jSvtasr2$uEm3@VvP18Qb)zr zDvOQsYaYeyq!Lr-i!#1%HEK36`CQv6FKf)QvScN`kC-M-{F8S`+1GX}sr#5g!ghUZ zs@oI#8&f#9@-@QbiNx;bYrMcCkMh&Os$&CjxO_m}2D_5K`zN7z2|qXX#IMF3iwOr; zH>N!OUXZ>>Ms)ZvjFG(T=%Vtgu%D#%yAS4Dx&#cb3v-@9K@&;}4F0ObWR~raBn>b{ z!QVRRRi@9D(C`zdRxRMK^W{0iS1#2XUNp`Vd9)Hyd)jv*ChVGuh4WnFxPza6a}+Zp zZ50D&$}N4W1*n=qD!2jXo%Z@uC|RJ0LiD{ZTPf*ckSTyIUwTdostD_rE8k(gRs9sNE&&quMG&Yj zmn=B{F>HrmtY#n>ba6AarY*82^3vRVq*PQ>%vCKMXdn%iYtDwhJ0<*uPLMQbu?Lhu49c#CD}`wI!!M6M3!||mA2H~6L&7c+df-DF zpSN9yMU)D&ugXQ;fpGdA<7?<-_u?E-*FKs^ypu%mFp9Ju=wCTb; zIH=$Xl)r;9?&K4~gAE8g*)_l#Xw7>!6OloPv&P88Ab)C%X|t4tA}rxJr?-4;Ds50Z z4Q&~CRj+rK76FRi$!9|K^86K-b|r{j*gb$M$eidG_rmm{WSlG(_S8Wv5rhw4i6WAM z#t}uV%PpjyfVXod&+;GsBVa|<%OWDj>NpvD1ynC!S2BJSE;l|XCX2q%V^R1(EC$0?PYOvdvv&jrR8ZV8XmQHzuJ54=BT3y?>u__s#0W6wk~F4 zK}tYP0~=ssom;(5rt?b5&&Tw*XPX?C=qBzg5o{46&(ufjErWEo56~&rikbkPsPlPw zDm5bX4R>=(w-ZxjY0C?ZZU<}!Oa$k&L^Z6KwYmW@Jm;ccl ze3cd~7$|V;%8$wBTU^Zgp7-1cUr-N56B|}bDF`f*^p_Q|fbaf|${BmC5eIz9AV?Rn zP9qcvYt{$2vzkpQXtwRJ#>q>)eS(V;gu$~^glgYH9XScY8@WCsdE7aA_ zv&nu|NUdVo?cfktBvA%@GdRwz7WngGtD=&q9eBfuvRvk}!==<2lGSka&Y()UN?U}p zpD6HAeIj>x0iC_X@mEaQlW}-z|P1<)A6q$KEDTk$$j{1?FhewI%W|) zygqdY#~LiV7=nVU)x{YSm!U-9u_v*;*-a~lzZ)4h4u+Z`ROeVOf^DXgKq_0H<>hcQ zme|jPLyt@MJ9wrqwYg*$JF2f?An#EGVKt2sV3a$8xsGQ2P9%n~a_<{G1Rk&ewRJ}2 z9&pNWjZMC4r6hP&GO@y2VBnHC5It`}ft%7$JP_F!duMoV^*KWsGUu~E6Z3fe5QK$= zUrDW?yE>74Sx-uv{3oog9UTJGQ4}xR^^8;i>6p}Hy4kf7)iX2Xd@s-0Tae5*1(u5q zKxO+CAkuorwpp!3&*YHMY)0#HjAC(W>FpU{AmRHHPNY-rfwq|nG#)KO3 zrc54SNP5c8!+7URUQb^AxhcxC5F$Z(KzDZ=lB*?%@H00k*=BsU?`s@QI*pNHR$N!_ z7d6r~#4M|}az0lg^+7_-5j`W%D2A_u0PG}od+QYPQ!BD0vs3<6@LFp%fU>i~CbhWaaXi~^qS{Tr6a{Z$|1Wd*mN_wNuRwALrXF=$n;Wyo(pj>)^= z=xb2Y6CCXgrse^C{g|G4YS$Fg$AGZ$yI=&L%tx2B00he!IKaO3fbz)__yVY$|GmG) zjxNXCMbfthefB5fV>HP-i!|G8_)z28BWaCi_;2s!6xsvfM;A%dI5krKG4wyPh6xS- zae<>Atnc5tsO=&oY?JYmb$gUO=iE}ff9u}RJh97SkJascbUtFhKZ6c`ziAOD|9R7L zOTGVLlj24EJ_){k!{6NWndKkdM{cC7l!-Lx-b4Q@55hH^PkK$5dI&+gj9Qvo`+?i| z8eSaU;&08MzZt4x4(9;Se?J5eg5Uf>^5GY{K?4C{2Ej{Kg#sf={*zCL_OFj}V!6R_ zfvo{TJ&gniDGzaV*PtI;2=|ugBGhd>N(4Bjt!6KVMxDGxX4VY)47wuWC{H~z&25!M zt)&yZnT0Du&cmu+s5KSJ(V;3CRwWrW%2Y2eEYI$2KMx{@Wa35-Zi}aFMFk{a$cwan z7o%jkR~7cJu86s)CW<+T>sWl;)v=E=0ED@E&KNNr90UWGPi1}Rfqg20ec#uM6JQbm>bG(OS_4I3kR*MF?pHG5A#Yd0HZUn9WVk|lA_BTlzE z-NMP~vr1~%_r8$Ef?lcP@-CRPm&y2O4+GgzOAfr^aSkxKsshDH3%RuLZXUs8my@N9lGNyp_iZ|U{X zx8E@+XP>-qiMrhCaW1E)9S-wvcH0()+p;+y8#o)t#mLWhnF@*;me_bysCGcDf6-n; zQSf>3>u}Q2Q7ozkJAzhEv6+LaBa%u$qOc#qHC75_(}vU+z|jup7kwh01)xII1Qpum zErZ&|Dtmt)CUfAIjfOp544<&iadXL7@ zd#)O=bKAAPPKEOQYx6N$C$=?uSnEnjyjV0sh6ct;=L~ehKeyc}^={C{`(fe}9 zU{UUsq}$NYZ+jJ7qC+2RyW|D&=)jK$F?_Hk46o`8QPCO0pZ{~QC)+7V{Wq+B zFJbFiNCz_GC)Kr|ya00z;}Q!acvii!9;%%meSTmNn~!QQxHs`-b2mg`iR>qSLMm!h z$hu-Fyi$_`E#`5uO(=WtZEosL-L0Ub(_gYBI5)yS;i12aS5>HPiik>OTX7u6pK@1E zC7PdIhkgIPD29s0y#3Ce?=l4IR&M`4%~jV3?5N4NKRN1S^b-))H<~p)jHnpg`P%zs zCH&^&Bx}gyK#2J}!oUBp&;;Q@*ndD?-|3Tk2EfGs>%pSN`d>-$AJ2##K28>i!&YtO zJmBKV7*vf#GU~yDdkYKd##G2u;%iTT05@3qZ57zfmvXw4+8HOFW0cahGD(p z4Z&rEu_X-lqeg*}51w5h;S6!wSU%II9iEU0ZHO@p>cF;hHwv$MXO}zsBXTL|EKU>w z!z5pd$2+K06#O1h*z{KZ;-%g+yS5qM?Mp|Pv^-;90akE=R7#}8RSHCm#KF=io*C0n z>X?J>0f!*-@m&^6K&lhM?Mpxyk~myucl-dQWr_sk%$Pz?q!Hc;+#{11s8wo!s8ptz zjsr6^9S}d~*YgGH%x;W1Kp&19+?GE_B5_Lp(y_Az{)i=9es$43Gk=B|#ToIDXCGGR zCp3NYLQ*Kf>(F@L=l2NGA@qNtxlli7F5JqY-M`UXsE;@QLUT3!gXWt3JI(b^m}_PU z_&1u%;V+s?%yTr6^^>~f=<%3SMe{ajL`%*K3|%R9AU?W(FFYaK!4^a}nh_<)A!+N_P%+PJgnV2a#kITFrf=HQ~RAxBHI-{gdCdwk> zz05?8*m4c5jk71!VZiQ?sLx)_NQ)}cC`faqlFq87$5rZBlM#NRvq;>u!9GuXG-M zh~{;&f%rZYlwzv<;TNvs@S;CjEQy#iv!Jm>=q{S{&jq`tL-e+~Ais2f(N3qr#$~^P zkh$=!FS0{5S!Gd8@48;#v@X^OXqa*W^xa+1`^GKWEMzfu&MaAsi6^OVMlteABR3bR$aO!glv*MEVzND+c= z1S`AN!l<>S4()EZur`qM`2PpYrT2efu9|;?x&DRa0{$<|)kT8- za&7mB!k(w81bzC+YOujjN{Y0Zu~SS~9(zM}0lH>SG8{7MW}dwV-@i($&FaxTH=_HS zwhwlXT(hUFMamP5+hX=vGSH6z89XpZIe(cIKb7kw;>#^kCy3?+y3Yz2-})hE2AbFl z*Z_~YhR)+5E61eyu<=lEZ-LEdXBs$%xVBT=vx~QV8hFaE6)9KLLmSUo{m66XwiR>a zXYELfjSE+s$ssorvy0sjVbp;83~ZYG)dP^%!^Gs$8uH@dMNRxW*ec#v6S4!k6-Q4uER>29e#W5LcygG*Wl z4$#k1@(>%~>n>426r%}X5S2vpc-JYnpz}1LZ1eyL`X#AS1KBXF2f|9AKiL^&f)C@W z(R+fw3Y0Arz1sEqECZ5j2hxRduSMVgT>pt`7E-bYU$^$jgRXXU8_58 zTCaa5FuJq`+{zwp(Kjo0{#<@^=vU88+B&S8lF#pJ*FONBQCF{Jz>c14wfn@i?iTc0 zB)#1Fq;1fFTfNEh(7DB_11~{A*MBU9>nR~Q?LShmT_{07g#N;kNs?a*2uXnd&1tf9 zafbr|g}4I+0fG2fFN2(G=>09hX|jlLCD~S=y74qWY+CE5jH3>?O+wTx!u@CHzmP86 zu(|jjN|&=fX)pQ@5*O_G#?(=`T#IN+T#sKvNgWQ@neit0c+IkvZR=5MP+_=KBq|FW zlQP9|Pg5CgGJ#Aw)cI3$v%@DR*SCw?`1AGfX@bf9jdIk6hsZ3n-V5wFtKEA;uC|Tk zkGyVaxl@oO7&mV>w?oatUVHL}6Y@nKS00FNB#^#tFD!S&9xo2$3r{mMp?jDm=Az}_ zTgjnsrEnNd1LgMCG)m-=1$O$s>Lm}yLY2pw9kZwmlK~}vHMYeO*r{TOvfr@fU|P{; zzn6PxFn1mVaY8{znJj4Ms^xcjM+wIBn}hlf*RG_I%>^*9S4H zqE}ufiGYCmnK0ZP}()NkP0 zK__ZGmubB76HB5!RwmWTaX;DaP*T$nr0NYm9|FQ)lW3wgf+`g>F#AGYNujBckbP-? z9J9d!tJGge?8%82mJz@E)81Fsx718PhjmbdckVR_p5X9xQDVnzlE6&V>wvxoZ!_<1 zbG76nh~iiY)f-uSd`3=i-<*$%>*y=z6zqT~SiN7iUaL;`fxPAy{%C8 zcKuU>7yoRx1RX;9N%UQ8G;8GTBo^^}5a1cJ+lV5)4(x1#csE@vBepF(Mg6vc;!fN} zT&4BvYCV%~w-oDU30*V=-O;Dm=l>(^9)m0kwnb5wZQHip#V*^nZFkiw+cvsv+qT`+ zW!u)Rea_wIo_){T@BMfYYt5K5Gv?13kt1`AZxr7PJ}9P>5ETdThpqL7(gOKSu-#RG(9r~qMEEJ0=oFSQvSX=Bs>;|< zA(`s@8FVJts(tiP_o(D@{R1z`wX8Y4)Y)H+^0XJ9%I(8yFzqdTFIKb+>+VCxgzQ9K z53gwJErAy8KMj^0=y&O;mer99yOpJzv;mzFEeEI=f)I^@GR3Wo4DAMqkWttZA}G7< zCpH}dK_&`U_=2X0>cf@=bCIe-q}}V^1~O)Mv?yrV4bHS8{SvgD_+h5; z(`ApnGx_$V0kohqtcV88_*S(*l8Z+0?o<<_?UbcE{scfmr$E5Uq=A6OGAS zM*+Z?ngmR^UJb&!804%=x2x5t1{rC$0Fj}A%LN?lm~S?3kqpg7vQ35h9=F%lLN*O8 z9;GjwBFvVSM!aXhY2a0auf5y9RO?z48+-)ps6z5X*{CauygR5kdHC<6UQgF^{6&C= zf>wd#pzM_lvz(b?ad*;@+z~uuK+Qbvxf(!N#sjxzqHj~?8p*R+UAYvbpx4LYr@1wt^zdz%gjPSX^FJ}1V4Q# z`Z+9=jjdoJ&1w1r#U6bq%lpLRS?ytE^0FehfAVSvOiZhg_-(q}hE2&&?168jXJy9;0k>1T>D47YbEXX~mG8 zMi{}aAhm&L)^Y3g>S{<6g{)_oRsw*8QPDGon4>VivEGKtEH%y@z@Q7T&6atvk6;k=Y zZ?o&{9qUvCT^f!%XvU$ul4ItQV|OVj zlud(t$oo|R6-ZAR3mjfr@=r1udolTpU(4@ku1CVS0_3H!U$8j^o}++%Hgl?xeJUQJ zj&;GQcBmdb@)HT&sF$S~NJ2)+7DC^Sm%a1-d&VMzr1WVOEo(q*TQ7Y%P#kxhQwZ%z z2HeUFin)YxbGurnxH*G~vT?*8`bEDf=vfX%HdM;m9FBs;mVD!zO>b@T2ht_gq5^5y zTcaiIa6yd(Wl*yQxzIG5IM#>#cfMSa8@iy@^@3~}ze^4c*CSbLFGN=#No>54oBui9 zeI&Y?>pOk-egDfK%hIzH7)9m;Sw{VjIUSKfr_(?EV#z*e)tNuO@?U zcO)*GW zrFf%d;V_QHav-U@(@V~q+5F4ad0_nUM2qeYDm!ZH`;s;sd$cu`A?mv&60^HzensGx z3C~t`W*p`TkH~`e7hT+%h#9+LHZ_GN*+miPnc0RTlT)ge(Zgf`OIC*V(lLpo zYrou_Kro5;-4T)7mg7NEO0q^n%v#)^1v1%>DpaOX6>25os_{ua1nW3ukD>=s?kP=K z0QwOSd`V;q+xCCYQbI!7Z^n%vsz2@Dhs(-aPRpwcV$f^c75|{{~MrO5@K-9D#Po1Zsh1%Fqx)9kHmNvS2YE+Ux6sR728>)t}ZX z-sVD@xZd85`OtG3QUb|lY+Ih~3Yq@$1bDW@4~|7NP#OsQj$qL2OX3&cqKF00KGR?I zVv#JQqQZQQe?NOd;o&Axp>F?t$kL%5j)8q_B4W)E5@FFrwGivBW%sO@;7cu^HPJK! zpJ5eKW1~&?4V|2NWk{NmjF%>?l%&s9N2`?aFEz1L?u3>vjv}?M_nc)ir%_5Ush4p)<%!dI z%Muj4R)Zw1&aAD`!KD9Pt*r^dD%~8k)M3n4v`}fC5CY)}Zk|$)4tcO0KsQc~{w%oz`S68E7JZ@Jek1N6|APToa&m75%U{?4B7brLlETHP_qZe}>4yPmHvkRq@^m_h zf^XOIEY~8U4YzvzWT>U|TPzc4;g=tpiH9YJepixMa7t~aU2hVfHoO5;F*EY)ABn0g z7`7;0m$~@#=9L8nnt9UX!u*5ip+z=9OXKT z?I%+fFt*|Z}d{pPZ9aCF&nAg z=<+zgmR2)#dK1t956$rmX!l>Vo)f(q*{D8dl|T{4VPu}3KUp|R#sFSv!Y06BbMGfCY*i;_``JX-rdPYjV(R%xloe}w68KEAk19b(Hh4H+S+A>x z7nMw~MAY|^RV3oimmfDW}r$Lb_upuHxEJ-p{sPK=XPukD{DlSx~*D+QzC7cHloA?v0K)6iTB zx#BX$%F5oeprQ}0LbjN-=xupmk_!76gKn>dctWaOSE)4YRkvQOR%QF~*M8=~l*PZ(Ui^Pzs1ggq?S}>ZN(PCshC07G zTd-I+;VKmg%OZE$V|3i5Ns6qcQX~?adJ4^r>skK3`a9AW@S5WFVu?G9iL$lDOL;ZEgq+bvpy+{4^fFEVKbwv!Ewyd)_ zRrmrCJH5X|UgQ06MW#hH%L#sXllNJ$;L`AFL;&Dd@@b@;)72oCQNa!s(;AZ3gf|}>$)_Xa2-j5w^kC& z<_4rfbj0L3midJf`yII7FPD%(>^W7|jFH%2WQQxdDSkPJmYsEQ>Q*GV{h{*p^1W&U z>_PP~W60kRQl2ug+HGLsaQS3~v4T!wjSg`5aNsvncHFd7&104RRP7PoeTnh6@^tdG zRE}wU7W#RN*=u;w0w^srB(LMu3b~PaW7smEyA!<|LFhP*nI`W5skllijGPRq7YEbA zxB1jeo^L`BUJ#?!T^8bd7di!8V>miGBpTlK;GPq!on!N_+BD7rKPBcNxQ){Fei~q0 zJ*pxDeHil^DdS`pjFznQ7cZ<^vAl6zCP=&EK^nO%glfEND!+df9PKw)AgPaU(1S!? zNq4=CIEE&y_S_^28dpX?Z$(5@7FqM&>!j{n zKvqOty>6_yx{usdzFBb4il^){qzOF{7}8Y2X`(0ct~0a-$Mi9( zWt``y)lLl9U~a@09nT5yP#20)zXXYi{lLDPA zR4A3*AAJI4jLrGe=`o}A5nkO{H`n2^Z`OgPS2Bzbk-uz2w&-u`As5!tQ4TmQn)V5) z$s)K)g#@2$ai7h}905Z%?8|Fmuto{5<@;`bIgcs7sqb-P5+>6LlvMhozB>gUcj0jC zPh-RK$OU8OD&H83v=1OE$iMtvh#|i_sJvKxrMSTGPe|ojX(h_$&@(GSBztpDZe}+N z{e`?lrvDskze4KGYx7FQ{5{}cpJ2_mW&iYjxv2)f8@!QK#owmq)k18LR~1Xt$vFap5#%kVAz-nr9A zn+M;lHveud8m`$R&(BaH|5Z6pk*}f9xfW6;H<6H76DL*DD6TknJ2oFkdQ_S3G|vFe zGrXC|aJy$7HEI${8DRH0NJ2J5f`^xR~yG^G8|WE!lCcI z%*>Q>yBiiXqqMD3>%m1wfDjov@aY{ou*+TLAxE3D5OLI~_e+izWDYqjM$iT9Hz^Xn z|M3-gm@j)AUft4{xea?j7V>@+kvSMQ=_t0)G?WuR=zbKCDHwo?RB#Pc0c532#*ub6 zmbCuW(aB9|Yr;XPD2lS$jJNE^ez+WljpW0=8SE@>8g=Y3Pa+#WE(zAUdvH*-0a_X& zfp(Hou2J^(D#PzK$^sGxro)PwNsD`~8?VZ|g=?|s^3iT+%j3t=-Dn(Sw&*-dFj-Oy z9H9lM46#|ZfMUS^!`QzWIw8m_6A^=KNQXYZ%6gdH;=p9eb1`KNtgs&W=F*#eQ_Isjh!o5O2@Q=1;z|HlavEC{&_MEvJvS5P>kEKA zHh<3%4ALRp$01(%q91+W-a;*{R=3~u>KQ2k*tQ_JA!}7%Xo}n zzqk4F5ir&DdYSQ*sx$NLgAx8c*zm>ncpJK`_e}M?D}UUExIRSx+yTGX3I6of-z3yq zCiunH*R#^&`J?qq5?r3F4}IrT_7ZS%IDEa03%8>VjDy)7+7cO>3uVy;_xaXo$(O?% zW)8QD9q2Jkl*9b|IfFHb+mDOn&`HckFdD`gG~!HjgD1fUi8A9q=uEV=!;J(>sh62o zhy9FCKobf_K%l1h-7h-qy;wGR05}_0hl+qU95ZI5fcnN_oYR5r0GC(emJs(}qonA_ z6_!&NARsc$|GlHmkh-xCg8y&Ng0;TSg1_s9XY_^g7&nM)o4ubLMl*NVL~Cue1}(jN z4R>ZyjPGdT^%9&;jlP~UiOJKGN)ai2H1O_|H2zU!vh~YJFV4Eo`1?GV@=gYWS`+Qm zpCU@|9V3@c9m-~6U((8 z0p#R0-a%3xWMPO=uxy!4*1jb!EMUJ=+}-w_oQ!q-Wf6r>-R0@(A$pQV>H)ivj_Y(u zNG;kgO75g1XY?7HU}t@zq|9X}H5*{}KjKEG_P6iDtuN5*WAluQkZ3RjMDRJJ6uq*) zv>OJTn+masSmi#%XTt9oX=53!x{F+6yGH$-&H4^J!;Fd*gi&=SDy*1)VxF-tv{F9F zJ{KB;v2WH3z*cKW8LV@!;Dj5jf6LH6@J7$@&0}k`z6+J}u{p2N`$XSB-D{Kg1;MooLYOja!q5fP=n{>p6mJ-V+42Nwvm+r>@`N!$ zGK8O?R#N=Xo?D;DYO^2FZ-e&TXK8_bN>t8A-4_2bBlM zKj@lWrfb=}sf?wQ%~-vK_1ksFLkqK`<^UfhrxE31Gf5IyL%Z$9w|hHq8)*Vz{6ui$ z+6Mct`IcZH=Cjycv0|Ag;^IOwB_#hw;MrYiV7@+W{9g;z7b%vSr9rwSKKgt%qRIFB zuk}RdsBnx9O(v@UrFuD7sM;9=O$)gMfWD??M;_NI3KW zp9`wykmSLaZ@oYwCGcj8C1YN78C*hI8JO3UH;1TutQe>SydICSpREKVSBA{W9^J8J z>oNaKPy$XNVh&oG+F+pMUfl?UX)Q`*>NB%*3SrQ)L!RYkGN^80e8GPEsL5C=`aX=dT2%enjV&`|XJ(QjM10~vnf7IrKK0=FD z)23zt>dPB2OMQ8WuhbiA%T+0=`4f%SKYglKO{yLR5w=)?Rm6{K%<88~X?wCJ<5o5y zH9C?umu+uJnzV%QaFBf=IXkmv;}2q@&?^me7jM5qC|(eIi?;3;%K{)pK-_||Duq@_ z$v!!%sIOvZrhq;D;XA0KVWO~sRMu4l(r(E<_kAh<_ z+i(`iUz?s9!`>_fN#)uzGa&ecF%BF=I&yyAwd-9c$lF=J1V;@B+sccciTeinyPo46J6yfWwO17mHE@Yse&7vJ1Q01X;!#lDr5t?ba zQChzL1hNdTHpSKkKan7ozuGYSX~hhN$&alKhp5^IDhYoY0H9v}&+3*e})f+{VmZ6$M3l4U7>3MaT{Byy#d$sD2>n#4@0gwo;= z<+W*q+G0+~9{*8u&<)wM;qaH970=W^TI-qH)S)f#35}%eldcv^B6qg;!R;9EGurm3 z8=behaFjUn?DS<3jNz5AKgt@;;NDl%OdoTfk>yR%@9ZWg)@`+l=-8t;(Yrp$I-=44o{r+;JI{J z<(jaW9_Wojd|77Rm=gT@$@jaCdm_4{c(C7(x!$!##5t*uMAR48d2dr-@od$=*dO}> zc#vE$3T}N-b=^AZ$0B|Gc>i}p!8xApflV`zT07SlXW;-!`=2_cxcH=i59`MMQ%ktV ziauulBpP6MaJlo(8*cSjpRPS)`xOry=`nHgV&XLMeMZ$wm10KUul$Pit))OH?>D3a zS)m48GlHU5j=%BLC*clos#l#qKbZiwq%n%l16~v1;7EgS`}SF166V{;>a{q-oqM#> z8c(t|*1|92V08#1o1b^zj;iq)WKYS_NgY|mliNj!sg^7s0;d9BSn{BMR6Q<^X-~Kg zgMPg&#ZzlCGw`+`J{YjT8MZQ!7D3r+={X9t>-J>~bx25uRJ+EMBc%h5&qk)v0}b^U zpS|ipDd`*^-pT4hl#B)*ug+X|re}Xs6z_MAx(_*TfICS83F8RBh=B7iM_g4Gul*ZU zBpvurQXsp6BCw&ueSuf(lF5 z>RVS|o;tUpt`oAi<0`g@_*TUlsq$FJp0NX#&jo92WzTYr^z{xDChc;EPx*-E63Pvd zkBLk3>Pm}~?w}K3yaw0os4IY)2mwP7%}LNIGQQq$ex~X0HOKR3UL)r?gOu219?!a( zP{X)&K7zaaz@(9ju)j@wX2bK7)pu2z$F%I^;pQIfjD>X~WZ~f-(8bnKw-uWle7nie z%eM;LyG(z&k2X^aR#igf$X8a053MV#pH}VR#y@^84Ps#d-Yw-Fz(s83an?%9i;tV^ z)elc3Dy-SuRe5c~Vy5l!V!{fhfV7&Td3R2s#9Xz-x730~MYy0IviRqpF(jX|44#5d z>mDZaQyh8lYV>=`JY+Di&geoU4Q$iJ*Nq*dZHG}sMk{^1X=os zeL@RVgX7@?RO-R4R;JiQnEQwlrS*-cex@lQ!Q?ZP@HvmIiR9bt?^Er-ztCA2awy#p zZs(Pu!ykP2y|-G$*N3gtcW~VvTKYWM+g-kPlzShShJ9!_9IOg+5`4#J{cglw;(u;Q z&G;de#!={)z{jN7k8O%_pOnyTo$3 zWD`YxA!~u{h;52n)>-bKw+yQq2LJW&ALBkqnZ?|>$9Kh+)0P>|8HZW_@j7V9Pg)3)R;emh{V^RgLK}7!Tq8WePX`SP7L*L(0Un`bwBzq&ZlR6=LX*v8y zan|LeoOp)@P+s@H?ZV2X4F6nWjlm$ zL)KyAOsm3%eyRx5R2IR4U%3o0=`*5M%fOQKMVd!qpmSqLq5D}59+IK*M6}`toX412}?l&DcZ94sJv0k%v8W_`aNn8zA-gBJGe2auGRr zjS)(_W&HA<)Ejef5J0|^@XcuAhmixA%@7(L;x_lJlBGhaO9N0uz}ilTtsvTFmTsr# z-Qfsvy5ujg;#_1lC=<{_{Hk1{)?Ru-qy#ImZdm1_qF1}sqH}R;(dsKX;%A7-cvdWN zDQJV{-em`(^5g_dmT0Z*8h*CUO`om8@*v2%!$=0N}6BYlcFs_C%=0Nmn@q=jaPnD-K{2_o6ub z%dL9OS3fk~e7?6?7c-+Q+M?8CcjPea;&0Kt-SrHOg~ zsEc7`2Tsp_>pu?~^?IDYqn&=wyic_rI(8QA0nb+C*s^znt{ zp+RyIc7HCk>A7X<6E>}&21AsD^FmowPaIMKLI)d02?LmqrPCOGL4qUI#(Go%{i^Q% zt3WWodl07*bMBJo7J}RKI{;8eOE1M#E^}txY|6ZO3yR)51~0-I36?Ud;W8nC9{H?G zhgrZDK%`b_M}BVA<biuv)gK3OlS~BWQu>qPk zAQMF&!~sCCuuD1eOXKSf!qp|C&PVcYa!0BhI?`YI8sxbxfl9(auW!MA6%uo%H=RW~ z^MZ9Rj6IQYP_tn(2BB!7TOAGB5HxHqwH{0>Ci*vgT&0-55?v%2Shz_pk>?n;D|#R! z1Y0Ue21Nl?01*n4-=3+w!Jo_dw3A!@WuCtDgLy#fTZ)7mDMms$R1o)5DX2?=p991# z2N5g|f3YO-c#Di9b~2b3;nkliJ9I?!2tiZU28Hp1_c>7ub?13wISEwVml3S57shTdvbsLm*g^KyI zobmt=(V5#lIS^=RTy8Ngt;N`^6X{^U6AeP8(0Dv#X*tm=Ham=|?%k4CV{k6(5>;GH zTBorh4GB_?`;t#vw=AZEVx%`+B0f)kIvkkny%vvc+hk3~9Jbs9TAG=6hcz_F((o_$ zsrkEcaK%aImk|#G9mjK_c&b%Unbid7yg`7tWd!+^n}oW~pi{dB50GNYuVk9etXlEX zqgn7e`!Y>Z@BsYHl<19g5bqWo#PT)e11<8c?WBotd>UF-Ij$^vFo0lFUxn->tJrvU zrA$XZn5lWLmdN>H(W-+zC=6|C*K<_(2v*Cl-xNBa3ofEBhGi_|4=p;3>w#Kj27Z9_ zj$TUbJd4jtw{4l|vsP`=#ePb#ci6L9v>_Z?I$NiO+SCuQrX^-s&djVm#o}-so7!g`S?R4`7yf=fcseVZtWMzhgCWBUPH#y={(b<)aTsI(w zMrADVhNtKH)D}3aXt*}2pZZLR6h(j=akHF4FB=U2 z^lb9M1)xd(_R5%NK5y-x$56WoGcqq;N;``2!JLUZVp^^qVh1K> z_6Bb#EHr|*ibggEj5BHxRyqa6i$oVfDi<=@hF__NGjFe2Rb2NO?Fx=VN{dUX9<&&( zzg%*2+dz;H6U|NTr3F7l#Pk8Z6$3q2BQ4JY>UL>@SrH>^O9{)E2NehVZJ}E;=CjdG zkWvbm^5-39UAK8kMf7~4cb+SX(!twnv@q$(<3mCRljW!PxVn^Q4d*n+d}*fr6+GiJF%dhWfZxapdCE&}GTVnjSv${eF-x z4ZrETrH#|}uWmo0EatgdhnO@h#6+M?u#yf)w|^j2JZ z{wh_DAoT}MMw_d|Hr;?1ACO>)mwds)&}i}SIL?qIW~(cRIk>Na1(}OP&s%xs>M&5T zLH$@_xcsgToHGU(9LMAvrCA=lX-Zh#d5vw=57#P+dU`QwvC>0qE{DSSZVX}@;26y) z_1F_vQ7QUsM{Dq*F3{I}h1ok!eC?x`UIa6lIRWz_hGDB^!c_ORzEup z7bKXXcUq^5UTmy6V`fY_1>Q$l2zQ>Xmi>K7_D5Z}@6{2Yqp^(9$VRoSe5KwQhF%X~ zqaXKE_?Lfe@Tj>6n1)_RC{XbfQf#c*?b=P4p{i(%TGV60Y5Z;u7uRBbB5yG&HQR#y zn7qR%(Ny^nAn;2DoQYs}2+eaqG+{Sb1R{qP$B5}W4iF>>Q>!C4%AR9URkPqWY9)FK zD2|h-`UD3+rHX!;gZ+#E>0;A|hLedq6Vz>*FhjAo4Y)VXekMlg^X9LL4hx2rl*G6tI!98`D;!v4UoH_S6 zq0H+;3nr_zH>k1KYM(BH*HRd@OApxK9Q?tp*N+F#A+|ub0ZZh=2;|wtkBR4AS;CDw zT^MZ+|Jbf1%z6lH@O4;5oc>h&z6n{HseQ#(6By7k?Z~yizJvGe?wjF!ehIPn`o5uj zw?9OEPwUk;mFayt^Xb|A-$2sH@!E`MeDDK*Ug$^=NKK$;LB@wq%WE-fZS7L z6f>{0uB1?eYPajd6hY$vzXm&~_r@P!%pYj1&*-{=3wMSt;m zvLn0TVE$9eXmfW~-@V`t&^wcs#rjslU6+6IDPjJIn|l1+Tc+3Y6Z`KkzV4QjYqMOQ zwuWvQ^-l&8Jr{75-i0H5voROY8s$y=6}!?KS^2H|`~SSm2;`rf2qfT(i zN|pc=!LKug&;R4sNDleQO8x!w1!PRiFT7at2*@6loP3^J@_eNy)i~qK04RoHf&cOD ziHLyDaS38i*@+0Jnv>~~PzLkRN!j>mXGw{tA220h+*TtRl7R^+!x~pOq1n4uDE5cC z`n%x%*P3AA*Xj5QoA8VNzeZp7jf_U+HI&TPl>($J3bJbi6C+a^l6KO+g_bDnLn9GGEW@;1UsqRHqA7 zdwq%Yz#TvsZ!e%h{}fJ_|ABTcSba0*eWuphX$t~oJkPn$BRhV9Oj!yRV@FDxv$PKHFQor34>L~9H? zRrZ)m3MwT}oT~#*o%ynX4WJ(_Beb%AB_n%X3d?jLs@+1p>B|xn|J; zcGBhdEQ3LCz`d@uNK_d#J^X@Y45O*y9H$RzTH#o2(}f_8$_zOC;JcCo@gFL@FZV}` zS%{f5{-y|VtxdE1S@lQDzxu%iMkOLD7ugel!mQZJ^T9`WRQjR^AD{Hi9d>R zSH;NOY1NkI#;f1bsn$QFQ#)s9*08z`5F@7vOBFbjqZc5qrJQcL5N5=)w)S+j7ltWf zSbw(=Ta3P_PzTVY_eSN9Dg~V~MWSc-%wKarU+`d;dtiTsgYcU(0HcfH^>%A3{@4pG z!H7kIJ|h!9hq|=!qiAJPOcZqHvbW7-ojJya7U!tVcc+VVW;bOB_C-YQEK#mk?F=|$ z4)z%9@Y;QTw)rh{C$7J+CGJx)?@7TVIP%I1>v*eT$(6H_e*49%-vnyn!7lIv24?aU z%ayK{OnF4|0|WF8K<*ns)w)vZA^it}nw|)*wKteB)sRQ zZQL(zF*MPRcoka9J$`Is{_ue4<-0&pNK9GGoAIKURtmSt_OG*s9*rmOfY*1-w_m=p zxjII7$ku8Z)16q&xP@)}ZmA|?%-T9b zq!FuU0cB;$*ur@t5s^GUN0uqoG1hD)BFly)>P#Q$VfX2TUWb7n4eVYL%JjoqwXqvGZn?x%h4y32_vEKyAW!V>-fxu(O0n}8>K1Ue+Rw(}lL8Z&uhW-x&)ugUL z#j29VP(2wpIb!+$7^r0Z|1eNV{WMtEDJLiXkAZ56?N9R>w6Q0VePp+K3fg{^;H2TK z!F-uYGy7i#YJEPSEJ`Y5MDyjpA*gh7-w0~;V#>rDKF!mmQHy|HDB2j$rzZ z4sPWY>y$$yOxGlxRRE>HrqWDzauOQUi#B=tsuv7_d2c4tQ=SQHK=9?e>O(+vw!bt6 zAs~g9pYNU5dy7#DAi;}&IV%S-Q2=Uy#u`s%1x>iD>t^Jl*EJClm!5N$9`s_4ZOT}c z#l<65+kt;13kUKW6FQuJkkMa$1rvIKa3VMd1({3?u@N%|`2h$RP8EPm^3Y%yK=63n z@Ic8kXCiO-A>$eW7vHub(_%8U@A1V5*SRaa3w z)Hn^yD{fj3Fa&sbl3;&r1|E5FbUh`jZI&u`g@+0KCQzqRybi*g9%$w4}P) zVT8eh;^f~aAKpM1e(ZUE?hLiIW;E%1+-vFi>K@BS1aS)lbhs(k1bWg19;*`dvf{B} z4Lh7~1GIdE!^i8CWxWsMTqSP)+5+|)*n0Dr1R=23w}4b3z1jpIZyjnw1ApM1?-(FL zdULG~^bsID{@bDVjO}ea2w#s{&i^D(;XD$LGUc|z2W2$A2~>SA>D0!odc&;oo;P*< z<{%#c{=$8D32p^r`@Oca)-KeF{M|IcZz=Qu3?;mbS2>V7ryGMWzD2v^BkP}3A9o6$ zo>bqDtmusb9#u}WDt`nJ4{}3qXGC6(^56eCD;L%QAQ=C@XG&LGh#cc+2@wXmYq#&5 z(ztn)sPTM+T#|lCHwBtI{5cDM8Ezd0c^*6IGWCf-mR6br@_7u|8;3+ zXdtYa0}2F03Ja9VtOG)kn%hkTmnsVd3it2!*{f2t?f*z2jck2Ti;YR+VuM0VL(eIa zFV4a=$(93gBZ`aHHbZt!)t_C03k&#|GfT?Yky{e}hDv++II8F64V|Th=~FgqOK|9$ zQbl3|HdUiys0t6*zD6o0d?PKbVJd3~SV?tUtOV@2<~LS3ThgI|G~jd$q**$+EN)?` zoE#ogrImv`94-)L=JdJ<&q51PlH1>M*|UiA!UxdLA3_D-!dgM7(zd!nNF8v1YdB^K zjMj%FkZ(3}irWvG9QNsm>&(#ZC(z~c1qR>x~7 zFaa_Tk)t{nu2IZ%h#WwNX>`So9QD&ooOR-U-4k{4u6j37foTQplsJNYk-ctEQ7*!z zyLyQnpuGM-QNE5w+01+Ukvpu@APQBMkWz%PJZ_1VfRjo!O%9w+^a+l!xF4y+04n9v z7k%?k_^8qWsZagKV$4yr>Ulg&R?*TKWf5Rt)jA|(R(!qX9_ob;vXD{rCE!1^&JRBZ z1W^J}dAmd;F0qV!Uz0v_35KxSx^UV2WyjuLwa4+n{%5DFrhRH!Xn#l}gNE{=!K-Wj zP+oGn$!Vw|fUs*QH(@W9+Nah3GK){?S5X*Cfvf)vOg3VlS7v#CK+*U)(sb)D6cRx4 z2I$~B{=0B$M9d*$V0+tYEfqdNLUw0@6?v|~74ju4x!sZ6j2s2@A9N$pehpbr6UyK! zk+r_4xusc|>A8mUn)xkk-lu`zgcEV+Iq8?;3vBWHdniK<@tzgs9V#eSZ&%3k3s?hy zZC~)};)Aa7*Zxcs+qurF`ON56U26cxpONeynj=#KIcC+!3$np;!^yy@2|vNaWX6-N zLv(23bw^MyS`^c}@@)xTH~}WZW=YA6g2XX1iG@0kLN1&-vztGgvdP)^odTWA)z|g~ z{=ujzi70gG4o^<9=@Qa&Cx-T_mU2?gJ$8nxTPfg8@!@MM$@;*qq0uKAkaGAkv@g!&^{#x|T z7E$B0>)O6D#RY9+bBXNgC_SiHs!PQ)7-GzM1^Q_%G)=^zARV-GIRAM??f;PvZ9JAW zm0a8wH}~;iQ3^cN4>#YKCf%d>!p5f66%&yAuOB)0VxD5;cluc~MJh8KDF1)OZGGjS zr~qdiaSWf8npRN)H6`dEG)nD?KQ_s5qs39cz)rhTMS1C#dFliAt=n$@so+`w*6qLtFUZ|#baqnhJd+!wX3d0u#;d1oTVreixBfdR<- zmUD>GIFy#7Dt><^a%r_ZD0k4*dXGln5#%p~;TrM%Y3Y>^rD!&T^xhG+7oQ ziFb{HgFI^fVWWacY)$W#JEtxb3jhPf>@o=u)K9+vcgI3ekHOa)D}3?bsur1ShM(gN z8gKpk24kFCl~t~kB?uEso)=M1fi(V6<$AKUCr4%#0v7BH;#G%?iw=S7GF<%pX~#ct z;%V?(2B1BdLS~tRVg{C4>Fl#CGUX5uLdxVM_{^N-Do+B+W4b zPFhU#Oq^ldErG>j@U#i0#>_(V%XQ#dN7d>pD+6#b%6Y3>EJ$N@Y>FaTNzmO6JP!KBN7mb*vJ655>k%@Az|3n+OMa!5 z4@}}?IEVrp-NjWpA2h?456FGl0}DwU^JrSDdOUveaOH3A6J`j;Z!ikhYn!hO{$7_& zednTSFwOv|ob_rJm|#IHFQ9)6#JY8&#KTZG2uck}rtEt7tI%E#1CvDqC*;cnM^qYL z)3FNTH)!@_Zw!J=7ev1%7eu1Us)8^$h}T;Yu!>@9kSe!EQWg}v0gM^O(K|;jYvbTI zokR$Ca`Xj4fPtB7P_ElXhVK&j@P7(*weT3XnBa8^fP1yM*i}KxMJEzl$^CGZyCzL> z=bm8#)|>1@D>Z1^GKehciS-`b7a=lM<(m@5H<6ZbKN9fQJ8K$%jIyKcAABuh(&KAdWH=?Mf}S^Jt`A$IjA6>-==rv*_ypHS|fD?_swHvtP*dH2og zC>)%3cohvx{j@5Z_tA3k$SVXoPD{rcnPlhIwpK#Pn7DsK2MGJ{1x$wE3bxlr$SRHg zR53OoHB`oA*p91x5jIC2Cd(z!p;TH9j<1N{3K4*#3nt3Nokk%jp<6gu>aC;bl!>QQ z4HFP+Sb$eHoR8O%GLNwFx?r8Dp3ZTJnR%mV_=eSExpe6(yLzzy8_nBVU7 z_3iiNQey|33gOPeNd5@Sc9(ag>Wha(;n>!&2`td*Oq|ZJ)>BW3E=&HS&oX&A^TIEj zO>yOh`k8@yFgYfykLG`}5a4iIJ^HzQkaMs9XLk_18&C#iX9yl|wtSI(oCJ!YE;(<8 zeD0mbbvTJc+1lRV=d25SSV+b`;n{@LjgUcn{wEkN_Venc4e(J^Vx~|$PO-WpyXEbY z&TiGrye@3;uw`ICtsC|exhElalC;G*XYtO*H&E)0T5)->&Iq;C2ftU4O1!C_3Wx?t z_dv>00g$ld@Id4)*`^f+4V4iS*B0c08J>(Hms=vVp>oH6)S`=ws9gZo7v>@=Q4789 zuPB+Z^6D#pf*Uv@m+91N%5LiqnM$bxU+}ALl_&(Y?m9T=>ZUN^tBSr!Xa?Lt#>?SH zku+>ue>Z}ASnc5&4(g6ZvDvY!k)0$-A2oMT5x`@#hzDZc{lUJ^qCv^uWWHL^f;oD> z*m-YR&`}$=oJgShdTB|EbD3&6=#Sa-n;ltDx(g&47s+%rh}rrP8n?V@56O;a7OLLk z5cjk96Sv%48sIrvI4eg0iSsJ=aKJRb==4`h)orm0gC^2)x)=5AcLGH&Xx?h-+8~Sd zJz%&GiV0a4UxweXAq2BJ@azo*np?X_8&U6Uwl48u3&$bd;iER4Jf3vZ?3r9JdcUA= zF2LtE-?DVxi6FznXVHs9x1IHbc%<0md@GjS{>IoWIOtR9#*r|8O5dTmcz*BwUClFv z;Zg17$#V1M7}BQJyOq>Ef%YCK_5i6geF* z^4{9Ij*00Oog}X&$t^dvcFpTEDQo$M`g6xjXzyaJI@>JB)E%qslm(-^dbc6w=*7E7 zG~s$l3n8`Tvkr+O4Zt=Iah-qP%6J3nr#Z4dQp7c@kp(g$k{D_{L(VC&7A~c`olkm^ z*9IKGmaB&&OCNWd@pm)ThGjva#o^N$m!6rz)qxEO!I#7jMX2$KuxL8<_RDe5QZ>l& zu4f08%?o@TIP+NrS6RI{9?<(&N*GC69DrEbN-q3N7cX@K#(LM z^FCsi0+k&{ZoA_14^HUd#aLZ(8~wbL?==3Wc2VWgV~bE(-#J(n8w@|0*FtU0(;MkrL;fbrtM2>jOg9BO6OfM9|3%n421(Yo z>DpzZyKLK5mu=g&&CarI+qSFA)n(hZ?b`LcGxNpFj(PVNxqf6^D>L$E-f^w-JPtJ* zXVnV)gK`I>)U1t(B=m_2eLnCfJPDb$RzwvYYg++YSJ z`l1j1C`qo!kk+J?unmD1bzDpSsj|JPrX_z~)LCf}L-jnm-%PIYjbeh#5c{j8QoKEx z(XU(sc{t0CC5~HM3-rM|a2*Ho8_fZrz?unYi|mhd2+6sfr0>5nX`qI?*O!+#Iblb# zR`Q_b@Orz#G)rpgNNp1`qNgVDyrg;K*>1vDLERrZWT#_Yexv=KN%R!^n~TmH)O9Jp zX%eg@s2>W?3VQy$>Ea!X?N7cDqa@r-`E1=iOpN8ILUjPFp977ORovfhji-@{)^z~%8>AqRUO08dVl5^df1P)@AuU?Z~4uzR#d`P0B^^yt$ z4@}>ZGO_rNk#-2zsc zs;)m4@SD-tDI1~{4WA3IWm|aHTwe`q*iki}>>CpS6T1^B3U91zmm86vk!w4AoHXx) z_0NERy5*?<0t!I^^_l?d^q$6z5q^V+cGyz%i-8$aEYU&#y$e=L&uNw82jEEQTv{(3 zPGWVE=O9W#GP+GS9lEe9Ed$}_BS`ylJoN~P^XrZsDW(zjn&1Ab^KTHXiloOaJ2g#r zP~tj4gF?;zSTTsC%ZJ~fCgzb+kIs7{nnN5_y%!Yeh#qCR%IfjkA%-s87s%YstE?Fnx6Z*3_lpYbvjEx)dD z!lCYltyM1}jW6=gZ38b|tCmO*CC&UOiQ8#hkfs+)Zc_qW2JHqz((DGS{?tCFV<1%U zr$r4L`ljS1Z)5bp5mTbAQhk0)+fa^Me@P7P3RVwy!d4z-{EP$VR;m8=ch!a|oJ<#5 z?|jm2B^H#ztc)Pu!dzs@HQTFQ!EsPXIp807;Zor$8zF80Ne1Y+oMSS*L^5_!Hu6cf zsEb9okq;n3vzV$!VcB%*LRMK6v0w~0Z0JNfK>-P${q1IqbS`KF^G=)0dv|rdZYA^p z`Wz<+)=<7XAD`OZbO8GSRG3HhTF$c}-bl`a4~P2%^@sWU$ySHUMS2Y zG&tdhW6g^yxB~+AjFSAeZx}m8;)ageyyO-odKsaN`garT89RJ71qR+#2Kz%5q(dEb z(gDs0M#kZ_V+C9`i+nPSrXSPJxhwnT4J_* zPJq|UB?{%Y+nv1C1BIa(2u!Pp=R3(`o&5j zbz$&vjE@Dh9&{}u@JT=Rw*q=dKiLvUvS&Ge#4VBxqxr2i7;CINPAoGdH1{UBg0V%P zwdu#Nhr!t}b|NDR^0J8pBGZ?EuWFp0YyhZ^bED+DaFK6oNpQk+ZdC4@T}iZZwJDNm zY+?=J{8W@LbTzA#;c6(+Ze_etsH+P@ zDKAf7c9MJEuGofs7WkQZq2c~S?~ud&E<{1++d17G;(d8{l~Ax~*@Gi`h#lm%ybd_O z7d^{bCs z=4oraU#NQJEcioz_Ge{Zfw4oP`P4IH$!BCNg6sBj%cbV9oB5!vkSzRI<1HDcyH4Vf;By)QS8NvDm^CZc5|st}CNAWF(L2A|Ublp@XDZiW7S@ zHO);Fp2gLF_cCCvWP}Czt5?FzUE66(K5{FiB$}(%mT?mhx=iZSVQ!)R)b3fO05<01 zSPl8GBBDywl$3FDZrmMS9tpTIjIP$Ub&9P_bU6@f%irKx?%I|!hq;hV%amDwGVJZqZglmWp8a)#}UOr9g*1`?a8q$tUmp{<3CY~95jxdRMIG9C{ z#|iz3s`O_ue4+jMCB8LM#!DzZ3+*QL8*ux(9+Y6#-LzrGy8_TxqzM~_EU1VbVAQn3X}r+z#>_hFSH7Q|vGxGaWP zl>-%e=4zMXrp{HwtaR%{v;9!z(Pzn3+i}fx_z*yOU?po_GmSXV z1!Vbr!v`6<;t3x=JmO%LeQL*gd`~x;4!OK=65>NoN5BiEUGt?+}(ptxJA z@P;sAt<2v52|?@5r?(n;CjCK$q6I|KmTG1kBhH2ZIm%K zd?L>uDy|Ka)S((X?C5#$KuL~PL#W~vF+jMW?>dXzVVCZeD5umG<$xfiD=_(-D;I$) zIK_$OT2;5V61Bjw#zB=dM$WyRzJ;tomm=!WM>AmP{iwN6|%61uM!3z?;uE4(NvAyy*uo&0}Uo z-(`5}!bDuj!DVV!0dc{B(R$E16{X6O4kULkjIgJguUsn2@x)VeH{Z#_?$zB@%hKH`UUZarXtlTubv znmCjc?IpJ2fcw`;17NOq@2@w+7hno=?|u6SxYp6|`EJnIf9raLHG_KgW_SLAvE!l) zS>^^T_ryH>02OwNMxxL+&(rpgCo`H%FM1C7b{)|EbyzYJjo@Wj>`b-Wp=!fTa2ty>ax>Vhym;>LFzHt&_KZng~?4&uxIiy+I%E zNBh&5zURm1U5Z^-!dwoMz5~{YF3PxFUDO^%9V)Okx^p~bjjt#0_5i^G&zD{VK`x^n zP|Y@cKB~cFzK5*%;mP+>_r~lp%{UYHp-$nC>J3(w0-!QVHwIi6s|Q>3PTDt*Y6oX0 zo@~IbHAS<<@~2}7Tk`A0`=-D&TSz4)WQ*M+KH}>}e|6<-l(4w4E<7ag z%mN6fyPUM)=VPL}_z+`yt+RX@t@#H%H*dhz~YQDS?OCjKHnRgSM+LKuJ*a5uTn z?;OcCaDcQ20-5rClsx{-G3E~u5A_2uqMUT0@kj2UhK-=4`)KAvs(v(%T4mp zQE88GPQ$M1uGNavVvXJC}rN!~SB zyOpzByr!O6O%|XM$V&fADDJKO2--+6vsxXZcE-T^sVQp0Kqt7*uV z*=Z(==uv-!lZ&rL{%iNX^{v_~vi^?oN)(WAP#=&aTZ`J*r*lwO(c~t0eci5q5B0LFj5zleL&zdY3?69J5JWs zbQdylUp_sKuI1qw0o2d$zbWI+!TqX#sF*|s-5yTWKpQmLW0$5FC)be5i1h2W+yhX! z0*`gKyB{~vUJREFeuJ@*#e?wNekIK36Kv0UxROx4;o`RGV?O)wdDA4~qjezD!X2sl7U-Q{cB7H$0@ zD9>L)+@bN7cQ>Ri@J;ZG9mj)3MyK%Ag7Xyoz5Ijz^5paX0_#fprc>2^=jfnJQxqUT z$WyLifMHT9$Ux!$zb7*Pn=AbB+ZE12>77C*aDI=#L4%{2Z)0mRE2Su_ef}+&EF_Vt zrvY3Q1LtT)WD;^_PT^zzA;x9=uKu%^oJ^MN{ltGdOj*|_{@f3KjfjOlxu?I% z{}i3Zq7kG+s%f7NzgMT!a(RpH)R>4JbcT-cg9mzxGmM0Q3;`mFhg3Mqnsa? zy5gDfm=+K~Fkziw^8r;_g(eI#=1?xe!aynpCM(6tP9Q5n6?C!ci-^)=>fn{gi~o{^ zpU83Lq^QnEL1M9)oU%AF|6Un&j^;4Pt_th2w<%vP9CO5t6|MWpP>MIxbnri9;kqA- z#`!%GoUj_3|0N4&h3_$SnV?vXfCK2T&zoS{TlRo*J2C4XKfzRKc7TgFEkk@{$)RWU z4%Yotn(l(#5=fQ|fccvMEUt_I&29}+{&I8wzV|l2HBlWbQ)|#m?{{J4$9Sj zBO`DiJxq*QQ2Dg%74hht!+j^s$8I zk@_bX=juQ@^uJ}{XPQ=q(jw+%X|g`vl;JSl&hV@bSq4^Xz^tX|uo$5)W|KkY1^Vw> z!(I?wrSk5wiI%M@g0DJKM44}m`RFmzjxQEBG4 zDiKpXBWCFA0O^(aR;4qryBUPg9#N^xR%o8^uo}ImzbS+c#sE6S6W6lS-C?5y^`N;z zmuZ=&6n(DDF-c)524B+$d0}i9SxWBoDq*x8+mTlw_MO>LQ9Y-7v}Gt_&aLMb1IyWS znBKZTZv=I?0AtE>Gdr=6YDDr*9jYzE&Y{%*gzDDQO_Q@ZR8273Cwf-ezYZQl&17r| zwc!N%4QdB*08&&bYOC=y$zboL`PHoLh+$&!3fw=B4`3*CUhPjaZld0=M4gQWobcjDYrPqCD>P`tI z#0VVb_2k)syJ*a-=nx<-$nlI>|icku%o-8oISO*(v@rhYrIR4}unFeHf^U z%UR7U04&z}$aSC>$NS+3SK_i{q){Ko5o;t)?5e}RXt>&$I>JmT%6;j>lonqlQlBIj z_>9MQIs0P=JfDt~Q)Z>64qSKM{55fhucf-Nq#@jns1@3j^J@jQ6vn@>lh8#5%iK_H zOX|!3Z9wJHr!MIn>wZc~)J~A)pl~HzKz|oS)X-LK#78SvDe6sh>74dSAYNDhm8r`w z+X|yN5{FO}jfBa)@_mwL8~}pG<(GrgG%ic^I8*>D2OF|5BxO*|GZ|jy*X_9G^9%D+ zMPNvqUA!nTQImdQb4WInA@!G{=2{eStp^~6Dyr$&!0KGrre+F?xQD?va&R%$Pi3*PAS~&Bbf2%oZdzJ8tRFkdK_* z?d40YEGH0X43MuYLtjH+JMz*e0090eS-(1ICS*?w1i`hnfO6gXhGFtdK}qSY+F}1_qOi4E>OwuU><`(ivz7fx!)Es5UCC zSr0u5L01|&S0>9-$z04X&ZVJIki{j6=Ed~G&Sa0~(1;haTJp!>%g=TGO zBNU;Yp8gq2+kfq%^crUYdek@-g;I+ zG4pE%0O`h$Wq{4y6)phfm0W%@!jQF~OZUc$=N-K2ra;i~Y79f)RJnxN{3bNMd;plqGV$1{g#L^Ok5g&gUx0U=86l(>Xma>}FRd&n4w;FYdYN!m|}u zC$A?XV0rGwD8J0^X8%K9;^mM0onOMM(T+&Rx-tiM_@5_%9RvXDRPXd#mSxF=t=Id2 z7^u~C54&s3!Brr;-WF~;F>v)?E*ma5oJPd>8@9{WPNv91U;dXfju`HDmGX^HDdJ?NLJNQt%nxr)7^{?5>cm`T7Ng^_NuaUmjU4FYvu8{ML^Lc4-9o z4?FnR=8NB(a{vz#i)RSmEljwu7IZmW*@`I!Ax;-A3q*`r1nAg~jjb1&x~rq*67jkZ z=G>_XMd9cNga~>0u?~vgpA7+)x;LGN zbmfOb?{rtbNYwyN3V#{VgTvk{yxcla_s`VH=(%~+b!LM2DE=Nq>0fXh-Gi44W7_|G z@vFNEOkause_P6P72@3@;yTd_xvdd;S;~u69{=2T85Ni_|Kdsn;Er}99Q^B+jkCJf zGqTKo4Vzdk_w+)zW_b|*HL={=ll|gS|Bo*;or(MivDMR3_v9SU%q#^f<>izxLWo== z>9(RII3ywP^0&ml6)gZ*kMgk{;Adz)8h+N5v62UULH^Ipf~2}C7$YnYkO1#L4>8D7 zN>T{^|M9q5SGM1H+^@?Lf_VC{x_DBNXd6Nvg0O^NEfVJqnOIA^1WFx=1MVs7#BGYs zB7VFw_?2?AnDG@l8q_8S&*5MTkOFUJ9L$+74jed+_z8&P->w?c673Mj(RpvXt3Uw5 z&!X=WVTPAi41PjJ#N8(h_d-ZQ@g1<7G%+N*nD`_ z$l;$7g?;GCKPWLAssv7?9<_#0BcK4{Qmu;wasiD})P)jrEZM){>AQBl(3NKbF^iq; zY6NV9nbNmnyZ7|?ojDAk7Xlm;{`fpv#pE(%fdC+oxT?@j%nXJb5ya7LCkGOTxQWtC zVa8)kA=-a1@tPiEwTe*)_j9JclIF5WEl^0lTi85E`?y5CQ^T&}I!j9EiYpG?Slt1l%51;8p< zl5GnXv|@ZoK0YNKb$4$GU2!Nnx~`Jg@y>yruM)>_W%XZ5JRNJC?XNhX|E{_$I7BOL z9UgCiiNxQk1P(SVQ$8e^R|*95W=y%aVBri?vNl5C;j{qTV@G0o0%-f8Fp!9$W7$UN znTQD^O(x(lZ!mPiuYAGvNwS6H4B3kMmQ`gOP3rco;cSEpX*+$BjHGt5ec1HCR9K^X z3Ym}(X=b-?x0vMF2$U(gAh#ZYr5TCoaiMb|7o4#Yb~+IfS=gsKwqnkzmVN#PF^F- z;@jQInulRy?VSBjFp~{D2*^@pJ}Rc&zQ^mpy9Y% zNs}Wpb@Y*aVU+S^D>4DI>?jBeR`Yt6ClctmyDC52|2Flu9vcz?r%z-fUUG9;;BzH# zL0AFp7;(S0jsKZKNxj*|Y8(K9Kjb!N%W!*9G1u8Ob4ZxJHbLoqo=5G|LvoiX^@<@_ znw0!;RC|G8&scExl%e5XK2b@OCQrxa$MY0cLWBKHo|v)2Xo>?ER~jdy?V;oT31gg9 zm!rSo#*gZe?OgzQCa!Mui=~GMSgv$I83z`J>@xC)TNx(h#qk^$@CCk#1nsPH4Qm|6519Tsa(+`zbEYY1yFAfz~EPdj1*0*cYm1RI)OM|}Pv?cdaL8N0(T>!IM(Fb&Zy5mU2h7qWkdW!j8 zWmxHl`8y6klt8)U4fS%j0`8IDfTD(*PNHGWaUa~1PHp6gSxR0DvJw4u19e zN-SoKphX1;>@D-a3Uzwrhx|^OO@-(d+iwaLG>@ld%N{|)#KF1=|8v9nl4DlXK4X*{ z2Z4UASzWj@aJ&|klJ(|dm>QFKMaC(Ukf(bwPO&NgdFm{lQCHs8gQRF@6^P2ntq%&L zfv2BLa}wf3Xch20vgbMs*Kdgok*5Txi{`lH->xXmnpKlo7%f%vodz;x?L0kb0(xX{ z0VN5#nhLhm-JN}vWdT}oi7D=O%s7;Gp+FZ0_5_I8_lh}L zp{4{R1-jP(8z>DI_txu+62eO)u|$K!g4kXIemFe&>{FJo))?sw(4KN*(( zUJfY+(%+sXuoIrI<$y9+9ri}UpPL_MsYSAJAthk8B@0Y8iBCzrWW()`5lqoooxo_c z$h!_KHy2IHP@Z~=E&w}La7dZUmkD@JY!Ou1A6~X%_A`Od%?*>c^93!IR}~vqT(YtN zFw1OrSkhe+)<@K4r}G>2r7-EL&!PB$nMhh{9xfr<QS-=o5Mj=kkpcN%HUd^)tEx4degR-rP5zpG2cbfevTu>9v$#WDXYQ)D%gZBQ3&O z;$Os#)!!yP_vD7>smpU zW4r8aqsmSC$jmS(X@k-h;qf7sX3ZYWU?T&x$SMIB^xRH=k3I3=v?Lj7>$stLfXMjQ z``H$v-shBBsmO<(okFQzhrUh+dFKa~S3ikw0gsd@%%8Ls+ly#Z zkLI`I*f$2`&C%uq&t{q1aK8{bl<4;#IDT{0xNB*O=Chd=x`Tr6!LXBIteI9#0>dfx z=fwh3`ZIsJYvrnVE+fV{TofRXHxHiw+7Q9C?UB>!qJ zU&f}AuX|(4EjTD_-OheuBv<&NwX|)w(Q8J~V76nS4^)69r&Wo5i!%jw0Y0QRaWco# zKt+4l;@iWZ{`Q11`se0lc(mxKcj2s$xsnlX&-sNwxkO4Jp2w^fN9l>Fp4qaxgGk#= zKEMfB17<8+{zvwg#k7@ayLBM;nhD-u8!}P0$tuqWT;U0v7-=8~{++JTNk56}V z?10#xNX3?xOlSaIUnc`{(TJ!U0Jjv4@#s8qG?qG zJ^`lujJ68Bg6k-M_Td4zANzgMc&4oj5%C6wIX|+P&@6^opx)pla#^Vt6SLICk#(!8 z2XEocTD;(Ko8Jbvy|*>3rFWh5DqzIh;<0H^0U-6uNe%m?8HYn`J+g;bvFjxBL2^GA7V)#c zw*fx=v}eB^mZO*6Dxubr*z}3ppom+$$9?IDleJTWY9W3yda`#m=}9t}%GZGG4pPAU z-%xCzYd-re;D(&Lq(3O$P-a}kWB72Zx9qh#N2~}2mr~jNIwf^m8NYtPUx$KeeA}gJ zp^1(9qqmj1n*u6k<;lYMX#674M;~68#@$m?#b(LR|j+S3CiW>P8r%p-#U8cw>0!!`;wxUp^cv^wN z+MqqsP`Ks)TbSZ!o-iiAGEk_f`CC!^-&&)%Js}=S)*3J$M?C8In_A>E5L(>87JFGHxpZdVWRfKvf(dkIz%t z0J3O*0^7wVHr5lph*N5iz6=!Ltx?H~j04Cl`&vo*Q;Szy8SJ#Ci6MsC zME3$&g^lCjvlFi_TBo7ujt16IObr!7$jDH25Yy#Z2RAc_@VZ8UG;m6}rN%+xEGA6< zctfcX;F!s6S6;vaa2*9K?uR@3``soGC!WNj5XJb|PikhyCyILbz&DECbnLJ8y7E~B z`G6%-2AFaE1d8_<$q>P&UM3d%ypzcP5^yY}%Q21OIR-vI#0bGO&oI$RqeQ8?LTnNE ztg#Tj+*QgjVUAMf@NiWq=u1XHE}!qOGL6c6c;wA(wl?@(5_ zq!=4bejSo6#~nDt`D*{c!D^5wLnn6GGu?xlEOh86jNzQfG_0xaBWy~jjxb`mpDB!C z_80?`^M+m6_c`^p3Xj_|R4hmf^3_bhbo$#RAyhJA;(75CVOx_)Y(wC##+U?lx)#xx zs9@6cS^PB&&}Y267M6WbaCw{Gu~PX9I*v}dfVKqJ#enb95d#9L1iaSFY&B4VO^|;3 zFFUfSM-RO6Zbr~0)3jNC$A0yDyt0tr`%7#4=y=rA=1l_X6Zc^}ocKfU&FahXi zcK_Kr&x*pu1|wBSSVSCNzc?TNemzaBBXgl&23WCVCs57K9`|*q7ToMZyKLcQ&pnDi zG>eqA)Bv)ZU7L9#Y$cTL9|+WUnkd_&CMH@&#b})wI_le2j?)!Y5XCIqa@wIANvD%( z6cXVQuh_6E#}HBLz$Tz$PZ9{o^N|L)LSVaRSUyqWr`14U5XZ< zB;|ro+ipkOKZej;HXwCePo`o7RvZ%S4O!(MYXCl{+dL27z4Y+dr$m#4)r$2QPcN&I z4O_d$8xFn^^+vH+K%>Zaps&3%*NM++OXnyy7da;7Y+ z?(qmc4}&4#3h!EQSxv8c<{M*Ci>iitw}N?(iU?q5ya8~ks5!<&rK~Q8NLMm@(}-BA zBY>7O@YV-UH0N0#eu~8+_2ldB?FM3Z7NY3iD?V>751(hJi&W?!KFa!=C_5e_CQ=v< zw|R2A0LyqkAULl$+5tdeL!_tWsXMaW`!twbK1KsZj-WVx?b7`w^@xgg$*XVFmc=td zM$nD5TDWvD+_$t#h&E(jvPe-ZkHn?Q7!Ydkz@?U?Vf0aPBS>Vf(>wfIWk5`RP~|r- z-Hv}_cvJVi3>~glqV4${=Ol>?+O7XwFV`Mpl_TLDLR*H6uk2EBv7B`|+L*qf4#!HN zGAA@Lu4?)&kpyo~C9k*&Oi<*?FUgH4QG+UsznUT&1p4&Um|UJ0%L{)d<$vXHJ_GJg zHZLPKj;2=Wvp-rRx*u)t8r0}rA5WPHfZbNl__w7nvDJ}Be^qsvgwdN!RtT;uMvIh_ zhW7v;Qk9jPVywq;~A2M5(0p081$=Ajj-&`H;(ok*FohAKcQXh93olwT!_ zXiq6bMm4wf$~&ji_L$}Q)V0aP8-j7$DSia!)x9FiD+n(%if{x2VQ}$Kce_U9i&p954W>$GdoL6u0QMU6k2lkQ;zpU ze9ZN;!ikQ(^MRI$Fw`QJqBx1#zT}fc7{8`r5^NO19ZZE`yuo6g>;UWg?=m#p=^bk3 zje-RW`cG4k9h{ME6muhiPb&JwSfEzaF+%C;($TjHM1pCd_u+%HtBI41V(8``oK6NW zw*<^Q&K?M&2iFyoISI=ftRcLAByDqyIgxxC6Y{b%eki%$^#DIrAZ^IERt3$(QQxBP zn35|$P0wnTw-$G>F9P;~8rnGL2qzaR!_;pwHKqzfq5h^}+wNFUR5K7`!U4;qo7c?Y zWjJe@HRH+QWEoZJclmGks|ID*!%r!|R!v1UV8^`h*JC-T5noyk=tQ+v6yL5{Q+??n zpGzaQs65z5cZ=-7kiCRLe=_h+-$>WEX^i|-0vtVsFnuCLi~!~hC*GSB0s$Hc79`@} zm|{4FjbNZT^B7>KyOlUX_Ch0`KvEDsR>cs4(H2?Q-7L9lCS;qT4jIjjXLkiRLl-=B zsfY1Lho$Y8q`)1m*%QZZJ}jqB$jCvhS~Ef8f}IkR6d%p1-PAwo@JMx@pkNq2p!Z+5)!P|-M`;pHqU z>M<3)m#k&TEtvsI>CRBF?|QI<4pn!t1@DHdIH%4zkI{NnyttL}pV-1LJifOYD&?n| zL&=mi)TvS}FUxkYckJdr1wL7IpZ~i*0sgxQAc)Xy5d58-m^Ar^0n3;YDGrMCZ;$TU zQg+y!NZ)R`9|=;1!-_cPy54hKb$J`s*6OaVeuMnQ?G|APXk~;e^{C@9TU7Nqr>bW> zM%dgdNE#yb>QgZ&TXBCM%Q<3E-bEjQ}7jH=beeWwzw;4@jSU#^bUyf?Er&E)vqgiy1X`V)EWvf?3y z{=Vv2GvYufVvGj;Cir^eF}0i_Q>Fy8KYx4UsD@c4(cQRaY1ScYRMgG94MmFS_B5tx!TMmaRY)@E=(f|>0fAJwg zIvwJy59fmY%n<1ZfBvC9Z_pVw+F7PlQkFn2A|l`N#(Ha|Q%=A0Je3r2nlr6plS+_9 z#EeJgoG{7PgwLbVaEKf6{^IdWP1_-Qt?woz`FI0somsUEZicf)HRvn_8^r&@BU-Q7n@42w503~gr(xcP^}Oz^wa+D~+4WxmioIdU?*Ikse+y7J{1c!U`VLUgGW=(N z!gyN~+fZ7@+#*%h$(u3)rW+H(a+j=su^H4-o(CPk@Z&DVA9hBx_qjX%3C{XD^O(89 zz4Tz()szC1Q42xx(fbj`oJyY8O=1tc}D)Y!xMZ?t@&lQh@SxyRC`(OK~TpxLw< z>q(;HY7C~fJy*7yV_qWT1B@k{*dJU0UOc9zH*vstfrgnj5V9n&|0QMiBnGe4&1~pUK!s z>F@*y4NgzA>o`fL?jwBGy#kTRKatgtHdc8tazwipsi-D&$FSKKk>UaLg6S zAQIfLi#8OnR3^}61csdUbBGPi*>p}e5{DUvnSfyR)v-Qz)^t_FzlR3>7cSL}G75kY zn14`1#yl>!8Xz{lou}s!`5WTpQZHM)WqNG?LJb*tK%%4F_3SzFt0Qxgc74GO;}3KXzQ$Rlc(f)2k#=6G*Ap}L0D8H_K|8hiodDWQ7O~8dCdbC?Hd|TUwfwmT>g|j!Qu8twEhl@-~7CsVpNQwTfrz`DG1r?QrxF50mNB zUz}zDNrcO@dTxmrp%1{)E6Cc zk5~hp(SR!ai#0TC6d;6b<^39DL%<9@0}86t+y*_5p4Y7gH{5u#&2P?OB{2REYbfS! z{$H#ih=p&~5VKgwH*3hmlPt*eHPhR_3~?98(WSKR3j+TYgbl$l5W{3_kVcdd431lS z8PE$Po~lUD8rwS^=cE}^=N~3yw{I_c2_8kbr1(xAnxMJ(!;7DkLR{glu17zx1A<8{ zVt@Sn(6ja+4|Dv706WS0=R4dZF5>igX;%iX?IlLx=Gqs7&6cL?leH;6w(@r5IzU2fMy%!m(QDC1 zy7qxKy8xfYYzsY%*M1T}!(ox)1sMXl@_qDJ%Ol~!XzfCo<{5`>a7cin0oY``1Jo-0|UOrmL-2kWkFCAmlE{(H$1;%N(8@$-OJd(8uJd&+T3QTM!thEV+&)3H{dq(e4 zI(>RE_LE|%uk>*JXf!@N0~GUq?4%}i2B zrAsc^6?5a8Kb%cql6oLD{ZtmX%jSv7$ef-_ROe`FoB^E5DVi0V8gVL6k~=^=Dws)U zg*5YhiJHCBE(`wfQr**El?{p|Fle>Im4g<2Ai6Ibd6asy`S@AnCiT+{xwt&v1s|h? zYQEC1!LKuF-IHnAL(jNnt86;EXHuWHH}M^NS7>5$jJ?5xqtmX1qI7aqlc1`SIqUcx zMiHf65kOClk`kSH7pb(`8q8tF{Xzq|+`I`-nz_{*&}A4GwQT~oluDF-gCR65-Gi`M z3)cbdtcitW(ka!5V+Bxo`XXsh&?3}MnWr9!3oEPN1>@$<{myu;tXN*(Ru2I(q-K6N67 ze%QnaB6H_=SZ1U&rb#Myhjz>8fE@BxV8C!CEQeL05Kq}yrKXqtB~AX#p3wdRX#)wh zxrv$+2d*||bnR$vlGY>=fytot9XI9&pGVrcBjvUH6<-J@_d5JI#ZZyNtb~8z_hDA* zDa3P3xehYm+84)&A4|l)F7%x-E2%hp0#p^6h(X2?a)L!#9O5e=r`Sa{WA}jU5+Ll( zQ-eOtSIakR5tuqGaC(3w47JRhn|0Md#7Zso%^D@Uq9b;P6iU9?u2X}mt;4dMR@{1m}qpm?L5DT>~EYy zA)}i-Uw6aO$AK5YB=~zpcW^sk0kk_O!v;s8 zQi&Gf;z|l;sJW=#gJZy^@NPdx?^qBqywf5ZaFl_f-rS>&u2X5-z0#IB0l$r2`{{+v z_)Q@gIWdpY$-rSH(i0%H1*K2eNnlK|NeeubG_@v}bB78C*1p%^bJko7q`Nu@XJZ~B ztyT<|11NK=yMy2XTPUXB8}NkIzMR4|5c`oFa4e#XL{5V8!23dP%zkHBap;Uw=|OA^ zY8Z;tZFVtJQ?Ji<`SuM|0F=k`7D!>bQvbjttYz(erGY1`3}i0gAE`Waut&gxY?bU4 zpOw01MabwdRT{+{j3O%O+B%;PJU5)jkvSF&yR6PDKv5TJ^6qd-jFxc~dOPMXaKOUEu(gCOhG6&K5bT4vwIDC%i zSuQo_%#D4AJC|}KB@&Et_AcD=5e3QPyQrMGQ^IubesY%ho?*b8{wD)r?!FgXsM~eY zq)7#ZXMWe{g)!D~x%KAdCSefpfwW}k%R>8o;?`9ix&Mc-du+}$c+&kC}n)#uT_qh`3Ws45L%Pk=0wqeF~G3e%pI z5*7>S`%>+o6p+_)<#O|+Ux>q*)4tdzj%qkpLYf))Xn|60R9!wnPM-Y%1d_iPD?>D`f6wRzWH}nEcgK30t^O9+gb~I91WiHb1dxQ`i4pRZ)vn z)H)9PnWR0LaY@V`n~*X7$LhKOV*^*HKp>$S*`Xi?13W1%giQsxz|pP^!~fvoi~3cLO#i~o0Q=>*;4y; zs&}y<$x8Jw=04ecBzUmB)iHnmKTbCw7qi=-&KMk=S}`~KZlCNNhOydX>{Kn%;*yMF z6Im=8Ph&`at7Fe9!t#fbwYJ!x>sT@}df)6Rahp>_kK(L#b1PHz4B0~QaU`fx!j8~C zT`3&sT(0i+TI8sn=Ek4cxn3P?(72>1g;dc@X(TnnjOZ&!EnM1*&XAtai3D5(XSJyk z2V74}z=Xfviw%uQ_99FibjE!(K8lOE6L1F zDVM5``07J%M&{-bGXtr(Z~$4TfnP#e$zDpgd7=9^&jtYjJ_kY@Q1s}2vw-s6@&lj& zQ7BzwlCH}6fkbY^aDziD1SH&2mo_bj&2&xo8@YpeXr!yC$1quokgH0L8sSHjk?fAX zbmA>BGGl056Z6b%i!-#5JE=KY1-OLD4j90j1-~0^7t&0)<>}}|C|QjmR_Bd%&{u!C zN_rRxS@|0GmvUS${7xjb@<*m@MF1FOL(^KdxpcHb1BdC?B`9MpqZM2-P^Z~BNLORMEsD6Lqyq6 zjD4_124WSzUYLG&cE22PEB&QdSaWZrnN~yw{0rd%Bdd|ffTVI9RaG~XL<*p2r3Yh0 zj|q^s+0#Qk`F6B9(u>S3y1lCtNtNi^i<9Rk@DZy+hPIYlXj@Di1-6O9*@oyY(QmN( zh3hF^{MIVP85;^;YP*vYH*265lt8^c@48LFuS8KmFrC(v4N~&fXMadw#%eAzeUB_z znESRuRmW_>TIPV;zUbuA`r~L5!h4C)&VJh|S=;VP;)*)7OCZHe)^j`P$>zljYuYdV zg7C$3JLWMz5e2giCBCK*)Z2j!(teFlrgor6v^JypsL#L{Og*!bOhSPtR+q9Nm%2u- ztWnE#RY_N47diuW+KEAb2(^yg4G-TJ&@^4OqQUndI}Q;vE#CCIi35P3+al7l+bP_kJURu}Jyf zg>m!Kn9OKrLF9Hsmf%vhq%}R5L#&;%fQL5{E+xV?@~p1Y4{63h*`7n1Qbo(o-CzgP zly1OvNqVX2=vKu3;~s&ys-sedu8sJ@Fhw_pTRXK8x>s?5e_^f2s7iZBVs3p(q0}fc z9=1o4IwBJgjsigIaifqhYCG#$!a+7}*YtHE#1Rby1=V@Bd0lK02v9o*<3Yq{S|SiX z_5eEsgcrx5FA!7u^w&#@r~J-tg9ESAH{6D2d^})rzy+Si6m43}*iYHwdOT>2BF$Ok z60!+GVckYvEn2o|*IP<@`17X4Ixtt_mR76mgASKx;IepTA_w(0 z@4qEf0UjHI!%HN&_$Vy8Mb=md8Yfa~ufPIGEwWgV2>%9k1%@bgu4* z8^g57_{?`3?hAVf(c5u*wGu!FOMEMoRBIe`#&-+z$uGPksO!Hc*a>0WGdb_Aq@FK? zORgO!z$5F~H|aNUOU4%9O=V^^5|Yn~vfG`wl>{iDGla)gDd2P)-Ru}?h|C)n@0-c;`}>ktQ$s_L980l1eUKboFqPhTdXM~NJPbA7#9*Qhw4t& z85_7)&;at(Pl}&@h>aYrlb|5JZ0!&+G=C|rEDgCXDwM3{j>In>Z2RTMwqOzT;4tq1 zLlJXO<4oq!HfyWKUjN%3WO^JDZw)z=Cmdj1g(z>8DVtb_VVr|Zam)T&E|s!Ca$~}k z0!_IVXD*RrZ= zw=RRI@M=)38wGd1V5v-6n)OQh!zWbP{@B0Ua5wJ97aYpalPjH!q6cvZdBn$rp9LVp z8_NEb1L1}7-!qJjU=Vb{6(bK9xYhGDBFF5>ft|Gs^1|6JuFL)vHe;@Jh(oQ6Thr^1 z#_|V@Or@n8Ilv*9YAY~AhLjt%&^MO)m<=1KLco8UgdO@m6RDnj*`iKY(#?c%*s7FZY5XZj}n8SY!hLZ1`yuv@v_($XB^DnyFAkARukLK7*njg##SiZnbEJBF2%OsZ=a(UOCpguJSgBy9v5Grg$NIG(2Bm{V@y#dYW2ep z?f0nx29T4&ie~tr+g^9+%gv133*jI+Wsb(n^XJyk(w(b12}T?#P&U9a8Yw93mv6yd zvCsN#l-y0FK?=SWrXSeEIyT1Km!ZOM8!!obufPwjZGtK3U))m*D@ zphfWa9{>pX0r1$8W;U7W6q-nx6MjPFA9K23OLIGFqjWN>;`V4TkZ|48sMMT|(5B+k zIOSyaI7k>GV7suU6U{RJ(1s{&GW8)vpD7e8!l?WVW`Rp0HYx$E;9+5>V1y&HPIN77>$S{B~@Z zze;#~PIodF{?Sx@Q}&mBDy)^z{+N_nqFKky#>&C`r?;Dscs2rioK^gs&w;+NA8?iQ zf;RoTz|o|ZEgS&lNVu@Y(0;T4J939$p1)iEDVTvp|9YIUe4I1=6ltZm-mqUm2Ar(+ zev_W@IHYi!pV&wpS}=siOrl$zn3t|FpG=v@62db(Qjj=&0}~)EX=E;7C~%kTap;RG zlAq#CE0Fl}LB!{WIz|}qoRK=&Oldr9p{C9`%LvyDj_Um-YR2)$WRwsp_OmeslmwI_^YU?gFdG=;3dt$JfyB>c?;{l z2v@R80+OI~Im;X<7Bf4!BJz2qHi6N{9>^PK`o&eb>NF2vBl3NPo0pM_wvvL070VwK zGSEVf7nuQd7MBVSSlIZ%2E&YcVU!Wz6J+p33v=R&9E7hUY!2V?`<8kJap(!MPl{Ii zW0c=%pyxPQN2u$yvn3rkZM{}!jPeG*-$2*A=+|h4v~;F_1EGf=Zvr+(Sl5D2tcmGM zXU`C+8xkQvDHB?J31LT zch@3`Besf|1?nk{M=kh1BGzQG8F{LmrOTvk*U5; zi9Z1I-k~O_S|s&hB&2Ot4;Uy8_R-PO!u4!fT+TP7G|KI4oJ##0;wNMC25<;d3l%h@ z+P`Og9>c#(oZ0#|MeSQa#Ev+XYy*_9D4oAH6Ok46IOK^{X3*)~X6rVM{c@g3{IEu| z;`Wu=IxB+fdnEH|)zurksExsK;hogkTe$;j~L#MHZuvhOd^q# zf_13ZSTq(}vbWT zI5WOaNY(2ZZN2`B*v@v~)O`-7A_PLZjf7lZ_-MDdJ_IAyX?Ds^0J+tHzHckjviLBy zOk~#RW-Q5B{^at(LqjdtSbG1Bb?-wUIv1_q5Y=@W)tUp}72K^oQ&kWROsph#;$&de zjGb9(mSFT5Pk7ryW+(GH|L zq!SKxO5(R}%1t-y#lR3sWU+kd5V4trTW=4B33v+JCK!XCNYr9yd9sU>6Dc5gQa@3N zBk%}+ibA3tYq2+NoEo%f9iQ*t`B;MKO!oKpMa}oE7n1SjRouRdtv4nXQO#vaI}!gs zC9^H2o>Ta}`Vt6SAm5ciniPd5bud9#4W48aOCYlILI^QC;0j(tM*ze>UP(bjI$(4} z93P(0D&+9*e6ce3 zzj^uMXvF`vLs$zZhA*gZv!oS8C65UldY8nu*L@m>S?dgaAWBJg(SQM3!JW!S56Q}D z@o*91YPxDNWB|LRMM5X-wXT&|D20k64OvY9L*OVOnJD_+*Py*@yaFl@)S1Qp&t@@) zOIF;vPPr8gtrM2m7kUu~3F&m{b0MQbDkWIl$_A|0GSB1eENyn5+wH|a6=%^&3r|?4 zGSy02rGy{A>DqHC5(|zJaMcn;uhv(X(yvP~n{Znu7 zEgT2b_>GtEzl|hp*@>@3+oAM^WD|}+56m|^L8cx!C?yriItu_VO{_IM;vO$1Z!Bx>Xur!#UE&wUE5|ti*X^ zzeD9Vu*rRe>PI9-@`$*+36$;%&jF>K-Dy1sjySQ1e#Af+6$FIG};O!=TVs}ApwS>zjh>YE;F&66=skqIi*_IL- z%$I?+VI`L$>i(wu#nzbRA4RyIzbZ;NH!AR(ZTB^LH*KqDf1)dggILZU+2dbx4rl*M z+(vz%rcX8{vPh>^yl>n!h2$sX)+1iW(@opy)O|$zNgJRNu2{6?=AGtc!u#gKX10o_ z=isW(=hH<`WuopTa$L#{i%~kr4lVYA-@03P0(4n<~ zbbY-`2z@C{&=yR_rS1-i&z)l@`ctH@3;Dr#MEy>VGM*UCDxQ;*x=4D=g=FY@ zHuwxASLtfu_D>V0ugAU{JjevY7wt#DQhrp#)IEA&+$Cy9qWs6MG3sj8Dt5U&$NU7( zJa@C|9lQ|emSh$oLzQwF7Dh=n+qM&W4T-rJ-W%YU-z$P9xG{duz0h@N7gv(78R!ot z+)a+47_z5BLhH&7i@K`K#;A9Ql9G1(;_#KGzx^>W`IV=8w{7?FwRho~k~J|6UkFXTtyv$TbX&is4+$swMrwN6lfPGH za-skY=kL!$PwFf3Ie!H_@0>~n&UGZn<7gb3ux}VXZ90<^|MKQd)<>LWndwrNT@ zT$#ddD$JLA7ly&1+{*8Z|610}Lwr0@AQJMB%=DBNZx*oy!S#KkH9v_^u|;+h`K~3= zCB-pB`w z=!=4C1*QprS09jn{I{a{UK1r@^~ZMQ^4Un%x8=@5_R|c$FH+;LN(`JCR`VTI5_mCS zRNSfQJruRDX0$>nA4nJlM*V}6Fus6L)PF(*t`@p9v1lni9Bn&%`7OQ$`_HioAXo@* z-<|QvK=CiDGg}TXQkx{>@R}^8Gd#^plAIPH6YR7jvwZ9@Ud;0n%ITpWwq@BB;m)rm zCr;dehB>BHC-B$f?Pd{=l2K%4MQk5{Ko$t?_!#a3g?@f@KCgJbi4vNmr{p)f)v6O* zci!q0qZZRGU40A`%&Cr538%b*KGKcDUwh~8e4WTMfj z4_4BU!OmCv_`hyHw`R9K30GX{z{?@6%PDStJryG{TdLo$b+A`_Jb2~m-__pFmoE(8 zultBIIiGiLD-63m6bv2%-r4hShp5~PMjC@FRLt++wjxH~|7`?LQPT-Z`r{k#lLG;< z0O0~zn_4@i@W6o*r1btDlkh)Uwm2LZJ}WhZnJI&@#+pqTe|q^F6*JLi2W<*j%`jop z((_1{Sq>8qf6_N!Hy?NoCY2MT$*AZVE?;_*zv55cvv5XcG~{L6vN@l1jMh0f%raT> z_GNw_SyjxrJxBiSapwaVjW{y#AE)tlUp2}_N9}kWwszI6L=6mZ^j9Gpi2UKYj|9g)If3Ma70T7K`wvs5Dd$ zmOzkizYIW+YzULdWTbmemtbMwPoS2**U(6IXzDc&s`2PIxNa@Mvmff^ZI{Au;=T(v z^^(q1I{TAdn;|tpoK+m;ztAuEg+I3+WZ*}X?1&o|Zf?bN#N@F5k!#Xfm=i=JT~*WD zl@8lr=HHB}tpB}b49Xj_3Q?@!&JDpcN|Gf> z=ef<#ZQioM@W-n3EY3Bxdnj22M+rK7A-J|{taA}k(Wa6evUb;&cM1jTdH1l=dzP4} zQ|P?#H5(%tj1j~}eYPR?urSdm%uI;owu8hXE6xHYz2*}DGSQd>w$77&5X9l#U-i%m z3LpDoR^ zk8?*lj;a9&;G7}d?=uk|Og_R!?FplNF>z)__oE|x-7*+JzH9?Zpijun_m!meMc-w< zYgR{Y9?pE0kYtp_z!swIah{@vg~M#r!*gx(o--CH#XBRFPm)LHw=ppykBHRU+cqW` zd(Dl%o*y(or7H5>6ps~Mg`$NJWfd@udVaUF5ZjGuTCM)cciN`5_42u zOG-fZfZ>fj$f??^Ow@D(kj*RkD~KXFntC*nSV&6I-3RCnHA*vz#J5Bug+?l@y+}@( znoTmT;9EX#mrNHg5*A^%#pC&%n6aYuyYsgX`Z7`{&&S^k*C!KN^RoU-pDvRf#7Cah zj~~gWR;Grj!D_I{Jf=W&Tn z-be-=WmrX1E{Ou=Uahwllqi)EqBtz*fVs}f|0ZGc^_(HBANnKLE&9;*@Fvh&J{^xK zbX2jmGL!lov$RdHi7_I7r=uO0ckwpJuI%E?#pX>xzwCsD@~%9rES5uO z68U+oC5(owPhE%IVwE8 zemOSGT?~{PW3sj$-7m#3hz`f&`%DGNs1D?^&TlM$lHchF;sMme0O3k-9k6vr@W>Q@ z2Y~V=sDE_?)|kT)5=w0&l+ybHnhgjsnd6ex2M@AnBhZGw@$i@_+_4PS4-U*#1eOe+ zm6r3fN~oyn-9T1?B4~jw?MLWU8Q!|2SI5W4pdJbd`8zXm@nt6tK+1d5Ma|uS*rQ{) zML4*5KkVRNeaGfJiY}IxcF5z=5|Z?r=$dXtoXJk|-6)oGIRkhiN1$25NB~?b4mSfS z^e?d$E;F2|?{&(10}w45&u)7VvAD&cTztj6D*CvbKd0RFCEczfS^~o06JVK)Vw*uWWYz zxve&j)Je`J;nF>&^8GthUI$F7{yDn+JG;^Lu(>gdI+(}AhZ>hTT556T#Q`mR3Y4Rz z(N$dKQ)lRjnaXS7ivY34p6S&`SY~5lK~#US(F#LBqs}UDw%Jo%u2W;ZIhpH|4@+%p zvu_6)5O`I%z5p(>C2AmAZrh@bm!vK}ks`9xI%V!#0-C`{swAn})C=%jEd7GsCArt7 z1Zt7%9$|*Fdrl4S8z$6_c8wWTA?u5yXk{m;nSTJMq-+bW<0C6it6eghx|Eq&gS(7D zv8O=+(5|KxGk{ag+gay==0>|?iFx4be#(V1RTAqZ!*p*dELi}@p=F29dhkm$(ckGs#A z^; z_p9BUME=DH;^*{2-0AKTU%$rO230#(+z^p|HrdP1sOBScQ~=KOQ#u<(-5bT*B$WtE ziABG)s`Xk`fY^T$$S8+gxA|02f<_J{1R@2TGgZ?Diqeq29>TZ~DKS8RiKiN2lO zUcG?zEd4(3@N82GqvKmQCG#7fN7R0sHzmV$BdbdGx%cmTJ$F3P9dX= z$ip94J{J|3*x!nv48O3SqGU0r54gM#fNY4g>?5WFxDgpF6R=G4lb6q+x|kDIutq(J zs*TE!mS6|QaI!)g#*M?!vkZ9DBPDHxn#!2e(!mZ#Asc~r??W!aO(jO-*rbkwtx2P2 zo_)EQf9{WzlY%>>)(Nkv{^3~#1+U}jd)FZ5A*5oq%bn*%4$1+?Wc)SRNX|}0Cp$MQ zNRE5~aBLA`5&=_&?x1D~)mtr}&O##*y^gfZ?vG^mq_KASVLyGQzQ2D{J+^`u1YyB^ z#qcc;aQYYPQ_(E&Umg4Q)h*UG*?3lLTvcxb=|R2uKkY#GfNFRSoB3yK8&tCTSBV#~ zOV=2DTyxPm#Z=i`xv29TiV`bpPCo3T@|kf0a>W$S;Vd7st-$4fNq5Pa)~H#)MBNIV z_<8p_7?U2kSE05EcVyaCrq#=)=8J@h&i(Wr$zuAvqfmTZdiC~v9(BxM4$O_swDe@- z6VG!!cF5LYUKT%6P6>hlRzImI{P9RBh~j-+ypc`@QOR12nIOG}0(1S@gPNubD{#gA@v1N89 zN%Z`YrXYRGV3C(h&~(_$^IG4eByrf~;`TYeA;o|&QwA{)v|~Y5ZG!4|BigJ6I6+HWvcd7Z&-foreUJ~#LV!M zR^hg`H`kpzKS<5T_tgu}>&lk7EPU6_x--OQGyY7&gZXm!7Hl6IF~7ol8haHWjm!8= zBn*yb(0h&%7zjlQ4y^#}thQ;U+?S0s#ZQKKy{`pS5D#Tdrk@mAmb98LO0-kXW_Ex} z$E!K`JSZzNfSUltkrDz|im@da&fhYJojqmVQeRlxY%BqT=YUyU8f*kMlr^iiA@i%9 z@|Y8#!j~B;>w59w;@Z*mb)66BXlQxxvHj?ne!lM5y4vdD%0hMKKn!A_B_;I<*3xPi zKOVc>z(y55Zq7V#x@orZzya3E(kcs|Fw%*Xy9_8sLK156J;&DrWt@!b0;1M;N#{`B zfZ=ssp`LV~4Cj;IyrjUcWo*HczWnw`Bqfaoj|(yRr3sGOYhe6q{Uj0ag_vA2r+KQs zoLDLri%TKHJCb2l`bOI@1hij_8cNW) zfwP=OWs?J^$|ZsAuqnfFhDm>lwiAaB{iAe{J26St#4)e`p~}(AIH{Q*jG_WJauln= zEi1cF%4swrh@c2S&12sT4yX}B*@J^0lL`f>nk<6t4T>T`8XFi}oJ6sxl0{vpYwJtn zwK!J8hQ&1j;WfTKojl8Ki`_1?~GtNpZ3qQVu%U)-Po{&{BPu z9Sv;`fr(r65iDXc1l`cg2`+M{koJBES}+bvM6aXmUP|;vyX|~xa3I>IOE}pf_DiEo zl9lM$Nc*L@w3;o?it>CGq)Y>sX(~>YU><%b=uLhQ-Gx`zp{y(V{(cuRlnf@s!#p92 ztAzw`)|WGW5M_Sh9kZP+a3}}Tb#q`yDctYGt) zwV@oUe*eB7%e`7KqHp=`5$^ZkAt3UFMWusVi3{(c=cLc7a23Y9(k5g6)!|eG>|z3$ zolpkv&94dlwJF$YY1?S*T}fPwBmG-&(^wC%gu(q&aApz?mx21WqGl#mzT%RnSw__- zQ8m6PqotJq3LC`KFSKWQi@5QicTttw5D{#(<)YXuR9*sMJ>8b<8EKUTp<%#j!%^yf zf75VGZ)fk^M%h`q4&&*nx`J`#r#1Fj?_nPZ(q(P}(@r`u=Ms|`&Cw@x^+CVl*R})5 zI3b1`AY$mB?i^jPv|PSaoh5LSgtBE@QVTa6Rr!g*BF*>t^TDe?|8|9rS|HX)J&m;Pz>0gj=Prnc&v_RK}ywP8q==KHRd!$A6O%p&B{Dt zP9oBZwQ(39-Hld>yaK0!{<{byvvi94m-kfmV&vApFz7aQQM8Ro^6mvH>Ev&r_ zw5z^JnH+f^j6JKJ;Nf!>M9{pHz84d!*5O80yoTKNBzk0X(U_{C%ztfm0qZz9bqDgy zk=1A(0|SAKl>rdc85_W7SjGmWJ!L?@Ago_ozoHFZfh7T8y{Yy7 z;ckUq0?wC@p|M}l<&auFvi*^*zT_l=8&DA!g<*7Sd9%66aQJF-n;8utP)2N*CS z|82Z|5bWjz_=&B)WEjz>x#0q?$>Rr*-VP_2bB&opGu@_giXJ33QL{4K8r+ORlHY^p zrQ`w9Tt&TqwMZ^A@gBd|>y2_f*#8xbpJZFq>|l2J=sv!C&t1HT{ny7+H^Vzb`w;;2 zKhM5Uj~ES3KhlK@0}v3;e_gxL8QR*UTxJ22q{s$=qW_Oii+_Nl4R$2Ji>|$(?jMq{ z4I6oPmUwcgWn;0-M$q8?;-ZF0Rbth6hx2@ZS4^SR?|RaSF<{6(C zlz0r5fb9NUzhjJsi4kD}t9U>|pB-oMja}S7MqC6FX0ai-lzsBdtN|-&gA!5~>7S6> z{-RXoF-nP8*aFm)6{FiMl*t&|>8*Jf$TBl% zRC4?1`{)!3pjDCu6ru;awufm3%Ad>)WYbqTfhwgx@+8g0L*&EzI-guWOCvONev)E}|66#4_@{H75 z?qPUH>9+zh>SqURIb`1yQNue;As5Fe2#?WVPl+Bb*pJMaoY^>aYFszT(uPHiEv_$` zj_{XR7@I1Yz6xg!nAxq+ciU{ut*%+3HgR1KpaGNhuB8+>TSotP1iEwLXe)55cjGi9 zV}h@dd`(*!sE~gI&m8WrUNvfVhQGrJ6Z9*k(g_T9t6p_ zHhf&#lzc#DKGKU;?GIFOJ}`5;6OXvdQ7xMl8HMBK&+aO)zR(g@Z~4n|Qdi6pkA0CI zAf$B)@<6Z8YcqSj;2{SUU0>*)GTDB}q~-WXUwu(?KGSI@y@6UNDm|13oc8Gy5oK)O ziE~oJbneMqWIP%rQFkCc+01KGwV7Swdfa4lcwR=6oxHW)BK}})^PEc289Q0#-4B)2 z@e9v)G`{U=S!`QI!Lk>gy!}r__Mhi102?COKVl$AmNyLF^zwCF6`WiIaC<5Zn7>1g zzhF*+v;l3zJ;~*Cue9j2ylLnppmOdswh&q$&?p{^H5%2=n+6yCbwP^9K2X(4LJdP;*45HS!8j{={+n}c+#w0GnTQMy@_4X`jY$Vix0L@YE zCER%!SI@q%%i<_fE|Xd(k%^P@%TA8gROtz_){swyElX%A)6PYii(0&`L>=n59yQZW z)J(|_znL5tojYz(sN}Onz7ick@H~Ps@*Nzti3(?W%t5HQb%XND>MCNF*4wj-#mBv! zUupj7P$9qR|NZa)SrX6aZ*`)l25@X<@U#eAnOB9?sc%RP%}g6zNb~#1Q9mE;+@jlv zH#H+HBeO?Z9wjGB+gWvZx4E+F*Q4dcXeRzH~S{;_JZut?tRFML*yO5DR zrmT~nz84XQ&l!M0GVtJ`VX7rt{Q22@7IJ~?0(Vg~Pv9fA9@9r(=&S%^fSr)Fn-WVq zhRD?!Ss_9^2JBZrYvQFQ_KB9wEdK(>wt}arPiGtJ!tsBE@As(n>S? z?T%W=!#nO`l~3}uT`nqH2yj;oaVd+Kd;T3A#y}XwS-TVUzNeLJC94}AZ=rd!8LJ>B zvY1|WxRi0LEzTbv`PZW(0RB=Id7S%#n$ADGj<*d4MEO!U1Rt&Brz92l)d|ku_trND z@f`*yn>!rlG0X+y93xwy5`pma_nE8bycbQZ99iu%iw~M4@TFstMYE+ddsi1LhibrW zxKAKG^C>t&>E?oCR<*Cj+&{mt$^jOwAfP1TQDM@hx)9qqs+Rl{fLcF}8xk$c@3L1{ z;V7;-6`)gDnS?!eQY*1qeaYGKr@Mc@IYHM1NULEW7UbVW`sNlHSdf)^Q`$$Y}^=q zWL@?&CH%D#boSI_d;Og;L;TXIFF3N=KjLG0YQQybQH0akK>PF8g*TSHX_V{!~U3gGnh$ngwc3 zh;H;?iq@$YY?f`?4&777RmJ1Puy|PolrgoK#ZMRgN)ArGDGE8&JWpD924GB$ z%@!zw!u9?o={3uaUQAJ)=f^3~Gzx`C+Fn3s|166T9LJ4P!=2T&HL%sfQ#Ftk@b|T( zX#>mCX?5GPDJWo!kWn*p8uuo3qtZgsvYu37$c|msY4hLTPBnXWPLzOe!l01l%|BeB zz8Qo|FX!xF04j*GK7_APC*wxWC_m@G$q_v> z?&)h!Ww z%UPtSLBy?2Y{iK#1^buYJ9l*ka5oxqch#z4h4-wLb9z<_N7Yur)nAm5%8R zK!YzXQ|=+a3r)%n;k>7huBpUkPDKWMb(FtCrkSi;4yrYNOKa^eh`p-$8!ZR(=?p zTM?^hsa5PL(KWE7>dd__=X3d{E(mJ&nN31901mAA&zN1|$%RUBT2)-yLVeMT;nc;a zNfBSG{3Xcolg?0UR{23*HhcU22~F4hXEaX+vI*&DWiBwURAV6A?|uoKbr{KxL%*p|$}6@*}Vm zpdUp0h?(8}gPv45od%iC7}j{*|4rhjR6Us)dm%r4AEn^kEKALAtc>nhnFRxBBe_#% zU<%mCY{|(GC@Owz06r!VO$*}BFz(*)yxJOQfrJdHdY<-K_*&ly(51t4;9?1BMKSp0 znJLG#aWLV??v&Sh1Y_0ga>+d;i}yJOu&B__TehO$a;u+OM(A3-R5xm1!=<%tPT1t@ zn1TocG3hUBPOouXu>&vugY8gki;eRzCQTj1yOHQU#JOVLH0X>WXk&_Ffa#Mtf{TYF&y8^2ZVt)aZCS_O2Ns*SR_1S=+xM>VKfyomxGE<>`Oswy;ljr zT2R=5WCP*^wKCKqpOMv;34c>)0s4PlR`W&ll7kO;m zCMi*TND^LF;A04{*q6Uk3*ACw!-9Z|X2Q3hLVAK!S_0wdSFG7I{n=Huf#c6N8W2RF zg6PB(Lh*-hbr&J@+*geyTPCe3uO7Yfio-u`jE+Ej%^wsLexs3@wV!{^1SE#OZzT>_ z+%-}>3d6xyk|QYyp>6@YX@@IknOo;+<~q-0nWO~)J~70%Udt%}A0OW}9A6mde?e!%=r2&nc!gS*pF;m z0=?l^$?8wg2>gz_*oGdy01jL;9vK5@ z{P0CVvK=Cvevv=$iiAq=aiCJOSqekA`lW*S@QS@6@QUKPn+$U8IQ=1^6hpnJiiRSK zq+1!W*#S zJ4w@JLbQUH@Iehkx67|mV_croJ+(OfN>1J;WZhsnz=HcoKGcHtzLX%c!&aH;Mg`J+# zFHW)QUA1(fC^2RWFg>6d&JZP%$s>s3Q{OHmhfW7e5o71wG(|jB%gYg)}innyl47t@WM6uEzA-;GlnAm}iQ;)BrDD_t%7R-nP# z*L%>#lNBf%2rCiWkBDPtdb=6EAdiVP(#cVbSWzO{N2*PPU#@Q?4(fJ(KA7c6%9y`g zLSF)U>R}+v_80OEY{%ai3BIvtcNcEHV_I7KNG=Pf-X zs~Tg)riv{dAcnGJAJsL(@2#PytN&L}pe8hi`Az!!2rjtT>^uMgEmR2i1+~cTZ|I7o zCu)+f7sv-EUpyFI$;Q}u40MLh( zWobK>LPl{c-BT2RwKn-6pi(U`j^<9>Cb_o_;4E^0(3Hh_XzalCb!W7-zlzFfl~X>@ zH$Uwi?2?2;q93PJWX3%@soNu`sWpSe$3_cChN2+|(Q(8($Cs`ak9x=J*7%cP>|t!o z{Cpl-UrNa!oP>btSR;~(fzCHi=xCTJLDG0K*#A#AGkM&xv>)SNYK^9a0Bp%=^l8se zCM;0XHb|8fM*)$p4r-?>Gh}+h#f?~hICkQ;FG7q&1H-Z zV!5({ImF(XOLt`GS>VAT7a9d>sbt^K%rD3eGT~e&6;7+qLr{~qMnXBg8+DSaAf2bgfu~Zc7t}J$uS~gAX@Ks)6VSjc(Dsw7y0n{ffw}O%ZDjunM6D zdI?@K?p=}O)obH_kLSgM)Ttr@xi)GiBmfm)#9hXq&;pU5_!rV-&KNC5J?u-+>jv7+ zqeVQ{OS1KFA^TkPoKe~g{-uZ3%Z&^RRc0mdM9jUpcE7*ZHlVY*5_pB9O-X+JD=n~- z!-1)Mwow5I#V}766O)R7ZEK+p(2S19&^6gLCa-&DTr#oG6=Rtcjj>QVKADvopQ|9h zy_q)Z$~vXkIw}dyb_YBbU?gbK74_7p zH}2wT+OuSF)r|Op;OdgH1LT7}6#=(_ik~{^`wX_sYmPy>I--Sr$D*4|mB?RqYn(I{ zetf|yH&du>u)YI}gKGAtiuY0M%yzqVA^3I*M?H8Cu8>me^tpdvc|&bBna|y>c4ZsU z)xQ?A`^st2r=-Ni)n(BJ0QtP|Wz*7yGd{hs+$ZGOLiTfn^7MrC>XNgNYCr?6a9*uK z+~7r9#@6kWm>B)>bPzP~UAcr>rz65Wr>(Tr%UfPsFN<0o^D z-H*#sAT;=U+S^uR24gOgej4;J>d3h@i9$V`7cxKgxbJ#9egu6!%ap+LW z&94V`Bw6pqAvK1S8bw=5S_knqJ(AHwgP#sY64g5}X>Owj1T~Gbq%LkuR@iWfD^?2z z1O>QT+7l~u3zwWT49sm#U(mztW&Q4chywL(i@OlE&k9NLCr5vA5*R3P(~rMt>vPN^ zRjL1fe7$3Hrs39x8QZpPJ007$Z5vN)+qP{x=@=cWW80dZnNRzz+Pm&`|AVvEwR`{# z6-O;klW2&Zs|V8u%y&bOzLy9d1VS#)&KG$YtRjG_DTQ_Wmty#J0)*X%_F8>sD zkaKnbt^hv3pAPyEAod4JZ8`~AAlZ7s1H{y0f5VQ!<+H&@IV-DXRQbT}Lc=Y%gC5rTD|y1f z_j8h5DwN%oRvbEbqR96d;dPX>-DB^>W~xU`xIW<%oKL|pE+LES6ojH_l4t8{lqarD zHa(CER}I4I$~@+6jRCyJR>^Y@w1HRq{>Fweg$IN(5^q;D9t2)mGYbf-1~wi56OTLk zux;8@%>)bT=8l|RB;tOLngK=Ys}RoMEosZiwa=K23TfRTBeZTouj?fnwm+*7ROc02 ztE9Xsqa-jzC{0-dXVe?ToMXlvBJa1E@5BCvy)&ijp-{pmhoV8@_fJf7y zyCk8@N5|(!Bco6QjzBMZW~*85AJzQQehA4>tQBVZ`TklKgn^b((arP%AR`e?A#~=5 z-a*);&?ajj?nuA7S4V|beCg4sqAo5I2Q-`JFC&h+-Rc)VYZ9y zZPpsmGAE8%4{EHT+HRGAWxC`=yS6)5v_a6kLoU(dSJ4ne;WV z$WD83VEFF@R5$uLpL-hRYY5$oa>@P2%i;AIty-dQImuX1aT!d)<2ivFuk2lw+f{=5 z#leTA@f|0}k&}V~vXWAv`Lkna(8PH_e&twZ)|XwKXhV+nMUee8IV30t}@KS4Eea7{cqpA zRd&~Qz0zY$cd?BY>SsBgsfQsgWg0t6k_}Q_#cUcb`O-0!xa>-`%?K0GT|97=O7;lY zvF-Ay>n<8^Js)qp4W79SX^kzDzu!YO_E1NtU!ESi5q|rJ@B6&QA1&ol0z>{^OdJ?^ zm8Uld5RgauZ9b^@e=FdPs_HpxFroR))pwvE+9Ds3Hn<>An!-HK~RiPy74pcR& zY+8-`f7M+fAla0%Ak6%$) zvk`UU8N_3nobv584NLC;Iu$m05nO;QWOe$CJK6E8?Ul@x@C=FsqnV~$*dQ?MdE<&@ zQ!6r$r1jC)k(yElltE+^9F^mfF$l>1?KPSQNErez7zCs)8gfEC=qG>_=R-+k6Z3<{md+l;CrT&a<+Gb<80vQ=?7bmqyptCHHh_Vz~uLoUbJ&-q~)^9n72 z{Y^HNiG=!nHU(}FlD@r?Tp1z0zQtCHA!YK#5$#dBwDAM*S5SyMl<`>MlFC?DQVxq% zl3lwCN5g-EZgeF9$kGMb*W<^!W(a%}YnpIN-(DQ;fbvtxp;JrdIKR=c88d;Fwa*fI z;}68P_w;yO;!G^`^Sar!r2|D+kjU`LXP2Y(UKhPe75=>k5l42QZfs-xSHl%+8(i~=idspq+jQ)OE4DDB~ zOzlMn%+NDhAwgkIDyE}%x_@+{fIJY%6<3DvlPkn^DnOdwS3alkabhe@_B`wQ&QE;5 zhRd$ICnGobKX}NxH15AabO1+cDn4#EH=zu@by?K#<8(3}uLgQPCiC>Ff;ZY{(1GE% z^*(EH^#*b=|B2^w;w#xnT~^-m0NvW`|I^jzu#Nbi<>$!Z{#nz1lFj=^H{?qBVxwME!zdAd?yR?f@{%Sd(-LWycawPyY0y4g6^v#kl~H(fj6V~UbNEl${KRT zmL200-@Ho@zh38L!gWEX_ZU~D`v{|jp{F`p)qa3CNGQR3ls{epw69|KerDK)KsTd$H%s-8dM6 zw9O~`mUOlgB;^Vb&}bxjBlOzg-Rl16+8G*Okj}-V*^GGJsQ#ifYo^8AP4Z06BfUic60nR;}+k; z{-;n~R~E47|B-)s(Efh}XLbV-#{W{OhMdEJI9%_)1LD~-C|uuA8_^EyBk*u^SzL9cbQ#S z7WUQeUZt(3QFpA7T>3}`vLS|UJ*+n}Asd}rSbiigl5}cMnK9+morN-J=^b?Oh=4Im zP--4x7g!Z-g;DtG&X? z8vBL72^aIJJ~d5N*ODl^lCZ8U8C~0I8fGfIGQ#xWppJEh-wqcr15-)qnqUN-_v>K; zBB5tzEAM^Fzgcrlhrla{NUQ>rRwLmy=}UftG^~tmXQIuZwz-K{0oF0O#EznWd6Co8 zG|A1rGm+RxMy7xg=BVKs+Z&o) z9&;po`Sc&}+aK7i^nE)NSjY;ghBA^Q7&C!o!=4XxCV_;p5Uv0dKk01{WvZmcQ#pzK ziQGgaJjfI?29;5&P%l*p24YA7?Z zj8Y!3%X~)+MhRQf?iU+~{H0)uebMI5d!@eKzAyA(u$+ff0r0`4Y7zQX0kc-X;sD&P z`QvM*~Lw|H^yheJ-X@EWlyULdaUye`ApZ@tviVf{;u0Odt5Ba=xrTX0wUth42 znkh}$kAn&^?iXfSy}EOA9elj1&#EAW+sAju);b}%RMzMKV+U1rszqZA|CU&@;0ZX-!)z7>aQv2gNN;ky9g(IN#M}vu4jQ?CW=R1 z6Q1DJ`zcDP#~Ed-BJUHT<#bx#R)e1`*R5u`)XjhD;+o`Gc#b&yk(zzpP0$Fef)AFL zO-!Wt!%$r#a`>vxz-2|qjcB%iczBHQ*)Qer!?#o_ge=T5d_!d!3-%_PSV}l#AN>8a z(1(;39bUQq%AH@Y_!bBEVtuQ_npUtcqx{ zU$f)ReEZ-(68@*hdDyr<2K*bZMv;Oy|4_1K^0Hz{HTANT& z+d##VdO;rBNx)5vuuNUbq@KOG_^+>tXV~5A6JGd^u(%Z%5@<`Ry2A0Km+P-gkq-y= zJj=SjtNW_#`2)X(c=*FW&rB~2xCK|q)1GPmB|pLy$OV{W~Lw$E;TiyPZ(YhI6ck3Ffy@F z!d;9;uqJUfwKs$G4Jexldj3Uz6ujH!x#U%wo@C=g?pE!XRWlAdfc5~a4LmQ&!=@!m z!R`nXD?706*Zg8z66I7uqf+41qfk&%lS&GfN)a9Dgn!<{61Y$q7SxvjZ7kN3UCDCD zi~@#pQT!{02ATq1C!t(f6Ivafl?;|dCZUeCd9Ri;JolsPJk~Y-X-ScXjTjjzf#yOG z(cT%In!+%`+rrQUV5$<1>GyE1%DWEos)UIY4QEUW9tLk^vcNG7?wU61`6G)7A#Tl; zG$AcJZ&;K+m9%A}ODqt{tW5#Jep@|xiOqv0K18y<=wF#Lky3Kh+kiRVHK8l&BN-># z4Fh0Q9U>_(*^{gKAc5Dp+kR35v1Kq}S7dHUO+HQ5Xy|+c%=LeL8T`D`UK-%J#XY~o z=_J6Sm6l&N;zfBrI}<6>`Y_>7!i}1^8PTvn$~Uv21w-FU^NsVoU!c1x7KkEbCz$!Ou@o(#XqwYmRwC7twa!t5@i~L zNuDGNk}Y-wP^hdY?38t9CB9$sndQ)*(3D6_53(VgZr$pXy|eCdE)u z((GH1aij&ch)qhlqWK%(%9?GZ%ehWVnHX(P(5pfK^x|1A+1&H&*z@dL9PcnLODi>c z&=+0I#J|0?CU#4$Yqn(QX!$9e#XFhWhl8nV9Y3VcPvL6b+mrR@@2hD;40{h@Q^Ye< zB4s%;KB>uzQin#0A*JM@x30!`hH*02(;0I<5A~md5XbyRg*2frX7nAo>})apF5v14 zR)6^d=zVw3a)y`0ixJYX%6XE3`2`iJU94lsMO~h5MKQLN`p+bZ_heh&0?5f%*5{2A zR9{~>uAzld$;(%XCwTS~n4P`H$w-mLBCtv1czr8}3+r9zE3OK+DX@Ik8`R6UHA;J> z4_XtQqv15IxAL7-LF{VgV3~Q)`(qocs18B@L6t&9MVnb9j4G%1+ce{mQL2YpN;9dZ z(_D}N0cDs}i5wg>7R#P7x~X5g!hCPk8U%Opt|XYwZy8>Q7c8`6^js2*QL-rFu7_N! z;u-7W(bYFWATf!esr$a^C!-}d<=)-UJ?A;_q^+0yI%($u_wD#UEgCB`(=p+;BBS ziee-pY5a7Lpqn7T3}J)(Y8z!{6{Rj&bEqZRg}KV{pB-R%y&vSzX_nJdF)VNZIG~9$ zQ;H~!w2t-HKOseH1yV+T)jC`7i2Tv5&D?6Zkg$rUUQLzBueS??!_|-~*=DbkyVNpc zhYaO?A;SfYIwC2+jycnPD5ISzlhxp$l8JoFkp_D8`;W&TWt!qwLDl@H5lFC5&i=5V zklfp#qr6eeM~m)Ep_HoFL(muj;*7%E^F|{X-SsZ%2q*JxUlkue(vSk&MkWv-nxp!q z_wH|tXNrM-U4CI$kA)8MG?SRWyn!C#*l+{C^dym3Dbt~+9lLIcgMvIoV4-MILtoEQSuEXqQo zuXq5*GCTt@Jb4Yy-|0AU&eVg*3&C_Mu?b;e8ljZ!KNF)q5;U z8;34E$~zHautL0ohcZ4wbaaYzx`?d_-+fC^FjdtnDF5!S9&`Nx=nP;e`6oFIvZs`p zn`ehdi8VGa_8fs2{500_{V7>P-%x_P`@Gt}CsCLhFP!dxBJhBN~3ij;Trki^(7lL zCWyAh5}(s7ALTj#JP27Q4DaKDl=q^P(`e-&_}-C;iTWpp@0?g%`Q&@wd?cGkErjR$ znCuEd?goZw`W@@#fw|nlpA7!8ibudA4_oYxL0Uq?o@MDfD`lO*S)uUXJ4?<>$Qs3G z2T*8})~`|p+e}l*>LYf4aUEEWTpH+aVka86OcV8N=#EMQRNhs0KTe>2+k44{c!q8p zgkgBb@;_9%x(Ywv;-dGXK1u@-p}LM&m4wY7)5*+sP1` zDOei*AnHZ;np6Dn+7F|_>cgH?$Gc~jqxEo5J_FkQP}}{=^6RAiiRbiKFa(;0=BUBv zu1tP@>1v$=ye#*+rxEnHokYg|Hg8^na8#bxC&wOR*1hynzB;5`7(&Jr>2@p>jc;th z;ZS5}_hCbm61>H`_VsW!=Ax4#}RhNxcN`ok8=rVmK0W3=@*!qt+n zs~0&pdexOLehw7F+9a4jNwF3NvgK(i}rsX=O>%9+mq$HV3jJ{gvE#yq8%^_FLNwDiB4i0_Ozll=()~|uQ@Qd_{Wb3J@ z;lBO>v~mx5eW{Y7c9oUHP5m4}e+C*4dU&{!>QM-+U%#~dE#b+5HN!}IoXMM}U>SvM zN~%Agf9>IVvhA&2y|`HbzQ9s>AYRVL!{YvvoTS$BTAjV(N5?A8V4JXWl4YSTV!w8$ z^XaGIgZ%kb_56)#%-z0haqn@_j0KlaBCB0a@QMw)*#Cd#2_2W{uAl!Eb2cT?=hQ(c z({oxuG5%X6@(Rz!0k`w68vwrVD+Sj}O4&G1ySHXfbcoWOw!No~#?dMx#aBPUpJb!s zaSFJBBdlK8Oj^karV&K4O3%Tb^$9EPAt}GilZeTYG)j?uem;jE63vljh^f20>h%`0 zSD5qv)y+e?0)YHeyO^SJgPZEj-u5w-xaraD;pjMpVvf~0jZ%h)@N923g~qNMA7LD8;<9dAF`f18iuWV-Fy1fb!;X&_$V^u&|U8vpg?5ly6> z3qk?Wfzyg}W~wyO!jMSeYZdL2b(>+DMLi^zgDA!<6z(0~^KaUYh|QbD#Tc?C;anFD=9h@zBOI^*TPqc z2xugO8kq7aWf_zlynvu=m=mHZ_HPj)lforzlJtyHhDpYDqM3~_`#G`gQkigFp!-9J z35L|`kxq{5s9C)K$47U)##cCF|IU}czxQ)8C7hWbL()P*>)iJ0dlSe-YU@nCyS0Ft1~ zymntuTiPub5E`dS@*r-dahWt&N#Mr!zgAY=-gKgDQ=y;}vHWj{QP(sq_$GRoi180@ zs}m?IVmDO@$>ca7G04C%L(8-@5=mC1u-LFFWX57hjhZHNXfT z2>SA#@a-MOG?HZ}Av1%bN__&s{^z|pL+!7d)D{2E7C~i0Q zp7WHi38|vWQh9LU^AfnVV^NJ~re9@BG7 zBFzGyI&R9~rRhM>`*ZuP*L=4xvJT*F0`wf{W5DbmaRe32Ipyu=Z~4R8PK2t?J0=$g7P*7chX`sF^l4(JdLOi(kOATM^pZZ`HfwNGLuEyczgXFhbCE8qwhwFEj+ z#*Vna$F$)H`#O6)rvamzGoWcAINph(hEvXF?F5>Dpw){woC~@%P#Cs_y+sny+4XMQ zOP;fR)D`uG<3hZCjoAXeBmvHbYzwfmABpK419BGn(AA_#OA}y&28i*r;ren!I!&6V zFO{xFUpnaKc&Kx7$=5LE*ee*;o5ZR^F3+!BG_bSqEJ-4SOTv5dpV$!dVqO~Qqm~4r zXCsi5W(XRZo>H)MJ=}vaxbNpMA1<3fvl=y66%mPbxattAj7wwl(ohxuaosFo+cp@S zg;A$&0|3{wydR0~0irDg6Gj5`gJU4ZO1ji)&*|g}fod#E1RF$Q)B_*XA(c`ioy)3K zu?c|1R@!f@TgNurPe-%S@6+qvFUUn^1@k8UV!WLS-$|MmNEIX_%%Da8f_)>>{TQAC zUbYbtK7Z0~)^|`(h_mAE=u4a>bp2(Z0aQ6bFzG}%V1pu~19`qm--h1Ei%aNJYbw6fGMt2J8cUm69aD0tNN zKU!#YJW%Fp6b7gG4Zt9%>mC$s3IoqC3xI2#HYll*qjHz5D-~ad1$DfNc@QnAY6;Y< zK%u&bnD7|s27vI5DNf0ia}E65i#SC9|D@yw#0#42a3{45@7(3YwYMZ=Y4{_`_Vnme zm;EtMEHjG3_|gC~CirJyZOQSLm#iQVwQ)6!CP9fV%!V3GMQiNhPROJJ2j^zJVOp4x zN^^+VSo_3PQqmFXUj{CM1lm_%4q5mJ{9P}UP8porV*vQ+80JoEDa$@G)BA@P5QfXc zWy1vAA+X<9)9}Gm2^tzFeySah<%7y=+w;mMmZ+p00N5?Eg6I|E0J|B%{Cl*r1yfD1 zdx^L{X5*}!;3PJ|Tl?I$!?iRhNhE}U72NQuNVo~R1t&F@CSrv^7THno_)l>lW55eCrUoT?+SN31$r*~O<4__cL$gj_U zB#FFoDqXfgwYw&^-WTpp@+f4t%h2pun)Er_aJ1U7C+X_)x|d_!`$EtVIs21 zp*#mu2Vp;M_;dS@Qy_Ok6^SUd6nvSz{S8;A5P+kez6YZH;Hx;n-HiTkP(ak$*_MVC z(S1JbeQdPmuK-D|>%ME>>1dG}QX$;G$YFTE#6w=51$5I^DYo3_HuC%RAb5J6af|wh z#nJrWK#2U1RG)s8(2uY^yhGQeUl{h{c*^)i(t_H=08qJG)8u$Bfhl1IbYdbYBTQ`b z4S;@o+45N8yg*pV3a0-_22!zC=OB=Sju;%CLw>+2bQ7B8#A06&vvbRKHqnCdvnU@^ zL{?xTf!7WXBGx!F<4t{FzF~rHrqsX$U_RGJRwziInLweD1;ju!OzuKxLj)(+L%K8O z-g?)E%fnT>z%%i*Uqse@>f;`NYDzhE8&JHImlX^>`!(ICJ6^p8uj0a-ki5uUxK=wV zO0x!w;*e^{XL~fXcR0)PkT(pO1K!L6P=_?-^lirN^C}$X{Bu~xCBNPgUySy#SMhb_ z$*I+R5#?JynWc-IzFYT!1pIE*J2XA>uI(`ip7Z+{+T2lo4#hUg^^E*IC|O>w0N~)i z+eC>8Sh-fjI-R z_RSWGcq{|eL_6{5rLH@xKs^`31Ng~kog+PdYs)kisNEH9-1O}{Fru^OQg&W^gLIC$ zVu*D=Td=?NAz*=jN&dOeP3Uw^5rNzhwKe?7NJ8KfB&EE+EVJX)P zvyH#rujm|KzV>B*VHy1C2B4F-uYh33pRMo0c=9!x+Mgq=LvGB0=qW-Cc)_GH@&)-; zG+Apd+yU2fJ{b5N{&0$*S)T}8?RY*Ifz`(ebohM*DtGSR0br7A^2BVu)ycyT;jc{h zd(M5)pHaaMc4O9}EjLE1cjRrx9C%rq7U>sbt_!cF|B(5Etc>! z0xw*O1Kfo38Qi4JIqajZ@7%dVD!)Q$a^=g#L=bwVS6B6#gUT>IwQnzwyZQuIZ$wt( zxY)#;;Nh}_0*g`Kf8lUdvVwucUrx9)6=moSn-l>zX}BBV4-}}*p$R=|At8ZgqH7;5 z%j4p+u}m8!bBW6jz82a^Q0`*@(jZ5}RdH26G>@h@?GA2Ge*NO}dzU6~p8(ELK+rkN zgz`7pH&%eEZ4nj}u&f4gFF>u}r_|{Q+F1hH54i2gizPe|4JJr1-jlgoA%Jp``STa6 zhHR9%Ir`tx7`kVl1!pH4N!I|F%)pfZY>mDWvLW#*eksJK-USScpH3(mz{m(mmCn7s zr3w}FRd*B1p%BoRY##T%w1v!Y!r_GH{hG^*9D%618)&bRk3XUXZR-;TNin1XM4`+* z9XMA7X^@Q2u_ZU7Sc`+^?-r^4qGyyxwd$JVbO3CUS}aHN?{l}w=-B(D#OWxFQM@dC zw-X5c#dxwD&aT7ffZ)G80EzJfpK9l;6BraPZDnXbaF6!(dj=gXgv>d}H_gprmM+{{ zs|(`M%qGQut)u|O(Vq(rpNpKczu?n>yU;Ji)v%8gjK*u-qd{4i2SGIYt0J> zefpFG*{h4zC-{G=FPbn?yXRlGR}BdWi0a>ZcQPkCUiyF#C}etE6A|S9==*MK=qcbz zp!w|@IEm?_{KgU~pqKQM9E?m@6l^H2sG{-d@#)QD%3GhF-r!RE@tND!8whZ+N`+j8 z{JnGc#r2ZM>S1m$FL*>Og%Dw<&ShtEN;Vmd$;NZmdjs#?(!6&UNAoxf@U3s|Mm6G- z)~-e6!0WuXYfVa|U8}Ch<)0CkV8a=*fXXk-Ky03JPa%sdb2{jpRu5qvWO? zF~AnC$V31}1TNgMo`W@m!{^2AWzEfOqB)6Pbo4Y~1)eWM#KW95SR7aOGAnNDS@;xQ z$D_XJm-nnwAy9QAKe^2Z02d=lOmf7IG3dmddc0X{H1HDV-phs(UtUy3a z!33BO>|D548kA8(mTZm>SLV_dv(kY2EVfaRddXwsPw*^TP(1H=O>xoKfymwZD8F-| z+e9|VHfQ!#NcjaNzY_z!MMyZt=&<8`E7xO-6dG z2a>(AZ1inS%Q!4M62im35YxK^fBMrdg@9Tn8^r2AG{YTzBTRpbtjl zbZ=i*Bf#g-6*5t9hEGm=SvpkFMGD#NP#A@@EiOWywDT-?E3-a6MzpyjcIn^)8$HU7 zyHV}@CZq+Le_hl8G%OLV_lh^6v_xv1bi?Bmt#U|AADko7=*}-5Z)U79DuQC8i*h@{ zHj3m2@c$~DR)gyIo1I?Mmt8)I7x2Y8j5g@k_2=b1``Q9>DUG%GL+8*Kn;SeqH;^k& z^`5kOXc#bpOw+OZ6B-6F<_p>ri#~zjt>I2>t{f_D0&Tzv_#Ud9&JH^_k?Lc<3(NV( zY{;fbPJ`G^m{!S^r$(FBDrh3=``c2pf%6n|(K0)3kcJphkRC%OQG!g)0Bed+nOr}0 zxq=L@D0VK(-7Fj+S_$)jCyi>>RokX(p~E>j>pO-R**{w@yfKCZMXmfuZW(5m3Uj#P z*-!;)3@7;;Am8kWtK?OmmdaCz)^aLmCsIx+RPg8EnP8x|H~4G#i_pLW(cq^gUcsZ^ z&*9ARrJxd+emA2YG598x?xl{7!`z1wW0zLXw3-09V8#_j30zrKXCfe|#W<_*0 z)xq;BfMXjMcRwai4Rm3QMJj#$_L1cHg5PEy*GgfW3UTi;hmOdH7;4*nwRyECdd_*I zyj0Ez_mU9sRp(S|ZQNTd=`%#pmJp5?sQ&g&_`{c$zR&F3d;GRf+`>z_zV2Z2mfwyk zJZk}O?RIJ2RSczeocVz>9HffPm%&y--niT|08eb_#B0}t&<}I{O@*Un_PgstnZ#u8 z@sJR@&t3l|N;%v!&-PElphe-|M|ZSc{8JPinl;ZwLnQmXkAC}pg$wsx{3`Fvx*dT$ zdE}BXaaDiK_n)OEucfp(@40XI|MZ2y4rz5Q|6XDWa3CP2|L@dA`WgrbVfuR$5%T}= zgs~|)4miw6p}Q{{F%u%m=yVAQZ9?ZFS@TfT=^RL6YHE#R1Ot()JFg(?pYL&jNMsuo zh>|rPud~>5*w1^)v&h%dgM3|NR-o2OIF-G>lS~~D@1u8+vS9HzwWzZnhHJJD#eD$F zeaPwp){^|?5+>DrQcJLpj{o+tJA`?~?xN(E$T-Qhk4qQ)57X$)}so(je zIHnO1qR`#+qzN4Es3m12z!*zhLOj53>^3rFbde5un`;E)|F|VX99}D>aesQlSXT2W z63Z`qUk?S$8j;jK6o@d3!=5dUE7{4RKzj#4(lw7xn}r;nycp)2{xj{f~>{5wF5u%?V+ReqyhzOBIKSo#M3 zyeHLLdb;@tmMS*c3BqC8No)rhtvHW|Oj6H)}6>@sts^CwglW~_r*zZ_M7br5t( zjV@Y`=^FIwPYhwgI9$DiAI9h|y1#@9E}%t2?N{4Dix91I(UGa zXQL8<|M4k@n)4|C!m5c0e>OqbwXi8E8-O|qd>P8De(yhj$ebX+PU z8lX*71atzic$t@bC8Sg_5{q5OZ1Vq1VdOiUHN^u10X2c8D?$9LXFE0%q5TilUnL3I z;Qmwn%{w}1AGQT22mhP8wF+DzyAw#Lvio>-BfX}~RLr6I!v$+MgFPZeNjrge(n#M; z?DJWy;gQ0j${s>rh^X;2+{7kUj)F24D~?dF<_@dh+-5bHJ)c4L{==A$69nZbRErsNMdsh>!6%}}is=nk{lkfD;9I#TCgY|e@BCZn70>xLVk^vd6 zu5Gjd-I%#mqI}wyTJDiV{c!Zzgbb@~P7t%;CUgNQ3)_mc1;!;IIvy~jF0=u6@7gt! z57*~c3a94to<2ib>phLO>>>lX0~LZxs5{@QV^kQZMQ>|CrU!UH|EQKkDewl=J+ zS<+c0JHuZ$63UBwcqdjC**3j`jcs&^Xky=@%F6l;h(r3+euMt>9mkoenT9?z&D!L! zuopVArcQOH=5hcJqy14>_ddYw_17uae7*P@nVA`o4Z%Dk`!mtf!k*AzX6aNm4Zr$^=jH<+u@?Ap$Uk0E6j?AU z@fm2|mh8Uz8M+O(aU2>_r1}k43twwPvB7hKxw4;eGn_CnP&r&L!=6vyiUb=0vFDRC5Ah4rI4e#?g#3fq)w(b1(x8u`6$ zF|wT!dXt8_JyRcq;?vOopfMkaX1QtRK_R#>J0}2ZjWuJPYV+TlzdrA|;^6wy+M1EG zwu}TeG)zh2(_cdHisCz(lNgT6GLWpNGd=7?;9mop$@NTYz_k^@Uv;Zzw8gc7yX@gx zXq;^W7a*`&Y9U%Ww5Q+)Oo4Le8Nf#KEtVDr|vvN#e#x z=_`1pqp-ll77`JnW}IWs8&N_Vhe7;X;Z`SDz}?H=*OtKY!lZ_S7On@XiqsbhI_V92 zSjqv#x-D7|vwIYxQ(Rm9{ha#JPHxpdM&S+@PRGK>f^Ra!Y#n%p6f_;bL%4w) zSk^rwCOBHpMGzmh7cLEcDNAly?VjjGS1a%?v=ov@C+jukGR;NE{1oWpFwp02fy$do#PF(!Cy2cj{WB~xoK<`Z(M}y6XgJIe+JfwjRU|VbR)V7C5Z*yyXYiHea zeS6KjwYBl7-sTe$@nr5Jg1XrV@!k9Kllifgb!ljL)X_Sl6pcUPD`bLz4tm1?hzAM> zGKgMj&yL8=T3k=(B73u5zu&vF^X}bk9I#pTlf!i1mJ9BmGn$uFF#)g;NA>K59x*!L zq)B4yXBy&j$2{Uk?Et+zu3P_=U z$dC_BfSRcU9psZQ(G$b&M(b9jK<)UF-BKhvPo*xiJbGv{1qOsIq-O|3*PoUzQUvVY zyop7S1~5GC8Q#k~Y?V3?k+I-Z3U@z?8u$6(90#ivX$A(G{5hKvi)-fep^-}{4A(}v zR=U-}>;;<`vc%y%Oz((@RFW1p&p{gctvIy zabtBp!d2nO`2;*H^(=2vJrM-chGh!e7~iltwoM&$m{>`vtGgepU2S%VHv_i_ew&+; zhRu(z7=7Jvfzj(l-c?ShfJSd8SIB{ON% z_I(IiZF@*Xh-P?%;IBgXa|9i?we2-sK$2w@7RdN882)(1+w`JI2D#L?Q zXNiz_tD!s$$B?dIJ)=2|{0tJW^gMs-THnkeKLg?gW{{o*j+nY#XjGweDRGX)(op?UF+%7SKg!Ef^8q1N_7V(oxfw&k2x$ue z`P4mFZ)j+|03AAx)xr$=)~yzunzRMNYsPjN-!hYZm_oS%4&cJxgv@f zI>#%=?`R41Cl+Ke1QX~IyO8`bvl0UN&)Jh3u8!7Vw7G6ew-3n3j;0h)RJBvdlmalQ zxxf_3zZ9h#P`}v+s+^Aagr!8+Ves&J7yuBSdbZ7CL973-LDomJA`JPfQi{?FW#)Gt z$RUSyY{U7@<{sBwcP|BKdFLNE@!vX9PW^IqjC)P!u539AXSIx?@40M@24PZoSTJEl z8XyF5IO#upegKgje$F+|?|)KI@j*6VCLy^fS72@RE;@y!&-)aa$!<1~kNaf^2##kc z=Xhb z{soV z1?;6&$tdMo_k=q%hqOm|2Xw@PY>w^NxBvEOGE3S+upK@yJ8-mh%6a(fygB&S?$l#d zDukAJ->f?dU(*ac%(Be+)AKM}j}wrY@9JCMx>FUhf3t=k9)`WWjd*D7aly4sFJV9n za2wUrfH|##f6Z}FH6Q|sf2e6$ADa2EK z9()IYR=hXFageDz%9fZZgzUk2r@nk_@%Iu^B!40hQpviAiNdnbo(MiVrAft<`+vDd z9H`=We=Qt|tJ}8{7OU)xxCXsc%2J zBsz+gbNo6F3v|R(vZ<%~64&>Mp7;uuIwKI2YMGI?JKB`g)yYIBH|>b7Y89Egw>oNY zG+rf8Vo&SP1~NRWa^H)4XpfHnVs)D>&*LVOYi=ASSc8^efs&}Zp{4oXg2?-@#D7EcV+zLx_N_hHEUMB{q`jW>X*T_ zKumbbbvWjWmh>Yz!$gh$oJuDg*6&(tj~F#0D0Z7*zwnO>%yo-ZB#${>_4Ce=)}v zJX4D#cUuBO7(JCXnAx19g}km;gm-+&PFGio2NEFYh*nb}P$-nanxlLC| zt${DnWU>-ulOKGEnjs6N{s=kR5{Sf1{gAkQE^1+yEWq)g!exfW$ z#+*alH>d|tx9Y3NV!b@S0TjNHkR>0>k@p2y$8cDUEMxAf6tF^5dSR9 zC;EkO^>VPwxJiX5XIKX#NI1nE>)RW?&@N-fzv2H6U+);CSrlbyr)}G|U1{64ZB^<` z+qP}nww;x>RcTFicYNQ(^hD2}bMK9~e|N;$d$08@cG7W#Wt0?!TWR5tK;S^I)XidB z0dh#vEKr$2DKS7#-Qhs}kCi7b82JFKZMDYS87f7V0U)46jlR{*C&*5%9mEuO_^LU* zHGIPel8B>dCGeK#vO zWC24H2w=6f4ttGvEVugrsh^>Mq8fEn?zK|}WS#I9OkTcZe1Dk~DThpO-$Sc27uieRU*zGCkg z=vv&qGj|_kzzDw``4ae%vc`?xZ4;ZZ3)w!T3OHm7hb8xgZz(dNR+ztmWye2J&r@CY zh%g*WdEC~!E$xnl{UyuqoR{b?J*Hd6q06^Op+Y!zTCGWXyc5a(VC$htf>K+fn^(=z z-2uw|(aEo{wFiUlrI@z`_hF<2@FFJ1F>I^${{!S|Mv7#xW=FeSQ0y;39p(_vJA@nq z1Yl=R#*Y9#l0>t)!4Rz<_$^9bd);P`kzKx@{QdseRadkzl-Ae#wba+~MOn+8b5>>TDB|a0e+%G+;=0+okvP^YEHpcZG?F12)W-l!7{Zc zTba0Ah_Md5Glka~(UhtfR%g`EXTVUvrvbOu^T1S}2KEM$29V3MaYwa8{x(?Cb)5o& z=LV#0>pCIc;fay->V}eL>5^Ccf@vopH*@9#+^k>>C605js9}`q{lAz@e1Eoj0HGGi z3jQg=_@H_&+3oTixAtz0Z{xu3%B5;ADSk=6>YkU`zLnY9d9U!VCO=L{V}j|}H#k?C zSax(daN3<|aD}XuDHQT1FTRr4ExO{Lr=% zcia&g1B?(z!HxDV>U;g}94XdY0YJNCZKl1*4$!{ceaDdNc5@!@_)a@s0F+3zICH%&gRJg=c-qd4th{FT4b}w`|3`g0dUEv5I3=SXy(|BUB8SC0I=|x1s8lH(G;Qt z1-6lqZbpLlMR{2|b3RUE)?gf>*tfb~g-W}bKxNPzY8X`u@9lFXG2M+C0BRU+3L9|C0N0cChQaHl{=- zfqXvyZZnjO|D~kxfh>i)h-@Iz#uvSB9GE9j7vMG94r|YI@Gp%Hu(75PI0t2cr#7s0s%3k?dJfKrEND8A^yLH-CCFbfinNO=?ir1BMUfQf7n`wakbk7KijO8QnVdH zQaRW#Cyk(yB6s_F-&RVbr?gMS47F2C07(_yxz+E6yv6oL*8WXh1GZ%O7n_VkjisS< z+mg?F)Z8Ifeq$dUEQ~KD43Os6ni6=TUU{TBU25wdn>FY3 z_-4NQ269!skYD2tZTna-;z@Frvn=a4rSqDlgW-b9u)Ww3O=o!&;|o$stm*`34_T{S z5sgh|r3!bID1nW|q2Xmi$XgOd7pX}WW2S)u0Pn9>raSNw>O13R1^7oPf)eh_P_RRV zvWzTZB~RwdhV;`u2QcRQQt!izy!Erk1sImX$IVQK$XZ;*F=C&oMHPq}0l&{t^A5a> z$BDm^MS;%C&SW$r;kK^bcjm}j5N@dcg;{};)jLSkv?8KL6^DH|rWf~VG*7oGa&4N4 z?S0^iF`UfY7Ao7I08o%%%XCFWwf!v^^oPhg2Lq?)I#1134aZ<}>4sM_X_3W{d@T9s zS2iQd0En<^a+8YUnXQ&9F}2RjMlU_@MrxVuw<(aoB*wXXpRetAEsd-&<}vp60NnnX z45Uw@eDFu8GnhUV49#>gvMne_#Kpij5JeOUSW(*maWa;xT_bR%U0k; z>VFBwQzuE5aA{X9{R_|t#tDCg?GkW{aU8X;`W%0v`husp2Ewl2(~8KRguUX} z^a`9Qycg+PEaJZ01Il(gpRE`1j|}--37lznqI_mlgczD97j=Ml=OfDkb#Pxl`5JlU zsl@)sHPe3q>pA2S@>ykjU`MU%(7AS+)E#<%pEWP#0iG#U0PD|?MF9e@Ul4Z(1pPkp z2mJ61);BvSCd~)W6Gy#}ehjZFgOG-GK#5&VL`isBk6@2Gxw3;)tPd#96SUm+r)VhB zt-8je?N^Q04EkL`_5c=~xKLjJ-*aSH#D_+1uN>8;69Io`x{l~6dAgfc{UB2aaLBb% z<7sXHAlZfz$jnhzkrK(sUntfJJIe;WOOT>j`d2}1B1XjqP71RANyI0`1b1f+_4i3>Rl6BVdb;*-W+CoaTO}u7dk23c5OB+u^i5Q4e3v& z1cWnI7n%1p9C64bjVXKk)jo+AOo6CY1s4en;G{sv1$Y-a!{gtIlpvD91GsOt$P^q4 zHX4NK4;HG)MG&f(`~lro1VH63=hebujcd=3>*lX`0i+1?%X?43U0?*Er_lPp1XK^c zi`abjTZBM;3p`I30@-fA^?}==xBko6;9cAYB_={NUE}*Q51deCUf*FHkjttgWj!uN zKzVlgFFI+@O!0rJBd`xdRa7Iq5nXX!PsiJ-#B=>=B(of`uBkxYcf4yr{XOY?oQo&P zo#NlX1CzV^_KrH81sf=)hc`= ztZ~E|cp}{iQNbw4_2}*JVYDR>Hq`;FWi_Cc%~&j6;X} zx`|!AAl7sX@}_LP*lmy`K|z+a{8%(0WTX^9(Le;{HtWa{T2E0c835 z3JtgTY5as?;q3scgupuymL{@$o-VrGpEChl!)cP z%F{NsJoUl&ZR(X>a;w(oDk{r$WYJ?zpVxmfo=n2ECR_3{C!PBMy*!$Z( zJO-xeV(TDl)UP%;QHR?e$5D|R`sgsg( z+6Ll3ui34RvO5_sAxx%-KLK3U(R5bE%g*e3a;eT~hi!{KvW*sYNso+n&60}tpXi&4 zru}A8niVYrvQvDGF?W`tG;8$gyU8=L%d4xri_7;K0A{n}`UV;> zTd(^OJiS_gsB{~2%r}Oanq!_k1B3o^tydjGmquEh_v`udrh>j+P9L9?F>`_$h2_tR zR}jTXSTYzh{FC8f;Z}*&IE#CJQ&?Doew45j48p6l#(+pg^h%}~$ghlbZIgmX0A{5l zScfGx-K&JFC|6kq#=z-lB|xyJyx<(XKn!_Aofdvwn{8^x-eWdrI@ayxuK+J5tI)j> z!{11oQ#PeA0{iH9UK7Dsa|&FxKy*uI!~Ko7-%PE}{nS(Dy_*0g`fW4{bZ~gnhz%R- zfh{)Gl!kB3vPRXjkJd=Uejd0S0PqrdA=NZQ*g;G~n^NNYwTnlYxV=%!YgG@fA3t<& z#%Vqko~L1&{tF6%lTn9iMkJ+OUDUIJNhxEk(CX!;aEv2qkNWCaJ9F$ElJkrEKW2lk zEugLbkNq#ecd~EMP&?3zHs0ZV_>S>vQV1M&4t4rsKFmfbd$WXB7R`PWpu4B2y1>cd z+|P~s(~>^u&(kg#x3YQFUWrW&!NyfXYJYH9NC<4o_9dc6fE9G-&0% zT^#}wNca6bar3A;Z-)gDO(J~2G`h!7h*h0ar5pz*a8=rbGy2kW&$O_&J)1fsHQMjM z&;OcLDMA&!Jn~ez##w&eoY69?f&VvX=DrvcC*?qtgym`aA1gO`4BbPp&w%J|%6EKKrK<~PHc=*G}5 zzW?-P%wze=i+}rXbu4|}<$w(j1SBN!Uu>Rqfn zukuoo@lxN^wq{7ILRZ$@*7o?%MX5NF)Q-)UofL+EbOsb4?`BUqk4ot74hJrEg((VO zPJ*oV?XS3aSYQky+Gz$b)vfmjdJ30;{!6aNY142eCG!eOkzxecuoHb<lv1Ei68J4u6P*$R1fo6r!}Fc;3Or}c zP!1@K#(l&>Rqx1_Hq9H3_zQ&Z37*ig=u1HU!uXIX*r*{SCVYq61VQh)u6~sRT`F;l zPqG0@_g`swiC)Z|@ihpt&Z*j_=UvFL6_KOkrtkn|y6591z@En2!)3 zYvDb%D_CZR{#j!zAxMh^%Ly7FAtFitjV;LcDj0cqnO>npLXcn#=ipSTWeOI_wQg1N z8W~C(JQv@Tz&R((3M$M0@Rw!67+mRDVssvGu}ubC7fW24xu-?~+EghTz~_YFMoiS7 zuG=6P7$D-ALA7W$Tvm`5qT0|;S_BN)GMU^Um`F!{74ep_+IE0UhqNvXM7(591ly|$ z#RE~hrb}b$Y&05gF0wUOjJXKD+v8P;EV{$}+s)b8{r&szwt~bh;QbBl8$ZVjwQdJM znAfvN_dznT*a7zxF4rJ3f>BMR)x?k5Uk!g7&<>QE^zP%*4DfMvZT1$tLGb}E4VuRu zL~@1u`<%W9#QKL6EAJ>J4>}`U!;Cp@E;bs8IIg`i=>VsX3K~d?7L{4FE9HnQtypw< zF`3D<7H5meP(}Ob!59iV!(HT=7#R~FyxLhoH`0k9ix(GhK!UZn9%gpjGLWK_UvrN3 zmq?W;H{g%Mt5%(ATn}!U?X$5=G&)@JvD?Y{)uJf@6i`<=&$V9sd}8yFV9;f!KFM<3 z5-q6%7S?CBBb1T>Q}hb#aY8wv5T3DH$f5~B{Ex*rN_^$tp9oQMNzUsv<|7S2fQcKm z-Dp4Y6l#W_+3|C;vU8%xJNBp61zaVzeiJe5^&`9*sONO2c{>5yF;Lej*c688BVFXe zh-1qpT;K#CKYPE*|uY#{O>P+ip8*&Hm8=-Ohau(@2tP@ zLN+xeKCLUc?pyI=8%b(76npA;v8U=`U=Y)^$a*KqFe3q=ksz;PhfWNz!IBUzNjJCk zG{5UpByUPr^x=+gmY52F-=@Vm=Bk0t`hSoXv{29l2dOww2E#$GpI(arVp9dE{_sR~ zT!U}}%~>Q5tLUOEK>;M`g80!=c%6=df_-5Lx=2MjuL47kbJU+OcUf4)a)NpMK)Djm zStG^hNis}mp2J@C0!vjn;^exS`+~Z_U|o@4WQM?8#KLV5Ks$|uI{~ODHxH!_CxR#b z{8Dowk7X?~uePFivwgsw?QvJ=&$je6Q+^H8jP+>D`MnF$}u zk|uxTdV35AERINi7XL1ih<@>YP!KHUGCgV{y1W-I^=quF!4JHvO=bgk&)*vwtw!Bm z(jDokHYB?~^2Xs8=4cK6B8iXv(?|(0lNk~>Km*qpmBz98Zgi3Wh}vKDl<39W8M!dP zvY{m2-W{N~*Evb4*|Ty962Eq3_|AXppE)r;v&@~)bg8-@B&tLf?OCB}^Q}8k8r@!D%PgzoA_#m`GJk_>;jaCoX7**5t6CPK z*D!<2pMWzl#;^vSoS9m=5V44dTvkH&IHtQ=m9rxjONKX3W{&Ou&RF3_PmGR44)}$(;}@9iWW{uqO1`F4V>3b5mr+xz}h2 z+jjtw!gt`zLEUq}E$GLYz@*tQh0$EDS#5Jtjn2sBKbjO!2wdb-nMs_QHlaEEDc#T% zXDok(LH7Y><9Ad^x?kaF5Q&#n1u++|QY&5d z^8lCpgIL=GFnIi+J%wBqd+yP<9J%tQ1AY^RRN=sK1 zS=@R;N{|yKB-dJ>dU^E^%M(pds>oG4Ps@t&8G~rM_UXs=EtSnaEMI&k>u9&C4SQ6~ zWA|3*@EagkS^AivO`Z}PL;;5=Bm%o{;4Xvig6XBq zBfT5@k5?Fq1RpD=!!?34nBOcOTe3K;t(KP$QA{P%^21bVzZvHOt{Jmh*Q(ZBI>WWA(zGK__a`46?Q)G0K6t2Uk?-I>K^_S-R(8W-Drgn^^trWoovFN#^+1(KQy$TsGK z?p<5?82(+GaPu*9wH=@4R~O&bV0U;4ZFwjG+*jyh*uU5x8^uur>gzsQE{NF(Qua9B zVRp0%Q@p7br{?q@ecwK|Y{q|MdO_oL4G@<>QM*z0VN{D6=o;S5LZZ!rXm&MkjEXf- z#@Gb!k{mL0sv6qaJoNYSgSc{VFh=-QfH!7%nAvEQr`eNE8{gr5%-%>C(DA)vqX!5A zn(zY!zez7{Q3!Q^PQ=r{;3;Olf)47vQ>O4@btGJ-iY&!q8PP@FdT`HJEoo+`f8Zrw znK31&I<`5TQrk(?n7!T_C7e8@jcqL5w|$kdMAaF?s;%BwBFB=P=S;rL_#12MpZ>| zupXzL(-gW(_&N^a#SSS0G{?5$-(J0awh%pZ(+1R0pio7=kZ^dPGSmdGR5f~lU!_2Z zRY2cX5aeK7abpy$i*Zp=0t^iHw<9AfH+xdx3Ig`6^qm{ehdi5$rv*#Y?{^9xwTC;$ zkR_N_H2phaz>gvXP3Oa3-J6PY>$w#SM?LB@{XtwDoy^U((r%88(aRC7dt49Z%7f&< z4)jnBQx54X3NSu4fi4&X+%*Y+lIDr8Z6J(CkKJ6k6T=cORogQuW!O8dlH7#;c^Gf$W@AEv43Fz+Q!{#jvX z8$TyEuUA0ex3{D7^Uc-K6`=~ zdP&@T`&O0aq_oVA49mNOe`FU?*OXwp0~~$dw3)fPMgh}n+Hn5TUK~3SOdc9BTMU)l zTV4z;mO54@oL7BuQ%^s68fP|~mC+UOIh{G>HGlG7{~NJ)dW9<%{U6{Zi0wa!z5lr; z;A@g)JlnU##CA;I@W6owF8-qGK6KA(ZRwlpuU3O5ZZ5or30MAkAr4wj6tyq~` z@8ol)lQoj0tCbF)^Xrzj)pYbRzwUxMFsjL&XjtccNRYPj3?6;rAdWv=$nq4tZ z4*$taJ`Sv-R%l#ooQA)fkZWpce8)^@nNrCAJjgz&lb8?3+e{nl)j-fuM~?t%o}V*b ziU!<2NpICC7{L!y0V6XBXKZhZ9E_YemosE4V%mfsi>^V3c@*KQ=6QI8z2;)MFz~d8 z)K9YRY-<`bEA0aaB@JMf-Rlgv6LcnHly;>d^sf9(a0utJcW4l;sTZ>t6zlv^1~)Am zf#_2kZVveIWY$o{jN}##A3pJ;S6z2+in@_>5bHg%Zl2G*fHE~^pSdJa^bTK#V)T3I zpljNz**O1!q@p1Ak>$og4{5#l$kxOxO9;d7bxdN;BAGp(&W|mL04thBLIs%8s z`d{u{TH6Bj0KykD8bA8rUay^tDkXw6dmK#T1}y+=J`YV#VL2+_dDo-S6bU1QEDpwp z)yykqMkxs+W^*T!=lXF5F`X6pqd0;|X5t+&K0Jvd{{D2T4KH7rR0SK?C@qJgB<|K} z2cRy5n#G1hG<+{K|C)qy9erMC&n4$?0GSPKH_^*D;MzW59p)Ulp>~=Mq{RiC5Tw{P z!)B(AsqQ$pJ{wWESN{Mnxi+gn(o};288t>fXhg!92*sYx$PcE=mbWPqAC?y+0jrg< z1?xTK{rX4b;jH1^l|GKVc~cvI;2GjZ~O(NDz|i1M=As_+$S8 z6#iq};*54r15({O;`dP|J2TfOQH>D@H)rkn>{8=%R2Y-1th&0s3q+LLfZ9~_h>75`tm+)?jnHH*35@RD zEH+I=pMwZ7a7@hR%a3NZ=^dVBdyh5>T9l-KsQ1BpU$y`V__tS zMo!R<>AOOh*K-2K=7UbtyBNKRrkOB$!xT&YY-edA@DE3~uOTxFcZB@(Xq2EDL7Jm% z_LnL&kGq&Id=Fq3RtPT~S`ieoxU1g);*pN;r%OcHuO<#JK?oIwln7;YM|29M)6mMF zE9$E6Kl`zo6|oQvK$nHduBT|%QDmoJtK7xXf@ltviQ3yiG0m15m|b$yp}-H!8 zR3u5@zS^6`l@@7C(2i)lV8G1P>NKSBZ(%KKFW|n>KnuLnS8r4l+bh}kHeZ}|=$Gb;WwK^v zP)#ZYkjXSe5%e?^6++)bu6WByONlWu)Z&U_Yvi|q*!oW+`W{}utmNG%A`X?Gj5W2r zqR1O1S5GUG)wK*G;h>WI)52PSUE_OjS^fT_k?fX#dbFtA`uoMjYN3;(YSOTxe5F&i zzgo~w^^r>;j+W(R+TFXlIu@tgu{CwgpGyrThbLZIvoTjnvq27Ev*(_46~xa*eg#@T5jE1#p+U4}@-Lm)-fEQ?%gI;Wn> zZ2Y_x%Og@ngntf5lsb+9EOl3lT=z_Ea#!_-1_=(wwVESX8>JRwToLNruf6V4YCOaF zg@i{XxO3w`Ji?7sJKQNZ#YebV=JL`hjhZ@{HR(Er55lx59v z06zV$H(q|$hx=M)EKe4ip2`Tmt#R3#aCdQSnHf?RWY#up{)8D8;z`(31evN zqHn}3e_&b99aV60$_M-v!21lQx>BVSzYAaaiZN5>|B5A;ro=5gv53>|x2kV2wD>+! zhAnL{w22Folk6HS<`V0X2CpKSZR49!P4)&7szi}=B}u5x=y%%v@gdtGz7mb%pq@Jt z>A+9_Imv#mXf*@?cyGXQY4C8Fx3SnXDPXbD&xsmwukfsF91`|d=zINA%yT}grwqQ{ zhn%`NdEO6a@+iB!=f1@88!5{-QFnQy3tW#JZ}KmfRgR`Q)hu66%Ez`@U5D52$FKE; zaPB@Urx}5?3~Mhw1Dct>$EVcq_xDhYZalTThY0K)^NzFuV^ST(D=)(emrvt+k8KUHyn# zJAz;>FqFh3W#)*^jC#6dB#%Zy3+Yg*d&y|*#eJ*c256oPtOkW$A*G}K6KCHS!%uJ? z%9JIlWGRh+OM$?1OouliW%6nlV5)q~-G^Yp3E(hV)NF^1dB4cRr>fwkuYTbx3{LDA2j+)2?c@o1 z;WM>S-$VGCwV=Tg-TcMZZS$G9ovAm?=~};wmLj&hUF;?y7>hSd5a!LUs{mdXm>WGMH=DVUDw{t zGwcZgg%{i6Y`$^+@-HnkXI=tqJ3%B(D619?jqN`uY6di_StZ z`J4e)_$wfjTaI64-K01G2e0d|un%K4<8SYU4cNH*zZL9I*XJke*l)ovI6qml%T#s> zt~4i%c+z+6Qa)$OF(a0#fjD?ms%-&Eac8N3y&?mY?_FIKaJANSzQHN)yD`!};j;HT zM}4~6c7a_x)U&;jr{>G5+%z!N0o{p?%!;7nwY2#s5)Z}Ft&I7&hLv8DI61k z6yKja{z~Ur=aPnFxWf3ZJZ{r{UL=XFG{J%GBv%WtrJlZ(Z0-bwa0@X7@Cbe-C66Ho z;|h?C;dPC7^gGRuw6oy8+iD7o)8sa=4Q59A4BeED zbs|}2lZPL-u7XPK0q5x0>bkngh_C$VVeRr5GpfbH<8Mbvs7~+ty_I2MaWYUhzMWNd zseB&ocrI2DFRmd|qER<~w=EZ!J^gwXEPilQpi~3MD@Qh?r1|?+ugcJO7>Y$8%Fmu1 zEh0vihwP)pkQQn*jLuGyjPI~cG6bBC?Vkaxjg>!dI5<*s{>Bf?&F)_ml({P8uZOJB|l{WLZ)-tt*Dfe2zP8&y{x2k|x zd8Q0IwDx`(*k7A1r-~(E)6*joq1VBxt89faD^7frEA6MWBl5qPSjCwekY zFF$9?I+)ojU5Av{HwWr@*>g0p={jvJ-< zQm5#>6~k?PO&s+Mf352p>GQ9zPB)ts6Qgyu`UG~cwY+Ic2866*c-b%8MR&ou|C=T{ zt9f7*QV1O=kUq&El6BLyW?Qihl&Z>enGd2KG8=N(Eo_#Se%KgjOz225cmM(Xl}IL1 zF#Q8tm}P?8eSb+cJsDAEVg{09Dp(B`NW&Ew!n3co0A2qscFdpGm!V2ffP%K@KDzt9o$`RtBnW%WCqz^5I-Hq z9=%rNL-e%d_4x34@L9dl-p(b@ueS+ci067}1v4sa07W|Saex|JenAX!JYUZu-dpGZ zV1dY#?J@-82QXm{a1hBBt>Z)0%z^AWpfgB*;=1a~qh}qgw|$}MSdJjr#MzVv>*X07 z@xM3p?elN8Y58J21~dWq;-1^3F>3N-|B}IG&*LU!U=FD0;{2@fiIx2&qumhqpNEDY zNZ%HlaZ%S$oT9s8F^;-PrEHfp6=k2#|6?ZIUfpz5o4KubU>ICODF#&SF7)%3kp_arq1~s?28*!XJo-1F_gcF$XCke9GGqe@*GIrItHfp zCXa%VNJfMZC!X&KTpz81v~SGp8jt=V>Hx3s=uHz=AH)klS@$B`1<`^A$#vE^OFjE! zmfrAd=E9IH3@^Jm9Ei4qR>#Ssk@WUYPRo=r)Ee&F79=loQ%jR@<9^=PJ48pSNvu3h z*_BchQIUB8;lF0XB79<-q1I&gOk!Ea6H@D}ZSt^+NxG;kv*T_+3^T^d@dt~5%mK0Z zx!YsT`=uN3pXYxbZT>HT+*p z)Paj{OEj z&$%e4n*Rt-7g#_*oc}e(qH80<`hTfiHRb*(2atL`G~nWcfQM2KuX3GTwup4{*Rh@(kVIxMG&sltp4(2>?j0&05F|uC&gv* zHH$vEM?|LLX&g<3Q>PXQmDK6{O6SREY#+9TG3ZMxuVk<+YM1;8l$QX1l|RK9olTjR zzYavRY+EpI*s|z?y;hxQtVhh`vjx4buv296(%K?^e~zhk5&$%2Er7qpH3wBq$zY{9 zMQeNPd%QmekQ?^=!&AiE0}}6}XIO9y?>SQoTbWx6uxfYvsk*IDjx6eRg#2PZZ9>A$ zrM?u=J;zZeO+}VC^i6e>6;}V%Mn%sxI%b5fl?C5^=eXt*rJWB;L{lS|aLj&j zE{wCeB#XRy^Egh!95Iz%KUGY=uUG_d+mQRv5zclDqUl=T`JH7G-~zE!1P<495yDtm z(oSW35Urs4np|k0QkDfbJ3}@+{&>X{>6m3eR-)Nful44O;dyA^Hwehtz64#ifXVG# zXUg^{^fGeOKjT+FeE>S$ao`4wrA?tKG>_SD88@LEwf`C1Idt$B_hLC!qz3HK3+3N zsT9+xv_lqLDo4DHXvK8c1rj5oDy4BoN(aydO1C^Yn(0PKDQMszV``gaoO3G@gI$S=m%bHkK4cxfEL(GZQIgc_jc5Ej6amt zhwui8iuxs8^9Z&DcDtB35mE0nTXBmk=BgiWKS`UoE9)~W_v~weyGQt-(N+8+D&rWuiMYQ>11vnJN_^0*nrtjK+C7!xz^UF$=k)xHQ@Jy zLe3jHoZhw_Kz>(3uH&)py2<`4J!bT*Emz*j6AC86fL~ z@^Hmun$LwjmFSDR=k-{R@1+8YYF*?S?5Z$a&%m|_VDv6q9_xZItfEH=(pA&xLcqM$ zjP$|w@LZr(vBfRg~*{dgo8Y5rx&QGPcnqPijS)ekKF_XhdKN4DM$c^pH$M`@mKy9KuYXDVXn1pw^7z? zd&lpYT3%DSi70mVOF`mj35q3#Xi2h^P)_Ule1mm5ahoNjM#S>y&?O!v&%7Bl&q~~! z?a^MWQ3}bN?m97R%O907cZTVUt=*zKS$I}~_h_HPpDxZxo)0G>n-xWrER?NccC_m# zEDx~rb4fvwy~CRD3(k{*P0%)RBsei?zYc1WM|c$DBYW7YG_o69?IHIo1(Ny^8qFQU z5n<$5alNT<^#=4A=(xL-I)`~ahw#@Hao($5ybnp=PfF9@2GB|~+sQ?N*m0yCP<Fq*iJfGMcj0;#ww_aEfe%2F$S*j;KofZ<1aj zscFzF)RO7@qH1p#Gx-7z?77Y((6ihYs?v%<2f{B$yq>)IxIR4H9a%z#@9qz0H!r|* zkuu$E(G?90q0IKE6CMjrfb%J8VhJ~!GaNJ!SJA%kmjIZNwUuBr{jbb4@z z-}};`ut@wVoM3Et8Vj0Rw$PZo&li9hXoHC_5%1y)<=rMsc8N=2cHeEEX+J^zg1% z)&oTZF{Uw(x{qEzWkhlVEtFB_7}dSZgfS>%9}R`5-e*u@jj2pX4=vNRegm-Ag-fiQ zd?ezGIu&hP{sVJ}u{^X$SVoXPSMGr;DyuFv+!)5yvo!f}9}N-ju8wv|^1Si+$aE^T z2hMzAn2^R#p&3gC4XRMQU#XzWboMgur=J+59}J(&@|55k3L?SAr(hbfJF-OmI7f=b zZ~ie6Cq3g*KI|&|%iZ^592fu>i71k2gnMX^!4Xa|A23x3n9H9t_i7ZuC$YqJN0wcZ z9$FyV?>jL98*;}B7JAn7*^dCGD#5h=2q*Ivp}Ax!L7o;e^Sxvb4yA%d74$W|;)yX* z|Hoc)P}}gEFv^T!vCL=+j}^lVnn?ZyBzR8}Z3d3X*v&NiWm1vn#RJF_YPy^&H#~}f zsqDsrFmTQEkS_J=PTnl1oPXlK(~6AaW)xr5LlD9LYu-&|_a?0#dgh&;Nja~7@y7F9 z0%UpUADU)7iSz}^o_%EGiF4OQ3^(mDPs*Phgv&e5^ujmFT|5ZZ7{;nFFc2n;{_10F z9Th><$17j-@c0W}cm**169UZ8i`Dp-|4uVO>Q~mA{03S0Fv(r$Y~bC(!-%&#A)1$J zA4;Mj+XoY_=)ASb7Y zExI@Kdb5U;yqRXk*nXG*D{h2Gt>7s1*>+=Oe}_k=!}`XIDHXt;13K!X8q8OLyM5^& z5yKncVWg1v`7p5o+28Tf&}cixLgdLy0gp6G$ljO2bN0R)RAX99UPk_%}V9 z*Z4QRJ3)Y+p4mTDL*Kn%Du?aJ3Na;RfvPf!pnE#9_o|L80*|}jKm7=OW;U5NCzfoX zR#6S(#@+j(#AN_;7GP3&oN|_??A(xTq1>S~!z#iALJBKB+e z?&(mkIrSaAo!^`K+E-zxRPz>#s_JT$&ru}1-EJ+SfztpQTdQ@Eh-$L6-%p`}k?I@~ zE3vhx&|MOefuxki+B#N?l6EZxZGowi`k`-riNEHP3y2cd7R$#>6Ioi50!BbD+2x#Y zVR1)do3D<0Q>BX#qmkz^SYij>L*+2$#(0%uWg)LUpkeV`(L!l2Ub4w1{Yh18C9D4w zhvT&yp>F-7aw~=p@{lZ#p-(D`rQZHVqqTEI(8OnDG7)o@)i~$B4W#<1#sC}QZ=Ke5 zmhh|V#q{RUs!PGH+8X-d4YKd++P%KL))F;L$o=&G{5~*5yov@?5f3mR=Yyw|p%Z0{B+t^Ru~X*P zMxylw*G)F7PY15Q!!$&SPpuZ#;QZmAoMVchhT`yGu7j#?!?r|ePFA@|!fhEa0z};WS zig2B*_5OY?;|a2LIBj`Wp}Cb$y1GmsN<{;}g)SO-I)4dyhW0zxlfuD(9ZS7i1I;Ha znlu<3r$xV&j-eBH`DrpVfQ zUCOa78w) zK_E0~{&2>L{bTy7Q4`tEq3Zb3ey3?yf@4tOF$&bEWEaCKrA%a)%el(odX4 zthdM{ZIBaDX}bN1aXQQ}>LXdXLF{_vwq*6ll$t=JuP3j59yH^ux7in*i&tN@ z?IH(N$0m9*R%@LCb^Mho|8&b3USR-!(zkQfH(0ZcB&h z4-gtt8PacC(Ou2$;g&1kN3~VQ9+;M_p9lP##ottqN_mWe;;JuQHBc{h3-q~!f#Hcd#7)D9Jv_wt}pDCwS$Xr(&tFO#6@9)l< z4+y|$FWT?8(s7qZo$SpXbYbMC-S#wsV_~0vNuL@=iQ?56C`+2#4eP12Do?QJ! zbTZbZA48$Hh17{U{>IjTT?!*>(#n=OzR%SjjVjS&*gpsd`uaW1IsG>TwMq>AE?Ecy zPw*Se0$YFCCnIO?+!7~@#E%%@PbNEwIy)>I^_n|{Ds=8tn;qQ(>Q}@vGmwxEzV~NB zhgZ-$6TA&2GC0*R1 znAJedA1(@N4_mgG8baD|mEkvRt4i_ zStR#;Npvl;)D3mI>xyUrkAWh;M1t{m{QjsX$#2ujQkHS9j0GrlZ_A+xvRBz=R3#dt zf9XUUftX+PSQ9!V9)RWD3#6~#^-qv|f{_788Wcf{-)&4^_WA0YUcq8a3-sb2hT{;c z7Ft~c!GFe);?c}`uoUh92k`LRDm!-%-3<-9Fi>aZN3YG}{ineeE{%ZDCzfBctm_k- zcnhJf&3aB?FizfZ*TM z(G`r(>EcV{=~&TVEGkKmDcRwyBDLC2!xRgpjd8r5u0Fdg$bZxT(;(XauBE&LDPb*5 zo)8ttt9-2X77oY8gl@h*B*MePbY!uaRUeTI1mTTfykVBv&>T`5b9Yn{&8f{qMrNpP z*4bKhh0%?}!5FLw-uC#xGpNrwvv&y=wyOh@3A0kOtUXyQj$5+s3c;1`l2ys7W(nn& zD^5?20CdM`shcQ3brzM<=v}mUWtDbx7v~7GGB+@+PkF$j4IjPo|JqQ=4xnyOCP?z>UP?w@?sayhDsJ^*4<8= z_pl&&1H9aIwfO+0s!Atd)Bv7Hn+oU>i5{s_%Q}GR+7Ufq+79vWeV`Z3nWYV^L=}tv(G;J-gEz~x1L#Z&YJaSty<%qHHP7r!7|lG^`zSHYY_dsLd+thMID=h zg7hKwQzz-J?HwKUWXOxO`j%yC755Np@p=0MNd0IiAJSq59G`?-F?#Eno6_l1>*X3A z_}<%ie8%EK9z2hC#BBXa?|MMbZHL$lWtmv@8algk{>BV@!~CV=^6Zz8p@c89PfQZ3 zwN(X7u7ZACg7)PgyacDWMpwRTxDWR!Sw9i_^)U?&$Rio;xgWP*8^K_K4HwU5&{d~Y zfi|IE&-D7H!+T_t25)g|ZGJ+(6Ct##-v!!{hxy&P=Y=9?q?H;~Mb!a1Q#4gVw=iKx zKyR4o4iDaav`ATDUrWx_#fCA2duc_Z6fllX?d#M)u6?AWPZ?QpAt%%L%yB+)ON}6n z-D?pd(3mhZBNNG*aA#t{4VMV8;)yT`fJJuZp-(}>!lZMqBK(@AjjPLml;M3GJw^rBSTPnv@$+AFcE`5kH-ZJ;&IuIM>D3B0I=M$mLtre9m z+w%gY_v^Ui4jr$F-MQpB$}gjp!FJMx_GH10v9e5+V2I)dq^tl&d_J#E3w02L3~l4C zn3eZBS3lOvJ#D8h51|orF8DF!|7poaa&B3dXa*m?`)og z*8V@kiLW8asZn-pW_arFepsjpd2`#K2hG`}cj-5Ius?gQZtdOUN{wSI)?0afeZ z<16VKAsG^KZuBwtZuHURE)%M4OE_Rh>bNFI?f1g-i1#>i-=8LbS#(&<7?`1*d+W1y z(q{m85Hft`S&X3cCoXcF;e0?%Ifcb51zVh?-ACahLWgotb)2lj_Y8qEh;b2^n&dRn z_2f-DSaAom1^X4WjU4fMW_h;38HuWnk~pkleY&U3e7d*&?XH~0`svQywD2O~s<)>` zfpBi;?n+W4qETHKT7qkbeN|6BG00+lr$SEnfXz%dtti)45*j1vLJ>bWT<+aA+yTAB zCl_rSLPB&4SM#Gh5?j?!?E?AS^JVS*9FS)zX?@6wg<~agkFBy{cGaFJ-&Y{?Bbu6i zt;{ZNrzidvqQCMB5=|5{X_ zODPGkFB3Iih3Brbmnw;}Z#@U?u!)d7eQWQRS`U7{4I8;^Hmtv=Bg&}h8Ufr< zeYIB4dsXRw@hEj|Sf@lej`6lB}W?(1MR{L8tS{YDK2+aBam43 zj<+FEr(!OM?OOz*x7vL9gSbwNX=L|{pg5ZCsJ|XXsvLa*^p$A`A9XY)jM}Y2LQ%G^ z88kgcc}7QnN9EV+t?TB?s83vJ_9j3#2_Rhc$=Oy1UImL+9Rof=j-Q zeNOJld-x;BS5$ld)pTBv%M55I=L>u}HS+ZItGoDeo^j_hJ&vNeSx@M$wiF!KIQ?wj z0(lbkEBv`>SQJ3xW>efu z(UV7Hsos-&PR6VJ;7@)Y)q z+f1&Ol@D5Go9U9~>XM}tvC1q)7xcatjtU{xr6;i;sa{9Cf{brU;NVL3hI^BVTQ!LTNu+6_bb9-;^g{9+b5_AG%)TjLoc@ z`e41hFd)#>m~9JN%Hik(6d0*6D;F^=%uKzH_o?PMWAbpHuPq*X`6eudsUq_ z-Jvx!ylg>#zkI`TO4~tFKn!Cr+J?}%i&ayAt%iGFV3>J|6SK$Zq6@$*8#5>k>xA3y zADs(H0;XWGyDR7O|J00l)d+P=I=~immueE&C)Y|T$DYcI>(s##Q$I0R5aG4AIkwO+ z_b6+cVlX7~9BNu`k}ZK=UG2&b>X_zJd^e&9NdF^Cco1c-F^Me@9KF&E;5xiVHt_V- zKg-{Ja6Cp9xfVY%TF2hqs!~%- zdKePB`)k{rNlYG~;_5LPqZL7M-j8?19x_NO5c?(dnQ5%q<^YfrGD|iEmx2_H2z%B_ zVRhw=Ci&xvjOFkyQfH3G44G)W&=(KtSH~Qxm~=enHXjt;lRk@CY#kfsK`w4A90RQ6 zjoRutf|5wCU!+ye+Q794C1$}elC+a%L{Firvml=1QxTo)m$X->9$A}fA^w$h4)1)O z*Z80e|8q&iKUM%F)}-4@QePmp9GGIW&Xp;I>J2pNZ$;c9Z?R^M_kPfrgA_YQ+xL{S zvqCUswg;Xm%#Sh+?4aVsRTF2sj|NPZlBVVH91oIo22t^I>yP1R5XNsTjSEIhCg8NT zSb#dPF9(3~ZBDP+HhxG|t8l;Up}3-Kc#P5@sZhlP?QlS{8x!jGdBJ1QYHt^=fe#}A z2{Aknk6sN;#_~4a*&Pj9g5q!@Dt3olRNV8~B*d`ONp3E_+=pLjQ0*+ef>5=|w8G;r z%QCY%cEt7HPu>!n|D62a#xd8zzajzu2<0s~zAyXF;8Yu)f96U%-umZi%_dy`k-xo3 z>;Hen|4jc`IN;OD;`?`TonQ0*wU_^0ZhZN(HCIe+Z8&>T|F0s9#kT&eCSJAmsxY4= zY0_xDfoK;Yy(V${--xR$+VDO*UqhAAT#NYUsazVgLgs?W)1QV;G&?C)=MW4M9}#{T zlA{t03K#_b76cHoqqP%2t;Jp^ooalWv7%ZRt}Sc4GH}GsR9}6#2SeT0r&)M{z6J3P zYHtRY>J8pcwVr~}wZ;L6em;Sr;ki7g9^Enu*FbDEG&e>0#dOmX{L-i4BLmt=MHiy$Eg{v@1<2}@Z3-OiHoTfBpsT3(-i%B zi9d01@;b8vY8QM-4!>?C^gFe+l8k5l(}0pW*F|nnP+# z_|{q2Wr#dGwZZ%BD+#zby!hMVdHWz{QEEdivNrS z6leZ3?4{U;>z}Jt2;;>KGD%PtlVRDbMcGYGJEEQ|z}8TYb<8z3S}1MA&p$DcoOcC;1t}7&cu&%2JXIy- zC$?Hy+g>(EqGG-&eO0CwnqF5)(AC6C^|SARZ;qxe)C0Ox2#+k_gT|q4{>XJ~DHzGc z)zCllA<)mh=8f)T02;uI21IYDcy|E2pC2y@J1?a^H6K$O>t>G+LQ&F$ipl4pa&BcMK#(O+t zBbb)TKRrGLMKj~sW?!>eIs=>ClR8SCI!yLzvB0{MMF9f0qVdNlAH*@s>u(KD^2y5l z6(s+RZky8s-mAdXflQ~H^dl%W?WMDmavhnAt2 zbV_Dl;<$^sCT%r8sBg>HYUx5V*=}x$R*_0{8KI1+Iwl04q z_#793v3_7NAU7H4grlr84iw|5)^wezNF45_Lk(!nW-H zv(o>r<(~u3{}J+Ub6e2Ll&`Im_h5Xjtl6uv7aSS{|@}uT-};mWG^-L zf2H|1k97{hzf$8AI6(vcTGC%P^#47{Kg;npR@$v@h%sF#pZ{lV1ml4)}{F1n^)eY-hOK?VP!NPT{!T z2wIhK+u( zaeUoedyt@N4YA3PTW^yDO`P1v!<7Yd=lJ(NvSuKX8WSkEOm0*BQYWm$^9B<>f(W%- zci1n>uD6Wf%qHzTHKv!hSbeHMQ*gy_{!1KuK>b#%G3!0zC*Pn#vKUR_5_ue=qKVNA zv4U_H*}jM0K{WmkiBZIR($+E$CtfHlhO%^A=x||__%(F zPWA|OvB} zv0&AZy<>kfy<3nc%ne^&b8_6aBJKKi1|Wr*vTzq=6zeAu7Jr^1k@a`a@$hpUCDG}tc~sXOD4wF!cIWnf+{3NR-% z%yuNsekNErD}|IM7DTAqlG0F*M9Jm{=h`w?HxTa>c0xmc_6=FLr(qx|rIjn$MukVV zuHYb!m!hG}*#KWIZ=i#vkDh7fQ#>FL6K>km5#K~k-pU$B!PSpCCOYR<-e~%3-+XEy zTUib~UgT5Lrbwgm;>X1)eI8;CGr->lGoi6#OeBAzSO`8_NbUCEzzk#Y_ErYLJdZRI z?y7Q3rsT6RLnyK&Vqz*%a@xbkCrxbEu|0LHxFNhawQVZZ=Qtw$*)N>>w^U7F`l`z@ zrs;t9dQZisj=B1g2NA?s-ZEV7IF1Oi68hPbj}T$atO=V6?8(~+#)HnIz{?Bd1964UD_O{cN_ zKtX*8LUhJE*g8#2%cl?`J(YE{NJHG=|9n&Dw~kxmjGz)Y$;R~MV8{ihfQ z^v|s`_oUzPw=dT|ODn4v%IMg1to&9mO>2CAG(+qu8tsVGS9KV_H&X+sAVuJS(;R8J zgMoZq9E%-z@X-ZpQWdgCTMQY-0+GRS^EV-oK{1&zt-C5>KhSwC);{i+469!F#r@x7 z^m7bn7}L7_elLFyXQd54fU>Shn4-{j8HLmQNrS=B!uuVzc-6e{lZTsYtfse`O_?E$ zwTZetrxaB4aCY{O9PuQ8L|l-t!1N@UHs+MYOkCBJ&&wi}9)3(a`V60UF{o`%wj_XJ zJD3bt23M50&L6omLWUViid=}F*(^!6c$h4~RE>g7A(;jg2YHCa%!Wx;|1o#6Xi)=+ z`eADREZKYk;YoI%u0OLqxJ1LFD#pwNTdJsB!-oN-r_iM$>Mk1~kBKk7Mr^*#PJV$C zVJ)WsV;%?UJn9C9VjT{N#wVPv)6bj^=|Mx$U!mfzuKiQ3Z8>rSg@=lwEDk>m!IKFm z*c$=`Q`NQim4LWb;FslWH&XPzig;$Ufbk2L%0U}`s!zf>u!vxuK;!ns9Cwn2XHy=m z4j#jse^QO1xNisGt*=t|P0ys#M1niQj;`O1L8WG>!u%Br)9-xjHcXAS$Rt_WeuaBv z`1|bANuk_M+2Kg!Wc}O>yzFAkaUec6?g1;$1%RSiDVJA$^$#ompJ|oz_UIAm>*v?j zQx%ST@>#llbcbVz#|#4uKLdsjgf|}d!v#KG>v%Z!O=_>^OeBKxs6J{Sx^Q$`>h^~6k0A57pU~>0Lew?_ zXc)0pb4vR*srJqKhIgJz_I+DuLXvtOt6rjUdD)!2Ip^*Pss5oSQ)~X%4huA%FMO8R z#J*Hy*QK{p7Bk2pGe{E$+KF3v#C`EdgG{iud7m9WI*Yb*hRS^W(^bEU`;0q?Quttd z+bj%1dh_Mded`N#c)qrIq-vRx{AT-YwZ;ZKpsMJzSgCqt6ET2#-?!gAvpwo_5V}~) za@2V4D)PSwA%lKd(-I_id%@#8d(Z$qjkdjL3+BS$Y8oSncoV(nyqAq;v-(mEdD4R9rPdr;EVed)>Z2$DA#WX{Kif;mG?0pMokz6gdj z`D4DDdYHUnN#0-$8Y=|7txDcCuitxr>WsfnketG%t{-R*o!zf_eDVz}b^@CY_zhmp z*Eaw^%r{;TpoJ5F9%Hp3+H@g@>R>~v1Y%5p*saBU;B)A8rfKQ0$DpY~Vow+FeXeYJ zD{pd(z`6NDOy~S@@11(MaF|H`-l|?QnLqP%$}HilFWb`pr|H^OB-wTLajSA)1l5#``oa`-u2o5)d4+v$SNsG6Ox?}zt0T) zV&5Rxh=JqEg2LZd_TU{pwGp*<@%!4-M7=Y;3*B~Xee(nK-%om}p*!>eP#_?;j36NL ze>HeB{B_PF|Gyf%wPpWm@c#AL;5{j8OYXd~rs^Ou4bg+OM5?e1i4`UqJ^=k>Au`BN zU7*oSNqRW`01liEAIOFi~$hg$@q35A7xK=3@aHuZ) zx`}j4h#nI@PzRxW>6A&M3zzmzghRJBF?+@n_ir*2Qj_ajUDTR5V4x_j)%2*KmkWDq z<9e31@d>v)x#^_h_vRDOrA(}LSDX$(jfVYP6@nmGc!qK9l49`$&fmw(L(F(mM z-0ST*H^+vwpbBWNH6V*rpig0q(=r%he>$p<2PB4CitV!G&~P@-9M?q^ylD9E{`}LX zfile2*z9s#4eR-PnM&mbGh8&qd&0>J3EeDul8kn6T$DaH`C59I9a;IUJXP-U3xf?2 z1ZTwPac!d6DlzwG)G}tKg-0fNtqc=m@NJ}G((%1bQH0+HfI62 z8Q@Y1v~#Zh&cr^!h@z>d4uj{er3fZpRlhwR-79Sv2n!5qnM3AG^R<$nZYu$i@|)+K z#%b@?qvT_SG@miG>n7wPsqqf(x{i5ztcz%#=LYn|v> z4hyJ67VHDa3IuMnak#TIJ8Z%(ufAC+0w&PS7ue?0yQ1fL?8@|mna&VOGU5(%7a~xf2-f~|(<(HMgzs<}@?z-?N&qcEk9L1WiWxahU698+2 z*xI9|X*;Jn@(Z{hv~38nY4mjhw5+^hOt=a1SP3O9xOh^XuQcDuVCb%e_S&|5Ie0>) zr#D%fnPu~POT9&1Q!a5n^iA}h%>;cj1A(rTw-$9_zeJ5T4!TM!=`q|@v+J;HJ;}Wb z|E#SbJ%;V*ct-VT)`-28ft-M@Cg69c(hfAdp{_G;Jy;#ze)e&?PU8wVgBHFt`4aQN zc$*rFyw1#6Q?Zo-M-$;}@_Kbit6L52UeWq?58_hi_N1?SiE7l(9~;pbg*7W-3sT#G@p%QHIYrjFOr{S)J6Co%#73N-h78<*@3l1^QauLwtK0mGETOB zijjF79obdLCSxfW%yBn&oIQj=wYostN3VjIZtB=BxlPJgKoQ&MYv@Ug;(Zz*N)`?w zCQh|tgP%NK+)^%pPx2;`3UCkh$M${b5b~=VQfd!m)0Xqtp$=B@ywWMXL;@$;U`gGywiqq~#YQG;AGqtQQdAy`%?53;&8AzkM`2d*7f1EZr8a;9@ zM@IN7c;!hON~$~Fc|C4g42g1-a0yLEhq<>px^LRXlOL9M`*6?u;F;Vz5$f8zXnB20?b^70 z(0wqw46OOzpXcKtlayq1URl-2-v@Lp4B$A=-U~40Ck^1 zAx8~u09mxu=T4RF@hdwVD_dR|AO8!qNRMJV3;F~td`SPnQw)%FaddZbWw19>SNj+3 zj*Yt)JP0Vn-KSVB1jgqzf<0|}SNt}__jAJ@=UH-)zOtZ@aKT+8FD17i6>Co=JW-!h;cCf_O=F8b?SRWaw*Kx1=jMmlV4+ zx7A+*_7Q;se641>s?4j~8LRDQY%98^Xuk}W7P&AO=++js+U7HuR;8<-ukILtMBN3T zba-A*JzA|NDVTa_u7epw%pbvRu%2{#44K`MJrXR=y=+Sfy*#P7MBKPh`l-4-t>)4A zg{863%zkV$+%c^-^|D&>?OXWxaQD6p*+x+S4O5P3D7iB2x+C+rx(p30!PZqO+5H!O zH+iSaa5H>6o}^0(EfT>Z6Ff7-7&kZ_)7ZH-5Lb!cpZCCJY)O!?3O4&@I#NvFfPy>W zrC_hkK-#R+<@KS{%(u4(y>xBxMjmFY{V%{%u$(?9LAUG1f#8H@hPQr)|QxueO-Dvm1<~x4nm`yUF-@bLK5SQl4O7+}Vo=>UGc5?%Q zt(Z)30hzkKO=;j|Q3>1O?LAHLJZ||wo@=f_ot$ozRJj|HCB|E5Uk+j@+P4ie%}t>1 z0LKY~-zy5GsJp=Sm-pxMT^Bz7cQ;pn=Q8i309T3Yo`O0{r60acHcU--+j}H;atzcA zF-SO}BG$HGigfTI4FR;56z5c%X(R(mpFW6%t5)SFw_a!%hDv9`z!&z{Ncm#I2 zJyqU*@JlRWJW1LHfppI^Z$qQ{a7Pols1)l7)bA^Yu zmHF|Ni}uUfIr~-L#+mi|0WUECmCx*YPTG^o*K%}zo5bhQG?oY>FDCYR;pD;7Q4sD& zl4LkIP_#Y&?tXWm!7r5#Gjw0Nj1{OT{-Th125WjjT+ldSKaWv3hdib{BncJrpNJ^6 zpxAdqUQyoyUcH7o;L99`x6!>~Yi+|*rKY}DkXx}C4^PfJb7O7Q2gs2D;MaTJf8?rX zBrQux`bS{HUYU+?%4Vv#CfU6ZO0A%iAyKq966Sjx$^SMOrF{cUORY9yDr01P@Z8&A z#W{|u)4(~NcQv+e>RPdL=it3y)LmOUA9py=Z)kW605-gFUg(egeuVwx)>j6MLSc+F z+=E614?`e6C)gjtn)b&73>?QInZG9=n4~>R(1~t&%R}iv!OY1=E-{`_W&craqkNh; zs6IT{@sw=HR_q(UU#q*}=2oHPGHWn?t_-srR&LM!{o=o}@v#^G;gRz??;O>7*mZL8 zP)g~UoRyG^=KZ>5~MajOmw&64eacpChUPzgpan~VU zM9%3r+!rfz@krTTd+rh_0-9={v{%~~QJnsb57=oo79I)??6 zJGl~@7a^>Xr1ZeZucUh*hulo=x{jc<9ADzh$RS6!GJBwe0cU^duk{|=a91?fji5LC z=^7n8zTqwwxPv==32rT2T*qlSM;3L11M5I(nxg@U*$j-jEpUTD#{x;@f*o%#AS6Jc z<3f&YB92!MLWgDY&mOvhK(;>&7c{Qk9#l`ogoRYo4pgB@k-Ncg4g-%8L+8f~Knagp zD09oSnU;VK#BODG21fDrSAmV{1&9#MW)eCAEO>O!gDPm08D?6J8bE=fU|$qR&VtIY&!GknaEOql95kbIY-+S6#Xci0<814V!hY!4FT?1ZAs0O3x8) zTS%idWOFwDmKy7>Od4b{mV&R9ss)uZH(yyc`-5CvTcFsLUh2y1k0r-Y%J}$2Bwwqg zcR>;vc1a~pMMP7TpgM)Q!o{3)l6zT7EKu6Lb#al3<+ImU_v@21i-4i>S{=&7A2O~_ zTD33>z{ejRuS2X;1Jv)>CNL`j7v}DDUcv*Sh@oPJ&(0Ggm)${~8sLkPwr^t_4*ku? z69M1STzUPF`cX+W4WR0pNDn4u_zdRxcdO;hdl9{*i~5x`dy8{;W>J)L945DE9f#i= z(m&r?JWiVi5b+w%cNGLZ2X!G2hBD{CI_D?%0(>Bz>K5h1&=mUIroQHD(^=BdA#5q50jqNP!x#HK z01s!*D{w8k>E-eYuF&wCIOqq1lOvagGw3$?B{okJ@GuQ%z%&X7SsXmnexF)Mzm6^0!*!51Xd!R2&H?LB$ z&G(@pexy~$h)V(J7N~g2=zwpF9jL6KfOGFB^3aqTeS`3A?`qJY2)2u>_`H%d4qnA= zEDOQCrTIe!5nwPo+}M}9G{m#$#sWI5fmK+U%KjH{u3T7hLJXbULKV<=4DqV_s)UO- zOe%LjqQS=D>p@9HoyXN061HTg8O_!3$rz|q(p;AhU}EL{p5xjO`I-~6keUJ{fJ<~5 z?G!*pwk<%*J;m-wMMfc%nCJ>cobO!6ME)Mr0V%VEHPmfUl0P6yu?g-Wfoz}y!mi&> zFR@6#vC8!D=9_E7*EfuM33W>8wi3D;p10NC>lo=i3%1%p0VW|U9>wiHM{z6j1E}sxZC}UbrKNxdrDKSi1TN^RL z|A|rPeo8K31U%Go2^s2;MP)fCdc(Vj){)X~7ZEaHaL^Nu=$WZdPy-pBcRZ#3G?UBL zpCT+W9S+xdGwgbv4?1od&?(`RYg`6eP|v}yUN7cNcdj!AlFE@|OXS}9IIed;p6?sO zLdpI>(CUSbLAE>yxyZ+3s-8Lwx_k{OKloBNJ0vuojDr~O`}R)ZA5nQ45zxh%3QJ?r zit$N80yaQ~#z)#i_Ko|RMKWVl`K#;qH16ohSl>>|I3o)^@HYWVQiy30$}}Ej2z-Ec z+UjUv3^}{eB@pxl|0b4rkw7sJU&%^^f^8A_qlOWjCysRXp51`5{5BS1jVwU6trz96 z$F-)3q5%5C`K>kV!>-3!dgAFf26cTx=V5m5Vx83I@nniBv6qSA7U%snwLmBP6N0Gz zWzb#yPYA*c@;4M?Yj6vXJQ|=pHryKz|8EGw@*fa{KsB1(^re_%TO$LZ5we{Yz2(8mxLI@PB{l)z(a?S!})c#EP+phdjZZQBYa*% zp_6?pRSRF-=9frUEz8Bx1EW!-9IB7mUfYe*$U%{xic62ET32Nx?0a9>T*IbCuJ#+| zw^)3$ctVv=NY)7#f(3Iw=ttx5q4>{H);1g(90_Bw%zJ$n5nSrj(JK5YP!=r}q1vXZ zPOTLHS-P}66J4mn9X++kp&EA04upWk^?9GiX7yd)+Z~clpIZSn2wLtQ5?lB zobb{O3ceGxLL@xVCfRb;jFIFQnLkOGi3LD?<`7i#n#>_N%2Hv8q?i{(t(8f~+bzvU z#~$cQ-h~pGfn`KK;bh>K)1xf0C62hc{n`#d(>=aTRvx`uP+JBo(Sp^3H9r}Ir1oTo zyoLRBdNsEX{=%H*ouvU+@!981@ZxQy5IK+bo`HI<^`;w5oIA3NX%@4A!bN8a3soXc z4Ttd=-5VWFm%CX^#Sw=y-TWsKR^QPBzO>QuuwIxHARb|$)B*ZQ^-NVp-h3ebj}sR_ zHBa*?(Dt1A-5ccI;u;YIQ@u%`Y+mRLep{q&w>^4+4PzX>Euf8}E4709kq%RiKLe8t zT)~^x77G6b7OkDLR;y-z)#Ri%KkR!%F-xZ7?r|71Nf>QG4N5IBumgPxwE4q!JZn4Wz}OBnnaIjgv@-vS5L3ck zSD25}a-!(}G4OPpwVB$zP<_Vk$2TRuiNVl?utll&E@hqm1na4pd&>C{Y5NZhVj?$r zvcOe3fKRwV41*VRj~!rk3kW314l#EUwtws}aT|+RzM?3C`vwL77Sf7ws*QJm?=Z9uZ7f^p1vcEBi zdwQ(Cd`fGe+n=3JAdQaQi=MB@p}CA*2p`qkD89dlZIu(T8c~j(E?aaInUbx7xBZ zeE(CHF~dv1wup!wHwpvq4${x-BWIO{IIYlNQ}fw{QHm9jsvHrkORn@bHq_nAq7o%f z1wuQri0A%N9-z9Xal0zR6=B(xH8z6a5*Vx-lfVok<4OI7Q ziT>!S-3E5rwWOWh*RL5guZ(#3E;%r+oSA=gcAmPiAy%%8O=Axk`<(`Okg;_Y(vJw( zDe5NNY*D=-{yUhyC8JBxjRFEPGnsak3r>}m_lp=aO{kq1^8fm&(m!!s;XwOT2LwwF zu-eWy8~KU8vTzc+BUw>yNI5L+%1M|(N)q)KF#)yi+leE#pDOuX0sWr=GnRTWKCGDj zb4O3mOG+0L?e>zPcniE;8IE00Lgl`tWg9=zStWW^RsxL;!1D7ErOU@%ho}dUwWDNn zWA>FnCnz8^#kR2SI^H67tFMvrL3d@vusr#&2$yeleZ8HN-sUDZ>-dei?Ly>4->Nff z&56^ll{atvZ62$ckXEMmKrDqY1Ho>lsZ7QvS&UkgNSPF$CaAZEQ0#`sY8&srQ2fpyU_ihpmtEcOZ}BLSr_* zZn4KKi>sa0jpB6<-uYqrkX%xvOvW`RPsp@bm@$fvI#`! z>J_y$#P{Eyj4KekBjkoWq)(kt-YMIHemnKK&%^uQ0MTH?;v=~LXwZ{xHR_V{c!VEc zPO~O*hn}3 zBqnpA))IeKg^c=j2gqS13a)v~D7k4u#;-RTkNFnY#kai2&^%IXg9E2AR?I9ml9c!- zrFyxt3YvXN%2k)T=bwN7)Hmuf<*65-ut~^763j$80`)c5cXm%?S0_ynmB&T1P_AIv z2IzzeDEIH33{FYR>N+p(#pNr)0on6~lsEYC{t(<&aEs1BHrdG4;V9HqaWTxY`vQV& zjPD>?u(MT?Az77}a-BT@3r0{xxKDD+vqZLVohd015-QC~t!b(B4v71OdnFstU`0q} z)CnM_QSqg8Q{Vi33)-wM463YKNx`hbbw2VOrOL*>(tDP%AL}RFI z90O5{u%?UWX;1bv=fP<&gw+g&hRAsd?|(FePq?(+{3g-TlF*kERYQVA zjmAxVH>14MO~(Aa5;671pkSfLToN0BrNGRes>GiNQSFd};I`ByAh$HT|%rL4o4?h@`V2}8%0 zMZYvn66+1u)JgARmXu8v9w*4@h26E{@U_BmvSNvW#VhWg=B7gYg&8B!50_r#yo0-G zzwG1NNjL+l-?r0#)|QzI#R6~wlZ&3YtWLl93-IwR+xxw$-E{f$1UdpU_GJub^`1pOL_O!;y;nRaH-4fAauEW#{Xj350X1h&{NsO(~u_`wSbZ4!g}wW`Ql&+nGP1pIf; zn{v=2kWakRiAvrZ->Tam-|V~XIRpv`)Uh6^zlpuyfi{JP6@t65T>pNnv@|t!e#~hg6M!0l0Tb7*{otrnJhRCTKJuWi? zB>rJ$Dc`pD72mNMM>V%};d-RC;v7NHw4R!;Pt*QvPN6h%2Nk&bV4=03)7ZgEHKi;k z`@yW*Q3^r@YN|@l=IgXr(6-rb+5>M@axya&UR$Z}`4^Y9Idg!)wysIJ#EZ7{%L9-r z8{2cCG<$#SZn*eX_vXZrC@Rpi5!BLZC5WNnv9GN+_}0`8E&%FR=$tUp&j6u|<6VO+ zg-Jg3VkAl1)Kez` zsd$v|;-QyEx+(yJ19Vg0bCMz~h7vo&T$-EQ9cdf}t*jfJ-gaXd;+LUnA9;Z4oyy~5dF+#<3#U+QM#f8` zF9>AYkSH%PFBL%`+%7Edjs*d$Q~4|)m=jGC!M>Yu*bzXVQNuOxXqe%XU-TKPoGKtgZ^gD{ zN&R{sjRNqpD-a8m&~%og+w2sq6R_h~^G%>)mo*hz?$h*k=;k8Dck& zl=wma`;YlH6*0?mD7TXG90p~J0SdiOf-aE}BB-dqX(Ie42}R3lNrG_)@2;3SxWjhd z_H{-kUzafTQaA<&%3!nj4s&-R82Q~5T^4dv$t}RKWXQ5?W3Jd==8Cc4VPvFd7pe8O zV~%gQRIk=y=i%OrGX5I3v)*obw){Qe+(ZY^>oU zu2hC7q_aSU__Qe9E=dI#JZyYQNqhw3C}C+hSB)z%nWKzYl31ee>b^vS^NhS*A-XBq zvC7EYJX8wc$9dY*XczBd^_#g2*562nzk%nLn01Kd?0eVaHiY|b;YGK^h(03{J%0)c zB!dzbDx*ZuV35(tVHohF6s3!Y!z@oAET<9B*N%RdZn+l97KStb1akA7x(4*ue#SV~WN<@ASKmJ6f4k0r(&1^sH{m4|&Mw70s zlM(l^lpfB$GD=SfzYVERTdQK{CB+7aZPWa8Z0A$7T3acrM4dtdws3AXE-&{H z;zP!MY^DeDnZpar139nyA52RM=+t3!f9v|*a!km4YL6)nFZTTiija#V2SW)1jhsCS zJmm^)F*k3z0qdWNTxEqo<&Rp5BP8`A6ox}pMPUw$i>6i^v#lA=$J?TZb5sTpv{%=y zeC?pz;)lJE_EL=TQq<;N`G(%aTHo-xs8a{*Jyo={tvuU|q^r72UvC~HudgG82YO+7 zNQ|>{;_IXFox(DT_PC1A#P4h=$`mo4_c z;e`;84qaM=ARKj^HjtYh{OJbl7wK0L+N1PK# zy}}$watY#}zjj9t|EapJv`D>os+-bcU~e^TJj8V8>p}wze*XiLt7-yS1FzTxk%rLo z*v9tN0T?b$pf`sc901z6cPg`&40a>NKJGaBt%!kY^b`Ptho9gGtriN1p;ZvSLBQiU za|>Ar%FJpXwXG=ROjA|3?i3O>)BlrTqo^8lG#>D=+wh{+V91ap2Dfv$hPG|;M>9!3 z`)(k0_ZI&hUe{oiTEEXcY3^6~RM$7=c5P>$M|fRb7gkWB)Byb{9lq^@8xq=p>ix{%L)DgsF4&ePV$BFJ zJ&B5V-gYI=P8 zBRTPIBG+*cKa$n`fgkeGnQfv;yeiaP05`v3!EtSaO|$$o7dYzV4BBEu1;`K;b&-qF zYPKlQ@pkuasW{!MDr0S)*F@e9kBs-m{8eiWYMFRZJZZflY#{FFm+7rNyOW3qF^t{$;$(O#D9tX>j8};%IPTW z6_RZS<$$d|_l|{qKX*cov8tHWkFk-KL!g4-;Eu(wSXes#gymv6v(uN8pvln9$1Q`% z#m0^Cy1C49jf>#Y*twKtck{G!cKh{^rv=h+GyWJ+@uyED!2F5=lbEoH&&%z452KJ9 z%`Yb(wt7h6s*z+^2X86WY;P~|)aQIIkFw1B9+P-Ico#kS2CE2r@hCe8W*=pS<#np0MITgzTsmp^(5-+M1dJqSyRTkJ9eCRit215}DL$OP7 z2txzq+kBcJ06uCgN)OCGKfKnBeyhO*r=a@`!E#-e;=6@mPy1Tt^I@J5+V`1l-cv1I zjtjSTK+zHk?K(=XI|*WrZFJldRmg{6u(ns;M(FmHa$NSTIupc-_Yq|8I1itb2wXy6e=wu!haG!pe{I}k{vu%7o$EJv9i*?3jWKpDwQD0&3F z$0E$=ZpV2sl|CXy&tpaJA0U9npLz?S7RdB#MrRoLe+YZ$;7X%t+c&mtn;my-cWm3X zvtt`OwmY_MqhoZej_u^;ocqqJd+)1zUe#B-=GyzK{qI_9&M|%?%BX)ljdm~(mvo%% z9Z(rAIl=Fh3~JI)T#hqp8m%0?=ayWz89;<&Oj~a48ZJCW*bX%ba?j-R*rzj$tTGh` zk7tMrA|9eaKLg4BcQf+0*8mXL)AIpz7F}iva?b{aRQ`{0?3~f(L6vQV{+d;%S*-Ra zZ5J(l0<)YK5X2;Z6U%1Ggea{I8-Adg5%4P$6dH>q-z-woOJghQOh(+(Blr69G<^nl zSI+WL!>8cnLe6Ifgq{^I__rK53h8f|ccaJvx^D+6)gX=asyf+j>JJ1>-^6@6phEw~ z>9zH&Doao(F&gfb8~#JvXGFyG3+~8|V)6_(C3#S?;I2Inl)MlKRl~Ti|Cx*QA4-e= z32fY@mYb0W0|D_wN)yh7#7^6R14T*mvxGqXzo8p1Qv2=Kg;2t-{G*iGnt;K9I5a)t zff7<`p=jPw3EekHb(rTooi=FH6P+Hmn|mawvOg&a7&h4Uzp|F5n7MX37ieOoV)h{d zlFDSHY%=5iSPJ>_X9j&mJPF8#_MWnD+$YqC4OA%t7M_`#Tcxfw0G}ER?z&ITX`4#A zE0JnZ9SHGW1R?~eBxFLWD{+s_MS%5rFuU`ggYyUGu5R3fh=j*b#HoX4xrJzZyBT7pYulNd4jCcA3oFPXp_<$A%GfH8j{)5YGyK z5OEp-?uV97;Y5F)J)*o3E)!Guol|uq9b@yKZ?(>5LJq-1o7hWzkc#H`^fj5kFoX~f zXezq2m4GR;8)8lkM|A|hb=7R2x&{l+^;#k_^+38dgE=s>TY9wq08-E;KayNI>$or+ zh*UE0!*nsx#RV1JWTk{fvESum_9>Vd$%pR(h+MT9+oqEsVsB_xg6cQxQg;$?2VgVI zvDm3-ILERaqhZRM7y9N|>scv^jB>3y8Ggfua=s@qG|H9?vt8iRm+TUho0y}-Xi6nP zQgNSZ=k%^f`4<)s6*FvbEiEy*A?Pegr4C=Z6J_-yuK!AQNr%uadCYB7dx7pk03Y@UM2HuFdW8{vOIcr_kAbq+N8^ zjc2Z{3`7^PDsT6hwAJpN-w3qeZf8G`fcNB2Et681@Ao?t9ju`I=C+>Lfw@@A`K5lg=AIZ!c?w)R=J7&=t&| z4zgq#*nT&o*P8jXSlh^kNlS@@B14iKT3QSEcYr2jGTZBbPjDo~e|p+D#Snno`Bc1XPdVYRRMvPKoK z53FFR8FoV`Q4Fm2WJP_oPz~_*WV4=~r=!Y}lcC3@>UWd+u4t!?!AASh8;YdIDYOoQ z4u-=3unl_*k%yAEqhV&Id1+#-AuUPmV5Q6tZN9 ztJ{JOgv3MdX^I}80D9bFMBfzeWA{POFvMTJLuE3Qt`~s02lTk_rqd%>t&1!qK?t*t z(`_IhrYqyu@Z+ReiUs6hhA-LIhdyh)Ah{|4rsHcHvK=kPPjO{Qmu%Jt%<=$#Bl)Re z)80i%DhVjvzxz9kxtGMLBdoDkeJ_8!Fu!lvY^3p#_UT#xF82T$f($jdYxWjwwbZH* zqAUoTuMn2`k?^1p9HTB8D`ehM6a(~jDv3`=7Nb;--^d2<;+SOVlS38&ttO;!Z$7Hak`d;Q-=Zcz zz&l9Y1D>I;qQz%xvY4Yaf1HoiXycm0!72@srTDJEA_JVoJtE=<+V!FAXW3aEF*tkE z{b~~Ar@YcqFU8)GHq{T}?b>!=j1*x--S{$#>zb9Kzh4pL*c{6+e`x}wi085vh!PzT z6+$XYJKTyuP7(;3lVIgh!J(uVa?=x&Vk&_-2+_684TdlHaryE5c;^Xcr_Hs%!L|b# ztq14I*kONBE}do4r1|94wZosqjl9G7tOIBbPIk}ndqSSRc=fpXhZ3Z~N_pZ51~;aw z+W!T07>#6W7&i-Kb@vBM`Mpn5>TloWmlTzYrULH1)^EKZ2TL)uEfbLPZRp!K>)M7- zsO}L(y~Yu@!{YI!P=);t{M$+3B_IzXdFY|>5q^dX%~+8j?M`|k5_+VZDT{~P;5f!k z#M)>mnZ@WKDS|>ZjJQvjE%beMcAn;4Oj>K-X(E(>=iA}g^WXzKB^Bh){3o( z)KI&(I#di%`kP@`698i_(R%33u%B1o5m-XwR|H{yk^6C#P@G zS}f1ukw0b1CnyB8j3SHaLkhD(DyL<3S5&gN-0@rlvmmC^L|@F3R;2_QI=Z4y%}k-e zk&NB4HwU+yJ9bhSfw2WMN#DUGV1S%fE)(4q|I#8RRLd;E3qHq?ky9F7HhU15td6Rg ztfEF#^PL}d50zoJ&IvY7TF;?f(kC3S{q4>C!23C4scZ{?Qm4U(Jg@w17iU!=HQ2 zRjvtvoOomor=g2g?R3cy)4rf0xWDb``{r9>bE}X5x*bvA_FI22G(k1Na~MkX6Zmi` zY8!`n4a|9&ZW$mk1UcM6=Dg-fh0Z<^ANK?j#);u?u`}Kyad!+3?(VU^{;+sL&4Y8d zt_<`P(kg%vRZw1}f<3z0fGs7q>Zlq^R9pnYS8AzJ1`~Fj&%)>dM{ZdMP1pBps2U+z zkac1KnWX%gLjTq(VPfC^v@_rR%|iQVDnZEYQ6MR(?C@wBu*{N> zq$F-hT}#{9IW5mnksDqFuDc;l9AQxGRg$a&Bwma?Tsq0Ef#jFL4RS5~}q+`an>Xc`u0N*4tF(uE6Ujr1eBkE<=VSj`Cm1R-tL%!Vs zpx}Y8w@#S{o3mP`9IVUehzHWN#9-rYO~~mZ$ay3*(Jht;yRzkOSBQC}pFl04Y^^C) z5Ev`B79uJAvF8q@QYmOj<}HUqu=eIY%~)>I(#n`}XS6(5sv0J^$pT|7zXzm4cm@d%4TuJV#{g3rt5X!IDkA7i%|Esd@%yQoz2+M~9)w@pS&> zwX(e$(%}nNs0WVR;SGOy7d{rC)l-k9PZD^%HbKlADOlg<%nVDoYd66d#kpXdk8nGFSazn7&6<0S{alU%%G6`SQs zS8#iE)E0Op|J`X#*x6aw;$MW0_5-(je~qQ7Q!US|Q=DV1Hlxfld0{LdqhdM|!o5<%4C9xyy?{do<;fd*t_ zj1aO^%wrC{pE6ix7%a52V}iSRUM)qi@opyz#KJi{+EZKb?Arx9E<H2uP+rzV%R_J8KWQt3t)S9LIP7CYPj``rYNAYNNX`rFg+ zn=;&NFWM0_7HU{8cuncx7PEJ;y6@D!v5B*{xrO6RWE z$9$-?tMMN-`Y~l4Wk#Bz4mrv%u}cP_XG-%|In>xq!f5@Lc_=(wrmx2GxH*yozC&4X z03^`R6QV=}*{LJK9OJ{})3+%(iI4O1cgcT}(?+-c>}yb8ukc%imq*PA^MJolZzWs* zPJqHvil6|HNNzFVVmM7TAsPOP??P|-fnM=UtqI!9JVpvis>)XQqKSgkf)1-RRlZi^ zzp|-$TxHSs$Irl+tKRVPxnuMLpRLQcl^MjG9#0QR|C7lj9ATfTg5a29*ABLjzA>*P(O>*$P6K)K4j_> z3LB>jTJt0>d+Xz6F4$S`tn1uB7(h8o_$f>_WNAm6rN3SmZZhEQaE5<8$6PLLeo)^* zG5P^AEFG^6AXORz6iZId2XVayg}J%u{3=-tNzjbQR!thqf=eXJx{u@Jc37_))@W+4 zMto@#|BAIXW>1>|8UC6Sj?L&+K^=rev8V*Ttzk#LbqgZnf|Iy$ocB>`Gds1&G7W>v zk(RB642kRG7+Op{gUgDr2K?$z0b8b?Qp^QdXZ1;h2Bm-$eZep18FaO`b+3l;ac(qX z&?vF^+tg@KC@_FfxrZ;-V!LRjCgEm`izFIU1W@C4Ax2J)$9*TxGEXIx>}&+Brk+z; zOR{DJ&fXX(R-pa!9ANz&EVq%dVddac>qd-eQW{@ zceea4(C|bG?tpxDl~n43WTUS$wgq}OeCh`}=~Z3Tk-1|PEuJKa#zb{$n}bkw=RX?yifvlHPxZvVts0Md;>#<8w=Bms1v4B4$rY7RHWVBqK#c&C zBNaB!Ja3i!ciK=>L=@0NFy$q@OaT@T*q{^FiSBNkOagYr7OPA9nda~nWvXdj%^ud zxM6;J<`pNl;m$wxc6<8p=6=53eEwN_85Zm^PQR}e!>vcpBn!z_LgUBZTkLS=#3Ble4~#8E;Z}Y4l3$;zK$loW6;cZ#o4w z3({6pxQw771`4f`N5k8w4;I8X8<(&OPA>x~kZ9_^lexkd4#4L9Q}JwYDcBPraVcDS z>m>c*5!|<-5(GC}qa_C+k^}%GJLFH|_||ZSh7y7@4?Zs#cqi-3{002aF{Er=M#v0^ zzMQv$)@mFi6U*b)zZd;574mJ314daHSp#+ZA$5p_rm!pKWhry0FD95Y=!_}}80AFW z2!xQ9SR!ypEWvK<-p+Z5Vw?j?%)$mW;iS3>3!a{}SllgFi!xgAm%RZHt%Q^?cn{Jf zcvNH&9({e~dPeWR9AJmE>t1Rc9WpXx+!UbNIs+w%{$>)t_t0Xso)! zf);RF3OU6USNAbOc1;2B(|ffJ=v`>(4P(`ioUvqRzB;ghb+B`;+jmMN3k)LzkrTi9 z*#%JZ4}~4~d+<+hV2K5Vbl*#`DTwA^N=A5a8WaVM)ydrt>#J;NAlEFiPv$s7Im5ni ze)xAE=-0!}4E7;IZ-Qi>a@Ot1K_UegXG5RwctuF;rk|YrUe_r~ITiy#2+#C(7;A!A8%K0Tno z7e0GK{p|S;QS*$;#y}6b+$@5N$is1%$oRuI&NhmD1LW-qUI|qI*~jSWdF)C5!Mn4c z&0RCnVz6F6lS>XTWMo6lY5DhOeH9q~h)Ios<_QhAQTOw(tal1QH{LKqV1h*zwm7pv zT^h>U{3%Pcx8w{0d`YG7MCQMy@dg8v(M4uh}3JQ*UDf=lduO`P2 z`^t}_iNpp$uxSrI#hS+)_|dUC&D9n!DO-A@Cy9%{sA;f(ER;tWaX79R|79#6VW8vP zlDs-sp1dyh$Y3>ZhGiH3vj7r9O)XR#VL%E{{9uRRlqnpz^+3HV!i+Yv((m2!!Am>d`te9~jKWlj_`BQNX@&fWsYzz( z6nw7F9Wwpz>m60U{p3q|ivfip!gST`BU9N2CC|SHo;M={RlE2X)oHz=&in_D`AUCc zyxEO~+GgFONDRO3Ff3!_ZltlOztUEm}0vuIxvX+WMb{JEp!AaW(AQjrp@8&t} zu}Ytd&C6VW8!mE3zeMc!7hAq9{<&;AX4%TU;yr`+fGs-T#9od;2A(msTy2{dHMPue zsJ8V3e&LskZ=|(RV{&PECwsz+WVo#CsCBqr_sfeT>eO@;Hyms0tow>LY8)P4-V}ni zw9nhtH~~CnT(fbvn)QMY-3#J^U-Mceb2$(Z>d&~OlBhbCV8~Zp3oKs2>l#Jy0r>mk zi<3Qv>L!jCebo;LYg@hlD>ec3KXRu&3(i>{zJq9id>|lv|IsvNPTLBE!2G`sF|@Y6 z4GAdUoGd3HgLM*OyVkNUTxk^?n@$q>bx_gWA82;yiBj>!=N+rWy}ZimV$n$#O??4! z3Xv6^LXNlfk-8;{v|>))AitaC8}S#hCK>65#LXV6l21Xn2$ zUgKW*fypO3P3xQC0&Alduq&o#0nmfxg(k%gg`Diw%I7%36>i8T4z9~@XKZ2@vfy4L zfcnLf=*fRlfel&}Uk0MlksZ{0#J& zG(Y0%$^C^!$%wwNIhY5))UAyVw3=QvnBA3e@!yL(Ylc9!5#sbbu<^8t0t|~-*^n@^ z(qEUC=<6psmhHncR!M16F`+S)rtYe?soUt3RsS&S28gLv*_B(aG`0ccajA$d+O zOP$>dfR=~2@so^^b6~l@7jn=qkTT3#^|VTMxLk0asy-Dg35(X|C+~rI+S^OPmzau}|Di6mrvQa@jmA>Tyad zjz(P9awy_!0=;DPdz=0&y7-N7k0H&{K3T1xpjsIb)oKR)wd3K7E;sx)KK73eb?TNC zi(VmOL;8{(!-*ePwz<6i*EcfU+>T*ZR0Z|;SEVtF4EZ~;;?MbBY5*LLUdPY!rhio# zMJ9lOa)DJcPl(a;B;-ie;o#z?wn0W2RtpF!3*GIO^=O72Dczj}a1?Ck+7$o$aC;6t z=|g#JoRj*V)OtLQH_W&=*9_?RxE;zgasRj;2h{>}|4#kIreG`1>aV20%eaC>jLH(m zQNb|P!)FCQv#`I-#(=YU2A0Ibc`{A$gMIA=TN`eRaYuA_P%k$7c%zz_5`2j03EvTn zcp(&~qychbyzjW`v7o}zIbG-|DXbNYmWO6CyBbLU`PYJi*$C!do^Tcmyxl%kgBfrBacWYF5O|*wPO2OCM#44+f zD`=7vL{=k5NwH=QWrU)J_MwT9PWIRib~+hs)e%|7%2m5D6sL$3i2=iTyhG3Ra z$exa1y%XsM^E=^f)g%415g3fTRUj+kn4*&rYQuYUBCNU7g46V_%?(xmES6R-vOcqC zcw$v}C@i}ipSSl^A5Er$OrA#7638@jS&`igc3@Zg2FOrNf&&nDWv#9|28%yx=ECnb z^UnJb=%*~Lk&YLWdx#Y{d926qEb8}&W#cErUb%R9A595#JFEqwFxUM1O*ni#5h@?!L*TXL&o#L2uE6LXS>Tr%u zlQ{^Aw=bSW(a4C%c$G&O95rWq{N9#4vu^c4y5DV$Qdi)rRov1 z@{y+roChua?O3G-|0o}Eh6&8PQDq(sdTfNvU82H<19arVDhHOGB31Nze^xw<97=IG zAO*Qo2gSC7c}|M0OHKodjz~T!sS2wx6<0gKnm6bXfe2dBIf`eb@lC$8G15ugdUf(= zf>eif>PED7HCoHf?8#2I+(!B!vpPBTmr{OBZpnq& zJs{{Bb-%50yE5?tn^6#tMu(-lkrZw{UmLx%6M#r+>2N^WGFGYY+Z#0pT00gR`?3!G zs_3#jv843SzQ(yy09;>e<_&{Q6X+Jp<=aQVUzk==yYMr+Dob64PGCygyn#aln6Edm z*w-o&2#4Ej@RQlUCD!Y&5@@gREwO)Ez7co+%_am3t4CtAjS`t!`|!pB%@s1dKDklJ zMYfu<#!823;|_1FH88nKH*~Rz+tqkyNlFJ1hl4!bRPd}<-i6UQrNuPuYnI>|2m{^l ziWmDM(%D{50_(6N-vGv<8GUsEaGHu7(S}iBXIl)PqQI1N z$mOE;=sFB|=Whkg&GaYPLN0y_bQMhaBt|TLGcpy7IS)_#8u-ybO!p`{>|ef$jQLhz zEU0=O9`&JE|Ns3`(4u@*0qSksP!RVWSpljni=E=CH24|Z8uu#$eL%+CPo|CWwNBco z6NtPr|9{M#_cIMZ7vVral$q0J)xrKB#->gb#Q!zS{!sh-4Drp{oc&MM=73YCF)^0k z-BFQ^?S`pInNOe5?%cxakvLT|#o^-c#|@XLavl(anyH3=Ga23L=fTvw`H`eD^Qxx3 zkakI{?L^wq$%zFNt9)w0GD3WuewU%gibgUmuU7!z1y*5r{OIEP{y?@$p^e3GdK}EQ ziKpe~%)AGjIhi1DPq*)YIO@Cbyo2O;bG=I zLaV|9NM~{t7x%9NTZS!{!YHVy2>+QE9nU!I_sRf{s=eZa;EaO|dN@8Pa`|bdO%D|O zdKWK%$K0d%-eYyfJTVCfZ*{pU_%$Qs03Bm9-3sV7NyFP&9l)N%BI^${ML{xosxxDj z1D47ZrJga=lgS0xc_syViBD|3&NS7L?M2r8jK*;G2s(w+RFz@r+yjEftM@y&NTrBv zR2wswhzQD*ZE4Y^Sy%@n>4|jyB^fFtIrIfs+=QxJU}aFKT!qXw-Rg0)LfIX$nkyAH ztcC`Tw13q!uSekA(?qFKT~NE)vIb%bTdjojjJB3?4psDk7O@ic z|GbR0Xh$PFSbO#zEtKZu!bw>qcN6prH7jNPNyBU##5}Od$fdfOi3mlTT^=VS|^h55*>DsFZSy#@rEJ zRg1hrQsu`3!&3|E-;8d;82JYyJ4YkXe|#cqhcd9{9Y-`=NX<}%n&}Xyu-)Z#XFXOL zMPxJ#E{+zwW|scOIb zBneq**ubT<(V=S92X-yrLyW+?FJ@`;T~{|*X#Q3UiYkG?i+rdRWtJ||rk3vw^)0X= zIP-gm(7gIrjy-^cuk+hznl3NRZ_EwMO#y@Lil6pST^4e4FaSt^xMrYa&Ke6Cha{xQ zdT!;9{T(sR!3uXSSQH^+6wX7Ov?$91QeY_?e#TPXJH3=6r$7bVsH*M3p%&tvuYtT< z{L~Iiug5$7itdJBfV@iQcB>HkaO^8&$FG9`@~y|2uw&l1SEHfYeVnNdN|aCOW}I?X ze|+I;!Mz&q@ViE09D^3@t;7LTa{rdHV0I@G)@iqoz2)l+l91Gpx|F2pM%BheCf3C3 z?lIV;NoXES(IB-KyUvd3(AsMLg~n``EP}2P4r1AT;Z9=2R@UYU3Af0ow?Pn0@8okBG3xm-K8xlYp!Av#iK~8^o#(cugzHU>s@I09H%dS zn@cv&xZbVMnF<>BW1(p)Ze$(#n~N+XPNg;=nyR5q)VgK|-*MTOb5g)mhiYMuR>Dw+QVpxCct1)|j%Q1TZo42E^q<&K?ZvI?`AUZZg!-w_9YwW()CTG{ zoS5c2n<-J~<0^p0+oM)h1~gc+mo6>f&65GmO6na_+uD1TGWkDCMxgT`CF`7TfBj?= zemUzn&P zhhi$<&=05)Cg-cm_ppci<*9SckGI##Ps-uLDOY5i+}vrmPI~xu=M-5Y7UDM&tT+8Wx9Bw-mEw0)o+9^N-$>%RCaOrVk`AuFe5~M!gw!O!E zgZ}Ih>@59ySHCClVq+YI6w8q9!IFkX8d#&SrvOZ0x!A;pB{(9%=MgP^C@ClsZBs0X zkU2VRm;83-;0TK1Qkts`8w~btfJmGNu^{9&dtxfqzRKOU-pJHJHt#VC zuPm6Nv>NTo%hX_6I%+_cypgM0t-8-CHoM#Zz_IKmUVbv`E_02mSwcQ@pRLMs(gomlyf1ACq8_n2i? z+2o>?%~w#C;i#du)-3vy$PXCN%7mdy4fjjG)nm#DjY(n%v+3x!qAt@9D3RZrlRXsW ziVV-4X(MHH+e3ccW=_b|ktBj1IL5)pD)5GW$BLB(kMDep;Ci09K<+)f+5Tu03@Mz? zI`$7xCh+iU)w{WCW!o-V@h!X9C)fDvx)dOV^X!Nu;y(u&D_P(9y8z(R?AeR{OkCf4 z4?vRk+Zi(Y`9-jhmb+e-0P)-{7~*;{LR;Yvb2=WhBKPgevBkw8UUo%dET5e%5?z-f zt|djrGA;d)$I~;JZ_^`(5&t!+H67^@&Rr8YJ2;e>eErwth<3G-7HOzV;Ys-9jkz(N zIGz7}+wIc=D~^~!=ZoO~;JO9$a7^iZ&pkrkF^AlE&2i-wQOqkIVa<|AD4w z>FcqLrMP^&q;=@=?Qd(sACmSFQu^5-w$YU;omQOfIWO45R!kv_MLU@#fKi@{Cd(%3 z{FAsBcN#i9f)QQfH{ma|_wX#jUu?}0#!#(%9KTNccMST(8WME@IDRZRzRw`c9$X4P zyv^>Ens$pWkg@Y593t_=wb_a!*KguInH-xOgCvy9O&M0QQg9zxagauz@oR3O2X}YG z?bD+W(u|Y3bO$C8G}3qB*f0cK1}xgIwMcz|@Of&Xv%sk?1gP1}KrJW4XJ5id2uE&T z@C};j^srD>lIic>m8K(*>J`jiiv^T7BhXw-&&==898%Yo6+EmPH{T-B1Ol~s4c8Go zD&rR{VpH0kF%gPCoi ziQQV(q|Df>8W$Zmt!vV*q}rAqQ}@C~m1L}QVVN@F`F54|_`h|ItbK)^km?{)T6Dw8 z$$NruR*He@JlOD9$s(mxtQq#GHH@HQv_&}+p=!CwdYEmhtQ&k6oKwt)ar)rh)W($- z^<7CiO)UVk07~kCHxJdr>9yhNsD=A+z5dza)>0gHL9+`Ac{5>j^0kVw!e8|$z zI5VoL?~9}zT?-f|H?mmV_`04PqVp$U@l4Hh742e#`K+-dFsOWUp8OB13QHD+9ai&p z?8K>&^VZKL_ADFr=vbFS``d{>r*JMzUF>eXVRL}Oo9dd1LQ^9LUHt6{$TV^iqG4cL zDIochP|3`*8aXOD-JvjrX=c{Yp|=>Etm=F+bE>tY=HU-Hl5OhiVoj^^Qxh#VMkXGD z&CKtZGv-#M7^C0Q(UEXiaWMo^BLvgT$iMyL{~El^!&B6JP`+-Snc_3>O=S=pn1DDk zdG7&2zkva^dd&!`$wPyHc<6kPW81H_xNqtSpbPPlo9xZr+L(b&zF8)b2$0N#&wdvOv-ze|xanLfsZJF^|3FIsj z7slIqO<7;6`o#-lvspYyqq@_iYvired^7^IC4vCWiiPO&jXP9Q5df>RWC|(NC=Y1U zX2Wgy{lr_>^sBR3WHOo01?;8STSIj}hkN`~(YEPX4Lff3@meO8kNbnmdI>SRC)L?)_9NA(sSH zecDq*XD(zp9d^p5H%O5NIM1OGu2DS}Q9D3|&4R&ErN;q6va6@WaN=%i;4l`^x(SUy zV3&d(K`G$I?sp0^QwDejPlwPT)GxbePFs5FYEGAXTNILsxXv>j?^N}-Lg*dAyndHY z4+v$Mw$+`cIofQe`UrvyGV(e|4m|)i@~QRe{ZJM?oDbbQkpt>t_jGa_C}lIxHNn?2 z6CT-n!tgcFO(@$e!1#V%{u#jd^?Z@h;%fQpz($96op8s=phU*sxO^(B6>*`(p~MhG zm>|LLBzbzR_DfQMd` zk}|4Z2M&rW(oL!apSxutz;pn5i3An7tQnttBH}N3hcGv1mfE{=T2vD(ozr3-Gqnp%3?S#{e=0h<|)$8uh({U)B(vq=^D#R&X*;**mQT z9M-OHiuHLVlrSI<)s%hvI@X1%wxcVAV5&7vL0+O0?U$SpGu*75pQHPQ0_y1)y#q@5 zlU}vmcD?IWIFm8m#}azo0zF_H$ksUj@CG#Ix*J!UIy|&hu!S_>ZZur>kn89qPL%la zVo0VSu=Cm4(mm#=pa}v>KxT=a+GY*5Ik<@;&}0_6Ise(ks=ICS^ZG@Q3ukM>#kj0` z02C&>tMT2fD>JB@ePqnu4_(aT4pV$6c++q@2xsFp82^aGb}Lq>U)?pg#(^zgdh%fg z9)&dr715%3CMJH~cS+M2#LAW3^9(-;Av{KKu5k)5s_w7177+mqCT!YYdVgFk*$%&& z8g5C9RZt}|!K|3AdfjjoRj*GS9XrXZJ7p@H1e#`LXqm~G3Gd&9Ievlvsn(IfPPG}>l_=f8q{a&VqWfm4OdPrK%`~>;KgymL)5GOb|6nA z%Rr7o>cgl|#?b&$963HRh8n_JoA3X~zas3%M^lFlf$#g&ZV_T_j@n#!OI;91+i~8p z3-LdMR#!4+Ainud$6h^NoBn4STzukm~J++dkNbSEbGm#Pz4$72VgR^GP}=V zWJ!*T{&nC6?tP+DD$W6|;-YHSw5dX>k~6qDWW5CkA({bV#fLNT!RWKc>v4#ONQ{{> z`?W5!wd>?C5?9_nBR6pXyTehIz{da`+c30Lxd3FIc;!gxakzx4UPV z>>fsXI^3Mr$MVKmIlQcHneXE$KM8~7m_o1xj-F)=jL0&}Ml*vBEtBbaf6}egtMLTq zPA$~rdMg89Tlx9(ka=I0M{W`ak%%(>N(F|FQNCY)JpGv7!#PW0d*=E~hhbM9I(7~4 z6@fLv8KlV5MOlX^#UNrc3L9vf-iZFCwdI&}4Vx>Tl98(VPH#=oP>6a`@FI!F4`hZU z6>LyMIJ17LLH!Y42sOBC2g!c&G~=&D`!cseShNVp-uA%EJn>)uo!9cOtoqfe@;}R0 z+3)%^#-FDsZ{`_a-r`;b>mx;6&}?2o>;JcW=PzS;Rf_aiEhJ7ok)-@C0r%xYg^nV; zOo4*=dx=*>88jstBUD)7(b=5jEU3%xr`~Vq|GRF@otJV!_Io;d#s~t!`5)6!inRQ0 z672uZPNTi;vi=jr|G0LpiJ8#^24$hs{D{a|x^z(2XB^WxV`e%Qbs5asc0AQo+1uso zt(pOx^QT}w#WbatAqe?J+17{qQ)6=4K`_BJij*V{4y|5iP!QFDogR0uwg<6Jd`Pq0MDHs-6=!t&mU*emT^#LIcnzLO5L6R*fu8g=V z0x0oqz=_a^Vzv6~^AUoZCLr(LFXRq&#z6d*P4pAySFbWHXeVBU@(YXsT1^1zP;}d} zr6RdLR^)#BF*;J3zyM8ACH`AKb${g-V~RqB za73LzmYpPPKVmvWO)_Q-$RPlfC=m<@c##$dV7u8ExPTLuY9RK`2CWW57P}NjCYp|k z^5NkAx@*y{?ta{OROpOt?G$XiS+ewzP5aCFM4(B58`488WkiF`t!RgVU4-TVr2KI8u31Os* z!5ZpMaAx3$3@n$jGW0fByIg973C1F7*ULM4RjrDI=5&gn_Rwj%PsO%S_=vvXG!f1}+u% z1;H)Yvg0w8y`TViEOv!_2^Q`I|Gxjl*Ykh&y}39zdB(>-9Uvsv%tc8oUX}9$BZ`%7iY{(JCB)v#Tz9h6A8z*%`f3KZBuc-acl)VGSgzJuCKr|MVOJB6;mvzL5dq zj`U5OB1AWQYA$$Jnh2`MHr&DRpkP^P?f6WHVlKKMOJQ4(p5cU(mP2<@i|a_^+h|=r zyFW<7*=vg#K&G`ooO`Bph5x(n47>yJlLZmp4H>+Z0I8K*%|o(|jU=%d7k; zFP&qKVqfs3m}7X9GY2#lmY!LPFoDg09Hyv+=B%Yr>islmDn-b?nhe>AeRMzrK$DjL zdhuej+Qg^N*O=({NwpCadg7Z*E{V!@b>#ugRi>PaX!%af6tNLSM)C z4Ai*G)SuiKerjnw?jBEiP&AtWM@Mt#p?)RNbL?DXFdMJVb z&C9bcH(^};*9x#5NYDdSq{CKk*|0$yN2Xobo;J<(LtqXM!55e@$oZC_%6QPmY!A%M z2jE0)igv0lYF(2sv%AG*iVvJnfa zhhIb_8=L8V4D9j;E#VPJnNtV*-HjC=a-F^0t+@S=Xs`Kr>7Qj0D)(5D)QC8a8gb&$ zgD0@&a{r?d>zf2?#7cN*!XrG}Fr~uPMCtB6sm8{9@hU;E2F0NRqa!uOhxP~qlPViI ziLO)hgbk3wRjl8UW;_d)Mc^k8brgPfTn2H9R}*a)tsb8NW0{mskPF7pG>CrZgUlVk zIB8E8jQQ;KPc$>r?F=}LeT7@`Rp2_Kgp!;86WRa6UoUs5${TGf2k(a zj{XJpNAh>}ZB@Kp15hh({>nD`oHsgSY0^WYXUKUrkPq}<^B;}s1lh@6QciOq>mh0a zn{=a=%yiNI(`fhp^jiB}{C@E4TJL3Vhb_#6TVFQ!#-26Oh6SzTZdjwlrjc1OI=*RMV(>NHG4pZTUOw1)m$?JM0DJ zqy+KSveRdR(J_;3wGe;EshL2;vUgzBGIH`|3361ua zoK_%Mr(XCw?PVb3vjK7dQ2~LDAMXQ-X0Q2R;N))pWR1VV-ZqY8L2Qtd|6eZD?5^A`N>58s53qjC(j}4ii>+HK)JA z`T|?h>E(^h1m=hkTy5JjFaqQA?6v2|*Gt$wdWFjfjJ*urnpU)_79rbf$kuD!GQe50s>C3j970)O$zSo*rAPbwVb&JiS-ccJBoug_UdBfDqr7;T-zljJ_KuSU^CYP>P+5^X; zfx_$C@P0eLUQZjgsl?qIiIy?)NVfTSxssEFPgK+qMV0|~m&?>Kc_81%vk!Wdkxi^V zmDDMviRJ}X{SPi0-7j9dlx|?7Z8CdUT2%tMbphxD~bd?|bQ*xS3sq9q7wJ!Dh zNHc8YTE!tOLwww-zXra6g5huyb?Mkegwe5&8Q_dYcTRfX-G5rSAYySj=Or+^+GH|l zuHEe9GMkwYf1fG;NvxysS+uq20NVulaK6ZE;W5h*xc@qd7!5PqaoMNbznQ!?mV{~n z#dePv?!UY5Lpb1!DUTY}8BFMk?fsYQB`TqR^fC}zB8jju+KAq|z_g<$7X1B63N$+8 zo6ZDjcRt5~ZRXXR!Yqm}-u8eiFRu!;k(b}$j&gO&7_IjBvz4e&K)^h#(Wp8$#bK5Y z=Z+158U0y-_3QeIDf)@*m88vzviR$3uI2Ep;=2j>E4B)(Zi^k17WpAt=R+TU*_I`w zv2t2$$LQn7dRCufw$VDLms;{+ZaSmfkL_*- zdINuH1<|KQgqP%qwi<>8u%^PGOe}I4{leHI-1Wk3guv@SI*S$!)L-b#(k_1y=val4 zXr#dW@U|Q$1@aJ$7k$ znQ<44aBaRDMgOQsk8=$4$kv@hUN4-QJ(jvyv>Mb7nZFFLvh;c@w5wdzEYO^|8am)v zgc?_?nxbr%ax>KYqfObQyQ-Lp5!;K}$o2puvqq*aDWkCf4sGim_++jXSykdRMk%Jc zP#O;E#Mh7Q)WEN zto)@?3j@(y1L0(3Tg~HUdSWL^{(`V@(`+oQlXoO7w$CH-4Br(wcIhsvtifPaSJfuS zX!T27nx6Vz)8mCX$)su*w{}M|9NlHxrqEM%`)5_Chn}HkBv(MW9O^T$+Llsy8{xI9 zml@y%faWUm(=MjI5_m@eOC4fA`fW32EDG&3JTRHt!Rl{xv0DA!sY#jpYP6;$S^t7c z_gGszyeI3gojeXN@vAe$G_E3U?RuY_vvz0EmZgH{hF?#3CV2Kv@K$2xH}I@v7$)4Q z5SmR()15s^$;&^;J}2RQgq|mJEt4!ZE%ET40E=2TT8RZelP^|xKRY9FA3rg|M4*(H zY2zUhJ#xq>YKwWDdvzs@2j5nwczRrvFE&DMq>+v^+66Y6s!pauXb75@+H7>ZwK}zI zZduuv(*h`dAxZbVE`+#PD-EEF%)|XfHIyi=_0 z3lNqlyNf$XF)1s`X+D4J`b5zfy5UQToHDEbx#A><>!z}Ca!xxoB6*pkRk4M7pIbd8 zOF zFLXL=0hfQfH43&@JJv$sK*GZ;=w?439S{-K0&OULCFW-ze{4&GhoFZ2=!{_k?%AvK z7ay>Qs-?IC{F+pua=QJvhB2`AXCU2C9vQsf!eL@Nq77qum3{1e(@f2JBHh93JsCjpfG^O6L=S03eY8I z%chMf&1k1Fo!b*B{e)1Rya_3KChlzRc5YI$?iDZVvUZs-@XU1H%6DN{((>dxo67f` zx1wS>m2&^MC1bU((&i1?IvK9~BlTyMs?qhf-a>L-e3XQ*`2p&W;y%1`s{-QXT`!Ny zq+d(YH4GnAa(bciJ2$7SDs&F84uD~<07nl>3wIg!Ppaygk?03~=y~KL3SKs&52_AV?f5Bai#1UgH9(i*AfMcpU0_wPd zA*VELNZ7%DyZJ&WOB+(V$LNYT6#X?`yXW=Y!suR{ng7qe`EWF$Q|vCgA`(TFQI zp=}}Hzv-|C$&5Viez(mL2L}QY{vQwZIbHwPR&k99a(3U+ErVB|X!-WS`aLa{{d9^X z1Gz9|8QNuI1n0FHqnjJ&gvFP|SE*qB@!>4W-|q!yJG|}89*=;vEp#IAvgA>^{tSfU z#3P_M%8rad2!fHqRt7q=!TI+B)g3&rr}9h#O#L;bS1B`Z4)vLA5y(;BjN`%kcjDKz zH2MuJp6!?iKMD1;s*FL!7*JPk^KCM^RSD;hFgoTvNJ zr-CZ~K)UMW_Xgu(w?hrZYV4S+EW>qec`|K4O=F$=&=MJZrMo+Tl}~M>CFUI()tm?c zT0X;~sw{vpzqe?+BKaqaQ|{z`0_L8H&%J5#JNQgG&cTm3jIwDMHmI)3#YWpVJW^Hf zdO|6%-_gB?-m(0>>S2nqjauOlla^KjCQMljJDVE$ZGQ9Gl3~#5gdv<^W3}>GX1V9 z>0@&q_)#j7E|5Rl|7?pskyUINFCS7~dC|Qn;wr#WgoZq6Cfg~f-V3E(uQVE(JiRh3 zm*g3xznXyABu@6_L(CmP^a}^X$gkW}zPHwU8%cB(LZpqm#Xk5)00z(T>U=HIAGr^b%DB@G?c9NTWP?Od)ui?vmtyla<`@6Icb<$t%Fjon zt#xAhB_@V=9+N1Afui5CF9|FK4)^8sP@^?u|91sKbW2Ghh1Nh(2QMr3C~$IN3SiBh z1yL(biFum#{uGlqdf_Wib@JE@d#lUj8ecO7?XiOlM_NzkXRwdD7T-**Q)!q+Stp$z zSWPUt$Re5cJ7nVFot{k2U4SIJM+ppb0g{Iv3))qgRAV}j5r=jHWHeHwHkBrRV81dH zwJ+#!au62Q{*4@3MscA}+X6(01Q5&|rMC?|aqEgrjD4oxU$;}E0*ww#V?Uk2aF}v~ zL&|OTU`>k*O^fakc3>;|dn@mFX5;{KeS$iJ0^INqF{vhlJPyq8iQ5yC?p^Gt0@6UK zxUJx-&07_A#W|MHUm{|CWdoC(&q4x4VCzG-T{eU?%Q-A52}41!Sq!vF9{}|qx$8=5 z9;K-Zzfz7QVB8QJxpg`b&EHI2W!9slSyb{3Nwuv$@3)l-lltR4dZ=#`DvHD8TFF1A zB{8OLgE~9XW67e}l>HZbeWe37HsY)im`e%my5?|3ll9*bBZHkWSg8t%M$x#9tqA`3 zB#5*Hib-)}EI3Ov`Y<7nR01|bhcC)x+Fb)lfyeS*szeQ-W-S*;jhVVA=H)S1Br=9_ zeWbWc5v~dkzLu++TGO`+BE_tk(^ZvP>CzkP%r~@Vrr9s-Ey%2Vj zVYJoTGX16vaNYZo^|{R`j?B!=u7dY}4#gB~lG^uzHRKpfBZEQ1z4*o||GXs^FAP7( z_`%0wD=&{bEEsNCu5UjRpN@C8i9mVxcj)PwED&LD{fPxw83wN+i>EGqoI@w7KmCTC zNL>3bWPvZ_8CGWftUo~93dGinJ(8mS$6btD05B%(|=H!YAj&d?`q=uDj za>}ZTRBslzDhWZHmU~m*&-xK#1h%%^wVN`fURp9RSe3^On{q&j!!{dB%j6L04!m4b z&^M92%zGHF&@l{Rohd16is>GvpOJc;7M?GuflSr>qg#M@i+(5EZMGHP_I)*y4*b&* z=qw5Fk=fVL+m}X+I0#meh|(6I8zYJ*uzE1T`d+ZebEsYbGI%56mH+YNDK0KyvcO? zx(p_$!aH!+;MXHf*zsz@r?ecHqYgI4mM%Q#F{rB0F$k!nhMP(ho~q&E_o`CphYWr= z?RhOmN#W)!_6N)~-uYIvN-N@Q)ET3W%bBhamIA?RGS#ESMKDVCf)#ksx$aKn1;yn} z=9~rwcZ{*p&7QPw%^4dUrB&XBEsgX{bLL<)!qxZ8I!2g`+cv$jirzXLSJ~nv7yYD{ z>fPw3=mjK1SJNKI#4^46ZLA;MQ8`-c z1~6L6b!@0JFln<8qx~_HcpwlKyw-Rpn>sKQI+~CwP5y^vTk%wq53TxxEykE*VE>P5 zy%s?6NkNxYIpIk%d7fX8nzl^=JM)3qMC)_5%fStmj_Kf#j%x;- zr=mDGX_gW{5RUy=*P|G+!}=Gz-5(c5gBvga`q`)9E}*rpk!!HfEO9x|RwSz_t4|%J zBWbltr%sg_J5!B%OM&ez(d+Uh!Kb~s$F1b6>o97M*;MGb|3`A*_`0Sq-)BxOx>o;%8iimLlN% zy=g(`tpPB;nP>eI(nhLt<$fi*fY*J+30b=8k_bH^s*ykiSe1a{*BPj8ulAh?qyvREZq8tAmm=`q@E=AL*a0l49thOP zC)N)9~=AFlV`U^5&v6TczyR~G?lQW-7Y zxD!O%@hUV$cgk*HpXqZ~O$mYCi0&ThoN`nqpsc~0hI=Dc!5&U%1<2&;`X}=G^r4zR zF{tCKh~x|eEs5#%>Lw;?>5o--&}>S?qSFqV*#@28W@LudWq40^OI2HU<_iguv!R%Y zxO+z1IXY$L;FQ~PrWJ1u`f~xFHKt3_nX+b#xI@39Vg}4M{}5*OJpFo8T}MsSL@(ba zrwmzAbP2ORYrRz)4<3h>aTDH9_$j5mo!c+af4zpI9(0oUy-PUIhVSxolQYdChj-0;MR60hc;#ve=|$!@sxW(`+lyj z@6){=tpCx&`+JJHOE8`_iSLsS>m9$tZp&R3xbz4&Rw$G+?dl{t?a2~bP?@kJ&nR3>110XB@TUg}xguO-`*b-QfQhOe3Kh6(_QPH>wYzG& zn&v**{IkvfU*_`}3}EmK=JU|En{(R^fyE5;U*@&U2HtgvcFfqre~0xCh1M^13I@9-rc$X4Xm=&1iXGX6amDn(t!?U(xb%02r5^)x^2y_?IIV!s_Hp@ zRYw9Kj6Xi^y+)jr4HoC|PQCHV^m~()WgcRvVkTZNH+JQ|r0>}o!|VvZT7$)mimwNH zSQe<7mgOSR?xz&Yz%YhAmKl`P2$)?65`aZ-Ldq>(96p!IdGY4^1$prr{AtUwlL1~q z0r97Ti6H^MIZFN$B0z8Lr`0fw2oN+;m$a3>FS4^35FsDzr-ftE{yo6IM)@B@>DA1H zpX~f0Ksfz3*iawt{DFMs`6opFzXI_`}blIa&){>;=+14Rhb*Qfo>g?&Vbh zOny^>>xuxfq_5_O$BB2EkRKlBH`ON)V0WmuL+@f8?7|6_`2I%b+z{8#N-_Ko|G-6< z^v&~Jbp(IV^jAKrsnplHYL-=VNIMVFvdl_}m0y~C$<|?(*$0C6ye}HUu2G) ztuPH~lMx{bI)<4e48)u@1cvB|7y`)Da1r-(!1Mo)5^ABL{tSBJKFhXo^FPWbi^(2_7-e6G9S6cL%vLCwfbk9tZilv!2*1() zUMKIIzYE+ATGLVxmx!9Rl2} zk8uUZkuj+}-z)*rFaROc(^YpvG9MV#do||&wKh_9&(PouaJo?kL;!>+oe6Kj)lq3K zl4;na^)_3NVpElK8L035OxJSf60Wg4V&b0uSE$Y^7#>-|!!--q#4j*Jz^PC^Q$W{0 z$ORFfAWsbsTGe!wzXOmD=@uin^)=pTz@5;bGy1^6kkkr9`T45C4-mq zg^p%d=oXzGF=5_={OulufU}De>-=zp?P?wNS^GOUVP>IFEBwG0%g~K-iBDi|(J%_g zcW=qYC)T%&uAi{pc_9EXz5ihr=NiWPU%4!(RBA=X6oP-?6Pk&@iJJ)csMY!s4}oC1 zrQ!qV`t%}7bR$Ba<0)Loy#n+&_=ui}Fr=Mqdsw1PU&_%xErYr>X9B~o)o50qmTV}$ zqN-Kj2kAxM|A*4>e+UhWpZ}D_|JEHIcn1RF1;PWeF|$b-8w816HD&csJTZqPiB!tgBr~rOM-ZP=D4cn8wMY57WlW#KxB!5%@3zBY{aE351}?#UurFONCj?Jx~EVM0o>#|WDxD*c_ZJ*rv_3Y2mu{c@zON~ zl&SA&y;J9s2FquuqukkF{4H_3Y*;PJo}^RXjQ8Z8H1rQUv?CRL1!r zK=0Y2U8cNF=2p?m0Pt10_xFS%nMKC&wOel`B>0Y z4r`_UaFzL8+x9sp6&L*{JY-6a&sw#JqV;OQ!J184%3U*0&%nHLxt|~OzCM7OM%_;_ zDs0?sW#1;7Tx2twr@s&sy+Ui2DZ2m?Kn|(Tt*d;XThoLSrF-oipIycDjIiBS9?rw- z?f;P8y{)NOmz_wZ89cxtugmAq%FA&i>)xd(4zg?+J+96>N~cO_0ni}h>(B1>y;Qi* zOY$U_%{vf#tSET{X8z19z8(Lik2)W3#fB8hMm2YXah_3DPAJ=Gq+;(I^PIW^a3W2< zRlj7Qc_v!cV~-#=EG=TnqhAuV^;F=YRQQOzWhFdR@HHkk8Jf*IWkQqp^SbSBFZw;n zyjd~Za5{$ZG(y4V=&O0xLzN(10ajH@n%AJ)r%(>#lW>(Z0nw~A>Rz_2znfl-3Hk=E z_ocM%Mi$x7O~oSp_YHLvhcgPZT()nB2_wYmHy!^hE0Mx!V!IT}oA@gk5V6QQ_eq29 z$CGA(lAJUC5R9L&OJ=cM0umr)KidXNcYClwqR8geU7|S8>=FEe{A(|pLZgl*Il86* zyBznK!1Xx#IxgyPFu+@SKkU$CHFLizuk3oloyeF@KH4;Wshk#c=8ga!Z~ru!EIfYg zjU;K*Dk`VJ85nihPqPgaAR&3jMYWy`#xG~dAZ%6<$^(PwW5G@VQCtvNCl}(*I$W&l zbbO$Jq2*M>2Mavh5yj$qO60w1eeGpMo&qLC;vDQ9Uk7J)1^WC;W$z87z)&t6?ypqR zA*1e)?(JiZ{%=SZRGx_uRy^}mtAzcPVH3|60xE%WnMl*B&Tti104Tkb?r#z2Mu;Gy zQY`hqcwh=R<~E=DT-$U-vm+B83}RC$aEB{g?agVDI!9v5t|rb?JmxL^BeYS~$gQ{s zbnEbwRdUO}xB70Q4#dJ#AcoraDWRP{Y5dMCp(fg^X&RLUu^Cu)2ErolH%)aj)@REn zdI9jW!S|B>Rg1I509Gr?1-E$2%crhkG3oN@UTMBFkE1D~fTb{V!ZSF;(KdMOvA?f4 z-njh}0$rNeB|J1o^=nC3A7BF#38P9`iJqH0w5KFIv+)DR{QDr6DP=D>*Y_+7>y1{3 z`ZcSpF-lhA<8VLMCKfbQHd*lsVj^T5@jPj?v*{Ys4yqOrFG2fp=syW{;jO8b{4Ht?| zy_@L`Q_p=le@p$_kASc0zDlZF78S#Ea1lKk5dktT>-!Nq;5>ff-CT7k!r27pQSK68XOP&QC%R7^Jh?Qb~KPd_r|7 z%p~4#q8w$9ndZdwNur}1W&i1qx7LfJ#!3@eCoPCBY1$bM=0}kQKN!+t-TOFMshX-aQ{gS^@f?sG^cYp-kfCXTyra*F2uI-N_3P zOZDsx9OA{tkW?Au>3nJ;Zu_~Nu^NT>yZTe{gXfa)kdPBjk750_USE}yxWn>~nVt|e zXFb3-lyy*RXHZ!Bx)&J*eEOGo1lM5EAa+Gze10*@xhStJBVq6Ca^a6iX%HOZhHB3Y zIe;yxX1)r!1^rIM0M1$z(~UDlPj#2*E6!vgFHlL51#u=l^*@TAmUYMue#B2?g;SGa zF(3s?MfI05&uCc-WA4CnTt~+i2xsfi-Zfh($75VWOcZ)ba0`T)x~pT`E(W-2j52b9d$ z4P2+%O2@J0N|BHQrc6dBv!l^l$p(a_&2s5MjW6@B{vCNoD+jwh^|8Z0DoJn<(*Pqd z1Kd~exzLVGCsQG$;tHI2=KO0HqLu;%+>@(ARBvb{)V^sYk`_A!ZyW7xMUkvDtRu~T zhflp3@EbQtEu4Kl>)X)$E}+4r*M>%>tl+~q8C-=xGIW>KwJ7$ZcFKRUENRh%o}k*y*9DBR`l0tbnrF`+-ZPwZP6aI zd!ih%)VOyhyr+BCx%&_2hy@y);0j(<;lU=vN`Y=3QZadg>)JR!@I%Jl=4t6FpngfW zPU<-m(gW|8Om-EIeJRizKY_ySVC7J1wA~)N<aJ9 zCMU&jaR_gC>JWEw5{2nM(H_qpjO@cAI9K{vUXk2hld7(u zVI%>7Y*D-g$-KPFTC+3u^D)sh@(u;i7zS`JSVu6=e+Wv1|R1is(Mof8^ne(_SS;lTbDJ3s%`wU{W+#@ zm^$w<$d3X!2{Eg*(r1BPzx1_h?UTh|ycIaXrpi&=3wgeN&ZMyFN<*nG1=%9p-#3wp z&Ba>$Oa(C_pIZgMu}hbz8L`BPQz;6yOxqpkkq#DMdK}xv#|dqQx`NKwa$F}BTvK^L zxxs!{j~dCBq&Gc!g?e`FY>D+iQjZTZ3ytJ@W#5bgi>uOR8|`gz$d;$JD3Wv7mZ|8* zgP&tT)}$O8J!j<;Zbk4^$pUe%nWI|A;=E5FV%c=0*d%~kMepDl7_K5N=CU)7@2AUP z1c;;$5fjA-;f0|?8+&uAFd=3f4P`CrkZ9V1HkjhFrVJ?OE|>*B3=%WQX}@D1^r9u} z>x1*`y27T@!mc`plm{U>d;7fTq3xG~w>_1si~$#xj}R#bnS{C><%+$A7>r9441!PB4+Dc%<(wf;sEc1(ImZl-ME+j_(&yuY*pOk^!M{={5spF z9zNK3X*mAkP6^HHn)^ziMtE-`yCXxxvA^-fmhJ%MPfTbRz!uH#w>-_)Yj&IEcM1*E z(#*rE?)oDq`Sy(r}6HM}YcO})=*wX5uJ9~=- zcj=*(V!`3oBL|9if7@%;UYfLkzo>-TPcj9uhFfZ-mmcNrLRQiT-5tt0alO&Kmws`S zf;0fW(g-Ti#C$HdLY^3vlYfyPntPPf#T#SZX}!CxVx>$tM1FaKD?a^E{tSbLo~V%TM3Tec*K-grcLc*O=ZH(hBj zK(9fvVm|i5%k&t5BD5dbGU9AmF(isK;J6aQ=XI}m)AFbd8!Z|3_BOsZ?PCeKvQ~6t z$#e0iu+%>Hnv%AIk6tqCxYsWjav_A|CQ7GlIl46QZn+fW;0q67z~9M7VXuZa$Bc+ZX)Do>+9vB(RybENA)TJO)hqFK z=n>k-E&wa=kZP)>!AfT>d8blq zotN3C_tT3aj^R92;+D}!hf__%)Cpo{YuOnc2g7Y8vR*$f0o6G;h!)V?KS)EEmjkm`tnX?k4|xCu0HI{o;L)r*}tTi^XDEXlKDm*nnr^WwhST{!D6(C#kV5V+y zkXp(=+|w(Mp5dLU8k4umDBVJf2X-q20{|t1 zRTyIWh|mb7FUBbdIe6i0kd4ZS!$kznH=;r8Xk#C_rJfWM&@ zfiKX0AM<&+%jvBsqQcyzcqF`@Qh{Ejn@XffOCicZA}{6v9Ij~59x-mR)YxL%{S1w5 zoh`14i^$r8;;$cOI#~q>FYI?qMM~qPcN+X*NA<(U^|Y3br7rWE^Z5^8lwunt;^yfbPC74&~iOzGpAH^$f{;ma0lE^6ZZVb(u!|W60g6(65BO_us>_VoKa$Kmq+0RO|8+2y^8wVV;|5>pf8w}M2>Q?;ehIF+5os$(k!t=E zEdM{(=fWz5R7Lqu(#I{_zW)rx;+z!n@2sZ=(7(A4W$(( zODs)_DVhThQLWp14>;@xjm)-ZGlV9r+|233{eW5swTKdp$0E{Jd{3A;h`e z1hc=s6c4biK(0j6wEmT2TPxf#OSt?Rq(@f4EHjGl(=+b@jPM_JhSqO-{pS1d!p9$)oF2k)A_-Qx&4Tb5>8{BpL~h!$}PB;_F?PPtKT1=MD#hRERYH=L5hs7yBcs~6=q zCMns;w2&=|#-&#?;+0K!2KPH*kthWcXn36P%-?cSeCLLt_ZKMYTaQa z!(~`}1VCXZ;=)PgDgmUzk+>EL&p7;^(mK{^aNTh~>^&O;7CEvkV0;HC+CZanVJBSr zn3d!~cn2WX{ZMzqA>Cux&Kj0yLgF2b$qJ5bQzrC(rIr6+np?4mRY2S2gS5hZt>k+L z`J#IP`rQ6LpSRrNM`7;t6u`?Xm#8zRZuCj539#zUZGv7E!c0Y!8rp-n;HxwX+@_RD zZyv3XBB*B-v)gO?Ec={*EpFfyl`K%k!-*Z0b+V?7*xTR$L@DscQ_%^V@`U578Q$Ke zYPIsp+5NTJ7+FwK3IIb{Mv>`g7AJ5bC&Z}u&z0@e{KfM{bpihoPct!@xtRz#7;pQkzuUUpm9knUSp3)Jl$8OLdbSjx~C1H)fRHkyCw&}P>B~nb~`bcv6 zA@B;rDztJ|A_GL)|SUEthQwriH-@oJkxyXQX#Jx=)C;~SrE*HY^S-XLu>z)HAQN#mDHyhkL)Udj(}ER8|JK1j6rWwiXtmtmAAM5tqQ* zQJe*+JCF^=552r*Y$x|DRbH@q@yv*9qtSOo?oep+6thgc2WE`RJ@S8r(!jt)L@AYR z@sj6?9QnVy2OmOz|KB7oy~oXf0*0Isl6%1$cgE9a8nG;gQ)0QqHEHh=cNOc*Ofv0S z1>dB%rV-5?OFhGdxkmrvJ3oE9TTh2x+ga_5jrIC(oSZn_o5B`m<%{&mr$~ z!~e*lAA}7xtHTXv7o5$OhF;~e*3NFbT*nrz3?gs8?6L! zVy`f7KZLsUM!vSb4cDfv$;Y)7AMQ0fv$qTD?yQUE`ma-0*DiL!MH}-ILdu?Ze>xlb z=9bdRaDHp8waCXE^$+;}mA(60!@;IJv3Jwzz~w_{>>I!=3R zm%QEnM|{rgdmOTCqqaPq84~O#x~6Rz+VK~%)pHK!Vc*Iyd6JT&ZCRgBpaPP4)`Jdw zkMy4TA(2L5U;;=$z(_;v=f_S+2cl&IjM;(bZ{px;aV#sVtBVAv5~;O&%no89YfDOKY8#G73U1+FE-2XmKNfkgnd|7m9^KcW_>Pvykkrv}*lC8zwB+>!?ef;dOjtjb zZ+<8ly;k=rAzU(LQQX%lRaPqjfy-udM#8nANC{v0(V*LO#$y+2-(h_&nASA)(u+}N z>eT67=Z{lw^P)IQR`jRD{@4p=B+Q31`kc27;-5g`o$oL3OMIAyCmNQJe# zO_?N|j3tTo8=*YUwV}uxAjpG>_n4Th;l5&=;9&!2pbR3srQNe-l9B;EWgLE{xNumL zeubj4C_qxXg(5{}vZ{8)M^&B`LPP3-CE&E~bP!?h=nULHBvu zxwDKzHib{O^vA)K^wHHTSS;N8?0xY!O$wUvYoJ9>WD#A{hKW2t7gts<+O+;k#Jf1HsPW_(aZD{2?G6Kqfoxu|Lw->lkh0HX zh3Ei|@#g`tB|0nxLuV~T$~EwSVMC1MuVqcBtuapmOm^kaS%Z2002=j`@I^8A+eToj zxv@}x$1O)X{z<(A>=oPxrdb5lKCYN8BQ?{NS~$XJ#4q8oLqZs(g65yvAAbz4IfY2{ zYCA&Zd(6aG(PF-haS9cxn+ej|!jxSU2RD+wqQS%|uEaPy-}Tkxy=i5n)Trx*53R25jZspht9>0 zC#sQ<)^H`bGrYLoYY@O?!}OFXj2PUD{rpcl+F#c6UEm+Vy*{tp(X#F4J8+(HTC> zbOAtW%M2_HKk>@MoVJ9QDOJI{#3EGSzh~o(Q}=jQ#h~Fn>LykGB?T%2XiP7_Mq3JdljChGR+>>a==#U5qfToZ_)a|Vdv6tKwByxtpK(FLW)u^=X2|CUL z#uPqN@_kDP+eyU5!qfG1Kxl(x?9(IjZy2ww8jDZZ9f+NBd~-m)6G-dJ75F;FP=7qQ zu%D)IWCHr4<2A9l#^xJEhWLa7TO)=ZWug=0V!u{hC#00y9)dZtoI&QmgP;cZwX{Hw zBNkpK3RDV**7E}Hx)?i3!L6=f{adnpw=~2p`+3lar%Oz+g^xU-jZR#mvd+PO59rSN z3&o~qr}N14w!8Q@ZwD|4ipdK{${NJijt0Xlz?3K)(P}dN_|bBOgXb`}51yrwLCNWhq@M{s+a2f?hK>@E04BrM1?%mtwV0?D~sHCRkO}Dz~ zwg;L)tT}kPp(LN*i|_=m`Iu3ZF)6cloODYze6<5bZ$-CS>R@L51<+p)b4sXUO@rXd zFe*}Y+D1_E=Hla=1qnLz%uVDvPF{X4p8DrsOmPwkhxjuQtrjleMTM&)Phx1xB1FRr zP&9K+*FqN8`uKgfA+?eK(wZ$a354Zit;n~v+YP*yQx=y9nqPbLxs~x9l-acLY9LNO zpg$S6>6$ag~0b|(#j6-dk`V!~GNn7}^ z%up3M1~zb)SDZ9uR+jdjiYd%6AqnX}hYqh;_UmAyghkS7^bIULP<*lYSD3Lj{e1R_h|(!d^*5Q3BGxMOknM$3I6giFU?IFKgxegT^-2IsTU3mMvBe z(sAC(c{YR^*uu-W6bE6mDec+QQYeiH%8DdL--VLm5XG2>5lJCg03A`9fh9`s{36F# zsl2VuYD+e25aSqV$;jVT6kG`)hmZx5mcx**_Ox%Y(8o*zgsqBlh!vw?Yg3N`!7x@O zYMr)$C&ZfDY{-sdrRe0>R83sWYywbNletuU8-o@VJ%T5VR()maX;}mQ$|y5mWBi7& z@7qBt{dKQDbjY%dHY#e%#u;h~bhhEuxODZTch$A(Q{Nqsda*#lw3|2?pl^Um7N#6@r_ePghLM&#gT3-BM##Z>FUS)X5ELYjw?H^2?nkzBe(@qV*_0nf zrHwbG06Dlg8yrKgEC|>b|09j`oZ479OCvRkh+Bk;tCI8M_lx66wALNDAdg6qecb)4 z_*;!26$)&L%zw$*Zt|b~ae^g6l#SWo?aCcPXht>)a+*PHmLSrnZZ$ZwMwsmJ&lPU0 z0Hl<42ta{&QHv38tADq;q8*+c@m6XpbCRv3S@Zwv&jA|^gfu+ce!x~kmlq~Y<^1Il zD$DwdR#ROsl}C#U?w2E7qvSPfS!plEY4kzOle8a&9^7SR%zP^DmMD z3lAX!(3o=+MqJ2VyxtceM{bj1q=wqNIe?mpHbgFYQMf(R!R4_(occxFJ~x`U6)_Ih zN5Sqj*~gX;Zx;$-%jkVVXLWm@SkBeKLo9DcArc+qk`I3R25*X0hnYe;@}L(AJ>JoK z_!wI&O42hjxCJ6V_UiArCf$NcOp7y-|Dy@`pB@D1nZTUDQMKTpy1$FwJ5OO&un7mo zUeZu{N#>ZzG8qz6U-))0d@@oj?wD+Ji~f!`c%-p0%pIC^+3T7H7Sp$e!eb|&nq-(+ z+|lYWO))W8*eLF1ON1R^!LYKer6C4rw`WmHww5y%Vt^%in`-BFfQi76VFAveup&*c z9eMKK9W^qUsF8oP-oxh%yGH1E1{=@PNM2p}D`sCA4iOhtU5DOE!j;&8C9Nrp@=(rU zRj{azM5%NNrLQSEW2u5LP%|R!t%)D}AVbO%2eDYb1y=JF!Bz61JB1dgVOMwLO1aAg znpR;?E4w8Kr5dZ(X(sw5ZU>OOKlqd%Mzpa8rfEcJ)5oC^*KTE-*%fgGr}ELuQ}OQ^ zc0uAQ58SsZKS)(Wio8~nL|ISAPqia){<`nk_#3#YE97RzxT-2-Lz8Q^Dp_KVpln6F zKUSj+OH|Dpd&aTf2u;nK*mNeBL1$ebWYbjh7o%yVk4sZh0n;SH5a@%|^<69!}6U(yL zk7|bWT6?bf&%G~G^ftr&HDfCVpmBLR9N@q`E^xft{USU=MF={GkSPtdqr9)^IxElp zqE5;T=tqg?6;y;ZfXqJqRct1z$50D%3ScwRs66>>PdL#@d7r}_i$N78rWlK;>jhF& z%nXu=@n)--Yx$S1e2KpGCcYL0|CoDdO)_Q0>up(Rw{W0G$r9BsmwU%dvGP#E z?=y@@mG^7Z6;~g$taxbt=Iqk#seSJOUHT>1k!~M>PoWe27P=}`av*qjq#_nJUcSXN ztw=FSlppxu1fa=SweVtoe~Ql20dRxdqw~f~V8ylb;Q?@e#*h6}2)ATawf#(OPbv=@ zhHc(XMbjiD)-zL{3z-=m1q1XK5^`{2^M zH@;*~TVhXRDD}aLxG=#C|q2K{u$LQ_}HU?Lz0U)6S>MB6Piqm8BoB; z&x~{@f)8q2S~NFA`ML5wGgWJgDG-D=};>7}K7*2-9i{D_Pfi zRqG{{0cMS5E{sI7+Ofz9=_P;LmNd*73Awd zEr_}cj2J+s;o|}14|$2@bDM(fZ5wC~grXZ{t$MuyYz6wEcqul)^2JfC_Lj|;3d=M~ z5_4>))5s?7)}DHjC3P3hypVJQNGA~Ag4}HhOB7%_R04cs`AYunenBgN&e~6(5iByj z(#WtEx)K^$x&W5OiAwqo5~WV3@IhtghLZ6WC2Y zJ@3<+QhdmK(NUZVTwlj2dlpte%7Rb@q8#q!;yS(TYH~BRlFXK>Rw2-tom$2zltWfy zxM6c{%WMkV0LdMY=KzmQJifHZE{*iJ5>i_N218*=OP?&p>fFCxL}W|BueM;S+R`)< zfgSKZ7s92+TVhR+H8G_pqg-8PZT1bRw>8$wiNe&~5TInetivj41Q4ke*!Y(y#k&qc z*qA~?&<>sAYqU39jSOX|;=O9kXbMbgfH+2uZhTpO1W-yVeH&b+7xWeQ3Lqd|8=cUfR0vG0CB5GjL!Y7OsGxL(PH+J zNJhiLrw>^)7N_Qt#2)6FBq!4fJG2?#3qxDb)Go|KwPXo*Ck3{buk3XwI(c~v)x~6> zDn$b-PIiHN(DGDIVjmCQcKSKDUC)G_h;vvcOtAMvz3)7ZK{tHWB@O-U94y6-& zTYMg<^tYsqxH>LnOfH9m!z?%MxaiKXFKYynpoLj!B*QzDwDzxiyDN2-sTmZra$D+q z>_vPcl~-^KDv(WdS&b)OhsYooXSPjl?K0`qa|}y+w4d^M&H$;}j8sIq!V)bpBGLtt>2npv$RY|hBN9N>b}i3B zp+J#k;Z`U4iPk$)%~{#OyWzA*HudU8Xx~I1eL&Q#QJ9F17dt z{BUr%VCg*yR+5W_ROvE^}>dpGC z?TRvvK&>OAptO>I+xG(?3l9G6N0TCdx^Lypon^{t=E zRU>P_K&FxJ-bW*z*$^;0#T<58zYMz|HhIv&bYJlXkq8yJY&kD(-Ze(}`z#D=e$8Op zF7t|ai_Qoy>yj^B(7kN{Kbw!KmFAr z(07m(pZYX(yw-KhUFIyw`?>bCe~HBsqi$uajOH@)t=R^32L=lfPr!H&XT8yE6Kfn; z3Hy2%PFUw5SJ$RicFX#m;Q|*(7dmjd<^C^%xIjwxtQ{ad7AOZ<^AXf*yUF@)U7b}WKb7|G&3mXv)smV=8SZI z{rX~+`~1US-dKmTu_wywXBCckb$e5eFVG|su5mgC^M$BWAS&x>WsN{TT~NZ^#1@`* zJhyF3Ms4o7qEzN(X_M7m6C4k1tf&n}n-nmo3wG zSznm{_ZYuI2$~NJ1PG`eDxF!A05g3T1{f(FQ33=Uz+i8tt_BSR`k(q28+R{QAYibk zf3_}Q|FkkdS86+si%duX|8go-b}BivVHN#F@pe41`(YXXN<>fwN^n=n=Zi$lLuECtE`z76uB9!Uxo|RC9L3%r z0eJSxybgRW=F>Hizm&G=ahVBvrO}~qL*PO+P-yBPSkN}geM1Q}IuK8-`7mPLPtE66 z=+qknOD$%z_-$LNZZ?;-i@rPD(nLsyJkvyS4%C-&?X|tDBDJ!$-oDPb>826n>jJ1e zaB4ICD7v>ycqT>U3f4ES8-5|KTY=Ox1NdbgoPlfGa-UbXC0f;*Mx}0!`XbV^K-SQA zs7Q^xWsokfEJb+9{#^3l%6p}JUBVs<2h_ImTvlw+=@reIZA(SWWaZ0GwR#&f&R@=> zb#d522>w6}V!+ABEdUepYYhiNDlY4=Gtu)?)Mc+Wl6V%3@qoMIZpl=-#=ESg0Y-+E zj#wtkED{gCi9D?WTtL(>dC0Q*R1KV3&1%ubOn84s?AD8Ri>eESLY;O$=O%`tTU)!H^G0uE*}9haOI<~hhw z4-ARLjaYNKC==rNu|zi9sKF_?607L%mt0=asHJfF$vciQQ6$-%_Pmo^U&f~-f$<8D zdz#iqVcbk@^i7SbRq{;oc8$zN<*KK9^1okxfcdh)c07V8J^Y!t!tH`PPF|kY@S^kc z0w#r6u}dC@L|NZe9vYd3~iCmGB1@xRc2;qz^Q z^n-P#jVdhaDlM4OuKz5*lj$3?prBn?=gLreo*(gYtY)S@hs1U0cTn$Z>G;_#I=4!; z0y3$##BiT@4WHu6MHA?&$*M-MsZS?SSQave0}`X$vnDd|uVd6`ctfSR_4=V@pG@~h zQ%=3pY!a0m%)-?NN%YovU38cJgxt($>1uN4AyW%~scAYnje;mGppeI?O5-9!O=^D|0_+W z!VC_DkwA;#NiKS+Vk_K1R;kJs`H9lyEpkhYODVBfj(39H#u5rzK{Y|4){HIADnhTA zrJ@!d({0iAKxHM-P}m*_g!ocG6c9NAjKPV_S_>V=LHp3WYAIO7cLJ7sHdO#+XC#@I zt(;gIy$}?p(qqBLzNFYlX|GJQ;j$`ls32gY8s&@>P=KUsgL- zh?HSEM7@g8=ZN6PQwT?(0fhy_Wdkx9UTIFdVO{)WZP5+P(-*Ed>dABu4Zwm)jw$S$ zYAqb2Uf(kI^Ht#RLsqpupO}deX_|WxCh*=WhFHLnlhG>}}I7mzmW9}ai z+F>@2;o>kwN#Ji!K-PYYNtKlocE%LtHjEp#q5m8^w>u;yjE(&l+zdynb6z|UUUduM zYA5c$gel(#e^LPOYWF)fT|4_!r}y`t+Dcn$Ygji2BPLLP^sh4!f92qMlp#7f zZU|ej`i+NC{p?wMqZP;cQ!p=~J!N-T;yOoly+uNd{n57jwt^p6c#RQjbsiQopP$!v zeX=P{E_BlcVd|-@$$Hd2(B>rEqOeEVPt)!s0T`+Z6S5Za(`)#aYilyO;Pq%n5+iR> z%!x6X>I{DsiGxYxzkFbULc)(YAU4w~Kgf**!?sY_ain_*|2(F2xL%rk!|%TcjXhQ# z$Q6_@ek|w9rF{G>?H=GvxbHn*Q18^{pga1G$1k*`TvdPh?4Hy_#t5=1tO7Wpq#h;W z0O*(r!%|&+*Ns1DEfwvTT8c{Fc<>g~b|+O|=R~{RH;8D0>t7!WFc^by?Jxs`)_tuA zjiRJ?F)g^?e=_asY^Lv@s{0+YVhE+Yu5?t6R96GtRV(p#y{Fa*lU`!>O2^U&XKRlRI>^2};sFptaG{p!B|(k+ixjDALS^z?@Ma?Gh@G7*N1MBH~XJqZ5a zz?EJr)+FekdmM4xfAUWl(t8JpQ2+m^CwhjCTmKRBR7NzHz9O~X;)xjEMSsb~ZbKHwbn57_eh+!qS(wcI^Z>%n3|qC5pDI1A8l84f7yvDX)tr=bKXysq0&;PnSCdb z{Ae~M*;S(@CAz4n7g+~ge!5bl>t6=(`!VkQ>)jwdw|9XerS_mgF2L_)aNH4Ga6BZx zh6~x{bzBBsaJ-{s=E7ceAx(e)pOA6a(WMf=B_QBajXTkpw!AEU_nONm0JHYuF+{!4ln+Iwaq4yK`!yJ8c*8elVQr5)jU zm=0ev_UAexU&SI#bKK2MfUUET;%r>1~AL9?ELAXJjq#Ty?0+`NG!wuXHp0IH_=gim5tpIeBHx* za##JS$1i-Uk$vi`T`;6tuLaxgLUg$DjIOngKw9zq3y8!C?5(9zca38hb@nQyG3`kE zU;a{{eotA@)r5{nqn{`l=)KrvhYl>CT(Yn9s&-E&)h@r$lDmF`AK(T0*_Nljq?nAK zTDb`!bK64Qfl-aXtXZH&SisnH%Z?2hDx(lbO!SY+wWjuVC2P-U zaApJW+p!ALL&G%;pZ2eVL&Mds01NP=XujIc%HiSAXI&PnN35g@VU@Zo(jij;aO@gc zpW&7BI%N(XW?H;<8~_CD>cOFc$3WKZq~MUeCUDu)$+@b&5;BUTymX*?XwyoKQ!hM} zAYb!IN_1~Q;kB0nW7J&CNB4eKu3nD(v)?*Dbi%I0SuIz<;5Mvjodv_oO-v-CX44TJ zrdLfZwH$)os#CRMlYhaI)*qk-8~dwon2`h!ul&+^Qs;vP8^G!$i$L>B!uN>Sh0j$0 zF8Z&nz|w5p)3Yah6_<{%l6L8T!tC%<47DBj>8Q(!M}1;x)-C~m3+`>HhBF~^P)2qP z#ubia&M5Zi!oXx$8FZJPHj2!`rec}x!BrZ)3Vq9^KPjP`bx?>T!Hgwp-lrhowbNzu z&3A-PMBy(YfqiXg zjeNxS6`#y*gv@RrE*k)J1_yQYKFlS0RZv3%7pbnexX=S@LIitlrvx)fG{};j_+4|E zC?i-L0hFK2kI~=73;z<2H4Fts>^M+z0z?={Sx^?K89-`-*Q#$ZYEtI508XFPuABDB zLeLb9K?QWpK@Icvs?#=Y*B&jrn zd~lJ`BS3b#cM1qbo?RTtaH`@FWc-eKmFx92!%w!#;Uj>luC;RnsgF}^u<;8q?GSK$ zQEk#|dlo^|QKfZ39s>A*{jlFILJpl>iXWpx!zgujYR4z_|9DAMUqI9kJdWk4J7%2n zF^JuE+Bbs}l((Qir~e%NG>4~rO1culgc+U11jIhkdL^Xom22T#V{$1y8c+xYOU#;UQA2p2n(}KXW`=jD1~bnSJay0(~o-GY@Q6udS_oF0@{3H6*c4G=+67#^J*(`7MV(86siM8rs)5KEx3D zu?_m_N4BM96UulCB|hY?E+C_pVA;oLd-V--4!g)mOsiUp33vgsTj6<6oA zY-LFkEmYo4>mZLIi8QHW&Hp8r&U)k_HjdDG@>~Pe;e%%gp9{%%Hx%;TI*K1*wN3Pw zF?6;N7R z#+6FA7&gTCX94H2=tQuY8r^#L(fRphj)OdX2+g|Gm*Mf7bof-|*)Q*tU51ma#qXm4 ze5~~c1YNXlUaGxkgm$Jt-=i!PJr`&l`{tv+jLCLrL>VCgBnVr3ZnmD=kH)+RsvUd| zkvq$aLR_v~OSU@b`34yGX%N4QB>>73ux0pU@$OkJZ|$JNV3zXW?e)Rhq)vx_6C(%7 z<^^&;8*y;g-jrk5+*105D*Qnp^lsY(lY-Qe%%Egu!6XKpv4 zNN7oq`3^dovpVvzqzi_*Yg=WHW3&5E8$eL*8;svZ_#)Ef5^^K)TcIH6DgpRm_)8|w zFqrhp+CjsROSnnuE2v2rRQk@-A03x1ZgKH&CJxI`_jKWKc<2m%r>hThQf9A8(_qYp z_2tzwR6nr8LZnhk9N5Q~e zeIE~FVoxDd6lre$JRz9^w&tjXv|0s9IX#9K2i#|b4;UMg}noFcjsRP6|*$BYa0df`+awbC>sPW!hK@_SQ zpz{fyo{(h6dtYFWGd(X**9vYnDLli8{(3|F2Y=Vu6SMqMs^7EtmWlXI^tB7W4T9E2 z493u7lx1-3FM$Mt`-{0`E$sf7pzE4605SJWw-6QGHYApV`U6zv+I$jF{dYC|%X6`7 ztLWjJU5k7{j#97cyJgOd8Q$o%KO4vZ3Bxz1I6uMyxdsP@Fg!x(NkfZx$&7VJazq}dHnifyZHa=H`tyATGap6IX&C#Wp~?`WPdYjDkpW!ew4o+A z9xm24z3)u!a)7Ye1HM_9#j)TP0}#{Io_Ps#2tC}ZjiHS-2f+cmjMco(WLOlk;sonVA_Hr=(agW zm3%AO70w=&(UxT!{0Wk`RUeItrOn)6Z|!n3Y8P=;0*ExPcx|UfO)O{14!y-G^R6Lb z4ntOkg<64?b0xI#m&ZUwUOW;KU)ac%}JbIEfbmbxD+E5mO-^QAF+_ zLA^+=P|z9I6&=utrnaCpm7J-NBGrm!4#T?SV!$y>ZH5Oesn_2nIky2@Jz!&3FfKnCaSIVJ#-CeAPkQ}xb$Q(o^fBL3Qnogz!BP~4r#aW-RT8qY5s+7DCi(F3hIu{e?@ z2mtxoeJ=ofa&~qpAzT`Rp!<^6bcUX;hU0mI-^4u>T+qM}dvihD+#&eEs1?iCaIS`h z-E+v*V+KC_x3Fd;g9Rg`0eQnEeHhK5k?!ayc`4}YyH`2w8j99g9+opUZHqUk(P@is zIQpD>@XTIb&Q5J;JXmrRh<1$=bkFi6i`t$uV&p~hz)2La8nwv z!Y}00Wstl?gKwQwKIwJ|oOq}8biLEIkZsVzLrGDHDAoh~@Ngc96(HEDykYPtymjDE+KQ&AY z&Uj{>_`&;QI&Zac$6{r$6aI`QyR1uf<{y>V%{*lpXeu|-<^ zXj@+T!yT+kOy6$q*IpEcHP7Dtx9+ZfXxE=$mqf5jk}|&yW#0Hq#Wyq+6??hvH{kMF zFGxw8?y-n?WhpEfLwg9;JpoUNqf3&6byTr044D^wmM*tdC;AQJon-=-R zbE_krW=~t&yNK#Dp3{2Z(OWV+2|R_U4}=t4B52&&R+d-4t<(n8N$Q9 z_XjUK$>!-NY7v}=H@BnW;4i`G6Q@;a(mBUyIc@v+BNWg_cy7MJ#^);FbQ<{SS((J) zgk$=t?pLM9m!5MlnE*5SZIm|e%s#P09Mk}nF<`a(zqId)(!o)&Wizo@kzV=-)Z7}L zIqy=sw3j3*;blvE)b3s~___a<0uWg|d?g5q%O zjH_`ZPbpIT3QP)Bm~=G32HHQHY&W&%dN-J+&GxhiKBXf;$`#keNxkG6V?af9Pv4|EFInS9%w&xb5&i z*S$gN0&I6uQI~7dm+jjzsJz^*kyr1|nHSTsa#t!S$^Q7`sf8Dh07f7eLLZ$5{+hC* zaJgdrTSz1@;lRMpnBRVgg?f{0^L9;}+v^)XlVT_q6>>2Sj`sY%BM$M30D<3nd3EWg z^Sr-yXKUA6jAq5jdyM&nxy>(8KV4yzq{Q>-LyV9f6C#!%xH5 z{=IXd@|i13E&^d{T5(1nQxmvJeg>||7Zxu==+L}o&j?T1da3zYJ3d6`uL&uN{BRw6 zq`$8}Z%Qk0kFoLTF{Xq7_}y;>JoUm;yB3QPB|V+A#6%!|hDF9k4YRJOJ~f53ow{hx zx$aP=x>`3AEM)a}w#aIrT8LQb3V7L?Wj_&4TLCYLj#DmDXbf4Yj+Qt>iAJ4i%n92X z;!;ac(;{LiqHfRuB{$o+@{o`SjZ&g|xIxN^J|is{%m`aiq>tSOu)p$rF#eb@)w-s3W8;t)jKeKrY&(L5b+T0uCgLW;2NeonC9OYTO1 zT?I4a1_XkSa>wz3Rl-lue<}Fj$n>HIy~0GY7iqnF&K@%%9_*G_Oh-<>;N{^Ha|4#4scV@WQ;aq1i2NmQQ77Iv zfqsd+c4k6^mhpkk2MJHRn{nuj*aQL#Zf823>#4*0Tj4|;7ZaGEe*rcvE|5&Y7^2P% zS`D(i6uXjU=g_ExPy>5W;8!64-uB^GlmY+5<+~ zCLdw(zDlTBnFSl@*w?4OK~0uz9j1|!ST{;(a^m`f9QS&B3uqcCLe47Ka;{JWLWa|F%3|pNC7B0s~C9q z>4h`|qIEpSxOna_{!U2DEx2r|lM<)}uCPVeP%&Q>Kt2-CE13idNSG*gC?<{g=o*-~ zOY9mH1PoRoTUxXf1PgM9hnJRxGY*U_adHtIXgEDea^*OzlU)8MQS3dJaA*IxqIdar zu>&=WT?!A6WTzc9Wsl+zPlTPC^vF+0rJ?v{%v>mO8xD{V)KW)|Dts8jj&iR&NE^qd zH(qv`-dFSoj6(&4ag8{J8yg>5me=jCdfKlq0r=PWc-K7+H`l%EJAZ#hK@|2KG_XK3 zBu%)q*x9#R??w-pbl6!Z&zLD!P%Y@h8Ujz4b6uk-L526wVyW?XeBMxwZPz&{2-#Tr1W*zoMNtP;{-sb6vxHm-XRCpW>uDu6Ziv*Jj$~fVuB?U@=mG^_>rJHC)9vPq)Ad9+`5z(YLxQ594- z7voYmLLuT;;~`bjoww>wt!sG7v++_=s4w!0oZF)^mgege$q&?XIhB9fc}JkM^7Mj z&uk0r^t`MHBc?=Gsg5gzNU95iqVHo04N{lR!`0iyam@?yb9!gUOqC92tS3?${`llW zD+s*uk~m@zO5?yl%jtRdj~kLZX|U=&aRgTngl4Dr23j3Q6Wj~Oa36C?P1=iYcHtUm z_&y{IrWZdG&ENxKS`UUdVC_N)di>W&6tIsl)`kV)-3T^6VJi2W)4E~p%psb#KLY%)y-tu{Uo3^%#RlSGT!^* zhS=;X0T+{VQnvQ+aRP})3D zdA!8zsE626<)e;D3rNvyp?fo=7cekt%1!Pl5FSoC0?z6W$`BNXF%u-#Cm)rrhFV zDLHGlqDIa4<>wsW?eFICMd`r;qFa7+fl`B7nooWxDi=+p31EtX?^oNnv-D7U~&6Oq4lTFYJiX?3)Z8iI}m|G{!e$AC4F7jO^Jqpms%le z#1>ol3hPZ>DfMWJ4%9UbC{dGVYf^O*6(&`OrZRjy%h8t2EuNc%4pz>i76{g}&%gVC)2 zrvC5gucEj6G52rgJi_UdreY*7v#)yU$sD|C3-tc6dgZoZMregeu3_o4{d8)EpZwvS zLb85jbZ;*!ZGg_onR?C%+Oc+)_UKJDUGs#zTy>JHe}EY{?fcvZ*ii^SdK)8u9-sI9 zqT-5mf56ikS8}Ia%EnQ3O?1oj==41Dle>M?2xF_Yai()a~zRQrrKL*BJVdwEnSM(r0CO#1AHEQMq^oQyfHmjRSs~lCAT0U}W z7jc|%7_^3IxA%kpW6ntaPQ(5r4E4qjt0sr`pF;(!@qQs>R2$(H2os}UCUIxxX=)=Y z`{I<;JcgZNMM>9oHs$vXmVMMiF6T=*k;W@zDIGi}m6^wJWWMlUp`Iq4{4yPk&)H9k zTVg*GDSxs8@PCj~XePJc4a{!ub@dTvtIa;q>j+9)7Cq_qFeru8B*)0KD^E20groto z&D71l^h(@H$3gz2B~iVCCs)&mY+K@-`<>Q%rx=XbUOdDhd~*#r4R+N?W!l$xwha}O zJEa=kMtWkMtlTh1zL6BK)Rx{%Hl&x!$Ov#mxmcA0xEn4R5SUF37pO_aE7;8Dv(fAi z=Jpq(??bCzzil(rLRMn6A`}`pr7;Z1ne&WzIR3oP&G?_eJ$B?jxaOp^1yU}|I{&IY z1KFs|&`=Bz~ z5nJUY3RMQw!8$mmIbAe9)Ot) zNN6slUf(;J9x5OOQ zo6vt>v}^ED3R&4)Q5~|APQc9MB4oK5aXsr=;*rR(7Gx0SEu2n&@jxhRVKH?Hs#(SS zE*_g7$w>T3>#;(HOw{%J-OwM0k zRYtl{x!ScEbV=-Sjyig7JZ`w%6~N1+Uhm-jUzSDSo?2LK_OZ76I5|*&lz z)X8@|yt!I5d_+vjkHEQ7mTze_L*IbfSFv@~=h{OzLjHD8iqk!AkIRh9OW4VqHvvrj zxf_N%x{J|9vyjR<`>x}m;FZXD2IpZs`}K<6sM>|pOUdPb)Kxc8EjG>#z`xP`r+y4j zdcVy6bR&@5L8lsZMc}nsAO2a`W2Hj_m|Nr!AID)bIU|*A98=}mX%pcK-on%LWXzsC zPz$kA$bq(Mc_VEt0B5yWhwg3A@c4b582o2DVVlD zoxlc{x}StcGrv8)92ai`z#lLeLfpA%GUH1b0JGZLh42>KBxE~i5k}4Ye#r$K75t|I zxF&@p-U3`>`M`8TX>O9|Qjh7tQvQFO!o!?lO+Bca^g4Im3HTVhmEU$=|9J>cp;Q)7 zc#uyWc=)3aN+t%icPuw75q@0np%^6b#BaDwZc{D4NLskqQmkzPMhtkOZTa(LaXT)w zs?#7y=e6GmmbOXd&O5@)Ad_4$!?*1#^@h}VLCAe`Ar+w9kMZ9pxtmOY_^jgpz;;=1 za(Fn_Aya-v}Gr41a+vEHi zdjKQqazDHc^425<;Oa*2r`RN1=HlUbbm$I;TC%-kOtwSX$@vg8I)zgvLgS(GyPdTU z%83NvTU*}qBo){?P+>B3QPT$7?*W_Ao2B{lRw7=p28fS2hcod04wc^QoPn`=3)*qt zAWxbsI7VO#O#f=%Snj9V0#d1Cvr*?M4}8)fsV^9Q9#3-s{DpkRu+a6I{98;U$`YLT zWToXdH2tR5y(d9PY|w81yo>s4K_$7~!b{VZ+<&ZO9;8#}y^rk!2c5O@ZeORw7NYyQ zVe27QBEL6;t^B<(=NGW&6+u_0f}>HpFcuJF*=Zm+g*kHg5m@BRf?*(uycxX)Z5<;8 z;ae43Ps~{mKyZy|A+bL%IB=1-5Rpri7mad?Vp6en5KWJDFqkio$=Elzi_-;51!o4* zhU93r@Ha?33(Kg`1zUFByNy>IFa#4Swur$HZ$~&M`T#Y47%pB#0)-D3kT-R=&IWDO z%;M49X$~vCA`PbcJRXVr=>!Frz#1Bog~s#%9kD170JaGGQrMSHX0u-!P}sy?SLys^dta8Y~|2znxZbc;K(%y)SHJ^R+t{BfX-v0sfs%UYU)_?I^L{bqw9w}ze_w3QFOmU}=1PJQIk5tF;^ z4?n?NK{_p$y1maJcRBc)J0;rS-FK)2XM-i5o37DH=P||^;D7(LctYt^Or`V@<0$P2 z&+N&rcE=mw9<$CFB2mtUPWvqSL_wVZWQFA+dtR;|{gZ1#X%Z4D+#&{=FwQz-;xagc ztSy)7Jn}V#bOT<$7ly`mI}+dx!}&IVa0q`A*}cH^Oq!_b?m3bOzVzoj%W;WzvolF3 zS^~m>*wj1SbQYI%gSsdbRQcn7ePiwKdpn`ZXXoa?82>`VS>g#A;Or20O@|l+{1T1# z2*t@n27^`lF{RnK!V>zO-*9VG()XK#xrhgAh@nwVxx;s!{5yih%*<>V1?aM;Qq+#`MSxAh`DZy8t)4TwBr%`|Dksu42vn}zo3qlgc;ve2Oz9?B>pk5= zm|a=e6tnN#-PMVgz;qfIj3Cwuklo*e4I&r$oCWqlsi21-alUc=fK1q7?Zm<)BfKuD zS#cbhD8K;%j@v?5-^>?srHiVWN${?u`hv}MEmfqbtFt1XqJ>$H>u~&5_g!-?gbJ_c z>s0>M{LAjq4*JGxaS90s0#rZWe6I~w3qNxOx*pEvf}~~t_OoQ(c}N=qV9}@aV7vc; zAo-aWZ2fmfl+elt9&{GmcPG0gW2Ndt>Z8>oliN?b#79k-K^-Vw`tSUXaoQw#8kX}L7(J?wQffg{{q%kC?<*;T z2x@u>Phbfq@f9zrOxC$xPev)pS&_ES?Y0Z_ACJYpKQF{v`Y8@}fL1}yj<Kz)+LEe|=C%>I5cO86#^8dq7UQZwm&DEDx?fi0zaPh)C`Mlm=03`l_PeP(bvQiEw;w{mci?%s`EV*f9yuAy^(b_B+AaUjp3?dfz zfpv#C5QD0Cr}g{I&97+vSR>Bxv(&ZT#iNiycsQieMFxW#uP3G~#V6?7 z8TS}QRz;KeNl{NHfJMH2aw~Vv9cR`_oEZG|9C}*YPm_)C0NbitZ)P(7tNIzc3scl~ zJn?a!j8pw%#gOlB9R1QBD28YexnV=Uqoi)eGJwV<5l(WIbszhOFy^gbJtmp)Wqep5 zJ>iTJFIkB)6v8Qd2*B8Nf3qp^l?-wvn6{8v2M)ctp^dRuC32(=(w(e}b1w-T#N1@j z>-a;?0@qt40~GDJKpT!N8lqs)W==m3BsnrUEzPk~*2jqGiA^C8+0zKL!eMh&MrW*4 zQ84V4>)R$Nfa=mG!wD?pmJl(S_?i}JKu{A! z%A@BeXw58w;qtM5GwffYr0>A7_j>5<6MR?gpEhsaO*R1DqIsJld08e? zw}`n#1R$4VV1dt_yPwIY9Ji*?nS{qWTud5CpmVyhp6c0&BjY_k{Cg~w?+8Qic&WY1 z!WrWp=i#u(-tGHxC4kj;;Mb_&yZoaw4&Rn0F)>Dq>ndR)Kw@45bVshX@eazNWFpe;5E>z zdq5?-Pj!WF;CF;znNM;Z7@Bv10$K=VS;LtJnn81cn&-B(o~0dML)fDKtEBw2$EFgOAI!^L9)J4?9)Yx(K&;xqX4V1CZw^Wl2*cx})YB;SmY(P@xcZXb8qLHp;yHd@92{-?nAJ3jbbvvIm z<>ce;!=%vm6iB*y;(|E+w94k!yE~U+soy*zZz}P?Wlt$JOF^+R>Vug7gbE#&n57%) zWaa(X`_tv+;iG+8sfkmrnfAS%X!haq;vOdvzrQhamuAlmzu^8pT?@4YM(XQ=4?ttd zaL({7>%ryw6M+~bSeVHlF=AA|JK#3tk4;uz(2gPB9#xsyJm(rW!-;Wag7tnHJu^)vM_o zRXL7BJv+{iQjwy_uEAKBGlTVw6RZX(Ay(3`a%-bVBB|rX1@K|Id5`?b1J{W~t=E=Dvjf_x2FajixGM>m+;bF=8+CFW)Q*SbVdL z%Ld@IIm-@X#B`x$`-0PvK!cF5u@39*hjdbdf9lk6LLkvWZ4y}_XjU2Y3qX7xh9>PG(Zak$wNSrIM`4Y>XW z<)SZQ;-yz~0+#j0q(&M(KdGT}#d;+}iJ7QB6 z%YEG~;8Lkyin-*NE+j3NmuF_w56|j9)mmvDe>SJ(kJ{~jrWBO#csFh1rpnblYdQ!+ zxN}qx$ys7rtPAx1;~^Rd{VM?0*Rj>6Wh^d;c$FzZ)0Zv#`72IAW7bbRMBc!tIC2|X z_-(|ruvA7q^^nZ{+3<%JFym3?@_ctdiH`fo(akK&ekEHq)XoyW{YAspU!g-626YI|XPb=z1eBCl*gFgGpFS+AZ5bKHCO=Uwed0}Y@ER6j zQfN)w4VH^L9JM7afUo7#?lfgA9#1tT9~y@|WJ=%nA0uy!ow5z*>UjJJWKvGJj3(T9 zr6M0N@}U`OQ}#|D4?&L{S7kTZgt%=eJz|JHEY`wXL^5MhaYUw^4 z@2Qc@;kcx-?aZ8E>v5ETl^i+x_Ch(_BY9T8%m8zPAifO$H3%1J0_}(X-g9JPq@Vmk z^?|Sg8)gp>APYHCOskzQ6K{{pZBWAdq0rq~A9sh3?a$9(qn%m%EKGK)`ZugfUvO9{ zuwQtFp|3Xuz&h^Gl}?Qp`cPX`c5}zgt*+>Kn)d4JiK*sgWCa)))IS7!0J=W$U8Zw? zhg5}n*UTv<`->sJ{96eP`f0cgY!cEmg&8hKQVEO8Bpa9%1qS(cCXd+{1CHldb&gso zm>q`B5oOf6RNpOt?K@u8LtTfJ>27DrU-MXf1nrAQAf5VOe>#FXyh^{pnnR*+7RS#6lAo;#0l!*t$&Mf?z zV!3qe*G7FWFFFW9Z}gCSqV~u5W;_qPBgf;TBs&EZd3v-@(F(Pg8ms3W<#4{b>XS^m zRN!YNTo@G2Ft!qV=aE{NAk=`^5bEv!|kfH<$_nP7WDI{R!Sic zWCG}X3J))&F|gGDPVzgNNK*0#DZb=74`FB_VAU!q?EBZ%n&&)E{*9OKVDfS*6X}pO zYQ1`ieZWF-a=%=W^z0hEv5gTee4SqU_m=a~gzNLf)St^zW+*qyF6X1Y*39$srv8E7 zfJ+N@jz58zgJ(rO9({T^j9xio?(C7o)T5l)k|k>;3CD=~?;W`~FDoMEL*ta$ zI7RG+166Dj>H7P}g{&H@%u0)MPS`MGGp>5{LAnZUB*K+*@BS^Gakq#nYKpz@8qmz4 z9#xZ`8(;xZ0p%B_d0q+B1CW5K;MJ{_2MC%o&mc?;D>Pjg{Dfc^EOj3Kx&xAp@vWxdCt7mOyc3=m{$wE7(_toNC1R4d@) zOcd+N#aAF&cZkQ=v3;K7>Q%D&g^Z32hUYG4?COr7Q0l+}NZlA^LtE#ECY0k6g;^?m_3!j+(p*6I8k->;jeP8yfaGTr1# z=SWABLOLfRh>Z;B0(tX~g2USAkR!rm3&aotRrc(Qa)_rO#My(x8k=G{?Fe|~NxGt9 z0cK~|IT`l2d4s~tBVP3I@6xpd=#GMS)|B=PPbr<7sBYzbgNv27#?DCmImCA#e4rYy zQ4U^}>5A@pe~oEQ5UwEukI%hpSaW-Ap->Wte~WBlu;(@hOr23T`n66X3HXPIw(snA zUgDtBJCr87iuN>{7hZV>VC#AavCRJU0CppXf70S!A}2&JDES7>womKmDGF{;#uNmh z(h6;0o`ai9d>sSCT@Q$5&j{TDJk zNO01AK#&WhdqmSO+J?loVS4V#64?-dkIUgXZoIY?cDnUOSsX6Z1*>=d=LpLif@LeS zDC3(Qt*(zs5E(RyMWlSI3Ru;D0-PjX!iX)`3rEDuu5ss9mPtLC#5(MpWiRx4yh!jZ zKI-8gh+}byF&QTs6{{Q27&A@fjLA^XiT$&vR~O#PS{QEQ7?(p){NTs{D3d5v)nnGP z@PFVnAhcQ0nMINK5h6_ z9B=f(A3)OTW_hY3s1+QHL1_m_L$3q!00FjYKMjLSd%psu=#3nJa)pzghYnX&X}fLZlAoQfGQL0EQyHVmp-bY3jm=y@A)_@V#q;3^Z*Y|Iv%^L8_!gL=)q5 z!jM6blkgu>gd~zY41W3d6wPF9%Aaf;0Xcad=?t*UceHy|yEL zusbY%87?J^kyHgE<)N^XO>|X7X{<)*aE7REl8P#=Uf>nBAEX#kI zBAAV>PH@GMxDP4e~$6Z&A!a^?ywq5Tzo6fQV9ofUu_QW`Po? z3<*Qx{coObmd?5pzKoO4bxr9XF8?09%?>M$-PzQAW#xtRI=py#*><-;@|mD3u$l2L zI{>FN&%+M2@H_p7@jInZ8o&o!B+B+jC|KKhavC+elErOOOHFp-ms-JtqE(XFUp5nf z_3hzi4H^ABkRh&V?#BolCY$D3I>}3AB%rKR7WKOPM~FsJePdkvFwGvRjXW$TOr^b=@NC)E9iDyfn_ht&pCmBR=UI>mvVV=-Jq9i zJ7(=an9W+X@(X(EQTiH)NU7?Qpkd-~A?!N(ht6@D=amSWY~%PQ_h=h3{t%(D^e1V|h*;n2!w@C~a7v?avEIPp7!OlhOUIdGc(eXo z1Rh-YCLm&{Yox7)AvkeQk!p&(1zOJIsA(>ttxZ-BOmWHi`{n=)0DqQbH3xfaRD8x{R)wumwil-mLy)8`Z|??qmSTU7KxBR0n+({VGY>gJyS z67@*MsgWByMm&Pi^)4(d&@bs}SctajlUy4eK4BWe!hDbR)3id{QQR zG{rwIDst^%5(3FQ!5PrE(sHcYysI?Y_oU&n=syyE?85|J->u+@L1ox>!lIYW11l4G z2iKSl?YG)%_Xu{#oP<7VRXmWECAG)~7ADcQDDAJJQr%Rp&%|tNhc9|?q3B6^sK#*2 zGnWB>=}6ltu9*ORY~%u?xs_u#^C1=YIaA-L?F4-C6xBxN0qjQ0YAYdqZdz3uq(ecx zl8cl`x=G$T)~M97F}ei_Bg6r&Kq)WXG}6jUhZ9zp8T2?jd~;Wdd395Y*axpZKYu+7 zm2+FU^iGMZTKG=clg#;VrA^0p8R! z4B8U32?qE1yxOlQcYjo0lyGS9c5jI0Hz6gQa^oSRMuK`yRUFAuLhVHoAeru%aBa}U z;1a~yDiBFLPUA2P6JIth5pr;G@?A+f@D}y8fW{=xG;UBFVHY^R%U4#@8Fv8h!CP! z61Jp&eVxXWt=rs3c`_poiC<6pkuEM9!yOnAPz=XfM0mF1;`YO*r5Q++ z1afkwix=k9d<*car=g}#=Pp+xs;*zZeYxC5@}7CYAOwcC7jzklo85B)W^-*Hh!n>} zb?MiwjGAnBib3-Bh54cfr}K9VEYeRSLk-P2SFdtN`kAR${*VTSI7;k$t5WGU3w`C6!AGEJBC#8=)0lrGttE1R;?~lMRATVI3R#0 z@W&>Ct=ncysv1ixsSF}DGzvT%&4Ajw6HAehl%h|xwYK){^3ci?CKueA1vH=yCZG_O zVK#iPa1R7tm$_1pe1uC5+?+IBHHVT#@=@9kd7P;ZzE4grY&aICjs7gHkWI+@y6-@Xh){v48e9O-#sy)i(lEw{ z$M>&oi(*6;&Fk8*0PHu+#l*GP^ODN)+o{ZIu@;%2i6u0EK*!=keI57b10!xk4|Pg} zm)Y{4z&Mkw#8Yb5d}no*K&7>`1tt63(Ri#!I^Vtrco05cH3v}0moTuEf46RgwMAGF z|6PDNUr^eo8dR++rP4pDClQ$Q{hh)kli~YAgXl2x7sNq;w@ad^t6@g4DI=yM3YJZu z0qtaPx1fS0*~N3ZA2c|>WeSN5BodG+FsO8JA%K`msh3$*lDdd7x1 z7qtdB;I#wx8$4%hjPV~%i6VhN(wo&FD|Bw7qIG)}u{>=@Uok58hr6K4+0H0u-h9Bn zpQX;M&^?L@d(0ABFwX^DnKJjvOWGTM$Iy`6ey#fcT~Chr;|Kq&Xa+eRbf^#fN8z$+ ze}_tn&~zv`Kpj+7n8qf){;GX(`Mmnvi&_4rD*kiR|GIZ}^|X7n{|GiopkFu3Qd$8^&V-0E8C z4BmBC+-1*%cBbUgvgZb^VKoFu_BL2boj6HClQ$bR^e>M46kvh$O58#Y+fv|vf!9&# z;0F`b7ytV*^Yq1F`8OW6OsCeu2L*w*!3cvJqL0Xe;4b8713?Qa!hQPR5xacM6;3;H z{o{m_Zpk}8c8@2NEvqw^E`7Jp5&znP*T1D%x zl$z3fGBnkZZTskEUz~x>`lAI`%-6l%Ds)Wii>Yh;Xhce?Rtde}<6t`#>DNSh0ekIt z*br0keB?#8(l`u5uZsZOe)$1eV3?sJRuwryA;!8PdOxPtm%Xg8&a9|j$-aZ(;8 z{e0TiMPelFBE6}?DpKPPG7Kpq1r-fI?%AJJ+0Vyo%;)qEFL5t6u+>aaqDEj(NY6zoD_E!Z{*8c((-5WFf?PElSja_{e201&SI>PFKt#N0oKLIV9uzR%OGT&#D zxJHqwij5f6J3kgm$#ahPlBG7Hq2;IhoMmoAl>%afUllZ0*%P_6 z8m}>USMAcv?dZE835tq?5oLu-QD=y*+#UkTiHmvo^%NxO1gRxIt<7 z=q|K4rqJ#Rj?iIEsM=9bZWRPehQ7p3U=h&j%RfQJ1T-QX3&NDWHOBFtb6GFnj=pRh zE_(+?Kuzaul8^|3Vt>5@Ke@e`6M|LZRbYso#W&R%7OGz-iFFj!#tC4@Vc$h`p9rRk z{wA}D=eE^dc7~tpu*&VBt5kI+>zPb%Mc=%z?G2PFJ3!yLLvH_Y=AJDp!7k~vPR-wN z-js1~8)t&Q?X|438w3C_T-q=3Xo5Xx9*u!cU6gF^S*cCAPoG}){_S6a?sTC6(M%Dw z82YfvgZr>^%UbdPmG#Z7IU}gN--evIs-%^SHgESBEM?6Ybqp|#s0qMfB?!K6{+Ws= zV|iqg^o?il4GqfGewCUh zAn1RzJ={O2D+oyMKWYD87a%D`N|030|Cjz67l()ZpIg=hv*JDfo_r+)NnzCk!%A@g zhk{QbP=+M@--Q3B_NLQ%3uf1`S|-~*Yg(KY|LBxUq7#30m92mce>HGzwT%dhj1<-; z+zdv!DSy_EI5%d6`ji)hMmGO~hu@C596kcf@BTeYc*Rx!xHO(Fr-xNjK!a?0r(Tw~ z&}3v^J5tHqz+48XnUoJQSajB7{>}V3UXdW2^#neADtyO=6)&f3iquc1kXLvwmBKx& z%u@6_4HTa>P6pD;Ft9p7lzlBTG&p<@K zm-vtwbsLI+^xz+iA_S93IzJjQp{)k2lfYbIbrpv}3BTTq1AoXI;}I75P*4m|T82~K zkSyQ`0h7ba;5^!g#p*@J(4X%uV|ig9adYm_BpFl;&XuS!)uMByUjr+gmi%BX(?)*W zB&F~os0IU>n6=45O_IUoJjy5{e-Fu-to2HUm@{PU3dJGbNr|Z#44U2}RSOaBV*AsB z#HY*k^%nKd|xkR2ApAeV?p`QbTn`%k;?&cR>aX7?!aU=};HK)A07~>pM3Jx>YLg zB@2P9+c*WOKF4k+ZljJaCzyqqsPUDsv=uOOm|1_7>eCzN4oI~JOM@t4&GZquHU{c( zrGqg3O+Ev{z8qQG5#=WAR5&Uzm?Tj{W#Up!A`q%ZY4i&B7i7am*P4FMq2Bq4fyC%!X>sM<1t#vl_B0x-Z`% zt}+n_W^&w1=Te2Yo_vAL4srd~!hFI4=Qc#n;|{Zw11-__a7d)PRu)-$bGX60aBm=n zbOuxMk!ogBEW{?Z!wiFrYRTacP&mLa_2Nq4{3H7M}liiwYPS3Gpi`#|BKR0`xa@0~oeVBM3dO)if1*U8q@Uqj7~m%3)>rS(>^ z@6BEUCFTtzgn8NM{`2}hUxjv*TOTuLBrN%9kgDdu)T0nHM1BZ2zrGBG-cb5!{TlD& zcnOP853ab~4TV7onr3L|CKn(X94;EEPA~*xix5fhuj>aS)`ha9B}Bu?4CBpS4H|Mt z&I7?`fg0x)J*8cBGaA3Pt|a^fg<{yPtL@D;GRNymNCXWRE?e5|*(90uPVlHWJSk=S zmc?JJfDK%2*L{>eZ`zjGn&$d^%`lGYIZew?g+7I3l9LCP`s!pBRv2J&lz2-dPb4VU zLb_>(@iJ-)J_hBkekpFev(kOYT6`uEp;)m)>#M@fnB=UDq458Eb6ng>fu) z{pZcaY;)(~-V}^&ZqkJgLynm0vIH~UWxQ_+(zfO(`m2ktL9E|ct+u<)HkQFgpMWE6 ziEQ}OX>Lb8L)*QD3lX5+>ol3$$y)Im37Rv88z5D07p>LkRJ?XFY&RcKFJie|I=i>x z(u>gy|Dk#{M+o0)sPltV2XyNjYaf3iNAwzZ_{!CvsK66DMw?3v9|=+^;agMM24o?& znr0Qa3~|up^GhfrmitDw?oA>mCB7J?ri!4o_IISMap{0-=97|=0_+5`D?GLe^fQyDRi!HH&^S8 z!j_u!g!@~DNs-k^@^&>CuvmXcihfm%d|4oL!z5UN7-KQsw-0i8CldsO)mP*GWtH!q zM`aE=h1lG;UaSRvv%ay&em)MM5F{7;^e5AwshPXKO#VYDGjPE_&50hfK09xo9fWhj zi$n>>Uq~H@ci#xJNx>av*gh&BIer$&&h(UAOjz}fEXWc(U??YrCY>nL-B9Jz;!=Ax zfeOF7?&GY({YQKm;oqrS^X!RL1{A|vaYIxWMP=E7cMbuwMlQmJrdbYRSeY>%9YKWrCW;o(oB6Xl(@PUte^KhQYYIvP>go(2F+l3tAuLxmv!&Z{<|KXf z?~Yo3w?G4lYigKhto%^z>Nb6U$xo!A=*cFp1UD%NbYCyF_nS+C)SgXWI&QXKqz~$E zYo%L-wefTDpV6Jz_~a*deTx#3N)6PPkz?Dr(KsX>G3n zuc}+rq6xn_9;5dAk@Hjh2l4ndt)v4N2&0)VS7D^PIT{Q-wf-3MI9j`q&E8wlE;7&S8lHxF&8)@HvJie96i@zK=yK2@F( zrLI)bdc<=R5@xEpy6Eb^RB)&&KP`V9S=VwfVyYvgWhikFQK3 zeQ9*cEe(p$ZvML#jW+q`CLGGQce%pHCE8v#kZk5mFY*S*k&uAHsliPjbV{}n@Y)4v zQ{b+*G;y15ah@JCU(Ej|JGDWH&(Q-m)co?}rVX$1sTH6^9Sv9MvuR{Z0+dHiEN+!}9qmpoktcqeZ7V3NuIl5+7W5rmQ` zGsvt;JW6caynsOk^}PoUiyy+aVU>KY$=8*I=Gp-j=lgPTNpTn|EwNu~!_5q|`$p{u(I7f(YBOWGE{eD30riL z*MlK!%<)M)aX}9eEMbd^7kA;kWD|uwl&>@mf3-Y01oKUIBQp!?1f-s;xcFoC)d8Io|MnC+EfPZg9)??z?a3GH^z+IozLS4I)c`~USq>Z2ifO)B4uR9TAH;Rd@tTJO;X&b4)#qO}L|AtmBd7f6ovl177h3`; zz?0tKugN~6aR|j?OEt3GZ(+49546f*lLi=aEn>sIKN1=pcFnQ|J;x9GIrJWOuauCu zjx@=}aqLDgl75jQLdu~C;Fc^T756o08rG+%_n%)Lp}SfmkWl7YVrk8+X8X--^BL$%QX@i|XNavO+GJO)L$H)^Ooi%y(aNewS@xJI0j$JE+XcMJmfDE^Z9@cd1cf)d3-BE3je96rsv5*Y6``+zE4Wj@X zYK{qTFOX&a9i<;GSb6qZ^ay$=SA8ae1H2AJET)7$vS8N!Q5CfvVmFYizk3OyDWp8o zidAU9`PNOi<5Jj^5_nRuv<;;M=7Ly2UJl>hz-V|dmJ~ivsFmvW#!Y4ufS9}nb~EhA zxBRj2HIcb5VBx$@$W?@<9~Az91R(JpPuSoNHTfoOE|FO!YZ5)ovI^e%mWf1Y5%>iNI|ZD8M#`r;j6`20l^ z22^QyP~P%XL}jdLNHD8Ffg)OBLr*la@gZzMCEEvEo$89?qAdE@a(8HEiywc!rbZAg zZ9nP0+fLs?up(wdS$N^VZ?BDSzNDUoq|;RQ3P@mINXSf04c;*RF`ShJ-eg%L{dGHn z+sx^(3~-Wg6K(SRwai8?8&>lJ-wtf4`T*%>$|!@nQ0787sWz*Ez&<6W$!qVdjG97) z`%Z>_k+`63={D2Q^lfp2Z_FPm=QRG3yBiGcJxZXOgBJ7@ier-P4+|8l*m@~M9i)5J<`j#@<2&;(`I9eagHD!;?PjSq#!3dx$GVh1U? z^a`=kFrP?YjV-uOfP5ns6Y9Pk_q+b;J2YL@(Ly)Zq+O(UiVXRN>>ep@FZb$771- zlv^X|XWPRuBZbZwbMyZ8wjE=p16NiSF);lO7vE>cO=6@D2<83$^XdK;bF(>H1=naA z9_Ha3w?q!Gu41&VP_)Ne=HlS`;mBv|iEhk3Rz(Ym;kF<4QsJ6+>YJMj%Jl{3a>wTA z?MwEs>CBg?0sNPMF2s=eVlBVhrI9uh0{bmB5l-JNO$M=#h_X1qAbWKQ@D--I=QDXA zvgS-SJ#-BPG6i+k+H>0`2c!Dpc7JgAdO$vIhatNCs>;)nFz?FLvn;B#D#`n1A-DX& zREzmz2$S!HWk%gnB`|>CXIuo1g}beonG=CHEHFulO9O*UmHd_f5mdLOc)&diltI7n zmPnOZMN@*;l^5ffOIJ!?HSu-rlJFWHn=Wx4ageA1c#;>7m0~V0Yoxr6^%KRlQ0Sa> zqTfTp7)Lr+0}LvRQ7S?jRhzLxu%rENUr*b7`Q7MHee_TMHPtXY&q_qeY+wYjI2?p~ zxRRV{AZx&!auRRTn0j=zxM?1oVv-gw>%kV7inM5QxNP}(=#)9Y+u_I_%f0wwgYkx- zpyAUR=&KZu-BgaQVSpe`xw_`aNvrr(sC>%2KQqimQMZ86z_V2=D$_`pM)ET~&d<9H z@=f^`nA77IXL-5VrhdDvsZ6py-t9OlPP-N%xmro0mDGj=V=7D+2P{pTSIJ(haE;Y)i0-N*3K0)c)7ad`p|B zN$c4daa110%QD_HU&++Bkv;r*!ejn{dbX#?-;>Hp%ZqRj=EoVVK;zSFu{1mok>)@+ ziG`b$8NYS6l@fH9+L+i7-m&9`SI-|n--j%RZ4JkJ@eIq>Q;4$-k;ff7eo+@Th`*=; zTtA=D#)zzF5-{R1Vcp>dBH++Q+>7M^X*fG^yg ziL|cWikPTbat&Sf*azYG_I`yk=;?v!MLDsQ2Vf@WT~Ywys4b};O9x%^Q%m-LLB-i! z)R&Sk^1M0aA)?a~O2`C0p?7Z~fc~Z8`ctFCV)cc9_#Gq7DcLQ=1ieQ(y$}ih7=xwi z2600(+3UTsqC0n{?93;_pZ-u-2Abt5!Ee6_`Gs_}@50huj&)RZF)~9Ev7SP`U4J!& z?B5S@FaQ*pdY4mLej4+#RZV_i|HYE0f-o1P0U@~#T*DCI47a}wp=jgt!m|N~rv5^6*&RueYu;>jN1JiCFv@?`N&XNRHeMd{gXXMk zE<|kF=?OYNt8bw(?-TUIV@ZmDivO%XM6hWwd?*IcMLl%xWMC7enSVnyS*jmDWV>)} zrJrbh(@FQyzIHM@+zj_P)e-p<764|MHI_lx&VNq^$35XveLM-6l{A_kZ2LWCmD^XX zh)Vu#$n^3+@LgDQ^L`5yyZ)}Vdi&NwXKhqaP*-j5D*Lq76(3)#ip4kq41O|nT#MoV zvEOfH_0ovpIeTqD@_(9g(B}34h*9?9^C`!P#8hP9&4Sx}4n$j?`-JXtl0B@-?mY~w$;Da}<{sU;*qAuh@Y2`Es|Jvz z3kR0{2(I?oX$v-TQv$_y(MHJ64DjeGf%Z#)6BQVd8#B54!3_{_(9tT#Nw;lOI3j{c z(r(0TXYHG7G*ku#DFn!o@3fp550c%{*bQ45wB&o`*JlkWAt3sWa1l3_B;F)%h5E?U@MPs{64-72 zr!jv1EJm(h+zBq5`%n~Y9aglrl=lL_fOW+}O1dqNtPr0&|Y2_aRqso`*=(g=d%&Bi~-r*BI*~7=; zf{Qz?z*D)YkTLG|{&rS|&>cuYMJ#kOlriSbuf0Et{7A6AUs3^EZ021WT`??x8Vq3jlRu==1vY z1sKfiGtsrpmY+zG7ze^_Y$B%VfIgT=TV4SNR;5?6dZ3CPQf-ZAFZ`P>@eQ^3bI&fF zLtF!_=lY4pwLO#3B)tn^lK`-yXsGC&!$5FUyS8+isFZiudvF{V6v{w%`9k&Je6717 z&TDzjg0Q8IHuj@rXQh~%sFvCi?yK1y+JLRJ}%*2^U8m&h;Iz4kRTdB{psFE% zYBL~c9u|==7S2OJr$MdO9uWyTT@}ce2jXa*%Y07$?h%*F!vn&P>qT@Dw#a#DP1}%0 zp6n-2Tq<=-6g{)$^>$@>Qa-A&iJ5^`F!8hdj)0vC?QF%bPfWlvabln;xpf89;$%7e zbjF58<+jhbXwRN&~o}u!V%D$Hk$m&&BLC+wVj^vITv#sB6ey6m}Hz z#}-S0>uB8#+wxlPp6u|sB1c|TT;ccIuy@nic7^t2@T@I#J>B4GWMzcPCL!>-n0g(f zZ!s@RwFUmSU5UG05MFh;?f#^z%#8N({n~xYS^L)c+nrAm{+8y}r@=XpCVF~m;8^&I z3$+}57HR2c>`QB!zgmr~aHc}c^e?8sDsFyL))Gy%1Cw56VcJj1i0FF$^wnGTw~y3- zzpmyh<%#9yCr1}sLv6lMr^m((r@OmxIIy0$ZW2D6W^9wt$Tl*<^vu8+rK{6J;=3!K zq`cj65tONma3zwEsC0WJ4>>KI9-M|WPYDS?6K4kMnFYI?b@bL@yrHsbc~~O*%dh{D z!~JK-rF2+Bs{gl3*NpuWQW6Q`KSo`O(QinF|F_=w8?qPnzYM%~nGVEGL=ccbivMZg z36GILrBwJsV*mG!lu>_30^lMHLBh;nigg+bAt2vI(M$&O)J-)CuI3M97z_jogGj`# zLvi;Vh)1Z9R(9d`s{RJeSV|&$v53+0#No`ebydL8x3%iTg9A7Sux zTz|FLbv7ef+B5rZ7|*f<;p5AS@v{H>k;ag)2HYqSI`RO-xi-p=eBom!`-6S=IOX@- zy6vn^zSIsuUf;*Ib)YEbW+WN9JeEBg|)j3m~*)df43*;2DMYWvEa{B4J<{^*5S0!ZM^^W=I`@M)EbQDw!6o|ABIBL>~^S?wDi9 z3ngm59$xf#EVtlm$6+xEMjZ2Bm>L2%E1_w95};-@ zY1oe07+ZQT`U}F}_j3x8Cms`cXjF^E-mQ<6TCdQc**GFIsa=R~dXit2ADntQI`+0SC=jrLh zN~kO%^8_SSx{|!u0}qoObKxmNvwK@yvTl22=bE3xGY5v z=8PhN0I!K(P7WAbNx}_hetM&KY{=M)c4JJF(^9ds3GuqG?Ila!nFC@qavq8VW9FJK zWyHXPip1EV4dF0NK{qVbFdpQx-v;I0$0{)j5g6vh?7W>sh6>bIt1o!5(k`|qk>Lkz z`qb!bVaa`0e9Fj!lOLdwI(Ynri+-|5GW#HTMjr3A(7G0G0rt)7v-P9o%MoH^MgtiH zS>@Y;dU*(u^$0hk*}c5Nx1ji)0s_?x7$LwO8bf}f*x;4}U3&hk^Jna1^VeTv`#hWB4dB9R^GjYFBqRbPPf)O-Mtckm+su3oE`&tH7UxzOhooj zz_!iYv-Z;AtH;ov@eUnkaeb<87N74&wcnOo$ck^j?3bCNxq*#sgqkUr(^bBos#U-% zfr|C4uXw3a1h~Y}d5E>1M!Rp!!wWu0%rEwU%Jt1PU0u!L3ZR)MRl&F4fa_`T+roFp)vu24% z>K>K{`BID$uoMe8)5H_VLX%cy(;@?>R}N1P5Y^z{E%InnwTCp@M^0Lt-BlOQu?5~j zCAmYIqp=-nQJJ#GR2y;AAK8$t{+NR5@^pr@2HBCj0x5&~juGhHt{%`_;I$t%YjQ)Lu5ATQwEzc!d9|69b60il#rIWbXQu`KAVA}5~%Jl!c; zOa|(Vmb5*fTyvo+lx$6HJF7mfT`I?1brROOF4oO--E>bb$UBPiA@7JW5`K0=lRTh6 zy*WiUBT`xpIxBSK!k#dOkqs}RD-#OR&a!!oDjxV%9a}4F9j^lj&1qZFUar(L z*ErG~pu|km{wd0T5KG}|Th4g6?8YK%k;375f$n(9L14&Q6?w-B@23jsZjoe$#w;Yf76Kh$KFXkLlpa7{f=R8K51Jl-THYSb`;y zM8{1asRr@;DsVpe`Iw)*5;dKqP(#4<7l;;wW`I7qwDUu5>!LC6n_)Qm2qCXm9&WcH z`UiJY`TQkxus6`olcnSq)~+Un&7Xl&N;EvoL3)q1W~DXLfZXE; z<$>KlRI-yho5_^U~4UT%&k{gZj#66KIjj#x}fH{wA> zs&(YW*+xOIWxlOv?ewWi(B-$X&D=%-;c5v>b+)X?@Q-zxdtg~|kTn$7x>6}1h`=#rA0V4g-4v9w~V z(zz%VjDPYZ5N4t8g9xgtXe7ju;R)%{ zww>IuZQHhO+qQOW=R9wZ(dR>t(ft?d!K7IqcXPqKO}bX z%`Di`39kpq%!b6b;@HL?A=&Y9V|Er-G{y6T7~^H35RE9=qLDub9wuH&J0euz*JjW_ z0)Xu7T)p1DbgdN7k8ge+ZcevlI-A2&Pgeo`K7K01o=up)monb28|AilD)PF1m$9{F zgCiB^YE!+FHqD>;7(0lDk>okuev4jXIkq_Q2J8NBp=_%usaXe|%ev|bdq0nRt*-i< zC%{&u!cxvOZmSp1=O)}Z^;Oc`KYlPS830?TkF9C9uGdnp;;<#wCb7@nS1p0lky z?qV%F%WUK8r>ND$9xm*>xLJs+YZotYd4rcTPhyU)oQFbVmq3Qz)l11_`zFbGKrJcq zmYK7=aA=!p+jY)E$gn?U0ETrweV8zx2F(q_dooyUZ1rbD|H zUPO%TP+8bL=L-sV9CW5as*x_>cB;r<=xvqHU1HCm;)Hig+_g)%Pv6MqDKT4BP6ox9 zXy2|aUbn%mvlBQPe8L;Pa$LLA>hGt#OG9qZJfCu4=xVopY$s7wRTm$q0eDpSZqy7b zrI204<6J)cSUZgbht1O!7H;xjdy9=Z!8s!J!P)zXT#dyo2-pWiVEOu+L?6=Ca$txw zdlR?8fBd=%W{2g$V_L3}g&qqX58MZ&ci!syEbhPvOCas6m2GmV{^eB>jyCA4{hiKr zhms>mQM4k%!pUQ$#fI^91@sJQeu$((0&gm-hT8zt$tz=rCR45i=Lu_hi|^?#eaHs}O!8hH5sv5i^lE&xc#|KYa_e!QAbWDtx)Yzws0p>q$@}F;UoqJflz^jGZZg63G4IP z^&9H~4&oC{B~ucQf~2#7adr^v^xfri&o+39K)^3RXKIS-lZ(IPorou&?{zE~C!#t4 zaMsMs@yy4FkxI0dgYBAeO;>9tINr&W?~3pHO$*O}jaN!@){gk52#aMCS5E%)v z;6S`HtJvAk1cLR@Hu^BUs>Bk)HD#SEf^1q!3N25{lWa(ZIAeAsg#_Sv=5nE{*z$w% z)wnFdn7t=~d>nh=Z0S`s# zz<+|-&L*b+u)=zBy7>6s7`_k4@*fQUkS##)OeVhr#r*}wsvqPfI{8FM<#(O}HT|y> zoRjY3{5~v|)K5G~T2*&Jij!OhhK93%RV}(3!*AlM`nz73`=Lc~bSM^zHA%WbDZj2Q z+&p0FP#d^PivyGVPldH6HFB{TU^Z9OL#I>8E%e7#DoU*#CcSQ-f{4tY>7lVXhH%A{ z1$x!$Zw00+mg{)zUys6o0Cl0NzsDB?Q)0f1L)r&mU(29zm$E5eI=9^Lt0rCNsdj zymDegc6VtDp-%E3J{IpAbyu?0GA z6J{DWq}VI^0w#$z_3?A^1XXAClSzB0IC7@al==9AF)Qlb%f0&joCA1goa2Rtlb)jO zYNqWbFM21v>ytH39EGxXFt#q?8!oNpw!y;}_6v%&v}F;MHOCX{(fLFb#uf_I{Rk2S z)>X}>r#V$^`ogEX093;0aw+RQ00lHasf7H0KR(qV!{%aNUgL7{3GnfG|4tLaoqq|2 z>$#2T@-a8>m0xas?tjZ!(BoGES@$s;B*@@{K1HvjJ*OfYhg?MRrV$Vp3qbyf>j7HJ zH-V?MR*_$@jeww04JD@Gtb}8hw?-pv(U4fh>NB3lO}%4k6{K+UZ|?!NaW^-6J~MlPR`kZ>;JHCH@gdhH z83npABSc^4Z%v=36FN6ZzJr|cn3fJss^B)Ryv|h^D4T&pyH0_(SX3Q^auVQOy+i0gRXF->`eP7IR)exHf)*|Ps@pUwF z$H+}6%MrA7q>J`9T<&G?yd5z~+HoiFCSEEEEY+GG0M!Y60Sa|naN zFu#M=n<0N9`)kylt6*HFu+I^y{{49xcdfVO`Un4UP>6=*GXD>DlyT+Wjy!_1^%(-f z;NkUR>9f|*QDaqYEvDjuWcjU3&#?m09 zj&V5#lff?6r3ps_8ZXfmHjcOD7cG{Cjq=@HRMVroxr@CF6z+nq{kkRex#UETQO@!D zi66pM(=#;J>-T&#Oj!Uk4sPS)#G(lL1}fFq40!igirM)3Hm1c&vh{AVRU#}aGa zNw_@x;AOX;Kcgmn5@YT_meCJYINIuO%L2LBy`B8od#Ow0h+~T>VW|yk=XxC-sL$Bt zeeUABs@>Zn0;C#R(x$&QbnKsZ)?p!1cW{NKGIAol+xsMb6T2cZnR8wFwqS zaC868biX^o(64U!(MLeyuKPSiIkQLVC^`(Oq4{{}q4Bz6isp`9vj&>~{+|L{T>`H4 zzXdi8z7)J2`G53vD=t>&<-h#I5DpL!Lz*KY1Yz2LZ?E8Kx8p>J{||I|il(jo5j)CH ztv*v3Nw`maGG|s=4J_gQR{K`|hU~1P*BUH{W&%}~hNhAvO@#GvpL=Mr$wq9{Dj~ZU zHbS1~X^PgGYmVV)aALfQ;whqiodB9@?wiyd3R+Sn?9l>a(f!U!AD~V=;7F%YG(no2 z#0S!9c0cwc@{F!)0$W5ZMI}Vz1t0Rxou~JM8Sl4}(f)?Q;b|~8wlI;9FAuDzh~|vi zJVMi*6;+Yzmmc){k$-6iPMxW?A0KEL#lkQ^K3RySkH^Q%T2KHTzOQACPc=`8x_kzLsj; zE;uaBnUBi9fCyRvuk~nXO%#!7&@UWH6-K4@>EGq=etf)Gx0smFvSb>3}vM>%Bg&GpQqb_1#LXoKV zA`p-?MK9x7<53&d>Ci9_lL3|O%cJ1S>%)$e`u1z9q`{2(jOd}OO0C*f0ZtQGWRY^= zWqM*0<0?T5jOt{DbuPt(9D}=zwZ777RY`*{%d2muVE2Y4cj!tfB1+k@z=raNr0jDc z0HY;YjRf-COJYbtM28uy?@)~*k5ajvO&Nbn> zN*IpM0xE)+_)2^_M~FS3<(0)Mz?}$E05aAc`7$Fnr^ZIZdmoz^7DDNlfnYHY?i4Wb zQHQvXzZE6ru+}hiBeS~6%q`8kZliQkU*M~;HkOm@&o&;&c+ZcSW(vp@Vn%M^K%alS z2x)~04qDh@B8Ziv3w6N#LpVk2ls!qvxUcGA6*(4X3+QVZ04)Sb z@E*dzf%JOHQdU(c4SUkld}RpI{!SIACImFe;@mCp5ybG?#HnC1H+^(ay}vOHiNk%M z+YcFR=XjWBoH;*+>1rzGLr8ChbV%08MZvKo7o5*5OhXj{jURdproI(#g`PU9yi8W8 zbc0W&YFc~lEnl~s7}#7=2ho3507h*d)_UcplIY|7gr}SZIuBT3Q`T~%r?QejMQ}U6 zmOidL9k7gbqkraMc$*{4Efgt{WH2^Z9=U-B$Do=4^^EPzqXDY_C3v(!bR|6)sC(kN zIOAaIO4@>0@*v2)4YM6}+u&=vb}4=LMriRu#D((H60W=7=r4!PpWccK0Hf1htFlOv z<%RT;W7vBDc*>zU3-Qa$bp4fKaL@b0m2L2pNFLxqnTrT_kGp>ZheR28UoLki`!~N~ zIUE4dTB!3pWmdmgJ;Dz{!aW_xumD9)>~H(UP2sS**o_qMyHGR(HN|fZ*I`iyXldf< z$c(o5CVs_b;9vba^n)i^fP@l=N5yCTqKEdm-zA~X1>rVvt+>X)B}W^qrP{>10SV1& zg=-q`kJ%gawZScR>nHr2*VN`KA{r86yL{T=(fvZdKw6QlDw;|61WZ+#bW?;%5Q{Uf z!Gz4zVI&YGIPbEIw2yyhB@8K-tfXrW(R_@jNBg(Tl6=(gAWwB=njcmDw=4V{+^Ud>GK4y~Y2%EVq_?NAUkp?2jPUyZGAr+;EbVNJef zt)=ecGzU5Wr++fC&XJ4sA}ADg@KG&8VQ6P3-ewey;utS(P2VzfU3U}UINc`q|9J#@7LS?wL?<-DwqUn z{cJH`@yabdK!U|N*z9s48Qc0fh_85qjkf^3YI``b)|hLh0X`*5by9^#FM^S4_W{#3uqvJVKXZ!OnDt*EafpeGuED!+IbPM!CwhO_uhJ5h5QB@+Y3z% z^Rd;#y(@L)PF@8g`WtsmWQ}$cRW$0##x3*X1yvRV(CCGIUasI`o!Gg$cldfcrON{c{2W*% z8KYbSZj)L#Ihf(vicjru^UZGRd`h;L24@g)otoo=QnK#B)$IuRyIZiWN=aBglFih! zS&Cv7%0}`j@(b!pfF+wNFG)5Yz`Z)iJGnqFxTdf4VGWdQVk8&YMdhV&)3yFfcdwAD zmwk8l_`(8u^3a*{+<7cwcZ{1n*|BsHqgE3D?7crgo7|I|y#Ly9Q)*q|Jlf_hZ5@+M zKY%6@`M+2*wv8%=Jh_xoe4142&;va7TOmg&*5kD@+dy#c-CEx~SvyDWxibwl2b(V0 z2)@qAOd-Cw&7Z`xYLH3RWs8l^dO#j-9L_Utp~F$+;d_#dA0>;w6$>8qKn!M>E_eR{ zXx$7k!w%Q($Pa0f=@=eF5FCQ~)(l&F!>%lu)!wE?xq9@Eu&x%%^4Q^SP&|64_Bsb~ zWhP3y7(pJvtv5VA?NiKQVtg)o^h4SvUCqNv^u>;<2m!Xw?J?;Ik;eO*%$9PX&+iUn zcTuSaYP1_Yv6zp1l}x)5H@|fy{BU*rbqA;BT}#~j_|2SfmT<7b%q#H1+(ID**40Hv ze7-IB(*u=9U;itsjP_qd8R~y!l|R%x{>#e%0euCf@i&6g{{J^_hemKRKyX7&A^GM( zG`*z=^~Ult+5%W683~fWyuZcf>en{p`X=Qz<;HEcoqxXQrjnU%N;t?unS369+O5u$ z1l+7Ri8?o?pHmStm%49(>VH4qk%<}|Q}4{~-(;(j#X1?GvCbV(E$QTn`OFRdi1ZI3 zDA#VK^?G4T5)o9{)PUX_(dmh`Hu5O4oEqWDqO#kjDkZ z5?j*pnjsoASDGQ*3t9Ot(tyUOr@9Wq^5%V#DNY6XI(qI))1MhvdB!AbwgO*D02&Q! z%1xygpPtgJ`MAK80g5hF6ISO=5;{ciqU=L5T<57fBKqV13@HbohPaP01bq z3|-DcabIKtZW?{clCZ3^D@}qWTruh;5A?!)l(1(&BgA+~hrc-bYg^ z#Zm*Mif%eZ!nC(On23QxUgry_Mm3!=kpwd#k%LScK7)oyHR=z-=KiLu?wIF)XC~qI zC^6dWls#tzG&*b!xOZ+uG5pCfV{q7?Gny6}4vV^E2B75S%;h&d6I#GoqZmut7E3XM z#w?M!fhx?x{4J|u8BFy{wb%x!eYv}f7(dZD+OgLmRQv}o(zID5sv`(}M}%3#sji4N ziyliUW_pPo#u>)8xtKv4>*MlELuvgYeLS)hJMi zUOPNzq@ek61@p_H8riE0wm@@WfEkUGDZ|6Jzz=ouvmG03Ay%KoOe z(Mj|<=7KJGem3~_hf};eGxVp$VBT(4jYaDx9Z$Vf2s@(8wi%!n3#)m|&v zv1E5J0YU)$0ZkGaEYW4|d4d#8HI`4X9}kRXO%X*k7Rd_S)v>(xDRWBfuCthj)wzd6 zv4A}i9}2b>zbh-`7xtVIw>@)Q`LT;7BIU=7oJPw0kSW{maQH8C;wsrdV=?ni50T|| zz=?x>d z!W$Lhj!C7eo3T374@|KpOn9ukh%B7!dbd|J!2guChH#9g3~LqHeC&wh@NR#eGr;#V1v3NeOj7 zjnjh2d4qmXV3`BCb3e(6Znp%G@3OaL5b*Vxwt#*X6g9Q5ue%r7gF;))J&ZvH4g#M5 z=++ZPss+X<^mIAHcwp;B1%p^gbo94(!J>k?8P^SU1P;nDcbTH4lT=&xs7|){qL))+ za&g4gqFe*24^LEer#*!K`xY*K1!^DL8OAop%iCeFy*Th~0Q+y55G@|IX+k6=>&guv z!%egXG(6emiZsBfHy-Z!C-eJ}8+7@VO(%9cH^;yrikb+WrqP?s zL_+?4`Hr_C;Uf*;XyRs-u1+(poJ3hG>vf=n| z-UQ#F2(mGs<{UrfDJYFv9^Qg;h0h(%Y>a#kkmFyz!SVi%PRBv^eZBX;5sy zd&ME>hgGno8tjt+CXa=DiNGW)f|*<`e1Ox)sGZ02Wj$hpEl}?nAu)Y! z^XCPPaBq=rn8kVz zvXJD7V@Y6F(Nob1tP|^Tc$P+2IyWCFeieV6WX=ZY=s#*CylXvTokt5Z8iYcA94)Ks zthmY~HVYb6skOQ&Pk*wT?3ZF$itUX6ZaMq-{b=UU5&zX-DxE`7LxP)*eZD_D= z65;3|N}S+%rBLAm!cIgd`x{5IC`4zPo76mq{zV>C=Ze&G^QNr<0#V10l2yB zABFdYexPVs)>sd!MNRe>CcNCfQIL1cXTqh%n43Hfz;2G>bvU#1_XnJH6OxP1DUjFo z*#*Tq8wRd}j{YP7yJSU4=aWEYTH>6pbv4$W9ZUN$jTgWDZKrZFQpxNNW;f&z6O8EH z?)w9#-_2uNinaW^M#Go9yPp^g7XwyfTxW@UxWDtHd1%IZ`;FYLoh<2ehruFl!MN~` z2wP&B0*?E8vX{+;k;olN#-n6-hY}BU^}-$)O3MzT*3!;^#?@kcFA41hF@+kpPjvJFW%9v`DLhaLH5?y?DPFldHpbUrVQ#P*xcT zi6LabX|8P(^tqiLGVS<~s2OD2(bO{MMH7j9ln(Ac#wJx!q=>ssu-gestPrm2QAH?r z8tNov21{)7!e-E^&GHpKDtgd)O*8>)TpHDH>d46C9WdeH^ymney~&M z-eVrBqoou_dsm@+SwJSDUpns4>SQ$m=s}EEtzjQ5<838?W-cxA=U2J>(8R1#&@@koKEeH)P`JBst}l zc)kwGz2`#&pquc2?$U0WhHef90^W6fN!HL{qRNX+HmpCz%03uiX)~? zxW6!z|D@c-96ULOm{NvFdHIu_VHUjxMeW6(bM9FH_D|frdBHyTnPAytk}CJdCS;Lj z*X0MGv)4_u)&|-BL{LB2Q8&;72ySg-y9$b?UM6P*b3 z&K+MC_6GNC?yuR~1GAXmZOQcAHu|e+>WY{NrT(oivZT>AEwLpoFr7)rbdA-ln#exOVR>G}uvdX6lrH)^b=$M{?sLr~nwO?()X542wTqwQ^Z_`; zZf>8sW=m_n?(CBA!5n%4zIV9 zql0uMXbj31qyxuixCbe5LvIwUkmIP72i?)MxY-Q3NzN-O9mM?yW|*dcS%#PT7$9Tq?Vtoka(irE5Ku`I{Y^4ePo6 zGHoC%?2`CQg`UU|bw8e6&m^u1A8#k9z^SnTB?7Q?3xA9s{qo{_9DyI5au%hdC-igI zwRi~devo(k@Mo?8CZ3E^A93(ojKD*9w7QOduKJ5T@;=Un4xg?X?audp#DfkXzMrl# zZ}mkuzcMYDH#Q2_}rNnc%R$ilKIxCaKTTfjm|cjnIbx;xEig5{FST5X3KTNTxPh zSoP^qn7|vwSfmZ%NeWf99yNvAC4nQ!AK;rNF2yo*04IrcL_G$WG8v##Ldu3IgIFS) zo^b@U_xmI9v?aqdy7dwyF=Hx*Hr&q3pa&`-9j8OHD#_I`cD~1hlQM0A>H2DEVF*c^ zDtS}c4KI3tvQ(=cQh`|FIum0-0u1w-otUtrM^NvB(qin?G=WZ%lZmdyuysU`d(e%RdDMj`g*e#p0N zyW|nsl*m#tggYij5qT*C5r4`KTEtuH>O149KpPl-J+@U(GY)D_w#D$xy zkJB4gg}thz%7}XG!1(<=;FUkm!U@Z6Lgbj8ZEvfx?>-uwQ2oR)w`u{~^1|RdTIAQlTJ# z&B3CwzNKTTRddU2Qge2PDE?1AQ>plz3=P~fk@?nTxcDCK_!+D9BdBUgt4Y{pNAgT7 z)=PKoC!+xY!KA^qAoVFlUr}`|B%Kh$)Ur4rx$|n`b~5vrW|OSYt>X0xnmzG1VQJ;I zSy&Wv-nrzoQ3x-7k5yH_s%iYWs!*mP5yre)%HS0dn5@%r? z6uqlfti?_*tkahwNR&j#V8FSazbq0}klG9JJQNN{qI(Sh zUJmV?Qa0p?PXSi@Oj}k&A@U!PB$sLwC*pisWEHLGk$9wf6qS>wHk?g7flgC@2=?1` z%eLjI*$01q51_ZBg)%i5@!Q3cStbfbj}sLCOnc@>#@qC+?e##eTB+LFiX0LTuhvYh z=JcmuR?5Vnji?n-{TwOxra)Y$p1lNIwJ2$WR}px8b&giIr)3gj%ay!wmxQsT9f0~|zw(1|ZxyP{b7Bt1r`Na;a(gk23mX8OzhYb; zr*xh@^A`CKc&2a0W+yv;AU7JfiZm z$yAI);(L>k_+wr$mfwz_hBpJe{*|k!R|kvu8j+GSE7sYKmTa?I%&%*$3AlCEbDNl7 z>84o}p;7WsEJ|mHfP0lKw;uakL;0QV3CHY(#KM-C#f0AUHLA^Tat3XKH8N~+(YDjiKk&I+v zwZ2e-Z{uHI_W?XqbNqNZJY8|EA=P{bieIY4GdOporMi~CvU3FV!fg5;1=Pa|)I^H~ zATf%b2ybJm1rE?Y5(H9ntV3CMqs2G};YpZQ%do?apHKDiTOtveRQ-D4<}2qVkoyZu zm<-_x3j6~)2XYaz5sCpo2Rg0FnoXV*chlr3pt#-Uf_PGw|5NiWA6bG+83z(;4HFMC z0ll+Oi+B{FeYjqL=+G^6e`B9|;FV6$jZ6rAM@^KXtuo_Fg9wmnFPVf+JN}BBd|PIT zktyjjqxtL7$A5IyxvJO8@7tY%-?H`9MysOaczj}^EN{R^t{vx+)qW7nb$z+PBx8%~8(-DCnRQ@= z@4y1G8ig7E7O(`swiHn}j6bTpdh@ZUZ__^+w!L8L>}Z_mPnVM3&HW9fPWP^cQtoiN0EEWtKcFNGm$ew{s^ z(p^(iD;Bb~n!A1}trGFGqewGsF16#@aI9IVA<+%-`YGao(MhOb$m&DV7QpYu6vNfu z=?JGEhLkzK-y2H^&*7nvouN+wCSeuxX*w?7JIqyc+Oc4|oOi3#Q>=qaunzDz#ySna z>Uv}d`S1lu0TY2+hX_7c=$4*}^x-rIiuO{WPsyiFk%V^GCG;=l-Y8l@^=<4<`d`m$Q|cJJoWJp-r?%O6Cr z13T%)Y5_IcWt36DKXI?`Kck=0cDYHKg!C;YEKS`8k~=Fas+yYbjt|QM#2i*5@Q}=< zw`G9vI3{S`^#UG$5my_NduTiSDEY&nx;f@xkH+(;8)Y_@Jl`vR{F$f|nV&C}Yls?2 z)zM7R6s81nQjl=Jy4Y;w?a0H z%-!KX%|oz<2LlGi55Va8=;%00&v|OuS4i7}$^jc+Dk}-Nx;X&2J-hv{I}yY=7_R3HYJ6exJ2ldOV%iB-N|ozsLY; zi@(-kMU8k`|NQxZQo-jD>ZDatHco2|+MUMG>t@6Lpk>p~wNzt!G(d$FbpwnAZbAvG z8kTg-Nmq1O`PUiimSxH|uvpo~q#h-Zg)Uv;;=#_X_tnhKq#iw}C*3xQ>rygF*^NM`_4ODs~`2W%7^%%A)^R2@@d+Ujo-`7 z|1GQae*N}zahS%uU#kwn?k48@#*L|ZkW%Rdq^-a4=A&Uz?)ktV!xbLrL0;`#^O{#XTQD)~uvbbxV!tAG$ zGcEQw+94p}z5D=3x$*-JhR|T9B!=+CCV6KhR1h~bfFb}?kGdV&W?0_R$rpOad+G*; zgUvJiHA%kOzi>n`p;!taYwjEeRkrmNH6F$e3g($7(i0u_Ne++0i-9@TpRM3QjY;zf z=7br?F=n2t0;|BcTX>n`&k@*R!Mj|*Sx6LX2Xqb}Wl|)iAguBn)p2DU6%qX@|0@^= zAsy(d1m~l*0XCKNTvKnWcYGwdVRUyW%|w878IC-NP+-i^B(w%NUmn1&;D>t+_uUxD z1pQGYL&fbK;<#}q;0?q_6~ud2T|&gLBQt9R@n$VIkv0y0YIW0*#T1Moae36CrV-h? zChwyHLCL8!A}4n4ZI33JtukD>jSt)JYSwAM|LV<4OLh4SgRs;1CNUc#2?N^CiVP?Y zC;2R`bC3kd#2o@uZFty$_xS2dhBQ)h>Z(CzUyHD*8ueWX;NINe97f~xWuK&$T_BTxM8@W-ySl9D-~a|G^M>10Mu4cY51LAJL;q%ob$ z`~$1!TH z2|uDRz1C2^H4IsFdcXVeN_#7V z0I2I=C>;T+FC3$3!0Ob#yV+9vqikRieB#iK*Q;bz% z9!I+Gk%b>Y8kl3?V9brUgWSSomS@;G-(ZF4s&|`Nsv)1;JqthZP58t}>-ndFU3u@% z)Ew$0D{s$S>}XJP7OxHY0WI2NhHd=hE1EXO zn=V2hzjR+43fXnMed6dY1`O^p4{$~dI7STT?_kaJH|vGkxe>zy z>lVO0#kC~Ehh+jeBci-sk94oZoW}}sT7d5O!K-@jdt3TqUzbLM9DIuL)D{VUV%fd8 z=gjBsVdrgiVJSQU%{G#S8fS6$dC<#IV(H|~jpfRdL+82^K*PQq&mtSq9)>e>UUH^( z2>9UQqComXWB~Ryu2ciOz(wZe49!2ZiWWeEKAont!--$-#|W+(+zp#5miM1LF;hp* zL4U09W4W+!4`+LpwyfN|84$_2BVuR?|!6K7`Q*?6ja0qf9g&0=1OW0?8j7ki`!V#vg zIW1cyJ`Gm80YJ3ZnY%Biv@XHvpY1>}5tYpC#T@**9g8 zpA`3_^-`fVM-rJaXqy6%H%jinX#v1gHI*f<=P@O(lv1){sA&})7E7kC9F1&Lanxdu zUogDrzL`YjrB9z>*sV17w1_Ji7cA8|E9oN{mFDSjsQV|SmBChJ^Px>GBzjd_%Yh{! zDngAHqN7b5suB0WSxoAu@D73w&wm=T(nL$(&@a#hIFqpoqaC;rq|pUkMghuduv++^ zM=w7^r(TvC`wT?E{iH$Oz4y}#Y{8UmbC1k^RvU2n3`d;;CeioX1V^2=K=C5>y$nKd z0Awl{v}iR74q#6{Bc2j%`%UWgq6kI!3PZpxtRA$+o~n~g8$PfMWJ4^4 zKz=Ju!x-qSBzt|RG5dXD{e@uKhwg}ET0=}+ymK%_UkpSSjui=uyQ2KmVXxJK0{yo& zCW~u|2Y(@8_V{5J#_flOd5$k9$9MTzzwUp3&H$h!XJ29o%whKOxd5^fbeFiYUBXs@ zDv8o5;VZ1J8N}{hPL(q_q>($?6E=_^n=z*S?HN6o z^@2Bd6y~IIjn2wIOybG-20D1P)-G=_QKHs3b<}|u860#>c9M4)64T57{_#HgQLG8ibhYL!4lO;>H9?lw`_EGQ zTeb_X8ajn1e%P5Qz;<8?Wkp?*Fks73R_gs>`Kt76Ila;qq^(SstQp%tDXAY}6?mb~ zdu1L|TXkSWi5nkDYK#ygQ6=!{Ne2zm{3aJcceU@+2(NFa5CM@n8RMwkkfUegkH`;6 zA+Kn>NuJCH35`cK4Tot^#cyCzt-6Cwglfl(&6_Fw)#m^rC`ypaR+;K~4#1 z9Xkey<+7rLnrrJ%n>-Tc zAi)ts$D>%eDFEV=FPK}Ve~$1fF8qYl+Tl+vyqqk%Xn}anu!l`r`q6&ia#Kdh-XwZD zIcwN#j>=)18!>lU$15!heBiq5$y@YKCs{GQ?e%*iY(Brc!4hEW=+n^EQxL4e_I(#H zGu8SZv(<-DeRm$*Sk)Yvrq1N-Y#+SKYM+Dy3;S$ zU&NGlY5_qAZgAyi9F$px9hidd&#YaQ+B~uUT95uCjX)zq+FrEyq`iijpmKS=4m>nE z(pDEHmp%*#)ZW7<9yJYE*3bgS;@+L`ulT!jEMIH139-xE?CGi2+OSF*w5o3#= z4AD?7s!Nn~BO79Kmr3P&>UNmh30KomDf7(+e+WW1=kObGTx0c}r~0!7Ht%Jk{ymTi zAp<&s&>30PV8m<+h(f%S{wp)rAob(9h>qjqQseEBV@+CZP4F(Q@StPkYgpckL3X?( z`zs8;k9bV*9+bFxaaLOuC(JFfhM9>?3|H1!a*~=c4Z3OP7?rI%JE9N4v6+H}!V%1x zrdMU#jqVTA-a)U*MUOc+X2s%mS}sdZng%GahAbuTCKX;c-u_WaePGkqkALVGxx69oi-f_Y-tZj)*A`F*%J$fziq;y=X>qMySca|t z^zjdoVotIly~kY+z}uXFPJB0r;-#%avc z$c6A`b(Cv;Yp2?iA9|@lx2PdAn*yYjxKanLm^nIZVXj@bs}fOYGfiBZB1>Y-Y>xf3 zXD4Rc2lBOb>o5qM3`=V`ii5LZM+G%R0EjHlneFsRk7~Lhx#P->Jy>Xk@g_?7Esq}` z?~QVU2Jse#pdKWtn^)oxV&2Izfy645sfJJq5fYXo|BqYUIn7Sqv+*p(v8 zAURt_dgyUr@GAE$1znU#ivaRHe>kU+rUo2FJ7wf)t5EyK`!JRcFU>?XP9PMMNn1gm z0SzLDybMCmXW`}bwaiyeo~kgoZI4G<%_t;7ZsID*81<3^L&a=|A`@rqiR< zeX|tc@qM@QBGeH%v~_048|b4tNIDLfLv9kxdVh%^bTmtjOap&P3IXb!Un`>8q=&j~ z2rto8DEZy@4zsopEp30kMmh&JZD=z@!^N>qKQa}qA4iOCROG3VyhrRF5$By2GL6-2IMJek)bqVB>&r&<%h#uQ&6z5gvA zCO|5)+1{YYuwUl2o&k{bqsTt>(KJeyO>mU?{Twq}6APE+jfm*_O09{HzyZVglPxk3 z&$)+7O&H>veWC1uXeVB{;}#lN-dv?`BZxN9{|76!eJ?f`Vk8D@Bq7v z1uI9pc7fe1ToR!289Quteew|}5XG2FUDB~j!ks7)s;b>#enkbRT64Mb7kPFm3>^w~ zD}9sj`uoHPWB}CKvqDO9H^qJi%Cfdna}^S-T1=u^#zFl_hu{3A(m$Ki`Twf+rx1@T zY$&nOVTLDI)2a$c`M*H><_~pY*}Wud5R`;jf1@dp&)+yw_=)l4=0z>cMei=WS0{Tl zJbaP2ClcCm=?F?69D|AvgoLD~kLnH5xQinx8w7+-4*>#%%G)V^AML*v#@qzOdHL7{ zXoNSm{9OX_i0!JPn+*^xG>MQX%{BMLed=FcV|*nw@|M=&rA2w{)!eesqOSQhA|W&8 zj#`3`Di*2LnS502_^Ea(ztM&TXl2bD4qkyi3j#E}t~q?z#rUsHUpw2C#dd(#eBB>S zQ}xcWr~i+ycMOs&jIwsi>~fcF+qP}n=(3e%+qP}nw!3WG=(;sC-%Q-O5%{u1gPtLPx;I`ZEHG5TtV24FhJhI)+v@&e$`uD`RsC91GXa`}bL zx;}2Hy9(UUx6|bt?N+!EVy_{XVaH}JpZq?pTtqw5ypL6@k&(}%8|}-Ov;QoqU5YY(mFZ~n}Un?vSc~tbxj13xKbtO zS$uzgPr?TReo51Wk)vChO_jYZjV0k-f<_G9ddx&rV`mbKCUeU zQlGLA#NWIbfPJgm=5P=R?c|4mkD>yu-K)e2sA`1us~>CRoh_ocfTcRJI~jqDyvlX% z(F+>MTPArnI*;1YIy3g%AYDkL7CvV1JnicenwLo|7E3Py9On2@N1him~-D z?J2Arz!CYe0Og(bnO;+bRJDUyIN^^IU|c@HHR{tS_z89sYa@)rg)V7$Yzbr)vj#BQ z6FeU8h8th-ATnh`{R_fds^(s9nS-qFOep;RIkZxpH`2+<6t_>v!<)N1aAqz&63Q_y zPfP$Xwz{wPfCAPGz5;qiqH>D5r(TRsq7`b1A>P^dFVvwKp-3a8DBCvTgoqUzFs+CI5GYz~Ev8eZ#zxe*2{t(Zt<>_1}f!q&`bq&8XZR4P*ouxc$h zh_znNKGj(ZTI~*EoD?jkKb%RA0Qv`ynT{dWnd<1UD(xv3E|%l#HW6>|9JjpNE~)Q- zzlf>&ByX>IxuEg?VSQV=Qc zE@V9KJ#v8?!~VAEU`C^5nao6y(C|~T+EpXsaBOp4TV>l*pU+3(%+ZUEqm5#@ulZyc zrybW=Wv|F3<0u=$1z#=Dh@zWPPovlY|BfM${xYFNJuc={Lh`NRK#_Ww*_cFt@OPJP z$mUQQ3qKE-xe$DCRl|~J`AMq`X14t=1iYhuC`3*g)CPo_;%kYza)xr%x!TlxQXf?zsBt1V(bF!s?Wtl4PdaduMofwUyKY?4e z3Y-%)6m3!o?N^tKH_!a9GmB0hU8?7P<8D;@?xbbRXPBHn&RV?QU74SEi@s-I z)ykS=#L8ETjJl@N!E2?;9Subqp^TKBq(8IPx#n*|XN0J)=n~9w4 zU}o9uLClJ=2V1ubFRa7qkr~rL$IG@DffenFU;vw|Z8jUdud*I!g`rTOeV3DI&xM&M zb!Qr@wD5%i_y@7D{Vo+Cln3~C&;SFMn|I2AlznZTZ_^!?Q5gvThP&L|mRIxBkoHwF zw+8!yc*nYn0lSOJ{Bn~|sFV48SFEMQ*lUW|jUyK|w=Nv%QWgmJP90)Pap;!Fotre! zL6zE7lNMmb&27kPy1l}sKqI%JiYj{-fBmjvdO}16ua<2g|LT|eP#p1~hzYc$^4VYi z;@G5HFwsp4)u>==tsE9R$Q^-}Dm+|+H1s?~3>52uhaJedr}_258YtY_Sz1TClkfkJ z(!VuAGlCBa2&fY^)u06U|AZ`P@BjZNk4T{wlgNZ>19O-H+ny*r7Z~QjI zA!qcew7bL*7SEAXQX+vjGuJ|N+KfLZf0^oh)h>}#bvOhLqk{08Gi$w(-nzCs)DQzA z^;6HJTL(>xr7Er+V|FyyKz2DrQ=YxSObbBKJxdn?z}C~r`S)a#2G(DnrdqrJH_Ba7 zs&hb;){!XMKhkBgugGFt4)$Ts$kTz<0Qi2;zkL5(+sVn+(@W1h*jt~A0gvx>g6KZel0mz=^Y%2BH}3*LQc$YLnYmt#Oy)-;=o-#ckBKLP01 z5gJ1x7&-S@d)R+-dAP)J8+Q86mrWe|w2ZYKzf!-+TynF@6;UuX>x`H|8pHVVBTVni z;QkZ(QCy2z(n+(vIxVJ9%Dj$C*!voutnQ@P*VVC?Po?ZE&RZXSo__<>OEeFOZuK*e zaq4aB(p18Xqe)fAVLvKL!R$tqQvl&QDN2(S-m?=C%d*A8X?W>b%idKlpiyQ<)^R0j zewu??!La=@(EUYnYsERXen zA@vnLEC%V`>oDjtrVZ86(x1r4dJs1NS$mXY8ps7|&4AsyRKJRV@xEieECZbS>RHwc z;7>EK3YAZeRINy#KHDEOYu(62WGnSB+F%PivN6F1#mfzi$kqrcb6Up+hu$Ua{p#1?26p9nvR$)#l@u*}>Dmi?wAgr8(84ornBe*r5E;^1z{--&e z+)E1i_R*4@jtZLw<9QJLegg1e{G4nzfd4V)s>ann_8eC4IN0~ums~c(i3q28TN;G8HE>MHs+A3Wbi|Uri=sH zESR6)nT-eu|Ve(LABIe_=WVuNe@1x#JJ69>p0Yz?gqBxq~< zm!*gM_3P?hVY-5QUfW%q#PkW#L!YD?Zxs4@#*)Od{pDiYhQ4#-qwU4==KhBMz|>B# zM)vd`jZAjq5pSC&$_RkV%J=-j_w+)S-$$!$@Wcd0k5-)lUz4FWB-b*{40$xxQNH7V zSU={e|M~Ziew{o)2iB6atz?W zyafN!XKQdr4{-tdnp~cB`>Ldp1>t~5@D^kdtNTAT>$nxaQ}bUK?I^JUtx-2&y)Jfy zih5#B#wSvXx*n7wYR*|w7gfsT^H_D6+OX&Z;#Q1>Sm!KBV&GBb7FREJe$K4GU{mH+ zbx@Ok(6vOLH8sZ4moVJjPCt=r{h_jv^;Qd}h&DVxwcG(GHnSpxzBpPVHdNH?5awk} ztzR`d<~6AA!i;x}Y5h%OVUVp_=~)XK=nIEs=}pW~{H3L25nD+?=9&{*ofJ*gKt$8B zZY)sAH42riYi_X0|JYGQd7&C7Od3=-n-G?qUTvdKR4_MFrbXiQT#OzIx>1|Xc9HD5 zzh(LZ8X*C8@K;vKYWH(3GJ(Mlt6{5g(}EEms>`}(t$j_Q&2SieLkCt8Sq zw4~~@-UMa!7brjcn{!W?pZ1PMowV;fU*Nl_YM~xJ&{*ow9%(l+qO}nwc6D_2WaGJR zj8#`Zu@PKOxKN{YxL`foJ$X`2)NonVFSG}`G|>j|d1S9Si8ZB@-%W_NNTCCXJz5d} zYMO#ozXaZDG|;B)iXGf=P%eiC+98I^g1oATX7Yc>mR&^+f`b^j5kW86A?v?GVaHnR zLirPQ%{%{y=uxwsX(3 zpJ@@G5jBU0k}kl^vTdr}7~h8k8Y<7SF16U)Z}^%6PgFTP;~2&l7E%AmMtV)~v%%cj4$alUSp8)>ziHCS z`IE&+z!;YP0h_Y5vIJ$z?Bf2b%Gn9+OQQqO&YFwJ)Rai)+PPpu&A(ICy~|#8&6fSa zc6VZRqtllw!9-~0TkuRjxW}nw!q@MBYQD_;(rg5}8(&->BYaR=feWz(rHT5kJ-?0$ zso;CAHKyA<7j&rUZ@=Yhx4odC1^yA$-q2%Mi*DOvUE+`!R*s_SC6%^+EM$YZWluEx-h{aWHN zJ0P3eR^e{Yc+(eh(`R}7>p%+Hse=FjOYu9@CJ4esJAvkA{$LE+=V849^IAEHhWXB- zhwAV&yeOcX^;DH~+rWD5I=1NR`eb^UeR{@i=IKNhlA0yS-28HqK68|S#MSRh88$nK z0I`H}m{(T#!uXvISk%R&bByB^;eY#QeP_<+zW)LO>LvvO0%rdoBM;pFi-$+E)*q+8 zBS`;d^c{l9i5ZFw#$y&Sxn#uS(}Ga67bKFHaibvu{6IZWq4M10ryL)f`SbYedy8hT zaRvOq{;bQs2@?5rcXw}@=lcIkuOJD|C7~3ce@iA z{8@G{G|ap=A2g^Zzw2}w=5(|ZDH=e@d^XuOHwy`(E{O)!JH^z|xqt>w1ux@6%-O1k8-D2AM z1`=f=NR*j_&qR$+Gd(Rvl)7wv@4JcVx`S;z8DtvZJ~Z#?V_wsr-kr{N5cd4bTn%k; z2!E^;t}^veWt)EMVU`Jrj90CG`1JgyFrUKs3bh zfeMb?;yi{@EkcAz@Ja|!CBSN$NQbh@0u%8M9D3wOC)0y^&nA!(md9z*{63DprO<%k z?{B)D+)98%;nD340@$J1s);Q`t5AFu<4cn3!hF0Md9&a~3LI_g1}TyZymDanV#|;E zKsHu(t$Cix$00;W8I73)jYf#LMn63IrN z@3S>Ul@mTUaG~h(_KkZ2rj;>evlz2DI`hCnM#Bl1Pp^;G>lGrG9wJ@rJMXA_d{h)4 z|0Lhrm>&Y*3;9(~0Z0_=!B2OtZ+4{9w->aC&yW-dl}kx31ThxI9!TYVS@U_MS=W#vD>p%X zE*C?C7fl((O~%_kNkLVe6p9;ym+A2do4SR%@_;O8#%q-Zg*i(=7=g^o~G zsV87a-hhv8$O0Y~UQA;wh9$ec<kv3K^h9jVhw^pmD8+4K+R*7;~kl?A$FN^Z$HPCDn1!%ULWG9Q#FD8zJVpV-1J}@Nv&$zG5;dn(`ZU!(7eV-`w!O0&Qp7Gke zYe#XI0C)o+gbm2C5TZtG&yTMhwjY(?mqa{>@#@hYqdvkd93q}MCgO1ZXDIvcgBy4~ zRcSioAR!2@5P|`nr0o!r6(-&cJ>8Cj#mX0r$UoUJfL4fsjI53mbn{-FD0=!cA10I}V5DYT9!d89byL4F$-FXlH7CvL7l z^g_D{aG=YZ0UJH6m*8o#Vn5BDgv{+Jts#E{T-|_F9XZm402~{<(&A8xnFy#&G=&V= zU>wu6pcnxP2e9*0USJGjgOe<~90K^{_@Vo`URJ-BTSQ!)vDM-@{$gZhy_c^mXSy68 zAZjajq%=`qZZA_0!4(#r#FYMiJuYAa{ewS3IgNV>GX$=>PWZx8)X$j!aRJ@yCR0Cj zrwiZLseKjDfkYkUJHTV8a{MsQLTy@|`TPf0QTxDXO+e(DyxdteE2T|#t$PFvG~j+Z zkDQH#W*P(ZpLH5oh$Ln$;Y6Ng& zUd*mZ33E!pCrTrgE%ipj=dy7By<}Abo?nB$$QWtGl1K)IuS~~~em;|EkH0+?aOam0 ztWr&AvtqU~tgM5-sY9#^V!5TFu=_q6{AnYW9G$uOx6h#i)x+QP+$bM5K5tE%&8`9! z_pT;sCu6-ITZE*Ennw97EPT67V9Xg;dHkFZVbwa+L>t8m*fg&vL+w~e>b=ch$-ibQ zBya1R!1$it^sagx)|SwrRi3aI;BT3bf&`OpFjwXrp(B=`x9``?b1IaXQ@X@p(BNkc z7V3&hr4<=4V5Yj>P2aCA-3P$uxPNLL~|Er*96@1CH^cx-P4ioT|lC z_?vAx?!o?)qOT5Smsc*MK~k&8zk&w4Y34a6d@>@p+@*Ucf|-0V?OUrEFe$QHBrsbai@VfD^iYH)5*O2E-y* zF{B5|69@7JiI8rna%3F6ajxIwk9eAx5>z)Bf`M3wIv|fxpIQB7{@!^oW=wP89+AV15 zgR7^;<`49|uJdzkhtn?1Fm}}i`nj)-D8xR|&VFLg8Y|Beip=CCgWN?`vzO?w18@VF zhpCnoS?JSAm3ZO}z*Pq!cd8;+Lq*Fl2i#w$!mO%y$B*;V?zWDMtjFqXCuRL$58e{# z(_)a{+|JNy-%F1#&U!714Lw)qq>Sb;I%>lRB_)3#L+T>Ol5k@7%uB2>md|W5lQ0O8 zGy^V{<`&?-Es7yI-0*%UYYsWf7}1}KL~3E_^1!*22eH220u<+KEQ{zYSv-Ua2p*!0 zw$JqVCOT8~D)jie9O3n`a5;5Cz}+Lgn;M9k6@poR+vU7_O6;QQsUHoWuf7db?rBX@ zRMU8AFRN1k#o-oj*5I(x9`+mq>6Q3Qzqen4q}VEmX^M}Io=w2M z!zWUvp5QfOgtVSI{)y&v%x?r@m9KZ5tjNjaW!yY%T9wai4IOAYstb{~t#Hkf++pcc zOenh8a~a&`97N&n*h`I$0laKP2MT~7aZElwU9{wQ0_XqT8#!N9Y-!EBxERcovl2;Z zC1gUz1q32=Ku$t^n3cLypTTFJFV)gPVh`yb<@aasQ3|@+?1sw)t4C8<-`bEeB)5g= zv*}S?TF7;}MMcYle|S6V`gCKejM-r{%bn={AtuNZtyN;MO(f~O7;-UHi3JmCE%C;K zw%n;HynUEI+w@BDs_qW2k z5~p+`aUyBU!N%|MsT2vMuleOhUCt-s?H3*6l1luz=U>Y@No)EIp>>FX#}v)zH+;dB zXh6MHsSVZ(jh5xjiM}vBHfq0s&EH#|97bON*}V5EQUhGcIvoa|G;4AJT+RAWpDVA@ z*&EK^&wP!w@KAaTeZtcABJ&4jbkClg(w4ZTKZ_60*2EbAL}OKzg_0^cmbua0r)l%N z7E!HQTt>TYy(4Djql--ohm@y_Am>lGWI!&>r^kT{4KABamw!H}jJmWB!Yk=Sw zNZEC!xR|VW*@O*Ig%!JlJI)C&JFz(&n_S*7Zk8X}rVzQI!WUjJK#ReqjqC95ET1|v z9+Jz!$iaHK*ZYcIE_PdoxiwT1N+x(U{IctlFqEfs`gk_)eoafAzK6nx)HhDWw(R-p zfw193u$U5Jr8@L_+g4bmC=n__8V?fW{^=IC!?X5B@SI@nsxX*t>I||@>W+LH9d2HG zjR&QmUD}bj>e{ER=Ww$39aAcYO z`bC7mtOlj|xOQ|}I)7yH*}53Nc&3x&ks>vJb|HU4B!2@=eH<{}$qMQ-ooi#e0CXfK&eaVy#BGw0Q zI9?`tlTs|%bUM^^do0ud>1qD%%cCg7yOD5<%eLoFP&_A_Lt}v#HOO?7MeRfB47@BZ zVA)u$1d~!E$$zYP8f;04X@KV0CE?^cTc|YVuVj-OP4DX&8Tr+V!{G(LH2yf66GOK6 zZ{1>JC-kF>+w7;FdN>P@aEwxg4Gvra7YVkfZ}y8&uU~bNQqkHo-e(6=?yK> z(RhTMjLPcb=i>N$pA>U_%+t+Kt&AKdb>?2w`jS1QY$X5CIHCs(P!}~+hcz0_hgt@w z%$S~p&;>a!6Q|;BIpexEv>?lDj28Lm9~!{so)Jdvl;+QN{SHf+YreFnmoGNKob~t} z9yTJG_LX?p8uB9?YXr9-Qdh+HFz;8^@Aa%=@#Dw zp=`xx0k9@K{TTWZlou24@er%DE2_43+f{$^;`#2n zPIy<)9aeoC^xc=dZXqq)%f9?^Tny#I;O@8az+#AO`+GkBZ<*{&4Hvpf^`@8@>v)F`%DHx=38J|S@PT1} zlgJ1d0nT3IZ?gQJ_~aw%p}D+P!^{{VG!upxAkX2UKJG9ELM?7}rO`&@0+ss7B|8KU z#??@l20uWv*g?<(;B@5x)vVft&r??sgh~D6zC0*7M_+1UiuGtK9&%}U$tWHIQPA)O z>X0M{R>uOzR$4#7@JzwQhyGf>;lR}cDg*^Mp7S}p&m{~j!ZnbYJLpTfXtmGRgKmrG=3fLQrO#afCr{`=fsH=Wj+LB1n z07EjQ36-XX>F?1v>(K-wm?ZoeP$L1H2hW+-=K8pQ`PrkYdVrQ^g^u~t6XIH^368hS zD5*`4T?-C2N?10fg(i7yh8Kwsc&jf>(g=(;ozSE5hV0JD2ND)cMp3;RL65#V!UggZ(CP zXfHgRQUU;j)6?pv2s}woN??8jrB|AXu2S2VGxZ5vSuU$Z)-y+3zzOrK7xv%wj;a|iM5jo}Y*Fe+Z zIcw%{Bi4SL*q2_MisVUBg+(;5$%b-tKEsQ3FD`~%E5w&#I%=?i3Xa!ZURli6Sdm;^)_5y9#Y8b*&d`%qb{?!gtVmWlAP zq^(ZLl_7jplkBVGfOy#v#?a@-R0tOC>fLgS!bL#KV2e<187|Q=Ld4-Aj#(o6SM)=5 z5VH0&+bCfo9lwgWLLLH8l2e<$LaBs}w9AO3g{^d0WW-QsZ1R`rpud;g?;W&3DukQJg;@6OCa{Vcx}iP^CB47G#0z*6t>CUzdce>n zWDr=8l9`E>_XvPrUO#OdeYqSJjXM_~5DJ;ynD{=B*vUpu(1}GK+HdpE;=~sSPc6za zt$Z|4!Y6Lx7vXmDrqnC#Zxk*E@T@#)wDgj1)7Dr`N&*0@(CG0ax9uP$r7AaN!`MER zOjLEwQcOBnrRff7#Z!fsXTV>; zg~AftB5X*QJOpA{n>617_Z;y=ckQ_p`wRBK4+J;`&7N!D9Wm%{PSZ-PCcNTzm(W%V z6gXz6&qo8fkt-!f8MqgoaF?~@moO!A$$j;e>wacZGaYR>xV`we01SqT_<-PfZ;6SM z?JQ+n1yQo%_dkB#JrQr&htKO3BYrK*OxohKOmJ3|w*^0s)wr*6c9Z65tN2CbTsh}e zX87)l@zA^BzPYI^Y(G;)VH&LoH&*xyc4=XVAa4^M`!1Ihr^+s#ry7*?<-!HgNdZet@&4HXQsL9`YPw<_o|;1k%i6?%8xH! zmrpg9g{Qyo#{#4U5I#0yl%s56Do@v9lx47edXYGKAs~&GjSci0_x|gcB$?U?w5s7# zH7OFq=?5ItPcNRuO4eJ#tAvBj_#tDitto)5t(oIJqYmz}rTNy8>Z#?xTfC7xe^?wll4#KXRkRi|?{txIpSR1!nin&4p1BV|&)CaIb_a z8g}0JsAn_3fUQdd?!RY}amQp;WV=eWGwT9I0PT@rvwtwv7(%BEiFvd{iKTc3QQ zjZ>pfocW}v7f5b}XYN>Y|CY|_R{PPYf|Ka-4b+MvsdB(BW1^;$F5zG5>y`cCGLtzE zV94v*R(Smz4M&w-ZhWCtuuPX#)%xn_3e{s#TuOJIC~(voltARtNcRDoL%^i+FL z2>jnhhR((oboL&qD$qcnXS#o^erRpOhbY8=|Bp<8#qwFiM`$3Ram>`ae$f9EM$!Jy zVz`L|f)sF0yAbY1o;D?u!9m;NPq>Ku$B9^4D_&}!_0tVMFLsUmj5D-|X4JK=Q{Zbb z-sE1V$LXW&wdZDw#3_CyT|$$pq-(~x71>nLvZTGkJUuJIB;6!HRW!R)S9iQ&umpc)0*yY(ZZ*U6g|B>hs#i4U;LIkI}7RWTGi~)jM<*T z>Q;dI$?4AW)ueW;IumQh3}h2m^wNs)=n$JwdAM#E5g3Kq&UU{9 z1{pEYacur!_6Z5=K*Yq3l7Wx@@*Xc|_ynJ|&M}n+C=(a$Y)peNn7nl$o5Xp%YSjaZ z#+t`iK|dGw=huW_&o}vCqXpR|6=BBg;)@BaZ62_z(7D2e*pM`Vk(w;d3ogwJw2pa# zUG#h5#_?z>R4_tE@h#esQT-sqzQE4%Z|4IXhClz}FcY(D`H+=XO}QI=H8?`C&tkL5 z5%x%u0%iZ^@w>!ojr`dU4sGL^HEE(egBEa7v|Px7B(LO;Y5-){oS7Q|ow<~O>d_+N zOyG6`#9OpzLq?^sd#IFqJ4f56hC26dOHcINY@mL!Q}~BDJ~E<8`U0jg2MA?in81kL zI|4Danj3-$&|#-S_dSNUakrEp1q&8BeAg60h3YVM7+^HwB*9ZdN^tCPt;tI5Q5@8%E`3CYgzTof%EW3! zhzj;^Kd9pazWTd(> zyZtnMC`f9qf2mhHUXzxX?s3q0Tsj5czbQ)d@{L&uPGn{8C9Qu)d%bXlbAj*XNcA)tH3aQb4ot;9?yuf0Jh1S z#hP;fS7)`%VJ2|aoHM7a0xutK|L1$bcB#&2u_CwH`hiKqt#xovt>?;&DY}|VpC`O% z9Dpb6)XW{X7MH2 z&oWMkiwDKxm?Mlh4sfxOlH7w?2i0g7%EVbx`iZWv6t67%4WcR@CcS5du$T-p* zt6#ImWZ{2jB01KRq?07KMt{@dWVK|i9k@`H1Qk_d^r}^6aIh& zKE^G1;0g>By^bi{)-qMsIPEpUAQx<^A;8<#P~gguLTLZo=C2sL#$Lqp>a1uTGi^c0 zGP=>?JQo4;>sa})l1SdbNJ!KfAYe`;ErR+AyqZD&0KOS_Mu<7=&y!@JGW3tMiUI|P zO)T8l#HdL3*s-5E4RshaJsyaT8R-veZpjHtxPfu&wl)YWe0FM#G8@tgWMn@MBt`5} zj!3~E$}-U5;HiNt%W-RkrV{Dki|-Sk|pcL4Z6nfv~t-#?8C&8dOT|>i7DfqOI@p%X+3h2r4 zFQWS;IWC)73oXoe%cYurg7;~rAG1-e=9z+(uU2w1cBI&HgcF>ci+>X!9D4+1H4UuB z&tV&OX_0oO7gp`*i!D=vfJMF*LzQsyDO0vQeq_x$BO~GgtpILJhrtXqLSeKyel?>% zxVFO|OI|G~&d=)4AW@~iiVL4B_6z|PSm=7d;WrJ7W4I+-cm81S$A+=Zv2AR21G-?y z;@PfaqM@uE*i!Yu5|O#r!9!XvU+cq1yIrGvaG~lzkcfgc*3H|ofT>Kja+rkF@ifkY z*FC~%7u#*QxlGcB9$*k5A%qHB@BCuB&5YIA{yZ&y6zQG|ANn^@Q`032CE^nwy zLts+GzopHxUBBpO@>T*CtD8oqd0S4VCm)>iHWIO5EoZ^(L>X)jBDh@{hy!)2`YbE7 zxNPv3x)noemocEoJMIKj3^7($aq zhFn%LU5oI9A4Y)Hqyc(f60< zIKg$2y1NzlBG><_4QMA1f3fY~5WPT55yDdjWpfQc*Bif{0Qz@fle# zZE9Fdq(p-Bh>ieeZmsxmgZyHbaO|T!D{EmxvGjI3u!5zxA+cMm2o83CpWyS+^~D7g z(GPlK3_=%!gvlR+6v6Qf_xp81l1C7q6^G&RKLZ_M!G5BoeqR4k1*XmkLHv*XeSAFD ze@#vZgdw>9yA}*J5{CEz@&~9Npnrh*0rrPqKfwI}{{zAgh(93xfcyi>55Ipv{Q>O< z^dB&O!2AL02kakke!y)t62{Z~KNFi?Sv>mx{@>OoSv+>A|2iKAH9Us@KAvi>hG&WJ zALss`7x7=UQINj9TX{Xt$k6(GI1;d(T_Mg(lN1SM;TYEE=EQlokS>9 z&9dF30i7eb2c4bXSAk}~50*wuPRrHTy*;EFF=$7zsx*fpdZ+E;P;#IMt`wo#V!(gK zFtG-1t7%Q~tp)oNSuC@;H0@_p#dHVfS@MfiT9+QBl4YA=vk}lKOBMrnJ8a{zOk8vd zOZXssPImFlh5EfY;Y=>%My@>H8_j6mg&cd)H+V=HotcAU(}F3BF5XR&O#Eh@*FeyL z5}^f|Hzz(&m^;x)5F?SBdfO8U=m5<|gf7%Qie0@eO z&lho=A*LvL1r*@2TcWuee80=eyYug>Qy3UIQnyPsILDab8k&cbW|v6S%x>8bPJ^To zuT7m)&Q8S#=+K%-Aw;lH^Kh7tAbNPqPLSvw8!_^<+l$;+8Iuv^(ur4|Z0PJSE{f9l zqhJXr1j~;UmIKb$iP?aI?6W5|&wy(C`=GRvSdphNo&(U^hP=W8U9<0n3H`T)Hl&UR zhqjv|{-EH-O9sQP(B>N72dh^-PWa0;b>uHtZ7%;q-;FUq9lih(Hl%56jMU`2zKa9h zCr-pKDih-|%nlHbXL7mnbSEGHc5cz-~j&I5fN}2Wunlop6S&rnnb@FUcN8+ zH*HH7%fkR^HUkvmzJ{%37O##cC zobQjWzrp?fD2bbY;ki8(1Dl{>Ed3a*tdzdHx)|J+O*UJN-yoCBQesaXuOn`s+0&e5 z7X~ne_5qE^g*RRtB`f%yRC{4+OF9%bpNLVc@y{K_AJRAtdNuHDLY9q<$r~XmS8d87 zUJE>U*pd%_%*V48gD`m^Fzc)TdsmK8KK%#OW3s=ycbjK8&#sNZH7mQA-6DWZgP}Ii zoXDaFPRKJL;@z;c=bx~RW@~)%8>njb2?_AGZ&ipHY2|~~7gzK34z+fRKxXPpwwb+* z$P@>RFli!L#&l@r$2(=@%+t4kQAg3s8Inh>K6@grX(b*Z4)W=YnON`vJ<$3USCgh{ zW2}Dz#fv2J9HJnGQ!{#;5rp5sII>*PLin}uY_=O&SYt^SbeiCPfOZdZB1ALJzyyFR zZqFeNTJCAnvl}Z71cH(9@Rkz=F7W&EN>@)HBV&`<(^YTSZ#Nz)!go>+-U}|1&AoIQ znNS-T$zmDqli;Ua?oQ;;$XZ8b&oCv_oA?%r&^UbgIq_50A{P|_7%F@y+PpX%d7(I` zmfQ+gcVf1?FcH_bac@1G-N2t^iUILt*R-3-Q^f>-OX3$gpfH3TI;S!G46)iE&!U)Q zPD&jD6g60$3`^_wNi9VFILPc!r6s1k(9M{Klx9F8)Q|dJXG0xuAoWLVHfnStWK6fT zNg|?fU=2mbW%_}&wEEG*vfY!jM~B5!E!u!aF&dr(0Z|(bJqFD^sh)0IG6ATYgXK?Y z$D9MqeFY@Kw9|Q|{Lbgr90}>mzkNIVVB%1a5)eZXerhlD<#Vw%H(Nx?L5Osu^vbs2 zu%}O4NEVoxJfj2DVW5__D3>JF+Y)pewgm(R)V0$Z28qQYFqlU8U~}XVDP-&GR)gni z9m|dhrYP@VQ5Bc35LOL1S-|NkVk&Z|FP*UnDpUj-Zy6-zckeb;z7S<%05J=LR}^?T zDB2eyWY2m0nQv*dHzg@Nw16cYAqy8!Xc|Pm9S+GL{8+1AE^M^F zluF4E8bps6W@Bs0g;o~|A!CV3&6X&^X7ce6z{Mh=py@Um@KO_E5GUL0QS$GvAfzF% zB1#$vER(jt?D$G~52$BY#$X=+TObp*Dk!^pG#lP91gdeiiuT)p`}yvk46 zs|a-=4!}-{A;#uLTp!1urefsv@`?Ku@hi3@vBB@^=MzoqlG6mlR4 zjx3?JZLRq@5z1?u`E3m8a1A0SCeMbRKAuN9baZlAv4>qq=sukNO`hGgFdRf;SxHLS zeg#%0FV*fiXm|iUYt+p;sPCz!ruQiV!t$3X)Ql@wo;aPlZKe3mEkMep%3h+%O77 z|79r7pS=Z8gv@ZDCN>e15Qm%2C6J%}>=r0QlwnhU5S0K6JB2|9gP)KmqwBLGXK34M zvz*yq47~r^7aYQKHYAh*X*}khT-rK@OUpKQhMqhJ{=y4V72|bhOpo)0Tv5HCiiLz# zllfgv-PsE9Ui7$9{9biv8kioKviYwmWfCHFl!Xq6{QPZ%K`M`$&uxpM^O8FGiD|h6 zQCqeUenSAvI!Zi?!tdt2){0|cU!3jKMQRtaLIKRhtJ1a9}2J!|lXn zB@Cu*GM?E0o^I`3bt^5dN`Wm%+!?~wVBx^&P!iM<6JaHybLGpqQWZCSZGxdyN(RnED*w_ ztYyVO`;tz_y!a<*^jk>dL7MT&N6N2)m};NJcE-<6R~SYSyEVR}L~7Inv@!!R<^t3V zn;nYVoKnPjGso0{D&^hWRD`e_*WE|JeHAbedDx+3RjItHdSSIwQ5TEtL+_Hb7NEZj zh9{hIE?1)BuSM{+R)RPF4jt_g;&6W?#la-R)b1*Uz5*sBlTyBxlf+eNbSGU3iQlG~Sb_xx*yuaSKWtcH3S5gq%9j9a4);Y0lb!^+V?WAKH9pk+HiHq8hT%0rFmWz1aB>{T9~Xdm*NxsB`r<6IU6<10+;{9K%P5~Z3YWejpS?Eo z`mEx!xft@J&2D^Puy{TAXrKWWJBO#=k?7flg(z)z#_&mUhiC=CYZL3K%@9ZnD> zTt!eqlKd+1`qZgJp39(vSA+?}pVC)QnOs|Y&h&`B1}uM6LqUP)rJu8+F~v&(-)f-H z^v!F|C@DhT%NLKxRr%ONM<1A3QHA(Fkl^CAjub4I^WMaVoJaFWH#v3#sfR3S{9#nJ zv(S`r-a_*gvJm%Rdxbz+=xFZF+sXvyA<*-Jt`nhZZ^Gp8Gib;jD@^dF9j&f%)HAuQ zE&*PqDlB`+2huc;BM_(yMJG{`ZA4$;^Ko=AynbnjVFt5r(?EkbFjbc?fT=AqDIZ*> zuniM$P(+=v1$$i@e>$z}@WawRbicaTqZaZq=Pw;aA(-|xb^*}8{fRx+?I=G51_ZYO zpBdgrF9AbnImbLW9ke0U+`T+@@+JfV8$(Dc{-Ws&#hX@-z4M~N zm+XGSnZ(0O&1W{_`{J++qCv!u zti9{47OI?0;Q=D<3KNp0`{_B9o?s&%_N-L+$+V@3+2Nv+2;EwRxg?r+3X|#(S%r8R z@G0v8&QUf1XDlO~r?no82QjXsg*^YxJaVr9_|@5wUQC(bC9S+-F)>pNdL%Hy!<|1q zotaq)i3Mn(aYyibt|1=JTw?4lw>c);q@uWn?5@>z8G!djoEDKo5nIk~%0kpq~tbj7ZSDlaHP9IjUg;GE0$Z<=wj3H98~>bdb9xYNPGC zd0!3Sdy+aXkW zD^f#8jx)O`4+ohd<}2NANfZ%yac&Lk>M-4OI2fX<-KJ9Vv>C-#q^D=EooikS(=rGp zJn|EYdgkyKr&JHtHg;FR=apU(jId@OChn1=9U$1~Ubc1+*qVo{-e$Qclu7#40Jjd- zI&&UA3pmsvQz&YQ@7sL1Lm~n@LPlzY=*=2El`Ur32a_O2KhlLQNlUm;RieF?!HdPd zML`U)!d~??;ZHaitmWEt0h9ZC`}b(+$(m+cE>c6IDg#2le+co(SUedY92a$e&6eKp zU4c!Qs$rL!k(Q3lL@CYC*UZL!h^KWuU=w*(j}Q_^|2=h0NpiwqoAXsLuMg4`#x)kq z)MBoR1k0~YiEz8Cv(#^qvFn;E`~53-&|>TG+yiOH2uo{C+wkH2^i3Gs6rCq&Ou4r| zy`{6ZF4nku0}y-F=coWJ#7eO#2InMj#6ZFSW_mD4__>dApM}&6Urbr85y68^2wR%i z4s`-&GP&hy|B6HeqG+OhiKA#TQ@B{45@Z~{Fa=NG>+?P3w}U4pvhm%nqPbLdE5eEUM*k)xk89}+4*)Koa+E-of|UqYWTpby!=>4WKWR>&0QM}b1{ z(e_is0UdbT9m#9Q?b6Jl&#J7wYhQ|&V7;3G(TBU}v)y_Nj#dKB&CcOj( zHBI$2r|bP8_iw<*&*)H7tFcz?Ee6)F5bvRjKa&jlglc`E)3W#5htRG z`OwS`S*2^_^Ifrm(G}5veD-eD!F}TVbE$WlC}uOYrRH7SgLIqBRY4!|uM>*@X_o<4_y{Gk-XXpI;|=x!uAD!Ne#E|}6-Q>zw> zG`m%-27J-|!Cuv!q*y;Ceg(v23};$&eJMabeq*Ea+;+Z{urS%2TkSgHy8|8?Dt-n~ z7V+M{DmiBdXx{adh+YqeL%l+33iW(KIf?WTe3a|MtuEhf>isx881TFhw|nQVy8BHo z#91;MaID;OBlu62AcjcFV3=s!4Bz2qMc3d*pK`F)<@o)&gCBSf zrRHb8+J?M6Z37%c3JZtM+mt{@*Dz4Er_?W`*s0hg-SmUuQgK^~)q3SyJoQtKP~0!p z>GO(OT`fM_H>j0W8THB^we*~f4n_Q@ zD0CwjCrFWfWge}ZXus3+sWNU>a%%cm)=#TU@ih}ze*Aik2!GW@E|^Q@z9Q`oQ66K3Im^}Y|86(xtva^yM{Je;`2_sexxmMXZG6ByCxwrK zFY%5)J)b6{>+fH~+Kd{pVcEE#1bGzc9evy*;hgAED}68I7O2egY0UI!kYh3L)g6)V z{AWy_F>;en-s{AqE+f5{N=)aKj%3`HG$>cge`)l_$bOVY{XuZ;l&mnvF z={Nmf$$U!0N>3n_CN%SA8b{Dv=(F?07T`;b@NSj++@MY|J#u4fROz6%$N!Tj*PW>y zNl>icB6Dd-)(kyxaU~BEJ4pNAZIVI;34=gFoe>T%ok@eT)!2HT)ab{*$QzsplilAp zt!UGId_ha@rfzFh0^__;Bt1)bo~njcuNWT$9}x+CkIq1StmEDE2c(9ig94 z{^g_kRj8;NHx4BszE9rs=)cMfvwjGriw8%+NfTD-Ug$h`L<^F=-U$Tw$ij;=?T286 zkf~`}k#`^!GE5ckziOjTLWa(T(B>T`$fS>AbT>66L+kZLp)VBYXPR-{t2&|0S3jDM ztOW~u_xMBgpSg2LVcG6}9C=YvZV4Ym&&t$Pu$}awRNyfeR0JNH{d>0FUk^C7X=+9J z|5+cE4_D=xYyUo;c6|n#a{T->_va=q*U>}fa~KCI%f!usxuj~5-DqDpkG5g$pWujW zJip)naPXda;42E~kruHf!KRb+FE{yTzwsveErF`r4m;3J0ya4 zr9>v^Pv`ltU6k|4snO0PY6Pp;uAx5~n070t;Id2&c!lmm;0kB|-64zd?hv(%_G6^R&u;2`cZCNF?85b`=^(?eLT$`Q(YOAkW|d?uPQf_bF|I=2Nk- z)$Vm&`|&Z1T2|S$eU$mK5MWZn#a;2Mb!KwqvFox)-s>Hq#s*HI7y-WnTLT`EkLh0M zc);q@Uw^nuKS3d154HOB2y5+n^ir4Qo?6CXrp z*jUXMk@7eu4jZ)YUEBMU@%vCV6$d=6!nn&L2##K0nq}Yc^y>SL@ocJ+$nbSXUFR%* zGXEK&o!zhR#XR61p~bJS+*=FNW)+tPPH?ApI4vY#%oXA@>BG;iZB>3EL!Pn>LH(x9 z63dP-N2I?2%!~F`Y2-lhv+}R!OLXT8vm;m7zJ5d zc6zyVFwZ@MHLQICL+ToL1s?}HiLK={=15BXv8xjYUn$ejBC?IPg5}G9t!sBU`Y*Vy z$y(x#UwGWq$a8|e=BK9P&Uw0h_ntDzVGo$y$}H;{U{F)F@g`=N-(KWDH!SM>1cYL| zfGNX5RgSj({LiI=JA@B)|4!1eM9uc}d;F{O`FuXwUIl*SFv;iVv&ghOpp2#$2ixCb zou5@}BhF)7$84>E2};+@e;-d_3F-5NaY-`c z5bOjc(i$$Of?H@_YKFEaq0%!}W~p9K8mR}Y{b~x_1tyk!GSkAFb9{ER}!665K6v6(u zIUNZcmyon-9M+oHK6aOk9Uu4ebUo%+b(cqHGrrPs!Cf|daP^~G23|tv=6ULo3SX>W zUu}x%JK((rX-18?nVFD*4177qrG;Yg-K6x0V3Up*=p<7dx6rTo;gvSPH(ud_IV)NL zlwk|pa{fUs`lvwTvtVU0N>l!|@h{uA2xZ=2pBlDxj#OZDe1JhWF5!sL@7q==y1kqP zK1$JoOT9L2Ed`nh;9zX&s|^eU-0e;rqoaPa0AzA_lF70&26^`$kU$Y_yzHRL&JMI;KofW zQUp#HG17lJ;+~?C{YMC%ByYHjb293C!LX9?|SS!~SV;N=?Bd-%7|Qo#>Lldk?ADsIwkf*meC!=1SweSUr;i zrw9@o+%VxOFp!jAz4n&FKrg{!pAvV1UdM+`d>j059jjmAKQ$kwt9Me zTwc!+FmRzv+Cw-$PqvOlHsvmco_}mW*Z#GK1+nBZbeCOOT=D(3UfC~&M9|aIrhfgf zzlD`QYjLwf1u~C8XK}-uYcdtQPhmX*b_QYzg8PYsj7}UOTb|tp~Q>!IxI> zz*!dd@zjP8OcPcR`V>tLwNjmbHceY#hmLICk3t;C@NkS|j-!xul84EHfj+}=&5gmS zavm=Z`Ej{ou8iZfFh^G0UTaqz<1OMBarv;Bffc%HE#<2CXBU&`RYD~WsIT3YvJ;&L zxIEO#TT-Rm57*mMDTAQpx#pkStcCI%KqBQJ^Is)GnCGpWJ!e#qbq3RxvbpJ^uGjr> z`HM=1$GIgF2y(f)Sh;^nvg8}}lSCP7w8?^&KY~;gUE=L({|Er)IY0iH_U5|UzpX=n z())Ys7T1$|A>fSewzB1WM?p88w6%M*9&0<5N!=xAZ8XJuqRsSMqyax!H>A5LfU<;! zMM3;LQ)?0-Rs?u{n9mi2-pe?`_T_x=4dDd70`OiFgMWz)EncfLw_QE91$y+>Fl)%E z6hnKT_{TT?Ng_<#xP*G+A}>$9pCB$aJ!?kK$6FzzvV(|nGGD@%3R-Dfbwy4jrHZMR zQjKuQHTZcUj4Z}2QZP^k%$CmRfX#>6b@Pj;mjRrbFh6?GGU9{gX8$QbyWw3tIW}^KuyJ6j~&~SZul9xSNW23(P82X{U@~kLUBE`o(a|4m`XY;G0S; zJ!yn9eL@fjzga0IOTQaCk;tB_)@V7@?pPlBs<(I^-!<#W%r&^Ob#amUJ#`&E{R0b| zbHsTRo^??KYRsz7pdC16*QPQLfxwVI&DQ?s|*%;^quXFjI*_(-C#3Yaj}MM z|Fp@J;;kLI zo9;qcv5vFtFi9Ie1N49C2L67X)c>0*jTi*6wb8b?;Qv z8eqsd%&$K8_qe^iO@q(v^I6*%_WE)S5Yb8`|C|~)!5Kny{{cmIGdz6$#(U>4j79+~ zsS-{9SE$x8h(+oHQzyBacfmqpYPO%FOVw{zxpE}6_*;F+t&;0>ss0%AZ*j&vF`LJu zUN~_AgOn~nLfsfM02pnKLF=|Q-Sfz!K!(OrF8m*!>p`7ZY(8gMj~*eqeg8h6eCa%k zzUsaDCoMf=SDUhm|DT=?CHf!9P~SVU^4^`t!{CYb3JAt7T`dfIz=If0@Hc)12?xLC zy5HfRVr-11lQ!S7F^S>EsfwlGzx{e;>Wgk@VqP|Q=VYBTh=8d*EI#>Ffdh}s+coZ? zpQdA@$-%jOC|&D@qTn=LUIhLfv{9MHDjMHH?+hpPq~l$+RO_&il6GQpz)Qyju>D zrd7KJhkg7YaiI1g@n1wmrrOkSD{ObpV_^2yqLP*Ds77-ow`;kubwVKNUY9{zXm(YU z>979Q-kH0J+2N&mLRb5eMWs9KSh8fRCZQJ|}I!UgEAvEcO3WCBTh@YIPH*At!j6OH&!o4R=ibemle zwPUBtn4uAw%9;e;z1e62KH6Mq9^j}f781k-7PD%C%-{W*pLxDsLlI&cDUZ;OM-eGj zX?13j1&VurA2cfJ*>0@U2_i?m<%_g){$h08W_)0UaE*s@(4nMD6|o=R<* z9RLo9bfr<$=7yzw2($f`64FrTbeGc1o+8<|iPmA}6UQTuJ~ZXl^mh^=(G?#z?N#Ux zc1MFUOwW89F7<5z-R!(@qjn;IF)LT5m3d@tE(2^HV2aN)!WA>$(UvO`h7^Tx)RSSRBt)OPoC~n-yMQ;J|!$uOmp@rw70*Ce+p0O#Kgf zptbiU&jaXt{~HiPe@9RI%%{VEk7Xl)O=lG-Nf^0`(3z&a714Qa6M}aRnifk=o3dQz|Z}- zW#j(?5J{53F246>1k+bfNNhF zF^BBjL;R_mmzPzlgxnGjOJ262^HPhbezJ?)qc=qnwn^2yEYuBVMwG#Yy&{@FD@d1A z_62R|@(btxUQGazYjAk+0f4<<000w!5MXCv=la9M!QLfp&I1fK&2WwsIqh|p6#f5G z2b<#m^w=Cp=zXYNBcF`}iHR1Oj%woB3e)nLhjTc9IUs0|VsJ|3Ml2+^T|J(#m)|UZ91ng$<<{h$T03 zZ&}Zn9$rW)i!GpX=--b+;C^;+ZY64RcnJ2NWuq`q1D#p$_>!qqYKKjT>4mT^C}G%n z;ev(J^dt0y;Ft-U$KXW*G7o)548RLiatVBkgz`_MR@oh8)B=YUc>vXL@5``Ys*Ht& z<4(~PV8s;%vk_PjfA@iqKiVIm_<+`vDBuP>wSpTlXF0XtMqGuN1puIPcLxTYX-c~2gEWQiP zlUmAHC3_#A%2dvDDZZ2y707763CBle9 z-d}-DuU=7g*mZvYS7arK}BlbbjW0qwMSGU}9tp}_r3)=!bzc2lM?El+uer{H~TJtq{V`NCini0_Y)vuLW_VS2s$3U18V3H$^52Nm_QX8P>gg# z9BaIDhP94bOdigkwG?l%+av9i+l7>FYcN?Dp*;ma01ypA;`(7fExE!q_ihcBz>P+& z8bDWwBBzdd56sG-hs-?E?CfvE206(T%*X&3TwuL#4kds$k&|1_!RzNV zZn!_;v$unxpBk}p05>{=sqwA_UOEK8wa1O5_<;n$&As2m#MpF;Q}X7X9_n}cx_ z(^@UU>VknQ?cIQ}EziHcdQ~phUW_{VQ-A_PFKKm&+R~jP1Yr@!PXb%hx)~8W1WiR4 zB{0kBe;$d<|A5(PjYE>BQipBg0LsJzrtYpUfjkz&Rd@rzFE)jxCbx?g&pmCp|B>0z4GMT#N=paI~+1~`Ch5dDO;zUoaI9-XF#V#p@3moLju2#&LLFjbrARmXoZx1)DLtlKsYFzawp78 zazSk>$~;an2`Q8uV1n@rrdl@wV>PHNC8#9=7KbDk8Oa}=X>#IIvKT#Z|3fH1gR+Ot zg`owWBMSTH>?dD((7122d#gCRdZDia#@w4q^{EBT>MEMwAE z@`8)M86%6j7(lS`jM+i9vi#mmyW11JjiZa|p_d$D-MC z+VrJPWjFrLn`yue@`f-Uk)OCAmmt(_MLk^P=SrY9=~^<;Gm9&6d)f)wdaJEE3x??# z8c_yfCXrZS@4_MeiT(RRlx}V$haf~}2YeR}xk-_^WW`B$#C+N^zI1?0E?~z4f4Vsu zY?(boPwrHi*z1tSo6(#Bn06hJVoI{cqc48qK;WUtKTA>Y;2FD*!IZ=gZ)3Impq)cI zJfRFuC5%^t_vlC1v^Fg^j1f6F61V8<3A=J^BAj$1P490_p@ngRZ(uWP%t0lQ0>a)U zs2XqiZ067JhIsTrCbSYtq1X=&Lgn&yipux$FoD$!fzt-X*n!gVJ0nGg6(|ejU82f0)+ql$VN{|#6Qh}1cS5YFrKrw_CtZT;GNAP+v7axd`ZT$FN#N%!d(U1DGe0yok;{T_#ENAgPA-ukkT8TSZp%Ap3` zkswh}TVf!Zrr0#poQR?q2=#^#T!}$#PJ-wVz=nz)7+@|~lu*v@~7xx7#%de zCVa0l;oJvPQAM4K>&~#_Hta=>C+joSKxO%-O1I5h=yZo^EguxGMbmZZonx$^fHM*c z?8}ilAXepojK}JemUpPL1mL9vf|o-cyG?|4u8$;Kzyf1SeszZexdome?0@^Q%Y62r zPdoh0CT3mw7kb>!$IJ%+i;mTML3o1kL@SNzExyBlOeD&w6PkOc^SS0u{l&F^m%Od{ z7xxG&ua7jb7cy$PtY;G2BwRWI4m1scQy; zaQ`v*XCeXfwd7jec?yB9{Rc#f4N)a7PazR`2?yY!xFp$eSCzoFhn_>#~Tr2{K^`g9a) z2UgnIqVS=i#Lz@JH~>oW;DWm)+gmH}H?*pgrC{T(jFx)35w{|SQ3SfNZ|>|H^C(6C zd9DKh2-W`e1Lg}z8t6(onDFxtR5ZGEU?0PtY|!5)BXz2NWLxe=`Fx4%nPkaSNJ zrb5xKW)byhYx$6~j_8rqdysN6^b`pAmGYkgGi&Z)K<>WPp2&bVTn{?5Jk!=$P3`(K z2bKe}C1DNg1c-tM?FRJ4j9-NN`GR^L;v^-;#_mOba#xe(ph!EMISZvBwI#u=V=DshbBXly4`e_6#9DUC^OEpi;ThiNYpN0|iT-`$qT zNX))6!Ng@icVSHEx+ehfd&X|QW^9E%u2^w1(0k6w)qd%ni$svPCrCcZfzR`elpw>E z8@s%6x)Yu)vTgk}Z>D2Dum5>ogNot)@a*LA*P8jSg{u>pi@E~ALe`Ft!1Le56b_H$ z;fTjJrBf)>RP^aU3t|h=OZ4gw&jEWf0fpTVro;7WUTX;{r>L;#fZRs}_i=St(Xfhm z;J7LOGxOJ@#(a)u(YmKA*>*O{y7U0q1p1*onVQ9J-R-TWvzp%6`X_ltS~WnVNc0RWa0J~Se=U~ z^oI0irVSZtwKi+AxIQB+ncGw`NNHc3Hpkt$QMr4E{00;9KE?kp!OG;U>|E!}2eyR8NO_mo=&(BexGF z80AG+almNW9 zv3TV*E6pZj%lk_q`ddvLu4}Nslj6>%KBP!jDFat_AckaGX1jdtccS=1E%Z z*vd_$eKXLNaMJfeZyneKwAqv|yareIq7Tc!CO%bORv8&RJ@zI7J>1?LE2u+Gy6ER*0ZAR75ZKg(CVBD^3qXt9TEDjgOuw%q zz>~w(jBkFYTgkf!uPU$QA~>`_{gSz0QYhVD62d0?Md3Q^d=kAzGBlsSBm;nn_n0@I znNdFz)bS#f*rsZcjhBfA1F7_etZJ%-v`jQt(O1{wr)WO@fHYlL5RHLg^j>!N?HfP0 zW3OetZVoHId|@;I9-v7i20A=NvFD;aamJtUv>5H9U%HR~F3moI ztE$ZlP5{N5h+)B=`*J0Y5uoZl@V!F96CAf52ud>Z_s6 z&N%hNNa5a4O;jYGF2x{;^H7;ULHy7Jg&EN)h;@X+bLZbgk&+J?I9sk(=gU_a*ils`Kp~Xk>As`{VNn!5Ii=_=&cY>`8%ez|J~5zeQ~6|X{Mj) zac1tG5~WR$6Kf<9@h(skecPwu)-Z685m}*!QShQDZ9eXYkV)U1M|fj+Eyw|6J1kqh zR&aj;2L(8w)WHj0e?xY^HEioy1cJBd-RQ$4bE9sw=A3IJ>bK4OV8Yzvymu z$zxZ5P5Mw7QopR95`Kkk)oqZBoNQv7$*Rgej)7}z`?UShdgED%y}GkJj9qgnP@`ZC zN)bMP)-q$sx|Pe8fg0ampa;lnC+4+XsPSq8|E(g$5Od-RmAEcpmi)%2Lre4eCpD3*O>*i0iK*WE>a~8T6;&!1PEVXG9Tx-B4+*ovHl+M z1U-Udwog-xP!>SZC`dQmbB9#@D!$=$Q0;X!JqeC@HR;#d%<$HrTeC_xQ0`7j;X3*0cPudL(CkMKj*&Y}PoKq#81-ku-b7ZI)$-=wmO}_PPQZ&0b|G+$oc88S^2iODi~YTW)CFk|AyCNF_QEjFcW~uG8xNqmBBg zE9TXOf1Aobmc^4Cd?Qv*!5%+>Kejs!kc9CXs3~PfHb;h&&KdKc`pX`4WJkPCUoDgC zZiyq*^zmDAI4$*p3xFiV^pmQcWWP$grtZ!Xryywd`QnnQXtGnXbRk&8Yx;$#8?mww zV>43K;Q7~NF}>MKi=lA~U0uc173}1TeTh^}?!SiG%HZ{NMCLV*d#h@IC$eTCzVxwJ z!H5lh)=NKsxj%jyEo~oscin>H7Ygo9d>|-KS&BDcJ<4Nub^2vnC~Yi_g;#1H~Q}t8I>kd zRfy4lFcbRTT(L%aRqIdy`6ggGHpCRpvINC@d<91Z*9mNuGfuKQ5q+r21KG@u6~^UL zz>WlT;b8QR>!fSBQv=lsUU}ZxTywm1IMqG4OvchnCv2zaNjBHHjY=Tcu~6iVsx>eY zE=hj5tNc+>^dKpp7@V@MTX&E4!0yE#my1fVD>o448}0P%Kva1Js+PPxh#+0F+>3l< z+v!n_R4s&dWEIe%tE4X#)1@dbS*&cB-5^DPHa#kVJxG((Q8|dkbUU0@jpgrrkwOJ& z-ZzyrCshZngJopiQ)(y`iEYC`NaNygunc@JJiwHgbuvz?lnfkoXn$b!Vyy?65akS15Wp7IJK`)q4&##Vi>jc zvDc#~!!KGRaZ`>^<{h{CiREE>sua+k=5cIBrN8Jl*XQPfw-~erdr0}#hVU{Ca}+(N z7(H|qtQEVLi1pl{TwK=D1mETG$0IDW*+60N@jsCpFb$ztb#&BBtyo?0RVyz68umXY z7T5mgPzkQ`RjfPrFE4r}iRw{@ec!!;CrK}UQMWX@yW z;rN{M^4l1fe~hxch%dvCt$`bIFV9fQZE6_~xiYZ(@k(JzV&I7zJq|J&B^20<5-?cU zDz#A98Yt|lEn*r21apFm0j1a5?*w)96tO+83v2u6s3Pr{E9q$K%& z9FTSB;c~cM2iEh_7S?nhq@Qeo7|~iwWWQ`DXcvCxa;kYP3XlF7@Zcsa=5S8*vg4pQ%fYq%(KX` z0+UTDyM>;?o)n(2o>ZP>o^%1|MW!@QrtU57dMR4uAc$SvUKhZIQ}$mGeJqUiIK@WY zlyULwu|~@T;GslvWRmna`*@KjWzCy)BF-;yZNaDoIkd@NiW8Kxf%-RYf>|fB^iICn zrq;-_ViMv(+yN>G+QHV&)E4u1EXurse`t~(ZgutPA3jx;)wH?4U46G09?Vy+x^we6 zVkg2^aZTst2hu6|QYw;Jd_mVRd=7r~oe%vuGK`I^Ksu&Red@`mF7D@H%IV5A9A=Ni zw|&w`PPH)oNRF zr>sK$Qyhg)3lq*=2d`fh_Yslvf&LU4&GLJx9aB96<9LZ^ zzzw~B1e(|BPnnS6)Q#qKWy`$;D&f@aq2e7xSS8F34Qs1K-pjN8&}Vh8D!?4#jEE#p zphvCUV_-B!Hv>=81>6KfhK`Yg5`G7)VX)jHN*=0fz^71Spwe^Knkms}sf-M2`k}QgG2tf4k=eqdnQVVhg?8Ma=BqgIsEAYihs1w%jdmAxzezN=*EHQ;DA5z&&)7}Y&QCGM^j(l1l8 zJkhUi0g@fs?LeCpc@};h_mMINbEB>z(uzHyzWG~QEiiDj86})b8W#r+-l^{UcvMe$ zI0xnCxmvG+QbJ|6un45c;q!g5^ObW5WX0F=WAmElQXGvY-AnLnkmS{`^-w17L|4va zg+JeL$TGJ z2>Sv~z$o*-G1aiUN~grt`t?CDr2^S<{uPN5;^%~PXc0k!S15V6@7!lf+~sS~N;;fq zX#B*=yyFLxc_+dks#e0##fmC;yioFt{0Y#Wnb)}a(nW^FFr6nP)$}uP#0HvQcMqRh zb@8hb{P<$Foi#VoyK4ZBxnkAsyx~iWnr%EP>kt)@+IGG}h3}0!BY6vEpl%4w4d!#3 zhPPgRGF(VMK-zPRpMG}Xa432$tab~qhhSEn>tK=AvlbBHdxwpE5%uh%3(wm#2!FVG z@#*zESc8iOhJy!6;vi5=p zKp7u~NrQo?D1FPmk)g)VXNGdM-$`e~x2AfzoV(>2iz5O(Wn@ZWlC`Z5UnXs>pZ3oH zPS3-xNw!g(86&E@RVlp1)<$^Xr!wWs1u6ZRW(to9E=nMJzAUg(RTIgn^UrDTz|Lha z0-O#6J{^R5PFsk}Ba_Ov_1w4r2dq`_Z7%$;CDYXhaNLwBJA`)%l?tw1eCM&mX6Y_oNtMh!sby$AWp~Y zn#S0~McT*}DrU!0cdXbGr?$wTb)KKO?`88wDgj@Uvw6)%{)z_O*cKanQroWDD)=fK zx^qD~w%&{-imPd%az7jj4)q>D0KWhe>LKp5)bBdH3}2wn1bduuNfT=!%PB?EJ%#6a z;e6a^S0qokb&A;3m?``UI5#;dHN$G9QH1sfaRUGwEsCGj*H%!g@&R968jvdNiO?#cg6;Ot`tc;W_*R zYfephv%ns7B=DORgF`E*`s;pPQ(z6+31X@amxV(ol6uQQ-5nYN}$QuJW1bgh0*Zzu!PT%E$gB);=c#Rp5WTtun7fUW#pd*}O z>IUhkv8VJ|eXgYkGzRS1m<(FA|89LkQY}^G0H71d6}fejZL#uV^#;LM`M+r{L?hjO z1-%dnkVNeG{AJ28NqC!P^wV~E#ea{u0(KMCo5IZnUDqv=*B%>N!9jM;YdSXdY33X- z?Uv`8L?q^NxojK;bcp87dkj(h-oKqb`w77|_={1K<0bRm&m`@hI*1Sh+Xc(d#A6^F zvdrdY`psw)k6Ki$3f`~(P(D-Kz{k|_3b(IC^Vrh85dRZW+kX!~oIveps1oZQ5tzyX z-UY|wsV@6bMCrMlo@-Q5-rF$XOwU8vwTToN4l%lfaHkL$sxH1>?#ksAM7poQfC$bc zj3Vh>{|Oz_x#pFu{M^B{0&ai3`FH>YoqlLm-)W0Ql+DhYP|nsAAi8Bhy&Ai7?SZU< z)Un*%anHJ3%qO*O}s$N01No(*`|?e^B4IzW)G*W$;z!+%XHj2 z1&f1#kkI_9`me{cmrd_SWL!cz(nZC%ijLq%vfJp%Y<;1}V7cFNZp#GpXRr2;Lw2PrK z#5$vv#W2x1b67jhE(Edx@oetg^mw0LztAw-+Q<&DJa{xQ5RZUwfCT7-(kocT>NU`8 z7lS2G9dnrbAG*#dMi(Yp({0X3H&FH55G z7-3D1d2kw7A$}(0g0ZXow_bvj01u1u zYK}@lfML2L<6djg;EYl(k}*BOP`HdDRS5#MOkOfZQevVNzfh&TIGcFgQ$28CylEOA z+fHKOCXlr(XV;3g#9@tf1TgY7o}@`OmzwFn5Up}Cw7@p)K@8qi7ESUK2=O51qLRil z)|6gc;%95_oN90hWNMFt;%v0O}-oT+Jshl0cE7@69OWLy|-kl(azN z%qacu9;&W_C9-V49G%og3!f8_z|9Sz6E#+FZdtsP8uDD0=x{q&Z|DaeCRespgssV? ziqdfzF;t62F>)?*0rDcSq2^H$T};y*65cFUKdxEov?1kkFrAf(2}`9!GQY$$EqZu7 zU^cKx8-kET5%gM>HOS>T=$wml^9W9vk3nGi0o+C)+TVDdI#OTV7=KfHc${QEs8QOf zAwYC~8^?z47P05j-ZyTIfE}b#x}3MwdZhT+snj|C`%4Cu%uu}ISM9mI#jVhEgI$I!I09<;RwXI`O$8p*Rt_1a+B z!(-VE1ECg*xio$H)@`qUDMX;=X^zxBe?bja&Ob)dh}SquN3xmtiD3Y|*t0?!u&^Lw zg~8ZQP%W}CA{{E;jR6!e=L7qZXUtpUd?&6P(m&wN^}=I31xj;d5C&0qC6fB>voYGV ziswd25A;}^iS{0XStX*^)wBTJIe$eK8(Nvawx}wZ2#0V5VWUy&_WQeZH>LW7oVI$p z;CkAW=IIX4#B~fJ-jN~{0ptq?SRQpab4?u@AHP;+<@m!k8adnsO^mS{yVraFYjx)U ziskQ`q+9^M1&qLp^ohKqsU4O;-H`vQc5*Ty_fvl_9+Gtc++D%w#%Ew4l^Uiadq=G` zqU@+(D&mwsgdx!XW{HQbw(DxyO}%rBxna{g!M)m-o+RBsj62i!syaLZ0G=~ABqZqA zKnL^y`L;<1MXEPdlK$Xx{YwY&LRy!Uwys$nFlc02J-V6{*S$;2GE@BcTlQ#TH+oo} zj23%rqo>DT(gc~}2lI#oXIqJequTBF)P8+k+st5e_|2S~^MbMEepsa+^qa;dAjLHr zuLq+Z#N#~W#v0g|ww5mjzykM#`QY&uQt1BolBhQCXfQN7g^y-``JMp#0dw`BXdlNu ziifOr5B^gXv#O6?X!+!Ozy{y-M@>17ame~h6Sq;gfe%KxrP`tYP;j>lMSW zm_4ndznf@x9;(RNOz;fef&<)39V+sE;sh;c6i2l)SiM-NatD?lup;_a8a#N$!Tz}H zEt2;IBt#wX{4sGbjIFmmP+6eG)22pM;vqo>?P?Sow)%YsrTA-%9(b^4$kZNMol? zX7GZFVA@ik$i&0du%!29*4jbxj80!?r}fkrruOz% zBf&(AX=3Q4W(+S9xDJGeLj*INj_rgtF{; z2)ZrquSikN#^VW0d3CwYb2~EF`Fw5`{3D$J9=tPS0B%?Ct;?g^SAgGqgi|f=z17l# zR5f)IIZk%yd6i6xV~;I@^`jaau5IB)Lr*+?3!3Mg(owDUpU#+Pb@Xt@SHH{S|@7UAC$44^C_y5^DhR zs;3AufJ~M)_JVp8OR$cuyvVgy{c8cVT34swL zpcf%6R@Y{@3anSpJ$^CS#%GT+=Y?nXejF4QM-y4l93!SQQmR51#f zh_^EfvJJ)&ufacA?O3UsC*!WRCAwWr0xE}pVz`4u+mzV=PB#h8h8g20(8w08_CnhQ z6ozhjQvPx-)!Ic;b@wgg`h6m>+7T8D$ik?;ocj`H)@3VJQ}bc0L0qg4rWT@k2K99ajW`M9#_gAY;wRbd++xVz7_3e__V zuC=&X`Bxfyrr-zK(EVGl?3x2jU4N<$g90HuaqmS{P% z`c6#n=ND>pOLj?c8H7P%^FvFRgzcT>2v(CLpy0!GX1N4+PVR9go`wP*hRGi0oHZ4M z@h}GO-n%Pds2@Z9P%c})ft*d>+Qm30<8^t6G=EnEm8UbTv$nqJ51MpZ1lT}v@65>j4 z1mZ`9{tzMiifFLMJgv*iN>{OcZ>D{MA$JoOiLgsspC5##gb?*`hdQATzt2jl3G3gc zzWQl%{Lh7ops|SXYHHfrvl+&9Lw?LjO%U40%*n1i3h9g|uQQF*ii;o%0Iw9DS@wkM zV<0b)SQpqf_|cmiO3xoJHXjy?+`ku?XPbv?BIS^L+g6AR!~3c>x9$Oa28kucu;obi zZYq(hF3V#k&9AD9>tNx_au~xDbG2?k&wV0i(4{jdJ#hNIm^N~?*)yij7WX02mXzL_ zmm6G7ovVl%J2m&F^iZ4ricZbmop#Ik$ow&5iV0qhwX1|jkD7NEXd z&W=GrNFJ8<)zu4uv7wnkzn0eDgKsw|zU*xnT1CV2V#W)2A-(6|F7e_5;1(%>{a{tdyD?Y4GKq)0S}D4-BrPH-5PdZd<1*Y0VrYb*E6 z-0E6i{}+Y4v;5f<%5xu9yhIY}Var2dBgrKT352l0_xCGsUat0W7?=n&JFFBEY{J{3 zLU+`tCx56Wzcm$_-f{ND)W@s){`+~H1^&YS=)ZGbDypgo0Q!1eea{z`OU8VqFd`ID z@v$bGzp(!q?%QezeM@pWKNd#=5WRmg#2ONmR=5EGWSc#qZ$oa-M1^em)=XR@e9=B> z91&olI$2$TxtjmNVh*;L$>2j&Mec<&M3+w2Qxd6ppRtK-y%y52vd+KnwxzHOtfxTV z?K!yvjBEH$fJvVb(djH}88aR4>G1-o7X{+M@GdE+h@IpF=dDpk8x^u_UaYp@V9${* zb%2enhcZVN5(T}(y_A`%RvQhYYExmQ>^#a!rf1vG;%M>Z`6WcWwF{6+<8_)k?YCVj zRg6tbwNbPcb~C&b2(=Batj+O98kFLF*whC$jdA zPXa|UfZm*~MAt*`gop!PcEG5EuBrm14AyTQxG?xSbQq4YbQVF^@DMv!SFMjTQ!j7o zJlUGVQuOmNZn4kt{6hp{6Dth5uSsYxpsKyMy$Gl(xV3mvji-!=31VzUwZb>SGKIHj+9lsneZycGEI6CryJezt{ zjLLXycfkyF>>_g*a)b-7`IQ<6CDMkLN@|x51bFG!Smz=w-tFhOZS9(@tzYlu;g&K7 z;6lb_YSj6RZp|I=E5u&4jOp&vkA3cPf780_D7kbuYs~=e*fwvVAF~Q*2(=)7`Ez?klyB#qp<_QPFMs4{ABG znV@C;8pKee?6ppe+>*_>I~K}h+$IHq0-|N!PkRzX>ylVu7=YfWwwh&SDjMxgjGlZbwQWkpQoBe+<4d7O*^pItrz4D;f?&&k>&)LLl_z9eguX~7 zb2h=3pRcy_&-(E$AC;wtI#dKxl&P=#vcIvA8CR^)`N5N6GD;}GJ;Ht+Fc=jhng$=$ zW7tBIr5agtj2NY6s8U&a9Y+>kIqj^|JUpy(XX)rLL%QV*=|&KcWlaaRPBp!RMDHZp zG@UQtx0Be@Ue*h?;FPXAo!aUe{P!e3^EL4Znl2!LyLR2P#Mr~9$fOqvs8!Ox{b(}m z^rrZ>lkXqfUs|ax5c`2BfD@1a{6#_4YvBEycZBxtSvU13)8+SIm6LpFRV6OnLWja< zezL{>m~T>TQi>~+4^CGRYl;dAI>JTZVhK~5C=g&@l<*Vsy?Q2(npkmVOkrXEZAUFS z?U~9_TI}gcWuWQe8!p=vaY~b&o&~h=?uTB4?VO~}%^wH9@mjp6X3D!@ z=UsJjwc2Q{F4$#ykF$W%^QzZs@}6@}xLG$72J1(QkPNO)=S2X zfG~RgBY>x11SgHnaR29_wr3D|)rxRTL3_1O>4vMtVM2x%l}tUhy!&ds_$wV;TR9Y^ zk;VIuC?B5fmG;%E$nRfngWaXr4J|!EHD9I99wwkbYeUr}fVHVG#(3Ranz?ymw(sNh zdBiM;hE^j9;v-#^Hha3MV&7mD-xNkuZUU9SKEh3-;Fa+%G8pd=s@S`QL|*;Df7XU` z+`_FN+gy`sFxuAH=Tv@8037DUTQK(HcfJ*K8P6l>ht**E5myzP)6u!i=|+x<e`G*u-aP@?|C83e)E~Ns|AS_+%eU?VU(HC^8I&+E*5^WXdK zcB&|iYAf3RQxH}9XQ>#~B(apOk*amn5Zh{5k8E1pRJGW^lz$5FO&N|s)=H~>&_BToJ;3-xoQEZNcu5VL4H`A^J z!(`Vk?oXr(wp1%w83JxBi0+d$T4D2KcqZ8LVRkA!$>~$SzNDX#ty-*LXB})1m196v z^WI<8t~Rm#Dg^<^ls0cc{a!IWSbgEXSS1qjHn0l~(>WO_V zC8t+;^YG!bFyK=Ce3COp*$8yg|EaR=H4kj5f>$E7QXMPs#z)^T)ti$+|rJ?NOP z`_F@?s_eZJLIK68s&j(gE>Ew1N3R^2%d$=;HRKRY6JrlpLuT`oz3ptJegjIWN``KS z*VW|Eq>w2#@|Y}*>`wbS7VMdgIVF6_Ldut&T7ap7N5nqh562_G?=&fP9kf?{jc zHf>ZjPWH1CX?#%-HXg@t}!rlR9Z;s6sN(C_am0|%TUoki} zQ!Rile7gTsr_SaON=j^<^ZC$0GuRJus&>@pX~;li^Zni0R{L3;HCJHaa@Z z&L+-^1*wyovl1)@S^DQQo$c~AY?Nk;3>wEOpZeFtCIY%g7RlAmezE9{hI3#ovkc;B z#piy{zyq`LE}mZpKi3(!%C0T^EAnKCiEn_zV&nMZgN>9Wm2PQ$e9MI*G8;+!m;zY> zGW?cCR5~AfV?^<_(}^IaWF(F@+TB0`#B!l*RKHCoH?_U^hb@d0O&;F>ESzT!4(Lai z#9C*GW;?TRc$458oQ$2!$_I4s!0n5ouvvpWHAWKVv^22qhm5_mn^sR7Ht*f$_A zxhlSnaTcjW(@aDQbX-B8_LFU2`4V`w$SHO=!*~%Qw?!{Nqys=tWC2B|9=HYUUXJju;<`Nkt6ab1>-n%WuJ^}h9n!^K)@M~%EIz^WCiIWzVOmx~OZVBsceou%wqp2(Ih4PA+}uE1sJw@z`y`bT+cS zzd=8K%>$>;gFzok4DYleQY|_ZDhE&wNLLnM%?}hJzr%?tzLtTHwjYSz3j#>C7OI9r zaLoNY1CF0s7ti%m7$wjG1V(m1tU5e&oq6P{x#rSfE}$q#L@DcztSvN8_#}Z8#-X6r z3eNp4t#|&=H^J`~gPs-*o@=;N?B7XkY;ppC(9H0(57dhzMLp#SQ;{Tv}nXyOaHG|qn>aiYN^_fgQM&v z42vc5`efC5?O+2sd$A5?Vm=NmD8yU1LcxPa=LBn7J5Kn3#} zA@^msx;U{lUzXki0;+#AGA4Pq{ZTVJ}e#`KD6R5SUQWCg476*M&7XD2+m^O(M_i!)K2+- zKc*iEseH;3T53$}^4xamm~sV_7&5nzy`P)c#aBg)b!M=y&0et@mMdmu z1;*(YqAQj7d@6_Y{##)nknzjAW@_t^rO5ILx((JZ5vnkrO{?eWh(LJK1BFN?O4YZw zPKTe}_TKx0(Apny=juIMDzCMdQR#1yp5@HYhFS1x9hf9^ z~HNGbQ4PB{DA#u|Db(kgVla*vy$?HL+198m{RV=j*l7Hs7<`9 zKCF5G>Ms=ISEO)xEcBW>wbXc;;P^Bsy4_zk?=L|XuGk`Yx-iJaxoGZH?2=&3%}c@% z(_goE$Xl(af`L=<{6@5E=ssrWO7MY-)nmj`@qmw4ctOBM1W1wfkdn%!*mn)`TYgyR zBxP4%xJ<^r^{6AW$H0%B-cl=pP?7JWLlc`iN4yCpc|o{~wlsCoMvBpvJ>BU3^elYb z;ij5_&NVLI06_y_lh(FHT)&UvjOKwAQ3+rm;bc(*VjD*M({zR~5>WvE-YboSRbYv2pWtE&=5cjfYG|0TRg6?%cZ@@@ zDqJyGb7i?!ZKX75A;BdB&LtnilGE@WyO2dX7B5fgwB`zb(*d#arxNvE?CH3-+XXze zMeOj@&gCvLsmqBvr+Itb=^Q^_dM;mx9>H$OF99&_^G_lG+vOuXss%$RRv;81D=h0t zEUl^k;7Z(a-nimSmVHk{GNX$HIKL-nvob5wKT2;e((B%dg-ao9bwn}7bA81J#9kY? zC=H}D4%v&(P$M;;uxbV*gp6Jf>MEBB=Iqs0ftZ0(Zc7}& zl?u>8xW-~g`2OJ%PVAk1fwvhP_?v0+#B>8AY3^~7H)>}z20u@*?({>$tIY$<`L0od zJt44X7jx~6DgebC?f)J(h?VyHU!(L4EQ=y3nvH!QNa7bs{d6P2{u&N(m zOdytlTu%1qv!HtGAEld_ zR3u~jQ9-(Yf{Lr7?P$FAv<)7W#Rrq)?a;XM$C09QQ z5u|MkwhvT`ImfK|QC?@#@`?t8$~Qfje<$urDi+A^e|5&HB3aXYCICfmf5rlfW#&nC zPSYn)sim+*4$dCSAH)i0T{VxSVs*YbKFDi=yHby}zI>dhO)$_s;pPZMhz2^~Xs{!Q zBp)C-BAzvZr=}ZC=zq$fuO3UIr2oLA2xa99Hz$%zHHvmsN&Bm@!1~jVk@SUlVn>9j z;?;=cNRksgJRtNA9RnCkF-f-lsqOC8t2ovpd5Y@MF2>@G6G#))nvi*oiH7h z#+C9N$p)~qg{}w}R5e>< z`XJ!(DSLHTkO1s)!Zt@r);o!1#}={x<)Jzv;+$GyM@_vFp#sHt6|?1Fibt+8HM@Xj z33{`IJg=Su;u^JsCyj`LpqQ3a~^Zc{72ZL~<6( zk_46L8%=pK&4R{QPoNmCn3y5abO9xhWuwp|Eyc98r`HsB~MBu0;9nbG^+Ii87Fnu8Y_lJ{|*# z@d-jT6sxV91;3gIm~f#d=zzH@i8^YW&zR^#H381odF8S9dx=py^nrDy4>n71%X9n` zt6`P27X6Z|OAoNtN)O;N{-Ec=kdR4~95gVXaN%^5m`Wz5YYOiFltL9)6e6D>D?eH& zM;P! z+414bFx_9vcESU2vk47+{C?!0TA;#g6vN78_TY|{KHzLksY=rsP=^cdvJp1 zun+)2RiRV1DM`0}N*RWkdiFo$#3U5ZZ8!t>{k7~mg|WF8!xSf!^Ra46YZTP4N7EN# zD6vTzE7R8xDp$A38kxBg+L;L?$=U9G-kFN74PBQHd}9B5rNTEetS;Wl^Q0W&2_T-` zTSDRGhUr=M^vaNV&Ce8l^=7&W_KTj-1-k}Gh%;28Z6Ir;z*+~x|6@1SzX=4UDghX(kVerJrUEa`3az;ka^&C!gLMY z>mVO7&EM9--j2NQad(@gp9bE212mBzOqK;hDzV1iwJ$0YPd!&92v*|#YL|6JOB+iKZ`S(lo(3SW2$-*%Z;0f1Nc49$}{k1 zf4ey$h*JC(sd^|Ezvqsa>bidKt<;<&M%I{4LH|7=D&V=()3I&X?4l5Lo->VXmO5ao znR}mJJkqK~w(jgFf{35H1jR}*)x)HZq=)+g%iBe+j-&!vtBe3N+(b{w()Nd z!~5YACZfQkV2p{n)6KwOG{9ZZ$gcy>WZZ;dM7H1^SapL|diutuwb*6x#ivo!P|DZN`aBR1__cUQHJl};am3SDugMHfE;I*dV* zkz}8ukcObq3#dNQ02q`bxy}1YP{dnoD|W=D_8r9Z_$*<3os~ACPQqb=qxoZBHioa$ zmuAA>?sFvhNM7@uSdVcQhJYzgv0}t3LqDPgyT>E=ZOqZUQw?sA04JqRE|Bc=tCW7T z#{gRvH}sX^XO+P9+h<{vL~^oCErJw9OP}WIkE;KEx_l2F0dnOL8WMVMDlNfbhg6iR zEat_=kV0zJgosDcSZBvyWvQeuy$9QK0uFVGlCc@<#2S_)c|bg2I&r(4?*%`#-JPmS zu0|G#go*UWRsQS5Le25$|0Jm|m>vLHhl-1FK{u8=u~jK8^qL=Wc_Mtx^5~K8555&} zJngDE!39g20&t3e?V(}lis893wTWLJj+;3B0X()^#{?SD_1#?-SB-F=Ww0G-6)nJa zbC@T%g;6mW+u4W zy=n%U+JAV&vfB2CrunZ94q=@?Wu6703MQq`}5=ByLsL)Al)A{O|W3S zbl2lEj7agD?w_uWG>msA6w`=&FiuYtQO7$1>G*1V097Upf=XkXK#y+1eMXS3cT+9> zJd2Kp!VDx>!T-Ow-mv@Z08BUQT;%>W;PzmXQH~H3uMHLBkP70 zpojh-+qzvr3z`f~yS9*$yaQ_D!mBTn6*~5XkVR|NwjNnHv*$eUSTw69gGh~aA&^1TKOmnJ-uzt#%LaXXB?N6| zE#bloZPj5_-9Ig%f#)+TXJ75+jxuJ`YL%pfJ3l%Yl0g67D~cZ^#REqYMJdo;4a}Zj z0QhfU$z801T_g=9Br)jVDOY#PMKQ!@vt1ePgNrLVlrqt=_!7+*)P7P@JFs26PccXv zcV>qpEV~?9t7&^K-rHwD5ogtmtBomKji)3VTe0VPA7_Gi+TfZi&wj-;P?%Ci(9DOei_`9LS?dI@W8zF^KS z#3z2Ffr;eUWg=cYGl(w2rK|sD(ViayRe}b2mO(wfjD?~Y9ZA>1Y{(pz`l&JSs_r^Z zmSRFxtVvtH+5*pnLs4#B))~w*mDp~16rXlIi{NDzfzL7ENo=boU^J`YOLwacV3!pl zi7%;6tlS3NEDL%oTe>sW%lY}#3AjHV3|j+eayR6hlhsP1n<@UpBlB!P@Xr-3 z8mzMuqsOM=6}EFXTJG{z8Gy1PU7u8yj+Kfhxn1QlFwDve{Mf`1Y|nDm77uyv-TveJ zkI2P!B9VEDP&%Rva6~e1bvl<5DFEP_pAr~&p zX6o3K6%R@ihU&(=8gGue7K;e>yYIcin0)0L-aA{ay8C&jUTSdZ$;2DI5^N5s zYqM0;DzlVQe+8o2`xHscd zU5-rpy}tx*JNasaR+3=>E(=3EnAd8vDWmnjc!y*bt!E#WPVsIJ(t8%t`nkM^T5xjs zat&MFYI*b1wp3WgXrPYs&J;bWiS_OmxQiUU>>f;GkakTWt;E&tyt zdi`{3*8&oYvSELAIZOG<+JQ~NBO+bTj(pC!Rk3fGNeK9S=ToDEnoG_|uYD44*I{?s zcHi`U+G18(hc-PxHg}uziJ)>FXmrVLJBETk-Z?X=AUk})-wllw#&`=djhe1blTW~R z4OCqFqscjK%&Ikwr_mG}jdr!lh3oKfVx9gSmiJnCw=CWoX6PwvV})U1EhHai3Exp| z6+GkmKD#@eX*Ch1v9U&at*I>|-jri{+spwmYzuP94sI5((QQjV%{-PH^19&H)Nv(Z z;l)p&5UP;t+U6=WIyqr`?tv|B9wov*@+q^;gk@xr63H1&n<~SqO4Efjit)wYA}A?) zl{(Z)KGg?DEG1fs$8g)*1%*Z}AT%ie{NWVNpPh2P-ra&N;^-C^uO0$iELy{V9@HSv zp~Fc-+DZj5#)`7q^>X*fu}--Ffr$$qie5dhi4T4yn5^fT-HBMMt?}X*i|}DC8C&E~qH+VMAd=l7xXLwe^;8hk7_O-ZjS6~A zcj0bu-7L6U&;L<@Zd^SkK0&l-*E^bU(HsZ`a4mgu%}^%la0>P0O(hM=1-Vm~f2}uL za>2DK1}(L%^R4*R`YQMHNhq*T4KDAz3yILxvs6lkY2FYEr<}BsjjveJGC%QC@R36o z=#l_fs@$D&f%$?()kS{5!I*CCHurw8UCNb0c-WeKC)fX_Ug`a1sNTy@B-2wur@GAd zW@_1~K-yS;-ON&aOo9DWBl;9E)n#EZXED;*3pncHd&uKKCi`rvt}AQH6J+;x3WOEg z>CVTQBb^U?@C{-QTk!6gu31QSqX6B|%X0y^PD#@I2ERh7qYk)W%rSk@p{GVY(nAB^ zLt>NLv)s)PXJ-i!bR(|FG{M-vj zj{CQBD$i_2(n#*t^UOYenJ_P{`<7*LY7LbyY8TQUKDC!(On?o#}$Iv8$JiG}v%UiRHv)^t4V}zoA z4Z4Y?L+rx`ibaIwKMjla%+)+7BGG)lUsCEzMF}`r=OMdf`jcjtPp$8)*w4MSd+ua zO_FpCw(1f&4@6+4yZCYRVc_(^lzn4xgS^u4ABh}%ob<0rH)-0`U(&v*7r)V$K>7Hg zsv^)FXrma!Ae+SW&RL}?zXq%ifqJ6c<9DsOLjgb8<FfG z2uA<=5;x^?nh!EYN$NZ5#sn7eoK`aDc4)M7t7FN1gs9IpoU`MB&x(yI{2=d$@uwec83imG4QKxl^lXHNt*enQwIm2L`3Z%j z`Vx?FNu*u%m^UHDG#ZP&X(-xh6;Kt_pexuh;{kP{TFGcs0st5}U0dSe`tVa;uiDmy zCvvhU*_bcv?AMhXT#hLHD2_H^-B#5l6}yu%c$}QP-lz1DY}Ws?-6!mNe|G|DIrm6F_R8RsFtJ z)aU30t*-6^-vNS_{d>!qr&o^fpl+MGJRaz`=`XbR#BwO}w6`2T`PNR0H?){(V?k(@ zdp+iZ+{o9vcy&|*xVc#F8e(DM1pJI2(jG5$U!G-Gg%twu{A`&*{q>xjd6MY1F43S1 zl);o6gRlM+ohs$6FDXS&sZJWT2SG?DMB5r>%61livjGk4#k`r%+scnIAdlq1TxLq} zp@O)PAi5d@WaTXuVKA{J2Ps_%gyTd7q;FgY7rc2eD}=u%-8VE|{9rmKJG7^YId3*! zJrUYv7LwkXV9@G8U9p>%XFeZ)d)Eq?+C+^|VIo2{5 zatiOFBq8fZHzn*RB zqPrvWMOzcDGr3QK3KcZZ*<*w*G-gz{qq--TumDYs)F$tJ%aJBR!##UjkzD3CXnm{+ zV(fqiZGPF|;*pA80w4t6GTOzW)QDBjLKjI){XZGv18dZADN!YEBD=NQa2uK$lqD%e zUhr3J9C1I`9R2;Cvd4-UlxcAj)8DlxwD@8vu56&d`<2*qe{j+j8QuEAF6x_zD&BUV z0st9o9(WwPSnqmYoah2QIZeuO?M%7+YQnizd6TTXyW>j(hMI{Es^;z{KxK=nym5y9 z9kJQ-bGF)9bw2imeoXOy;;Wxe%<^1|6^Rc}jx%ENaIhQZ&R|{QTcC_4AM7J?T7_nX zZW8J{Ad=D$*_NSWggW8tBq!mhuh2`GQ~gB0pQ z6=qNLraWnhz(e8^2$wz}>#_^2Nnkd8#0ieIe~7ay5*A7e*1+2;S&0x7a0_Z{s5z&n z?_pUdVrCbz4r3pGsN{SM$dHLa0-)$=qRXk$+DmNBf&>VDvxOKEP*nt>w4gtbSOpY2;-Q~lZzfCoL zoAztlv9r64Ef~wAQc5M^R%Q}sT7hr|sjO|%opb(J2=*W|3LRGyU6fp zU_VR532m|o?|~r$;Kr`iVO0n}AkR!GcsYY24sEV-b8-Xf>d9aufZ#73p2+DW_U=I& z!qT;q$k8T@PNc+KDCbZB67SN6P=>*!)0eBUFE3ItiaA2QLt%D<;)Di&O=5`9@o#Yb zZzE3DfJ6nZJkS<@pT}vuWlxy`{MjKR@t?AO7X_ zIbk#{?M^1sY9#qpYB}6io)k;pv(u%?wxYHjZpOSmEKA4|s0ja&N8LGp{(6Juxy0r! z-xJrjWMQi&HSPipCQl)uHKMU`8e|ZS8<4=Sr(EWrwEFO1ivxMtGvXRuwN^?e+&u zuSWm5xNzu7`Zt*2dxPM;BxZ`maZgeV?uVmNtd)ufXiziu!{WasQB(A$ZpV;jo;!Vj zI6W-VYidDiArp*3t5#DJj##fg6Q$zOaa212*TTvPhnC4=oDZpvpknt!dpV#*gs4Q! zf=+8OQmAaT|GE3f92I9V;4McR3=Od1;(z~;++{HL@H@=;2#h^)M&g0CYt=Yo3OEH> zU4ya5jIE*JWHVvz8bPcdy8d5EVr%M?jalY{7)(#zmgvGhAoz-8w zVPwBt`en*R69-?sN?h*RuJoZot$|*-%uPX4`^4^_0z8v=f~Uh1D!eP#Wrj}&YCDgw z|24IC%qBknX5XxzGemY<7=OyT?{HlM=2cVy9@AvdTTp^gmyk=li!e!`BD@WIj7coO z8+FMGQX&5G=h($R{bpJ}M)&O%Z(LDsa39g&jC>w3cIfuvg)eKXlgoeYzy?+h-7dqv zAAsk&LB5U9*?&8>@k}Bwr>#_P23zbmZC@c}%Ahu{n`|xD)6nuN4sg`iMx{tLR2Mz~ z1XLWK8Acx1Mhr$(Nu7uHiw7zk5l{g~Zf$$`a@|n&qznvaE3!4w_Xt%Cn25_MtR{Cy zZ+fw)(~f#!>Q9|;!(*P`WNV=C1$q)02%n}~~#CRp_gG~d!rdVPQW>PuyWbO2?S;8(tz)0Le ze!va770ySPh@+WRYfF%FQZ zy_O6prlOb~TUvU=w63$ipCs#}QeqpQX`mBn)W{xpMt9_n1v62*l7JI9K8ND3NIvWB z++HOa>ZA7vK}}NrN7PMm3Qzz*nGd(kLm-Vq7vGZv^%?bL{tWIKaB*=bKA`gx8Z|j5 zUfx*1CIv;NkW+^crSC!R{0V*MMe%ArVse9)$Kz6&3tw;)xd;QQzGX|0yL(;LL+S?( zOIlMpb8qJ0cL+fJ#<4u+AEh%2Rr3$iJjk@p7-!D1p_$pu(?cXQH|78k$^a!ca&L1m zr7xbA7}H3;sQSDU7V*QVi+Vys`338lv!&0v)aY&3jnY=!3NaFpH}B#ei>AvcbbQq-H!-6wS~j@nA~d~o}V zGpcq;zy8T$OI{Vo{ul}nsqNqQi?38X;b%!=vQIR?+FqEd`xDB#eWM8FWLImT+EIG_ zMsftpGIEY$h+wWzE`Nu&SaAmi%XY8il*#_gh3ACq8Pv^K0>?_!n{ zkFb+e0l`!tvys8Tya!(`+w^rX z5TKcJ+V2HGy7RiAaRg`YtJQY`i>*x%K=E+GQVd(jp3yqA4H2{lt3#qFnrUGs>|wi~ z8B8IgnctTVUA_ap@1_rp7l1R19z`(+#<|=^yj(T#Z@2jV683mg={~aZrl@!_2%iUNG1f1#6Ew9<+bG+(%Q+mt zrNuCBz>&Fc0ySostvkO6!v28M!eD`ma}EzGuQrZ2&&%qTxt5 zq?wSMZm0pCVUZ*P-@fLI)W@kuN}90Adx!ZTcdCfGaxA>^FBBu6XiI+Q7%*JaZ}QFZ z4p9&2HzXUQYb~z~Wi}=E@LW0ySVzlq2sC%m@e7K?CwsJwQ>M5!m)aW%1a`|zU%-$G zM9z*XT?o4JxSXn;?eo7e5sNs)4c27QPD<#<>Vh38WGnyHRB>njJzs*YIRnrO69r{u zObVW0k_VaGlfHP4lYzG$fCLNC2cGPZCx}p>Vl!nQz($*f3k)&aov3XzaW&&U?#0L+3qlrJ!Gz(llM(O}>MbYvw=Uko~?b;a=-_4l)-t zi$1JoBqWsQ@;WkwT7~R>R3g&X2AiD>dmEb$4RYj)iwAqlx#5nq6yMJ_$$sB@3DHzu%504X&F6$E{OW+0>@W6YIY028X0R zrdvmRhy%+#Zuksak(>KB3j|9U?tNMKR-J%Cv(uc^gKr3s{AoJh`9zTqoIZ*`G5i+{ z;%Iuo4sAbYGl%$sSx30=5l+7dW+*1Udu!xkk^}Nk_!+t4l;z_eI>j~vO>~#X)Fy2O z&*f>Co6+xMpyM7~Fq2CqF@^9WyI`B{GEB+8m(5NZ!DQzWIyqA;)pHG}Bi{l+gxoCV zBBAU9SF&7qgDse>=aonJdu&n>bo{*0w7PtFU!wt|8=35yU=N(VqeToID)_C08&j;5!Frl)F+)6W z-@1q8fn7B}yoIk+3HfNHTppf$S^EY4-(jw{*_Bl~3?LvUVIUy9)Lk_^97KBux}QR) z3M3Hd|I+BCE{ft40Wvop7O7^6V%FcKQEux!36?5 z9sZcf;ai6Tp>;<3jLzS8^%qZ`v!t$R(hZ*z^`fE6=9IpC>k?OT@Ame**iumOBqn1- zi*zR$Dxzp=q7DlsDRvLdSnhmIHa6~Qg=eztSyY~@((Vzd14PM&C+?N$abSEkwhU-g z4OK~C@g~+)mMj_my<%owexZuu!@Iq5zNV>S7nZ?LK+J=)$(x-;Vr3CvCAKVPa( zYjXM|%8p}SrK-A?qVxs#?=wSL(W`?sggmiye2_6xRpSuDZ|lDAJHiBg*aGD?>?l1J zFej9>0))laAtyikZUnF~L_FFvqy^MMErtQU7{C(?V@wJZcYyjmHA@!u0w;%u#}8E^ z(cw@A!!`a&!D+~y`W^ilFH2b3kjM=YFOX%5QdT2@Zb%$afjv4l^Yh3{xY#*5A)s0S zoo`X8;Dk%_x7_s#0R3}Z{g*Z$x~Rc!rX=vSAE2doJD*v2b4sTGJcWF}UIc~x$f7br zBM>m4v+Q(o1(@J=AWfZ<)l$Kx;(ih70vq4I5;-wbEbbL?(K;~74@dj+)l~CGfANp8 zg=PRdjctmXupcL*Gq%DXEJM8uf%F~o{^Tb?Hq9&Uvec)Xr zVgLxCkqIHPb)^u<1loCaa*jP7#9BGMTp9VG-htRMx{6NvNy#q~BaLPoAdX7QY${2L z98eSM9D#LG`^C82kWi_Ye`$Z$6AlEuL&WC_e!VyRCYLIje}iVC#~n4$8Y*>u;(U^W zT&fu0tVfj+#Dyjh*b{JQP;80bR7C+$paGzF@k3@n2S^aaAC58Y--N0Pv~P7pTxiuz zszdVKT_65*qA-@qVz$mni*f13l_l~7_r0aXmWguzU7pLHSEGj1*bSem2sbJxm`)}e zTs`Pm-KtMW9~y7KN@~CoWjyD0AhNB9NK$FMuaK-E-M^tybr8H*HaE5xWM z#gkgmLX|W2f4x0`NJ)f6bQY|Q2pfo|_{rk$B&84#6J6GVr3+@|=D`MS`2q2?$FDOu zB7x)&bI*0ib~ZYO?lpzXmN$a|x{LHz;;s;wT+6?2Gz7X?t0s_T{ko#}v?wHmeWQ1& zAsb2E76!IJIq2tM$bTff*68Rs_KOwIebx+AK*|B5*z%c zC>d)gVzCS>}K!Cfldu6xHIP0U+f`;WkZ3) zB&}`{vqLy17HpJ9uY*Ak6nNpUw{^ML|4UJUiz6-`SgV8}6NK(t{b|wvMKu<~&e|7K zcvv~4uP(s~0#cEM74cJ(0x<2!pe^4Mpo#LEY?mQ#l(B$~O%y~?HVGm#AVA|xD+Cli zpPD;%&3Z2GGiSdbAisV86IwY{W-Dyf{jrAQ8HuD`2?Cxh3faH~DT? zX_Vw2@G#-QlIg_*joLNC1D@bNZ6Y)2gq+sZN91Aq)Rd2Z{6i1MWA= zAYW03AW64}ltNIdeG2LLCvJIsEv;dnxeSQe#CR#%m+=^xY-4PHmR?RY-}lU5>E39( zCE9Np1Ky@?5dki+eqE)8aw@Ap$i5I`XNDQ!9Qv}N!Ou@t4q zS1yIs0c87K9Lq|WU?^7Mg3@*b*wM}MK~Vl8%@7I-0^U`lgM5RByqPpW`l_2r$eB<% zVibo)>np4gy89OR66J=^xJ2e|Crq!E!~Awz5D%P5dyzM$v^A95aESn_OQ;DHYYZOs zx0OI>KWr$lD4<@Ac1V6(tFf+p-#}xWDNy@P-9o2-XTXRoanOK#u@P&T85D+ABIs=w zA-{M=W~G-8QGA9b`Ko}Pd~a6q1dpRJpnO1nz-e(!hq!qfDOxF_%Qe8>$R(K|1S^sx zNQKTk{o3c_dTz9GZgl)%-)HB@qgP&oWMwwn$lxKf z9yz%i9xI6iPhj~iOJKO;6=4nC0T?aZ8Qomn#3(}Dgem9rpMoHMrn#Zw0)Qtlm;`#!sbr=@Or4EDD?dZiF zQ0NcCkO+5L$tYE=%{v^E34yc#!74|;kb*z(dlaadz%B1O3V5okBD9eR?_hM^sCTe; z0QinlwaJUXJemJc#s>9V=FUO#EyY+d$W&kC&Qj4|!{Dhq3Mw!n+iC;{9_T5`S`eG% zvKFyA6>^Y(@%;EYyJ2b1U-%Dam_4w$6FeQIdyu!i7?I>jva-^(N9VN-Ug1G8`0S`< zj>6jiiZ}#+vz*}aPM#@?zftC2dofvy0>Ifin_n9)XPXEhNP7K~SHfTM>!Ree1Ys}Q z*#A0sO>E07CFi zl#sV>0mM7&q*0+;UJ6Bd@dJ5jR;}S;cPDSSZJoMeRn{0odY)dIxFx4#!;q@<3e8J9 za9mx{#-Svdo$=)f7CogYRX_Bs#;ZW-zuqpR`EpaFGNFkjd)9_!5<{pTb!?>NO3^T_ z{%|hMHMyc1$pJ}!WpC@|`O_aR0h_tVL0|EW$bkeWD0f@I-vnF}9kHy>Dk@K;oLE$| zlcw-S4)pk4*({C(#Y~ja+hwnH>|3XNcedQYhD8G2cz9380~Esc8MdG|;Y}NDEC;*c zBu@31s_(d3e^B5PzM@kW%;0k#-q0%;aU z=g~q&HbNS1+fJ@GA(@W5G+QabwAibJ0G#BGzAz^@Nk6+{EJ~u`u*fY07)N}S%8qqV zDPn1GBP75Lo^80Z2!yMqVv=>QLyj!1Y8x_?^pH%tks1Cqcafm#_%?j&G8Xar@Mq`g zWnU)p$y7pm!umPhpZ&3VK>7>&-}>-&?eupEowEoErev~E{+QH*5l|dxGy1TJG6h$o zGCvLHf==c}X6&X$=c4UK9Bnb7EjnUjX(o$69jL6GyAD62)L=i!7FQcbyWUUnM}~(l z&#yjBP>2KLu4G7sN8VrVH3wDEf}-mG=73Gn0Yr=5_|{-)yh3=i0E~-Hc__*1Rs1vR zu!SOZ6|9zaZiOPtC^tJqIBF`iq_4z4^1)EtxJRZ2R4*fkk!Xf{wt+NU@LGe};Z5Wi ziw+D+b!%a)tF&qYa%#1OnllA^>*Zv->`+rskRSanD&fSbI?!WpQ zCFhGE1n@6Jhc>nny(Fl3!YbxrVB9pl-f)~@9)o;9Tdeo zw9N*jzi~YanDXDvkvWpL;J*F-R$ZwE{e7d`z%>F?PBX1R_8d0 z*P%Jl61heLM6_mAWezal>|yl_2)dNA>Nek2%Paru+)^##TlL1{+B9}K5Axi2AH=gz z_Qgk)E)hGw$B&z?-kFGB^u_(@6?0#=Q0zVw5=6eA*Nd;|m{`!LDAN|KZaAi0;ciK? z|8gLeHkvW$i-}mBUXRtgwK^u1up8OxjN7W>RVVrc2xXpjcL;Sv`&%rf0WZKXNF$@8 zceEH0_)wT6qp50HIWq3~c)d-v9tB88ZbdbWxVpdHRj!bmW>vGp)Ku9PSeJApY%6Qu z?qfm*1=%WkG4t6~2B?8WN3}INpW4@cmSor^I`yt_qQX1h=UfgEuixB#EVkb>j>DZR ztE2J&yu1n~A~%wZ>7bG{3^&J`HZ7h#1r~8Mg89hT4xH+um23bgx-slh4ckT2W%TZF zkBW-qxd&eqH6~&(eLA#f%M_cxO>B2;loM6$%zTQ(%ByX1#8IC{8O?*Zek`!sQSY>N z5Bc*p4x%>PI;u;wK6Pk~8CZ!&17^OWRzkXf?d&O9virIPl>UJ^A<~cR{n=-We0LKr z0;+>XmEf6Ey(}dMu^s5@^Xg3?7}!i1j-}l)03jnU7Uc?>e3`tQPJqWP(*=qO&PilL z{aEHwa!?=2Q^h}_Uh~@9EHW6J^Mpj}-@v*HXgKR}ip5YOZN+BGPTHd&X;%1t=NE;iBV)s|>(A`13 zNlbF+bu*@9cZ{XklPzg-ZG(%a+kK;e0X}eZjf?~@@k9akU?JrcChGDH;BBpDzaww{ zCh)*p;zz2=Ju+EiB-;$78`4HHXY_Mfh~-o2!-UZNKgpPfJ0UUPx8xV;dIHO8>K{~H zD`x!exYv*OvPLq{O}J=1>6}AaHTsxGb2^s0ah9pYXd^?e*!_mBMc&Y-^k}Sr%>q=E zg>%sQXpd}5S6a`9sDZ6%2Pd-v-Z1uU;`a#Cht5(zkkBJnQ2v1+2WGBb~QekSDpH7>anUh-@+& zI%(&au9#VnN$-i+hFAB#hTR>3H;2v*b@A0=3|Eb~bDq{dd#QhWPxc(@LySJsRk!t_ zbi+XiNchl04RuKO*Pliwn`Bt#eA}V`fQ$VCwEI{TUG> z)~G?NHEs43{XYdGLy%CwEZ?pH*xRNAHdR|QR7U?wnhUg*-RVHfL1l~nT)=@=i{>>Z znfYj1g^*kJ30-*hr__VPj{_p~s3pa9!vgW&(hQS@Zrhf(I%C2=ybhWi)b$qsY{0Q| z_-PHArP<909O@>=6H{SGoj&MA`z>mk!Da|^@dxJ2^`p#;2F4lS!;D>@!SQ1>Q12gG zNjs!4bkd2>u?t;__MAktx7nM$QHQG|PckTQ_T)pwlQuHtzne$9!Lv7n*mm0)T6&vk zy1K`LA(aCjSxVFI-gwY45O;pvWtUiLR$y|f z6A03eG)bH?F~s7Zy9<+TDYS-P0vTlXKlP{0zf3>YRJoo2tRtd2C!ih1=2` ziJCL^oZTD%pZA|uP~2-(!9^A{90r&7Z`e8`Y!rKZJ`gpMVpp?ITW||9QO2y_1Bmk| zP;2YhBNx+s1zY(bvvD|UNAg0xMJb5G0w|HjaefE3#(Jm>1{gfdfAC7$fkk9xgJ9fp z+}vOn@1P#`NFU#BDhaYks{YAo=?3fPZMfx)6wrzRc12)TTyAnsYx1Amy>#p4j%6n? zsm4}M>Ks}Hy_E*C-&RA9&hL+qcNdn>q;%+9kJ1gw zqTHNF8xu0VvXZp-*YIM!8sAtBT9X=piP60T*dJkVn<`;0i3=<=y5=^>;&PYj8wu&+ zZ~LB)m6LK6-}zc>EZfB9oQ^)o$=Pu8#=^<=vrp|;Ns@Sr(bhs&G(AhL>Rg$C&cTm# z6kJPgRW&8Gob9cyx3fO6*P$;8x8F*oKe2D$uRFO{EDd-tLY*N)nyVHDy>Q6lg=&=2Ik9`D>O z{~$Hic32h0QOyBbBS9jk#klC*+iL-UxseR7zZ>@HE4bMAJw&%nfd%IsD+EhwjZ+f~ z+J~rbUGBGg-&*a4xIuyh9q*{ttR)TYY0ftg&JM&dT62O6{mY_&Ew4VrnkH>>EQ%!J z({4A2SaVDK!gvphtP^8T<(-Ddt2Hw!LqOxUX69QuRVP_q#gfLdENdt|ryvg?D`zlR zs=66fvLJv_U>4W=Vd{~#8hLq>+y1aSC~5@QbHA5#iXP!!ta>y>anm#+!YsfE>{ii{ z@3G(xIjL~j1ANBxh?zz^*Rn^s(+%eA7 z5fu5zc8$wR=6XJG!I?IAnWzTf_^3cf4@NhZ#=Lw z!T|w25(5E|{^t!MWq|+=>c1Qy2=(yE08|7+mQ;()xYD+YU?E*Z>PRyv<22)|6_ww< zGm}?$vT~jrfVwfC^z3YpqvV`pU39MKq_jy9ntP!MbA)ks<*{g_+@HVaJ;ezYRnOJa zN!6^-`iPpJkzF~%mKDTm6o*8R<>!6i*f_W#+CnAiqZwzIZO9lJ%;=eDMSIlDSGM=*OioonI^K zxe`XMZu=6%T#JJEn&6Suk0I$L@dhc9cw@R5KPeF7j9e`jbTvnT)+_4k7`M}TPwr`H znNVUV8SJN zwdXtz^H%>rL*)0|NQo>uB=A&d{09&B`#!ycZa}EjPzf&|7rH0`IU3|z2U;ULGRKpy zab+~V(Z>XR?|MULiZA-Pa;b{qmGYuxs1{V9Zp9b`=LBn#zm1Xw(w*x8wr#`}Ow(S4 zF@4)na$_3OexhQNLa!RRk*}}dV2J*%^IppH9)}1Fq6SHSmMs6%315vXkwa z6CQx3=67X?pq+vV!{}uJ1+$|i`5M;1W`xa4un#|=^7D(Hc~*gh6?Y|XNqu5_FZi>m zNB9%Nh>bBphh-aP#Pb5%1uZ`i1Y$eYonQl=#;!X10#sS#@J!@zv%8Zg6`t@8#f1N& zwFJNA$JN=&dE}{~=d`oLvtK3r27HqiI%Zr;Al&b1f~W};MZP8g@$83TE)&)YQxuRL z6V>k;Y6IfxLe2N>h~Nld@YS$yg;wblk0C!S&ab59aJFxUD54iLDts&^FpE6d#DRZ9 z`i-3o6RS{6?SXS>p0qv`!K$B{m{`4kfA?)K=}b{U0(J68LLd^Lg?sVwbcV7uZyymj5#N;VpHME=z;A;{QeLG0X;YFbIua?3Y$KAg!IdZ&b}a5fk+BjEjT#^zTv-(E_Je&K%TX)xo zr~e+iPSDulPBLal-cEid=w!L12}>brNx-I7SiPL)(5VdX*uIU=yX=LA_ysn;im8}i zc%;uxBy4icc&#y6P<3NkAgu6r5HJ8DbVN^BM-Rpq(DkKHf}B1Z&Ph2&7|ItV9w~4% zKN4eLrs4 z(3SSV^mroYOVXI~>S7m>hB8IZ_5eh|Zd~r~zCpyG=E%?kWf_2A#KDK(QgIj&033-h zjS-IySU3>Y1;fW$_ei~PZ7ZUe#5&5#C5rl{fIRED-U3M;%-_Z~-?DoBjh+VDP7TH|BznNI z9LbmtGy=j*HDGNuw<9g|YmYtQ2ja@A7kSSIC< zpddT5zS%r#IPg$VTE|Yg(B|`swt}HP z5-9WZu!!HS)G^h|gziTfU0skDxMBs95N9V4e6PzDqbl;v~=m&Fd-HI z@URQp8%_B$X#cgweQm0~Cl<6Bhv_n!=096ljxcDRS651PL%1}^F3la-?2^it$q#+`C zp@iNy_ydq}Lk(q2#MBMn6fP2epxEeHz^A!NDk?P)AAKTcoppkP6T8%5=w8I$;3t1t zqL(8m5??(77>?@P)PdG19}#XR{LR-tQFN14R@LZSAbqm7&ZapGf|S9j(*Wk}!iGrr zYgN-xOuTYOi(wERkD+97#^qDZvfowiR^j-Kqa}`3vkdB8HI(^QR~$%A%ctzTfZLBK zU2)GdEsxkqo?S~r{l|@+(;c9YwnX~XI(qWR^~`bbkI%#R_3`&|ZNd1HELu|Hil}ex zfZpc|ncW>o5US&VtqtVRK}25GqD2@yp z4I4c-_61v~cb`hd=EdpsE|QkE$A?+E4fej8*oPCx!$!4?obKkFI|Nob>|*yK@G ztKRjJMU^VTIS@I+LZv*vYBeq4L0B^eQ|n`XXP&Xuey%@B;3;pTn9%(YqL5xOS&ZVH zoiN_{z}`B8kl7zH02puYBY8OQ;1?}f`Av7nN+`hYS zB-E-1N>s1MIvlSF%}9VLfX21{WP&=QA5xh=e*Micj%ehlcao0o*ZrwCUuVaI^=d&^ zZh}AG&v?odAd97o_iAWG&Ai5CmwqCvb_gk#l-O2*-=R8pgS!IWZ7_(E6-UYW{@21* zTKef&)%M2$KfswpK*M%_knv{K(rj^T8vP?(=nT-FHOC|eJz1qJQpDAo1sHRx{z^xq#E~MI9 z0!M{pW35G5)cN;uW~|3M@~f&y6p%D)E88D@F6kO?pwlJtsqkMoM_KfhqkbU#ln}hosp|8 zyM1G`NR72hmuNFp@r67I8EB$#gm5OBogi~F0wPxX3BYrUZvAw0bQY2mGHB4-J^Df+ zXJBz$%Rn%MxaH>a`2Jw}y6ftBKbq>=`ER=oe(sH$+IQg_0Mun!8f|s3ZhT%1YP1W$ zeAXXd=BmJd6Hy;|XNwMj#Z~km-B4Kzxw#L3!cwxHB@^4xvy4E_d$_2_bSKM3!<*I5 zfxq%29&RhEr|EQGHQ+%W@^tI+*ZG{!-%R*MauIuhc65~DV1t-rl_Yf0@)Qq?izRp( z%(x>+W$L{9k>4EcLO^R@C8_RMFJ2J;owA}_mQ;Pp&^Pm}?sVO+VVbPC>~Eq{w`z%` zTY9$3$?+6+pl!5{vvX0hZW(FIinJx0^pgR_*O?i#V#T#|DO5+GHuX=WnBm?ZY4xCFgS9ol0=-N5qn9CFz~gWY@HPL0ZY4pEV%MUH zL2{!Uwp%=6q)iA3Se9i*;6_0;j$`xXVZV+Xat^d&yPy8q6#uSy;*#^BLzY49h2WK~ zrx}P-of3}CzN86kkSb%%_u9&PQ%}pu%Tt4Cff%)d98 z%5Cxk_|8O^)61|~*;&?hUxGcezM`Z;Yw*gW3JBXB_NxIy*KJWHw7^kQ@~jsiN2|Ol z%GG78w%zM=p{FDyz`CbvPBBYQG2IOWrpF`YP&q#qBmK({R6<;kl8|Fx8GkR8*r?xI zh^ZkZOeLnLe%uw&Z2pB!@eiy+Y($vr+eXR&1qCj_wR+O#?{zUiNGX#`RL9w0zqn9rHg3kp*cyi_v9 zts9+Rwjkm|{ug4R!stUSfFvs?@n3=Ua`HC+np3o;-prX$hFySWzpMtN5v>~a86z5? z92sZ4MX+@4U`L+$=bs{ETH#b|FnWM@GGDLyuo=!p?3BCu_2lT9FK4SgdMS@F;aGU$ zmSw$>c3XM3pr2k~1cF(;)&}afgI*8)7PJYa_X@YmG^_ldwbAwG)WO>^Ji2t^QdiUT z!%x$s*)mrPLo0e8)? z?mg;H;ao#dFp<|7rM8L|wCv`)YIY~Ap5)rOkLc~xVTiBSAi9ekHWcerdVC1rXkLEA z{G_v7P{_K8 zRhaW2_N_V_qQh3E#V*s7!Z&qR4SwTkIuI586P~=et`h? zzdScv$E@*{z`*)VfOS*x9PkDHw-mS4!~wtg*MC}Z8RGzo&aacmX>OLP{w}Zd^FbxS~o(F2>r;#-+H!PJEmG zB>(nto#3S^LSEN9JAvTZ&>!nmTBkxaAZXAcxB2{r1L?o&l#NfPi^JU9yG$!Hz2k?r zpKwMwIXF$#%X=3vk+7k104o5=fdYhIeqII{d5T@b!}?6^ zOE&3c(Gu8@^fda)u=ls99@;dL0C9>;90$5IUU(Yyp3~>}il5{%L2P1{87r8vCX)K^ zPX-)=U?Ls~&OBhy;sz|6dZ_#cl5c@riT+xDegb0ccFGxLVBKKRh~SA=rsuj5WWr96 ztOV)+jspN<>niU2@&4MYAYB4SCCu8NccMFbMWc%4sQ}|)LE3RB=nsig$qaDDfUP4Z z2C>KOcOtRjKwgr@glPU}(J0)qkjd^S?-#jG1r*HAy9EqmQrB6>q(fgli8;6g3>7kW zoEu2xLnMtLZs6nqs#M8}Xqlk&qlP2ORmH6xkRAZyrg6zuU1i-(qs-*~JXr;eakgUu zkH0@Eru;Z^AGvy=v`wkV9dgR2y%W$DlpM=F=&a5d$Ol-MaE}z{DmO|v2CuWi9V45? zi?Q&6I0>sA&JW4ORmS=mZ$Fdt+lrs6Po!s#DUN^4mF0m*op zZlJ>D8&@sP#HKXEk21&KT%J~E5!{5xLI6OfrXF`o@_Fp{xzK>P)uu``VRyLtBOLV$ zn2*>wH}sZ~m zzsP2)Zs`i)t5w~~6{j^`-c%GN`~KY9)Aym(iRk-wa2(PX#;q_QuTs1^`+ zpH1$7TU$hrQA4;&WpTQI!eq!P5jWEKTv-IRsi|>KIfG~P;4Mcr7(>=TgPi{i2$9I^RypU}Aqvg}I{a-U(Q053aZ2MomYc(s=vRsaG(fpby6 z8pQsccLT-cUhuQBgV+-0G73#5irTj90m}hS{i1u!IIQxC8Gc1@h;oH><~FY@>VHkT zRwZoidd|?j`am&H%jgJW*1vAt^y7RzV+JDXXZkZ4m=ZLJ?!x@-U0-r)SKWbWMxBB^mkmhqUj zQ_JF6&*l_`k*+kxiv;waS(?gcBD+SO*Z?t}+SloY6HHP{GNHei9@uh_N_-?OqN{G> zAb?>C2}F-n;8S$Hu)I7R7#IS3Xse8b>tlLSYJyd zz`Fl~@+17oZ*_L1&jS#a#H-mPg>$sP9&Fsel#f&d!2lUpfRrCWc4-wQuRoRjGJ|Os z$ikQ|4R+|TV{$vk4&ey_7~jaUDeYKt{@Fi# z5KGT*15*uVO9})JiuL7!Gm`*Cled)|_Xy4J1wHqQGL|K%yTp9FvKpPAfgxw_5|{$= zFR}Wa2M#_01#kg3ghw%z+`--x(4?w(Ff{fwqb?OvyEhE>&fF7P zpxcAmCI6ZUq1(wVfPe!p&~GQMx+Z~Re{*(R7x2J#g21f09<8~gM#332Pj)(+Nq&#> zFVEqU)NedUCi?@KiQr>&g0N0jmeB{^+AOZ~qWN}*2~TF%2I*c3Y#vYlI4M5IB%z5F zz3W6~ah9xusaeVmdn|~hQ_$pAIfrW%G@cl>ZH~c4h+Rc8lBh2hB6#gcsocQfZ=#aL zE8wNrtilv5#a}SnRYkaN`=M0xV8*|3aAR=4@e^Mz1`YxavL=g$8wGQ~e|m&?%pSLt z)OqV|q>-%lPxrqhQqHMBCTNNY5xm_4_sDEJ?Vz#2tXf;CCEXBi7)Uh{DT47^I0rf{ zf5j4%kTE{h3xI}!x>kL%)wacS#gxjYw)`|LH~ze4C@S(_ zd2S0|9mhC9EF$Ld7#>pUdlbZviyMqM$kH!lfBU#*apQp^IbmvuHV z4-pL|zEcKNyMqqKh$p#;?F>1%66W@<%pH;G|8pC(>R&uwk&w;mqM8MPWw zck@rz=8i|2X?MA+J@2VOWc#Q>G+(Jy&OKpj z)WwJqno!{>rNNYE?#&KC)TnX8I;O(3>rnquwrCumw~>cmmA&;8`gzNbgxKi~8;@uL zgm+mkrwXT1cQyX9eDK&B_jU4HzfC(yBltZ~^UvCJ-XTqKZz0yaJE0~>J+>K^jjyq; z#954flicVv)+aM~sf(L^Ll*$dm`nY1Z)*bfr#kQKT~SU|tj%8HU2h^R*Vi!L;WLuZA4w+I0CBV_QTioEzd zrM(wuc{(8NcvFe1MxAWXDpptpqP!lX>tK4WfJz_=y_nb$Xw9z5=zpO?w@%T;BfW096Y*B#sl`YWBdcrXDQ>e>% z(t;Qxq4z09`jhTGfdojUD`2thnBAmr-fT8ppaWq)(2RrXXy<7z{}D7;l8P{NlUTljk| zp%m&XEC#h;n8&y@CO0pRkx2i6yyiONBfg1LG*Uj!1Gh#K#ZLaR(}k*Ywcr(($>ljj(Q=+>PLc zcRl#~*LKQViUHhQFH%Cq%^=W#(5Lx)Chlx8DPSSEpxi)ebu42#f96KTD|43^?&<6y z4q8nh1ATvcATa~6FfWe?^`q$sjQA2PfG?f8FS)pIDu%>5+SXvsvAG*3Q0) zTJg(JWuC7lCjP^E+P|Hn_k>&@Dc7OiSCEKe^8i#>-8R4yZqx!%=SIC?zE7-mwhHrX zU^M=DZ*@Q7cbIl{`(1;JuuJ=zTew1-sC`HNp{`5qP?J4ndT-ThmwVzoL#7lqFE?pb zZmZ15LWW`I6A}RrIV1zNr22`DElnG4X;XP{aZoj&S-IIvY)S{LBJfjwSyxmRxvVP} zb^-W&eJ1-a6!0-RMpTENIM4Tx<|+F?=wH@GeJ4^xi>>a5Odvr&P{XCZ6V#$ zPz5U9i~qX#gW_H#sTH~~QxDY~L?@^aI<~p54yJlv_Qf*5JXYb!+R-3K*n0A}paN>+ z%?oD6zkYb@H+@SOO;nx@|C_?s>|l2IgU`p+?LN|>d6iT5m4T*+s_4eK8)eS`To{0~ z?l$^vg|ekhTvD02EzsJBWa7J0ncOUC=j+9s1U`-H?&!~rM!4^tu-U|m(=RtJ2M-3# z?Z9Dt#C9iqwD5|&FBq!2-9^a1#OJR-!cH8Q2p5*~A6;K`zTl26W^?Tj7X(orlCxfQzC0x~?UUReW``6b~ z;n!zR!x0|%ZE!CRrjVQOg>RaQe zbr44-s}dw40ELmtyW)g&oPqtCd*D(p=`iMr=#&Pb^%9K?;{)Eb2{dtQ5;TLuN)-oHeS6xy@1OKUUC>1cKv4{wFX&_YBW7 zKUpOQAom0EhPlqf29KMJj{-H|^l1Etn%IEeXV9}&U~mRHhu9lin;T8Utbd$3)qXyB za4d*wAgRAFh_wk*d7$Y7PQ%B|JJ>O}x4%u^TpHCQo6XTNtz>v2Vtg(*nZCb<+{nef zP3(X#{OxU!w%N^#&wU3(mq;~!7axZFrU&T&-~d`=Zom0x4£YFuYA%e0Q#2bz6 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

{$&Y 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�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

(xt%`c;R!o$nt0CmVXFK3I$km(M>*keRxCHv2q z1?kN$3Egf>t%t^Iq4r@y1G6Y19mp*#;8qYtxQ{k(aXbOsU4828=??rBZp=p+lE&Ok z$hoc%TO1<$oDGDjX-FG(aeSPb!u7scFBd-`l!(DSF>ui}kgY4V!5u85DSDE5${(kb4eUWr-3o+i@f4l&F)j{8Zi@tJ_6i>5@t^+P9LVVk&lnVXY z)pB_dZP>N&+4?SDMS4Pt^Jk-qKEf|A7fU_W0e@oL+v`?hmG}!gR#bVd8S1uL%c$EX zaUIsm*g^}qdsD=Wz^eKMOSEbM$F2KuNHO2itByBA1{D zqd~LQJc4UiMBZ)2nPZngj)1$iO4&F(jno0fx3S+EfaFx-eZip4Pzcw6cU-<0cOM_& z11?N|Bh;uW-d2T~VYT*%Sd@mNRt)9nxh5gVH4m+ENT02t`yH{Ks)6tD{e_FL(PZ3$ z^Wm0;e;X7q)GBY^u%Onl6LvYO>qfS$m}T`RU>M+uDa1^V5;um5-d#3p6zpmWsqhae zpbxv>U*Y4#I;4X4nFOI(rf@o4gW`Dv0?^N3`FJHIV7JARHWzT4(=N`Cy8|U9i08vf zrrPA_3h5JKU!*nk^DZwK6u^1NY&yHWbX9s|tKa)a^+VS5MmC|6s23`#Qo{2e_rKkX4vCFGk2Qqb5bknS5I?s@#tCE^zv&r$tn) zzN)HC-aZ>sJJ{ta8y&r7iZo@k%u25}V;L255q5qo#d~|**%_QP)K#79A8&jp3l=u2E@FHuhY=Dpds*%eKgHuu1MkP0J4L)CG$J$M)c5Q zXQKHAeGJD_7lP|UGD#~f<=}dcJ1ms?5uc}24m}w--(M&8mea#uB3vpQbFV~TFqc^U zVPMlPLz&bU&__-dsj@+W8rAo>6Pok!Ftu$oyjQVdu+#A0a#rl)?Tm(e0Z0!KSXTG~ ztHAu0@4iD{q8#f9kD*+yC&P~*g18x4JuD?nK2$%j5PeSZE+FTxN1kFj;K#|BQq~Y} zB=r5D52*-1lo%sAMEheIZvs!DhX6rT;BDX@sE4T!*73@~ZaLxz<_CH+C>`y4-GMmD z{Wt;iHTSB<-0bLB!Mi60fb8-_9s!OPZ2oWM;(A^27^3~w zwiphw^B6)?c3bZ`F7Bke@AYq5c}KOzy^TJrD!lmob7kJ;HbIB?5JRDLP{r=6S;Y>y zKN`z-;D$7Wkm>#Rt^^zaw*LzS$Xhg@6sI#%Ttb%9s1F%6D#c*{5JXCW$FwT|hZ<#I z2j)bY@+QoPi4|=cmW~0yiyeH*uaAEvC8AUl_u7M5$Y0yeIx!hKQjMmhCMq|sW8V|FJ#>|Err56d)rfJuzBFT^Q?$Dx`CxfFR6)& zJvl1b!_*}i!ecrD{AQAf;4+#(Hjct_8b~4iXYT)Y3ZN9R3Ow35I$(m)JhgTrz~}y6 zp~EA;YQDh?g`%Ify&(Xc|0S#sVf=P}bM#v1UVAyXdGX77qXD4{EKE2hASfsl3&3+7 zs`43jS@a&FDAK?gV8%GcZNPx8Frd*A$;e*H6MT?5``y8y{M z2k;gWdGi@`(-qlyy##fw40XkN3#i^)`Sk1t?Ej&R+kyT36oWl|4gBmyr`j#V*Lh+J zBK$(Mzp-d3-^J~QBFY;3UCg{!8sSb&`tNZ0ZU1{{B~_o&%Dj65c*Rf^W(QPQZ_(s< z#qJxk^J;6(6933IUmot}IzpZ98lqeGN#n)pyQn4oO1Z{?4?lLK-tz&vbywisx?d!? zeu>YVc=->F3NdtO9VRRgP`2*B^X>m?l_ppQ2A_O-2==Ys{&&sT%EcWP2pH_)dtVEN z1_T6jsr|pVPi)B%<586LUMXX8ce>TGKQN_#nQYo3kM@du^Sd9)sC_|`xTpv05L^}ZA zF6EEAi;Lpyk^OZJ#DlZc%Bqtj{Yzh;m$NgSimH-tn=;Mib2UkV>%&2T?(D>fWYKyM z_M^M2FMr^+NtOVofPhzmPEpCO^2Shf_2@pz0E5sw3K>J@fhoO*B{_rBsEq!dMG^r?^Or69S>0m+ZeGf0!VK85qZVz*iA|>&&eK5`bhdLu&XCum`4DC18Uw>$6+RyZ;5 zOKWNsGX8_^?V74_xhuZ-X)$u;X_*1)=wK=3TM%`-f zI&J4YpH#`ASMpk6kdjG7V1U^bY%L`5l2a?Fj&8lW6c_%=Z&F%?<*M;BMk#^~CLi%Z zc4-hAwWW*-zWrSblg4g->ehWGmHHoXsf=z8pM1jxrZ!IBoeHxXXAHvi0rO9(KvL(3 zd-6lFPbo_BvIRsSqoANRKap0jkxq8TU4x%w$7RJX*sor$3>B!&i2=>aY!9?`i4dS0 zZ7ociCZ!aYx5szmlePA`=@?RjpLmgt-MPVcs6u3RiHJ=BfKS zn;yrMp-`V9hMW_fQ_9I{Xa&r82y#JV8U}!V zot&&|;q|{fU}KN9egGs(ND(3?+NPm%r-mA{{LCZwa+gbF?t2ScIoA#~eXg7}eih5h z(1>iboFp+^bJ+1N+|+34rW4%GoLX3_9Ebrt~YZrverZb{l~eZ56% zfJc$Z?wk&#_t@5#u24&6R2>9ZG;z@a!fg&g@S(O;k;*grus=!(!Tv^f&Is8jzme+e*QneN@r)i7#k-F1f2Z zXY@F78@c?>_1x8VBo~cYoxr!BF`7j;(O)L;>0U)|Ppp7B_-Om)UX>s2DJZO^yz-W; zG$?9W+6d%%&yOj$3BL>E_I#&A5Y!a4TE<{EYB0ukue*ux@KDE_qu8Pk5eyzo z=wwhKGLQiG&G#HYUl>BhCOPuLTykccZMhj(4k=Yed0CgNK>2tsFAu5Zo9o^B4ft!; zlIbrR?($Bu9h=6cO&a^nd3?YBjFnlU||MWbx4J_>h)79MIxkhyc)Rja1vUs`o zf+&YALhzv9L@C{M7?x=pS$Ufpvxh5n@CCV}t(6zbKWdbuZjvK_b2Z#Z7?Q{>z*r|0$l-0Ho zVVjo-dFDrT5>QA*4$7-F0?&d5&BODbLia8}q8plW{U=$?+3)Cc2`?R&xe(Xl?cews z$_0LSJUA-kk)Y_I&WCMizoF0zLNmK_VAv_3^fw{OyT>gaoo3t7CWi&x8e8(2okoriz!6*dyP3u%%oZ)Fv1Ep;gH|a_ zv>DR*l*h+0V>o7~hYTwUAY2F;@8>rMfMoPqJ%yU0DIEAUC_kEnKpqW+Rp+O!mLm>B z2EbfgOIH^0tfE#Mx4-U4Y%t%ol;U881&XK;hD5;FB!QB48_xYwn_XgswxkC!kfhK`o5tm{Z?R2TAK4*!sGo?# zN=Q(k6|#j4^5=uIE!WP6g5>=>H5u_jjK`p~B>NI9n49^s$3h>q*r!1thDkeCvu}LO z6?!mD@_LpLyJEet6v2CBHcOBf#*RlQ;(U4v;hC_>_oq&Z@rM?>3mSJIpmtbyfo0MX z;62nlm3w{2Z7o!*&pt7=0zR*fryKOc1Vl2@qj~RLpyzsg{n^lRd8@rWW8Hyac@Y5H zW~W!|t{Bf5L}xq$kp3%lOm%;$22*kWDYy zt>>r2&kc??ohu>wbIFgalbQ`(xiPWgj`0-y$(-*Z8Bb@8H}vteyv=WT`&;KJ`=)J4 zLM45CE1KeIrL)KOBGO;xD(9?0nT3di`>nm1lhJL=L$eN@!GZ&S0oHft4Bate7-F*L zuy=0Hzi4(Cb2p|G=k2KR$8aD@n0)`R;TcK`8AW2JDDElls1(@{9R1iue<8ClV^_Yt zMp`XJhYvcY^J+C3wBFaNj&{bJ|bDfo&E6?l+}|5O*{-}_2R1zJ6`EbzrC z%@#i^j(xQ(`1E@&0>r)|{MYJg^RHX&WAWcl-AI104)DO=60j+-z~6p;!QINox6G4W zvHsza+xrePyR`jpDM_BaX}%{l4|bjs6s#%VYAn(QGAVu)OKn)9xc$H3ljFZ)o^kbY zcDcPrf?xgUPsq*d4;YWXbT_Ttto}d$D;H4DQR zY1&31y_8Pu&8cybAtJrfcKO9U@&oa|3p8y}p>k#5fq-7)lBb11nUVqLASnOiXEy#% zr~RgH135^12N}UCzj<1+*SyrDTIBTw)1{0#H}*e83MOzypdZ& zhAo6~xL+T20CzW^ zdr=vDwWHXR&#QN#^Y``Bf4K9tS@Ne*fcR#iULBmhH<}TnqoWB-hS1n_!<6p6IY1G> zzHm3jK=?c}w>Zwc#z(s+Cwwdeojlxarrn3SwLw5x;LA9SmOb~&yO(KK^W^3VK;Imo zpZ{=xyqtvz;4)9MSFCuW3K83n!~Eg4QyP<%4gpnG6AqgSUu^qb7DI&n3E@i}co$n90cs zD*tu^KVDXodQcXXbkyx14$!7wI8}J8TWl`H^7^fHd&o=zai=3pdJO=iGa5COkG(wN z6yLkH&Hyvc5x;Mp2dUm)x36jt*{@$9zUJC|T=*Mqg0y!_c}%DVe0 zR$yD!sRS3*h%KiUZ06b@>}W|_eLD)6QhM;417JrNDn-E)n2G@qHfN|D_Xs?->H$7r z;J|!_9tW$QeC|l>#$!UFH!zyztS3LaQh)+`m4EeP5Rur+Pi=R2+<#ED#y>-CK#*GS zjezKauE`2H`0H$uk}XGgqaI7kJWN_9Yq>|QB_#D)!s+|HI4&JJ%mN=^Y-wW;u&Xdn zi%ao@(d-a0AMgR_11>8iN@`ZEQ)$E}kuo;2qJWd*t@!@1FCq^FFlbrMG{eT}tQ#(H ze8^_>!SaJQho(on2wmEBt3c95NQTd!6g3SxHDKl9TNy7eq^ey4MwUu;>9&lz;~TKT z`%pZdovQ@9wVHoR*!3pOfXw;%!xNcWLN6XNF0Kw&qLZV_-S zT!UoeA>p_Ti5dt_@Jw%5<@*KckGR1_y(FDDl}B5Ecp8L*L9)PHGk|3l(4NL>o*-VG z;;SL`sxv5arN6)~^Ot!ROkdZ7+5Xzr6wNkCV_5MrC!?%+rvl(j2%}<~luw1{*bUB{kGI z=f;~=Cn`_OzEkzHk>wnkOR=2W3*q>m@2nILuMnQ59@smm~I zd;s;t<*!Y1n-XsbtV<33s_-x}u9tdD)F25*i^svhXmv6RY7!L=A5cbvAhY2~V3b*^Bp=$z6&&-{8{9R#*B zazl($k5!8PZ=oyTi8``Eh&ooHq>ShloP*jl^M19XJ184=u_R_XrNdN;9tA1O?ZKzD zYn0MKG2Dx&9{sg|2OB!=wAFddQHh{&hedH5P1D?~jRqQI(e>pjW$S(oSZPA$Wmpkl zsOa>plxV975@It3=CGH~x)|q1b3j9HM6ORu=trf(KaNfyuZfao={b0TYjrf@ZxLK< z3M!#uGQHFi=t-i^lXQ%m;mB1hVrn`B9aTQVvQjG3 zxVr|Ss$S)Oi_MY*Z1*B6#~Ug$&vpn1EgW+{v$x-DhKy7eMYIM1$)@$sKdgu74aVX4 z)f`fjsPOw4bIFjZj7?p0?ZB*GPmhh)A@cl&VM|`<$f6Ru(oz(${#3|xEj=I-7NzNc zsohjF$_m|Dzo6HZWKb^IFXN|4t0AFDACBv77G*jvkCx@HJ@mc_N7Ens8><2U2D`IW zGJG4g7k$QfisDlVv#bKojhavSEZC=A7T4C7l2X!oX!jwK*{B$YY1)!Qyt)xo>JH-Kk>sCi;-%dh$t2O>Por;@~IX(s6XG zNvE=EkLxAswho^96mCVEf_<=#*DmPQN=}}Jt)<-Mm>ITI*J{?fFzr)-1KmyN`)Sm< zFD?=Q-WAB=1uzRaLf&eX`$X>67>&*r3%o`s#8z`kYUA zep6Xu#ITOVW7w=4LwVLx7?Iba;(1%+yf%+q3(b_NtCh>Fh#*rph2rs@R+nr*_Ay-0ATP3YsUe@-CP;EjRBnz(lU)1^vwI*``xnS?Ip16kuN;>AK%w z>2hWgOEkSIu{w^AuUj}NH685y2!Y9BQrMYrWcjccW4%eTeN4+*HY@80=t?L{uVu$y zz*w*}A%2`f;~nLd^Un5zr8Dd7Xn>WFl7O8LmLQjan57&5Ogx@1;LjCUyH)Wx37_+w zG4jj_e-*sp%!L$uA_%V`%iy^xMmy=TcWIF5HIIj;7zfF|1f(PQxAwVZy_JYoop@!p zcey!D7!}W7q%{7>f6Kg~1Ep-#N;__v9DmMJ*R~QvX+@7T+amVi1=}p)yTmN3>>X9!udIZt}@SUz^U8Q`q^-MxE5sL7V25E*O{*-Pe6|`OKXajA?$G+?x=;4eIltos z@*Vn<1%(I(DdosrLDz(ffX8g-GfpL<0ZIi13p|zy!0u7OlYTTN%`5?T{9R4KtHU1b z26_t{*bnlHQQAp6V)4I4kOsQZtPIndNrMjhJ-Jz%j-PaXS$m_;aR zle`T9Y@f==FC*4=Ai=Lfs8)Q0HsbpWCwtX|HTuOFTTQ4+D6)2uUYz*G2}%XzY*2aO z2t#-G8NKmBqWf=dzr3G0;ebPlcNoF&Li`Z%K@jGN4Y|o=LxWCZ81YexMEWd-0mcoa z5gOi$`{;%v#Bf|e#G#A_NFjJ#N#8*xQV{^PEA2E$U?ZgmwyoDk11XQ@oqVCXg!IBU zmCcm0%B_65M%-b~u2-HS0XFRDisf@}VTi!kKDsX0=8H(psrsh5RM?BNAynl5=Lzud z-#rV=6VQA0eVi_Q+F7q&&H|oYZ?dw{xs4yASB%z|Ke*QSn%!nkb3j3?K2d%GcsoEZ zZZNV5+8V1Amp{FK5I95V3Z9KKkfW~!4Bxs9H^N#8TXQyqi2VEX%+?svZyqiz!`)CI zBJsuxx+Q!Um0NNOQ*Nk=EWf>7 z=hz_dgu*cO1%^qi-cYCL-^cd%_6+@BMGYvR^3*R~v`+rvs&7bZf@LyO0WeeYTOJYI z|2?Gjkh9TiRBrzp((3sSq_yc^kXFtA4Qag)xj?=87o?R;>|c=93>2wN_?+2pLW2$x zJ|^QnNjA#Oe~6=%OZw2LyQ+?c&c%zK4}dUU?^kz;sjQWo2>F-Qi=W5u7hJ05s@7(I zv0c0oE92v7rV*RNPhHJ2_<*=K$vSy+kqplp;W10L#}* zD);Q)BC(h1e~ZLaBQkLwZAM6={gUC1!8k`X*eR=Bcr&F#hJ_cn+QjPYL>y zs?%`ik_rh+5)=k7rNrA6;{e3m}v*l4rDV!&b}L>BzT)!$CVN3ju8r7!ka zN?HvY)rVLONk>0XfFpv*&Ae1;;F>_7oc+h8zxP{1)CQe3hM}1EO3<*UKAPIv0t8my zfL4};MzL=|E7zx}ZxiR^L}O`eLe=yvQMwUnj1o`P8yDra-6_I1#7nNNcj?mT8i#{M z1y+8tb>_~jdLd8^Xjz}Z5~!+DBRV+fU{)!wcHB<|w07@L`fVSu6`WnBoY2tV&`Gs- zTTW=oh`20Q6#qL|nHr7_Zx)~T6L)w1< zTGRglw5ojbSpka*ncSEgL!v4S&P$_|NYojW_IBJv8+SU<;+CZ3`<4t97{9=AM1#GB zNwBuW+ho(=75#TvlEm8<+pjFF^L`rE%NSPc*@#`xKsoX+8$=`(nZ3(}hu z=mSUnni`$21*tZC2$^>S`_8e8`D*i(E=rY^u)i1CmjM3YzU%AYG*nm#?Fbzm>vqhF z_oDfdS7URYdgV=53gsa-ND=*Q?203$zfy(Eet2obk}ea*II7c2N6SF|{D=hKiMZiw zd5~OFnz}9~9?Gq5*ljfk0SU}9tY%^lP0B$w%VphhQTQI&`37-hH-N2#}a)d~Uf84|rF5%maz>fE#NCE47RRq~s&sRK)=|e> zC|B5UY4cPiOpN#xBg;-1=?)F0?Y5eU|r z*>|cwnHg542(ca1S6xNX&|4O&4(g9C{U$|HEw{c~eSjgCF~ea&-T37**27zCR7OJLe6jk62>lx_rm#Y8^bPn((H3kg^+>mI3 zQ$Xl(4Zz5(C-`sa^W9EM{YIbsfUBy-ip6Xki#nMsGqZ(l2nrpv!tk7cg{@|@@C}|* z+CT!eLK{F9r&Z)5TVk4384{Mu;WM75{awk1{ezE3#%Cg|tFINO*AeMojIqdHlpA8;uY}*?o>OaEb#Z3 z87&!c-TKHe*}QJ5AXh6qwAeB};XYT^%Y~{~vy}ZIplN`rDQNt;&vix^H|() zaCK9~R3plp3;ze%H^p`Mo8lVxa50DS*oPA_YWhua#r$CSk*bDiCIf5%xL;9O+u*yf zZl%>PCt(=Mmg_@s6!-3vi{$@a`*l+$T*-Pbr||8Pm-r&33PDuqcMjM4T!Kv+voI4T zyP>wPG$Sjk`X@XY)vyi6i&N;BCrH{kcN)0Kbyv1WRE1&sz>+WBK`g~n=+QvsZMiuy zxHU*k)=QyOtasJXYsjnzMpB&9VxGGqT;3*9O2JoWKO1AcUSEkH}$B zScwyZtm39%a3n@6y|mIP$~j#zy(h8Z4$-v%t)OhuoRm)iLy99*pYRFNl@^je4T#a4 zOJ5`n==(20C(At?^W2>_w+|$di$Xa`9Btj(px&Z}!(BVB@*ldG6A?6p;XX9v>?@%ak8&eXmP%uXXDL8*>J z#M_SjcoM{V^rhPY^sL;3ce&I|zXA}6UO#nyg9hm6Y^`vP2=($K2sWQLJ$lI2+U_?! zlBXm)pv*;BcP*6j3lLQEEscwZ_QxW+Uo~+cSxfXB25&}jOUqhzhk^_{8+paFTkt$Q z30xqpW;a!MtU1=SJ1`u;?9&%34gb+3JO~*4G`Qi@$KHJXZiK|ZA&2NY(lXVV^pzez zLg)xM1`5SrCtm;AKFr}vAcfO~=HLYpIA=H@kB?G0U30{YN%x=C>QDA_F0#`ix@0SewmVz1zKeZ3o!qg5;< z2>CiXr>u?5FR&9M86PFyx)1Ew()g1$856r7ss-$STkzzLhMP1mIXLfPgX-=a*Ner@kytAOOAN(Om5P*X6sl*(V#zS6V7ylD3%qD{b}F zuMGg0oai=t{JG=tulaxC&1*QkE1Ruuvm*uk4{I}qM-x;1Wn(-zfaUGI=`<&o5_F!g zV_Xp}R-2sfymCuIA|5mu)O(hFe(Ekr#f|W_@cI%u-A=eLRfd@snBX_O1kb@xN`xxTu z1-~yZ#FR!7SesTy3dREQuNV16|1lJV#>J1w&;77u2E{aaO)BIy3y}fF z)YbRULscY8J?J~>xko@WeD!4vc?IC)bC0|GEW)I@bW9a6yU;fnT82qQZW{hw;NiwO zfE{!8aXyeU4Wa&Gl`W!VgonmKVWoB7?eB1iGCT9oDbOM+(8c|RHdP0#8|0|ksra#R zgnMZ%Db|e8T~5!^8Ik-ls3KCC%HJ*VAsH%_Ye_lIvuA+BF;fPvb5}|#(g&mh2XE79 zNYaj^{J{i{_&IZeV#X`BgVPXO=5Xwgonqjm8|UpXy@h{KscS}s6Eqtt1!Pb1ujv^WEQEZJS(nb zysBV=tAfUA=xmCH>g3F+Vo2zkHrK`VTFYowR;&wOQex^efL^5V;siSmMht#MT88bF zQSc(5>Crv@(%NIxz6(%mU@H0g0n3V8DPOsIg6F26j4-R1ZA6>Ap7m!ma4PhLB|y+N zrTRqw^WZt=LKK9LHkLKK?nqPX?{=-Ky$b4rb3fztiL)ZX7J0BHi@WVr+O&Ke0&sQ1 zv(h9agpb zh8Wu@DwpWr{N69ONfGD<&J`C>d^PZZ&nj*iQN2R>Dkbu zXzU~LBlMHh<3?GC9bA?>B};p}+9%dYS)0rGhEsRh2RK`y>`7vsRT)X*79rkyun8W8 z_F!oxJ{}%`P+uImbF!e7AuB$N>gNxc(v*0{IN?+*?BA*(WP33-7&@tOQKucgpT|}o z9iERam(MA76$9K-`1sS7F@v>z$BpqmE7-b(TprX-rD(h0a<84czvXSQGOMN(#PZ~| z;K?t8?9|$F{>)oBXOGy^WNzJ$1tEl*FK3d@nORqSzj{S{d}t!q&rgC-B1Pn~njgai ze2V*?P~&>P_2(5g2ccFf1t6hi+{lYGwsyhL<)lp6F|q8koJ@2%&8(CQHZI!v7@PDa zvbj;Fk@PG-;Ciy8dV;ZQ16REl9^?`W607`Zg>1~ILzH^)l*9bNQz_CIo@iSo-dP;FjoSI-c&Bgd7> zUr^aLcGyv)q7f;$W5o-khc6vK2qK7`;d1u@4s7(}xRh%}@qvMcWvD2KsTru&p4Y4E z2-d89r$yWy$1EM?&%={rVuM8?w?j`)Y@P^5%y5?!r>Sp`iZxFV2A71U_B?ly-sw~^|BJA9j;<`+^0i~LV%xT@if!9A zcWm3X?TRb5E2!9ZQqfJFbNcH(eQ)LAY1;Qwh+jVzj$Rlc!)wVGUd3>}IXDE_CSp~LnS@8ZwIs>Ixf7LR* z%7O)Xr4*n?pJQ$vsJ~|dm90FJi}DtJU@ONa<4@wu3r?+Z!LeF+T31BC^ocZ~fi}~u z015c@ZGQ7bK7YmQ;u;_E%7-)lUbotw1Z$d%&lm@HjaIT*(z@hXB}fJ%%F_>Ye-?_J z!6exSE(!VQ8za{U)Q#kH$qgy4QMlRoYVxiP7r6I!4|R&PblAhG<_|pqVX)b^QASd) z5GrZgRm^%A`RfJw(TwtMCc{>s@mlVIa~**E@n0(sQZWzVi%KPNl=C|ci3o(IW=6Q| z>W4NpGLm-m%l4Y14*_FQw(U&C^i`|uAsV8bp`72?T?;^`q4yYE&<$m7H3wXkOkFVt zuwQbX2m4H*o;$$lb{xl0b<{(-cqFHs+~|Vq z;>^N-x)BW)eR}@B)c+(Xwy7^2S6eNR+v;-5;IwLO*bp{&$TKje(j5}@?M(#8mnN<= z$v?jE_x6>(S5sQ=hBrj4_wXAKCL3#Oq5`2owK|osYK&R6D<$BR>(B**gDH%R=?Hg5 z4M{`upM3;-s>~S683(ZJ%bCz><9IKZ6p@*E=%X12+}`%l)QZJv9q3lj1rew zY{#_QkC~YL3HnsNd4vrRNbNr~mnhi3zpH!BH9V@nJXvnN9796TezTHlCez*n#Tuk? zY9|#;5jup~CFdnuoxC{iSo2xPP>0>W8@-pf&~rZy$ydA4w|gt={c!_%;o4Ob3V17Y z{dK>$Nt7(e11kTEw>?7kW$ybbM>?xHoXpKWxljvD)K;xHm0v6%I&)^?Zu4Yi*~rjf z-yJHjM{mtnZ@}#A#n?&9UFYtKp8!O8P;XAqnssKTnXTx@hVDzGE@9iE7qhD#7l`A#3M{f7d zJbyay-bvTyey~XZPRMaf#94a5M{bydlo-v?Z=NAfqlFdp^lVHzD&5ra9a^{*E?pyv z9_+Mtj28D=c7smXQoVj!or`xpJoI=kU4t#7kKYB-Is2)8j+Ys%Y*`^awbh@3Ccc$& zApG<_HdaUIJ*+H<|5MNvdSShyWd3~3-fn?~g?CXuRu>ikh@1k6A4-+priM`rB zyldV)y!2AP3ku8?T^(;G(uDVpnf$5lk zJL!>Ff&Sw72C$^9lmn-zEP+5>YxmQJ+3N&C#)Owbw-@{qS)S8IGiqfkY>pLwa_DJg%SGaDJq-Z3 zbFTaKXZh?AdZkhXrGCbS`t?(7?2iO2-DR>WfUT3GF&Wk$5iGT_T1m%oO3v?PyulOz zQ8)MW0>C@>qHmm0?OMn0v0#%w=4UWpPB3$JoH+3~lj1FvQXF}su#7ZENcWgdVmOAw zAx7Bke(`N=3PvqY5oXJhyd?brul#AxPHW&>a|Y6|u*zflVYa!otE+Hk3b^;;wSc$h zF4}=^(QD}}+VOB$xM=N~kv~3d+}u%qopCH$&>w!5gpTz)V$NG5xW}$Bw7htbwZ8V+ zXg_Dy%6X_;MtpztUwO&f{B7a0)OBKqZ-Z{%6TQaJ;CN+r-=#zOd3m#gn7Z}}|Lb{E++UETEzW<=I2gWx{?8^|?XOi2_P?}1H}bS0l6A?_vJFi94D7Kw19p$pSSY|YNc~28@4b1gU=By8*{wlw}SrH z=`qQ;+#Oy$?bHoSjpwp32gJmVKL1;tjt%rBRP_Et`)&6 zV{&1_lY4M;=dw(sg|?0w)-*pYi}g`b4>%cwdY_6X+pm#P;Ac zZrN{N`d!W#09@IoS*fS#0ne)*rJY9~v7H4`zt{mbi4vs-N@Cz7P@@5Y9E1#GqETth zi$09yXtW)0SzWsBC^(mAXiFgrw^InkWXy4KSB?1GsPI5Y$j!pqEgID;23UcOIe(j*}(bP%#&X4Y(~% znRagtz@%Dnovom08Wfk9k!Z;bRn;LdyGB^%U>XtLZzy^xJn^BxTFxHnzYUw6T@J?~ zFSkt=$?BH|`Du}XS{P!$MavJJwsv+zhcu;c8;l1X3GH1g{Z^O#O~fR!etHFDtxlx4 z?;5-|zvkCeZY#uZsoy1a13C&3@yKK7AaoQ&0J|R+6M~6&Vec7D`@0YY+=8fxORee5 zf0k*qf&0lGd`_=Mp(T`CrFuSyq_yQ$`!4-5RS1P3Sin8GRg=3l@;F4~XB8Nn88#I} zgbTJ{b#NL6B_k-@0>l>4T3R)m4gsARTe+n^b3s)EF43Lvt9%lP3MMOF5?~JI>7YrEIG_n{P0##LC^GO#F{lBzHu{gnMoAKhpharLWR?w~0rbFD6M zEYp>+OA^Gxjz&Ji=kTA!pa;kU zw=j0%C#&7T8&1`U?<=urGSy^lGtPJasCnl(B4bXPW!1@``Xj_7dH5IIAqm@$J5~B; zTHj=<9Dj=R%^;;B!C<*Yz2~Z3q4v}%@L#a14cN6RU6_82i4C22>w(FGb0&iw0)2H^ zQ_p(79#|6y0gMw^H|bf}-hP1kEy3cOA+?s1HIiWC2E7(?o+{a&Vn!#i_Z{jYCDg6@ z*Y@JRFXNY^p%opf%&(i!HhSjIUZ*DP+Qs?^P1`*`*auL3nm#-2puPN-SxSfFd{pIaXD?TjqsgwmfL<&}uv?*~Qy< z=u}v9p3YMYe+2^0PA8dPlczAU&?>GxBv$647t!T8$So{|YgmdrHkM&@7xf1Mc&*JS zNp42-ax!ZXk~~b76y$)5q2iqM|E!LES{uzz^R8t`@Z4FXdv5sPUb5WJMk#-G<@jun zC72k-3WiPdJ8A9($G$%Hx{cq)W&%tkP;U`5DSJ#pYq|o@uZ9__gE|?ZB#~TwblXeW zg)1Q|i`Iw)et6}*J19Yaa#%nkO61t}{zZOR(ILMGff+ zPl?i0KDAOM>^GzGM#z?`G%0%B`8$A{v0sv(!L7B=7ExqIXN{WHHlA)qY}4cj(g(Lp zi0y~&gcAqzjB@QJT0@E>1o*QKK;^*s5U`Y>Tf%VCC2%x=g5yMRsyao1Qs|Z9vTV}N zM3^z(Q`{<;G1kHu@OF64YkmT7hyn!|TvW{Lk$`J6=fswd9cOaQ@H{2FeD>oak2vq|NBSmTtrc`Go7U6y#RwH{d|3JG?-*FB<(hTM z3=h1u*Rum66oC^1Wh#!6#8OJ|aeVaj9r{K1M_@$_q^xWQYNM-=ciBt+*xveZA)O@lKS3x3veNk&G%{x5p!P_M&bu zdmG5rZA!n7-1V)0?>eanD)oSycj4^6jx4bcB~|KEEM)u}nrg4Hp`)H5|fXe~PsE z8gCgcs+rsXMc6t5`=E4P)y1ruCkB$?C)p7!w?mreaKgGeNTZP;rJNi}G735kGbJLH z^ z&nG%P*#!bwPM?B|J3R_ubz%nJfLqS!?pM`{wAeL>JLi!yBC{bptS`#Y-S(%leS)dI z_2(b>MI4nU@TZ^BOTdf(u;#gvr}N|e{>A#~c|R;#J6pUH2fPW#tB6xPQ7l#;az2r& zPB0W0^C!}3j-XBiVLo!6bKN$93B6LTSd&inCeVATm}-T3Vk%1%Sz-o^<$B~7M;jF)wn``=2F}wX>b%6I^QD^r(MLvGV}Rm z2CA`!kS&Em%!rX`Ww0mULGeA~#f)5$zkR5BA8T!DxU+Zy!u2g}d8%h>m=K;MD=$A4 z4JrjfO9<+x1q=XSd?}><$0wqinIiobSJ}M8+`+fF+`Jr>h-uc)D2Z+E`1uqfS#r$G z6GAXj<6VSf5|v(L)fO0*HEYVvy0@iEcWdjn^^UT=D*DHoeKU(Z(v&K>H)a#PHwsqS z7NGSj6 z7a<0WYi|1JpN91pg)JGQqQ{UiI{b%Wy_VnA?C!4*%R<(l`5nsEt?uhnj||e)cSji` zzo+gqzsuxyg4x)p0d$A+IzguYaAOz@J)j-UIpL3#?n*k-Hk5tiq1#%tL;>vRI0@Db zGb2DclMAQ;^iSHaEh0NHieZjs*GoD#EiSGuFD_Pa)_IoBEz4rcszbA42$+%ct~5*9 z4i!u$K*?mR0-RT)*;Tong7mPXg@0+lt77^H6w+`{ptKs}J|I)zVzywZ-gB7fRl{iJ zp;e=OceBu2u-jp?zR)UKUbQouaIL!B)GkDrnWkO@@Cb07cAwyOFh39p%#%l%!UW;9 z{?zJmu`lM@ytO_r$d;@ojvo$$TqQ_Tu{)dIX0BUmz_!pH&`r@h_UmaW(L9dN{k4_t z?j2|05NjhvXLhNqg_|uQ8@J$FAJBrRB%;ACOraEXGyD{&o$1Zy{f=p_eD%Hw`xPclG#zCldoe>h~!EnTxNy;+g zIdeOE6I^(^$Z?4BdgL{b>omsge$zUzoO)&{c}(|Cs@Xbd@e|K1$Yo1@%HCNXMNDjMj42`|L!RW>7ol zbQg0l#3_A<0OAVbr0tq=ctX8o9xCs*k#=mpciZcN4tW*+G-uZA(9bFRGnci*qN4Vy zzw!PK`tN@{*Y-1aZC?SuGRuEWdg#;iN(f>8m&xwMzl+$vGJbzW?5k84+zk_rP1-GN zWFn-bhQh$uK*=?WxPNCoN0OyDgj7nzV(;YG407y}`M~!8fd6%*%TV%{hdsKPXMe%9 z=!V6RIQu(&v>h9Eon8W9Brfe~|2*Ph<~TS{cB^H2CRfB&yv0mBPtlJ%79WR#!uHk2 zY2G6l^WnkoKzX4L$d$tAghgYro%;PD1hNlfHKeNcjnfPApJG%2vVGz<`9c#kE zfT3Q2jVX$?Os7Y%ce{#0W3%-6E1a_Zx!HmbimV5(0Mt;Y0s_Doz%MEzlMPxma@vmw z@b(1Qmtu0WT5Tc%#TU|_&qF?z>}kaEtl1kAr7jxdjD^b+jh3-QWqF4#vC&j$t2lmBS>ZILVFlJ9c7# z3L}K`;srpZ==ite9_(~)@_bO}Pi5pp!bHb#-r3b9{!MDG10v;%f0)<SQ0YiQrxlD9EFW z<#V>BrYt#gwyn=H63JKOs(sBavImHD2Bm7J)Xuqft-fj*ntpkKxlpvwAEo#;AROKw zA|VXcydE@G9a%DQ1VaXDNKnr?F`_@lDefM(5r4%~trWrL`L{>~ z#g6RpGio3}aoE5`zCPZ+U97j+Ywhdp(p(2e=a(clsKEIK5U%#I*?;?HEe`O5F)Atf zQ=w`axL$5y6(Yy;f~gbIv_GW^8NU9pT$r$?Fy=82Jt3(B3YkDe(0~kQ&!;Os#a-Ta zO(o5@X;snHiuSvf@Ep8NUAA@T2@Q%Xt4dLPz0~M$(65W?=5Nq%2n^+QdhRReS7o>q zx!?+~23DE)-0Y=P6{L~?uzfDIE|0K2*I#EZ*E|UB3!L0?{t(9jSAGuZHZv%`ir{a9 ziC_oXnzk3!S3+xK#5l+-Ht@NAQb+f{>Gx*bD`-}kAs{FElhbNh%4!?+4--2)AzP=J zGP;oS&-hWkFBAJK#y?E#8H@A(VPco{?7PJLYhni&V|Z@zP*90iM4-bz+I)(3UwD&=i#lI@lhLW}!noaE z0<{R3tX-mG#@khr`C1qfTbNYBk+4b#lf&fHe$tl{=Y8ErANUExiVKl7<0y1+E7jE( zMFt^IUTz(8IkmwvMu`s_4P=qK>|}Tw?`#ncUen!H6Jswz9u_GlULJZKqj<||WW}_; z@Ej3c3~?rW>q$}`!Ma>Tx$g9fC{1IZ{pA|aojhtO`Os~nDwfzf#I6_4C6ht_9dfdX zcu9CBgLTx0;?XI9b1r%*p*yGK+eCv8m6k1Pc{a#oN(cF(B2frhFCE={dLr2$2uj+K zRNk@`(_3MqPGh-DSu*pX6w+VaF;Sy;7DtK78n|3!7Xa6>tKxUMe^}eQ+kaA|(Exn? zzhRrRPDp$%W!K09!}uJ;$JOSi(zIW?S82gm&TF+uD`r{cL?-dE>s2>YT7l;rVsmUm zs+x8Rx%wk(Ku%-0&Ao=GF-r2aF+bYmUQXbGe*=w3F+LaHN)(TCASujVIg!R;w3J1^z<0n{lvkz9$?_Q!_H%r}$3(Y=+0Oct1e- z%x>3E)IZtAj>7lM-8~OKtES#-?Njv7m~<}q)7^*YnyugO^3|RQ!v=Q@#)s8F3~&{_ z4{lIEq1;$yfiT{jwE zwT9X6oDDW0;9=8QWOhk?!siJoU{34RdiK751$S*2R^q!q5{sw5YF&vwpr1Bjlaa;3 zc#>amqBa-7da4wbV^XfE`eqxcOpBhD5OyILHu-u&Q&Guff}(HR#l0YPzw+xoDY}U9 z>b1V0q`FMK)sUiEFi$5~HVxo5_a2z6>1ouu@6Z0k2RpDCq=T_=+roTX`1xz-!eAym zuA^f6h|O=JV@!q^y3qX+=?Cjo1w1vGgEO$?7Wya+Sk*(df#Q2q-(~Et)l=TdYDfb* zBl{PmCb8fQ2@J@J)UaUK*BBYnU_v;Dj3JbImH~$X%=^XC5aR;Jr9ePO%{Pt~^g`9$ zs>-t&xa2jR1oB!MYKy(tlL*wzlc#+=+I$>H1rovcPY#b`sCW`mJSOIhD9PwaC`^x` z`Vhrr#u9&DqM$jFqaBE^#Gi!vUoEI`BoZ{m+IRB z>4N)@JM9RA1zCZ*k@s%Ezpf}Z)(`cJ9YgFXJeyvCEE*7CI-W+BK$F* ziV;6QUSaQQ$T);BTmpwOTl@N@SfmM99xB&l%6Y#w;8@GJN5Z3dx5`t%YHP!mzNRza zz~E?CZ`5&E_Ysg6i&Dftnh^O8yyeZ$-}&ITttXd*@1yOQlSKQ;;TztxI%Ao1m&=J<^G$9R3RJXzT(2R!{ek;}3f3lYp@n-` z4mdafwnKFA_Fo6xz~6oZYJ+U&>$~_bCBXkxlR$7VpM5kin87WZjpg^U==x}EV0nzL z7KeJB|473v7ymg@j6;4KcR6(wGixKk+!231O&vqOq3S<@GqC13eG+0BA+=3>3u?U1 z#3ljn{5moDW@`4q+yv^+KLXS7{I5$EKt@LIm=@0ieAp<-X1K% z*0A1D{{1A#!$jP`{}uF06958YOJgnm%KYR{0wbr{(||(#kHH`9tFM&bx6j-%!Zik4 zLY~$$R=})wzU|uPMvE-F9K$LPEv{CfE&I0$GODuQgTSvyPjF8LucRCzN{zVE5xb>f z=+}^ge^|1yrr*9Jn3s?2gR-nB=_ZiWif|cQ^|ZJOriUwi4MqSLf0Yws2Pb3O+2=Y< za|p68)72}Nmz31xG8dvY!y?N{*CVwIZLMwk@;BgIjWc5zzH;q^b&bzf-ri?QrGFPe zIAiG%#}1Iv5duzTZ*b^ua7vZ3CTi$r7G$s-8N%5Y8HqAp2tiO~WMKWG!;Tq# zcE?}Sz3u5thQ*nPp7&SWh`-mJCv3uIPuAa`>wnY0LNb&t%JfHxJ2Jhb*x1v|0KC^b zuQ)O@@j<5L6aCz6S2J038i#?F+ax8c7gL@+!Y}X33DdXqC zUZDmafIF-!HFIbuQFvQ_m=Rm3jZlPdZRj&@Zl+ z^U-hMd}_1(k|Geef>Jq4=1dOYCne-OK+a)BgJe+WEn$ld(R|%Y{L@{v-R`b9`)Y$|6!4yMEiF?X6;7CSNtTyQ= zfY;Um;GP~D=@>rOIWE1RSa%(qZ2rwfN&j;<1uzbLJQw$z1iT=x>gOe(cl}gG1DNVg zXW-6V6@=x@FZ?`*rrMdFktI>e?6oOsKjZQebvLP?P&r9|Kz`0o1M#6l6#q%KoZjA~ zD2nbJZBmr+pLn3ePl*)tIOG{|vq_v20Fp7$FLPZAPV1jMavVyz$SHcXkU*a@mMvt)6u`8)4`7Q1Or$Y}f`erYrgy094y< zh4Nc4I}|H~v8aZ`vHID)uw_^h={DeCI3Q7Y#nFYv*v(D5PXl|vXa0ikWB0*T?$vb+Bm|7ctN|n;jq;l%rtcKh z{8|(0GSc_pux7&G_2Cfh0Tq{@fCgCM_xbY^d-fVla68M)7)uN0pDHbjPh>FX<`IaT zMEVT|_A{vQzqX0Tjjx~JT9Mh@w82gziUv~Eh4rG^aE*^pRTv#YUIV2d03urHk>f-B zKKh*b)jyi(kAk5+oJpjZTl<7W-x{+?FG|}yLK3p2Nr8T?9q(r02{KjAdbv? znQ??t0{mq1E~&c+5=o>{@L_hyt6Qcr493quZaOnh>v*f~4}XL(KHgWI0#2~G{cQ-I zeJT*Rae(D`o7h;fRv!^dWRX|u3ZTz5hBa~5Ima*k-_i36i-&0m2J*=@Fz8t!4M#F(SOJLjjUloxs{3I*L+ zw&kJg$H^Rt_AJPm52e5Y2XTC1rKtvnrR^Dz5x6(2XGX^+vLu2NfLBa^X?w4UA6_+| zTum>3uBf`oGx|gHjqPqE)KVaEJt85-er9LL)79Q)3JSDngPebxGQKX0`Pi1+-!r~0 zHYf=AjU{==OjB6w7UITTEX-4>K|eWivHQdu4Xr|EfI-B@b3LKQ6sLo7JtZLePU*LC{)2)rZ;MJc@(d zLW>}*p~&2e7H(-}f~^t3o`Di?ZC4tcYMPjaN!Nxq7$=;jxh9Of=2CE-TzQ;H-L{_# zhbsX+TeM4FRwx_wmfR++y1%+=%@XnhMlU}?!QLNKTuV(N8en_Y(%esVt;>e-jPy$^ zeOET0X-C?T*(Ms@7tB=3O6w3q*#TD&$RBZsgzzLV>bssbg+9-wS}}xLFh&2yW4I6? zT`bwZ9xTlG94KCZxLs&`t~`fMfgT0b)<0+|(TEg2z_mG&xlCG$?Xs|%hw!ma+C~D% zUb)}UXpTNa4>0-@wR0kWV)ZP!>`1+aDum3}J|NaOAEp4pwv@TR{u0P8HjPo-bceht zlkS@K{CRR7N&*+={$)_?;c!DMWJ@KiJ9JEOn9+g0n#loqdJ4i@Cg|f3ntwP@*l=G) z)Br~02bmFjLBkSAs{pR^fPoEsWf$}~O*%)cNxJ5*X21ZtrOamZ%MronJ2hH_Ph1zJ zm30TMCs^LXX_d!R>gJR_`6$Mm0+`G^bXJN#%By=A9L6?E%|W(csk}tv8M8 zl2@zkZDc^099rxr5^g|L9o|lclEr+sWiGl1Y8d#@5cYISr`V{jgZ7Gf zh`>~|F+g2A@RR>q35NtLdqnFcAkr#ny`vUb4ZYhZKKXTX`e+qRe2_}wps%LIi=d=TQiEi=cTX6jFzMV4t-wVohTgi`Bf<9;_* zcUY`L!y7O#k2+a?VMLjr>C~3z1L8=DT^kt&KfjM1AE)<^g{3PB3Hy&-*Fmx)(V-H) z3BdP(Tj`J)TjA;wX7qO9o&+SJ8qQs8AYc^50&lLs>?2Lt$wEPGu0LSNk# zMBgZlXgDF(>TAPLQwvlC*pKAnAMp=hvJGDIszO5}b zKp+mfixM{-@=oBz*?0)4w_?Cl)Pl8smw?*Tc~@Xf$$7%0pDpr?5GD!NLm|A`yDk{< z^Wp+4vt%lu`Uh}?oh$y>53#WtZ_VGUgp1S32GEt5`kc&tSZy30Vu1W5;$Wh3%FC(a zE@H%8!?}-VC9w#%pv*wJBJ{`MPG-$NI4IcI|DPYg|FilZ#h#cX>@A6y!jD0D#zeh$ zt?O*|N&~~a$T*%KPdB!MN{J}mayS@q=^HT3nXgW>xcWAxm-Qb{~kcgLz zuZAWkSrcK`WyYOvCnd5|pzGWtU!>VfCw%l#@}5KwAJpwJghr(w!7nHfBXkcFWj!Ck zI2#J&5dwPw(Xa;)b}%2UJM&lfW026+;gh1x%-&lBeE&U(zjOj2bqEFt1SEy=uLdn? z+6Ox*2IPPEOHaE&Z~&7NwWc5fYahYlO~!!k2&_rEi2i< z{bDh>pvAP*amq%%rCOjBi&{JXY6n=*d$0%V3veyoaR+D@H}&@G1Kyy0*8-VVh67zr zpxDZp9HJ@$)B!aYIcil8oxq?6X~&LGr-`w}QY6SG-`)b=Jn;Ikg00S*6+74bFVUn~ z0$vq1Jr^q3c@g`S?bMOD9=*vBuxl0)e{077(u}9tL9g!^Bdcx5oRCED#(X4H4)wN7 ztuOL)XfU{UlI0gO#&M8isJG^Ao!m`BjKCagVtT#4a|c{OCjF8pVBpVl=@dZSNKSeb zjeJS`{hca6=J3tSxPHwL4>gBqJvD+yc(NUdalrc0RjWbyfR>T#Y2-~r!v=3twI~kr z)q>tc;Qo=I>D^zmqM8Gb1(`>P|7N%>dtlKdJOVfkSkLf0(3wu2sja&C-O*1yLH)b< z<6X9=JTgG5>@`AyuiiBuO!G}fWxSo#NJhCbJAEbK%0Cy2W=H8n?3R6Cf(@IZnn-M- z@w(Vc_CS=vL*56~COu+|IFqw&{;3_hMB{u*CA2t*i##f*`o|EhP{y*2-acvpY;e#U z>OJ=t5(74}Qk&G>eXDt^W$Uu#_l56PX|Gxrp)3G~H}H2ENtU4g>&J%=^b!Q=MbddQ z3`9n3S^7r1_ap;*$Ba7f2@qHr>wSU*kr)H<-1`es8eVfWEQ(l?YRTY=qQ0)|XcTc~ z(i`^A%sA>C^Lj*#y+#>_N+8c}NFK5D8n^_kw1`Z_80ACiZ#tb-rlQnFyfcib4m=0s z3S$6~?rI5OMR>9e6P1>PQ@5@bNIuIAk4a;>%?h2RvwG==(yLuec;DueA_|6#?TEVO zOrLlz{Vt>Zv~{b-G3|ZE+STWHgC>ebx<}>ug=p(|HjitcgZbR zbF@yfG`smot2i{Rd{HaKo~XGttH7$xwDx&~v-mX4eX+Wex&HI6Dg1Rt6`cU@>}djc zh2HQy>1vm^{V7#vg##6Prk4ni9nSNZ3sUR2{2jG*?4fw62Pv7@^_cfiW3<*DbBH%K zuDsF9?1pN56|^AHwM6gksJ}FvTqwEsVzGXL?+&@yvSjNw1`y?a*`(PN3gCc{8hvjp z*d=q(x|=0cH6-cbLjdNQ3ShVT{s$069_6rlMyR*RBpe1LY zTE2TodT7l)DxmqD;=BMyeoiS~vCH_Y1xN{-!INq8m8Tgj6l`X*cW`0EN84^`COY zbrhxzvyzRTwTp8bo^Q6!x+YHh@XksYLE=p>TJ8DZ2pH;_Q^SI3#QeBrL7KA;kh3Doq1CJL(wFmZ~F$nTDZuxcGH^(+1O@?4#Y~I^7 zM}0AG9Z6ZEi`?4389SW zJaT6YeppRoB>{ffjBZ3AK851|u-t?XxpAQYEs!PhF zNFyNa0>G$kAyLYu4A`KFhQ=b0=7-RRNzl3`3%Bm~g{n>J2v2QsWGJh``h{w-Pq=)~ zR9RSfB`@s~fFrb~-;SP=z$Mof80E{0wK9GLeh{)4I*4uf!wEg9Jsmp3Zn7pXQ>B_J zVjS4a6IRL4vw5E62i0$Sxe*POh(JY(J))$MiXV#O(S{3}4*(-9!+kwbCQd)ou^ky| z+LE}9jm^z1@1Cb~%cqwG`={%=u9ZK>OLsZ%r=;l-T{4dfhswWjur4OL;Cjdlm%Ap%5rGq2-};9|o5}k7)B3 zw*5XKMJt&vjs@UocADrNXjILUr?R}+57mdWfQ1i8*`ZXcpjnq!>J7MrP1B_;Cc@$X zuh~Xe&?C(}b;{o?E}LiUe>*^*>j|myo}i=9nSrB0*jyEJIQ5(kflt(3bpDwvGw3T^ zO~(g}hjA-ajCTwTJb)QItinm2QerH42(QPGOb*ZEpa?J^9bOwngi5C^4`ttG!rU!R zDFRs{hA0V^G1GFLYl`xAn;UdE5Q)cM3B#JLRZT+D+gDDiHARQ;BM=s+0soneJ&vf|ah?Uql6JmcHs-HgY;xqoS^3A; z#@)n0?q^+xd%$T6$x_pO0gk;%qI@_23^xRlQ!_s}O%Wj+|K87&l19UrDMPz@Rmc=| zus1f!DwYm1Db^8c&L}ukXSZ8n$=n4l=uCP(NU$W~H#L)y4@}k&qH z9X;ZrcAK)Hjc^*PE#wl~fhg^;^cswxx_IFVZc*Z5yqH zSA=7mF!n)db#wxJEYv%^1xK5N80hy$Uzo)~SDYKFSI>zVVu%$%X<)`U%~^WHt35v@ zVl*C#_jn?LVs)S`NYJ$Gr&XBQ2A@u?HCQW({(P2A}(;@BIZ3@1Oj~ zS0v(jBjac*yt9?v)E1Td%f`JV-)Z&BRRv#G)`tF4l>Q4u37YH3EB-5EVQcvpax3yb zHq*a?6*wKpJ$FD zH*WU5C9>dttVIVVi57k-_}*WEhiK+eSjeMQoSn$bWuU1+maX1p(xJ){VT*WbmaEkF zcL1k*cwF8_gDl(!=1uN7cTGnMIf^wIbLK_WXCi0&#n!#NT$X&JRLYAER9-uS-nWeY zAE3tq{m} zw@8dg9Q@gE9L()6EHu)UZKO=tfo#iarK6|6}7XRzY? zcYHiD>aVQ;wr!f+cB~@^g(8PD8yL4q4spQ2LN-1x2@cbN*L?xB=ogFDgBL5%|A1sC zR94V&D>t{-_w`XWY(w%5W`l^tqQZn2O+=p%>Ko@RJ5ht#ei@+}K&vv3+m*aMCbCrR zxH(C_PnA>pw~niS$Avu|c1KKdblH#k%%2qTgfROs5e6P-C(L%sLg1k@8mA{}SDi&Q zH*O_UdJf(XHZ(r^5eZEl5T?znYe)Rc8p!3; zy9=k1H3&+k4LcmZ01?>@gU_}3d^1%R5Ljja-7}6Ys>}|?ZDv4155=DiYSJ~J<{bT~ zf?{eDL!$8($+73{t2$bsy`Zc9Xo-0zzTUjhWB1O|oZDv96fDA) zBpy3+6hwwb;8Wpi=Bg6I1wu=TC32#y8~;sane?@YVfy=afEo$)Ge=g_4$x;lh@17m z#zqL98`E7yqTZ5}eL2=%TL@x_g5S(U4$OKJu^I!TW}=Xz*i&Fu=%GvE%VIxM+3s|) z&g`5D{;??Nouja4a>DPavWjm0NGx@weA0DI^4&Fzv~!cNz0OY<;sed3tZx```SFYo zF7#Ngmg5nz0J>@`NtGw+Q*9j2Bpwv3pC|zcI5lI~*fRJ^VDPnF$}X`nI~GIx-{(#+ zTOiiHNS(%|=t(RwvL>`_n4paer#2!6^$3ERw{yuQ##Xx;xr zBWc|CEtO*mhl63y5(KGrDXjC}P=cU=g0eS!gByTei;0FeY3^u(k%99)KvJf#6@kzK zJPZj?(5taxkhc#vN=&mP;u)r^0#sMf>md;*EU8eVFji+tU(kdl+(cZ;6_F&48wBr> zG)6?_v0&K(xTE-*2wT@o2+PiC(MV}vwmS<=3h-O0hE7L=EX7S%sZ6GV`r|VwhKCyI zN(0|T19S<#Lp?Sq4~o%|=!#u6C}UPSy;N}k;{1Ax>6bN5!#=vhE6_F{0htXOKQpTL zEy_E0cPzEuQEe!b^mIq5%qwNZa%3IHTQ->$>hZ+mJq3KJRDT59>{i*Tn`=dUaA)}? zI-;Wc5`5E|_Hwg?_BMpq*eAB>Y>xWC*q^LKX(EGc?zqxi{X!$18EN&XiR(QIWVPd+ zW8FY=u-(1|+k$gsTzm)V1LW`k(NB3}2T6f*>wxsM{oIu5x8kGGQ2As==rU$+t%HY$zhHaw%Dlv zI3NszJ)a4WaxG8&GlPgbnJW-*u~&>A-hv3;0@nhJ8gGSHDCbRttDu!VpP9S<7AvXl zObAX+^>Ia07vpulfLv`G?Xeo)9|vT(F|43D3=iLC;vgO39~L%l(D9i` z6Kdn9-dnqI~k!TbYHo=htH8n1cWj`9q0D9yI?jbLrQ){ zB>-|c<7+5s$%OsYZO@*|^O!*cm{iQMy}zA!(rlr|JmbmmCEjru5W~F%H$Zpsk)Hh9 zA&2+~FM%EZw~~O9Ag@?|S6tju3i3rzhBY(2k}~7znT3B_{lrf`KWmK| zTwtI>>aoG1pr8&ImY1842N!7@tJ8wPX#D0O5HSDb1HCAabeJc3H&gs#K9As9{6g{X z=Q=`f7% zo3?G+wkvJhwyi&HtJ1bAZ9B8lwrv|-JsmL<(-GZoR}c5$oQMyL;el?1BpVfVP+s|{mv{m}fuY_-?$4*!yP_BKg1=x{ImI^;=U?c3?I2tl zaQo6iy5L9}uqIXiKFygt;h9R3KA|NSsVOAwosa<|TWJ<0A9ZpY!ezoqA^=pNP)~(VI_+e5z zn}TjPbq7E5o}2!C&PtiW1s-&Lt|-tOU^lA4ID!`}a{ws) zeC+%bIf`}$2(!UG0QSdS+^pOx%p=vbj4sB>a4kHQ=WHGEZ%>9&T(q5`S(jUas44xP zF2_;b^y5d@*98K63gx3V$Yzw)NLQ;h`!Z$tm)C0Ky?(oDWh$3+NH=WK1XNPEK|2<( zi+ENtL>JeZmrj0%{X(*2SA<=ahULwYg9WNeA^~qxYhNeu0boSWZ=MI%+|~h~=IhJ; zC0h!S{Vd|~5UiB>p1Tgx%@TKPI~Ko#PhtB5m{?l~^(O?O{AJ z4iWN7p6lIYvDd`7HR^-c0C|c%4yFlN(@VoDr+Tn~w3Q8-T|N8ODFVxzonnq)b6;H- z4+xPLv7~9702sRjL^y6!fKOT>7=)b*%GDgRHzisPgYl>WJiVT`_P`Q;)#T^cB(*{K zWio(_#=ERK1^k6$04YlA!!2gSJ06z(gVr#N;x8kexwJaDmrp~G^ZQtXc}VIrVm2RL zmgflAQKUjC^j{?St`x{-*y?Ppfk`dfC|%CjB1v~^3K%M|%=FVgXbKsoYqVbeg#Xz8 z2mj{;(sBp3h%GK3b<0qrMV!tNWApco=;|=dGzG7@G=?Y(rX561!)|i^s|8eConD(q zS@a|EC&jK7g5dmK<+Xnhe$Q*z%__+?n}}V||8xGUV4KD0vX7LHXcRX=Hqo4JA0TU8 zQc>0z0MHDAl}+0eX2nL$?f=;=lge2r^#qRMMYf(f=Wal{j4#I7qhLw&t_RWrd4?N1 z8LgI_nxE&GO1|rSfZ8TVGAnw@sxBA2M1A^Lldy$OY-i7LLq0=XIr1oDf51R2$`@QH zmR=kvxR!jn{pIlZlG}6<>kR;srqk=a@%|xl1l+ks!0X#QJr1L?=K@zVD+dO}4rICG zIu9%)4)!3Dd&PJWQ7b4141#u0K$PTW!I&0h9P_?H{YmIhw0P9ZIe5XBtj4V?Y9+J? zyD47=0@!|rV!>Hjq}9y`sr)q!?bM%_+7qcalizuyM=ql#sS(Rj4bZwp{{xlIz9~ty z0a)NOycKiKIm$<{+#FTG3m&yi-2OW>eT$n+wyN3Wr_k-k7WC(t|wa~q!Z#GPL8>PUf+P}Rn91Fb_;0$ zBK_BpvCwqHxR41N1q&q%x{z>_ph;U3GQbP@p*q6`)FqU-IZ5Z`_OUqrhk}IjuZYo% zzmJe<2+f#QMc|Z}x>)s}dhP;Lpun|*21f!SyFu^9^Z0W&b)JHP*-Y|iQWe#b@ujys zhR7vhi%;2LWFMnDVPRZkmH{rZo3&#$@pGme3s2FTxcBozS-n%!Y1zlapaR==2ms|r zNQJIVziJk79M|2EBOeF5bkd1diIq%mIInr&2|Oj#gHAdh?w{pTAZfr5#Oy@a}4MlSRDO1ppgyJO0^%y9%51wLdVFFvQyRa&JT|k)JVQ_rY?t znTGdn==yT7 zG{3CaC+|k?Q!Vt{Qse3j4N}thaF~Y1vCgp^d!?^j_NL3y{g~`+kPox9cYwt1qmmC8 zg7gL!)F6Z!%em~jLGM>{j5)ZZN_$bc%(qI!X#A#_^%m_17<|1~Tj#>Kld>$kE)gOa zDzdEkT`k_MMIqL|nn^S4_)q}elxv|FU!VCGjG|U)(uCDKxiA%+u_T9rq7&Ovq38$1 z00u1FCGov+aqDvItj0=pJ)kBXZBLN=le1H-Q3}(KEdtgP==)Or0IIO{EbivXs2GB(D8adQU!@7i?B^#%y*h}MI$pF)v`4o_v>#oVC#w6Zv+?a> zE4WZ&(@;Muv_jgnw4=#(JOGpOBsXs|3Lj9$uE&?T&kDK3Bz{Ku?kD)#2eoZ+xj`;G!1K>4Qs%!s=oos8|b5Us00;=*stRwI`B7xj@mkmXjL zsFYJrBopq0dB>B!uWSwp)cJMVCmB$;f zIOgOE_;TBhqU4ul`h~$uXcb!?Fn>(cklB-$+EAn<`Tz^~-5iiwRpsGR8nOpe!9&a2^skUov?{CQkPopL@{Pvch~^@$hkZ!serhqpVtK`& zNJ5eIzKEj$r~#^p{#8ed(s?lK;SH{Yb2yV)5^{7u!BB5ED9NVpPxCF~c>?dXhnb~=!aQYLkNkcaB)-xNuC@s2Dka*_T8qkP65Fzgj6 zSC39|5BrML9SHL0BBBWbW|LDgp}w?CQgu2=%ceI_Tjuv5Q|Zz%t@5<-5`S}}&ymkd zxDw!uq(+2Yf}E`OylJupFKerRyMp?mFHQNO641BY_G_LLb^w$PRlM6NPrs1Q2o+Ag z-;L-;*3c+Abz}J7f5Sc0WDnPsVwv?exqe*`|7^;VT7k5kULVF0;Uxn8RB^FDQXC;j z8L{>(3No-kHfMVi;{=&&*J2dsp-~(0U$TOWNdl>g$hUg|&0@7H@LsGOK?4<)SPv!j z049>f%rMf(thlOmT(`pvH2ezU$;9>oBkS6AKl$53gXOYyX4|uZje^n!Mn~g} z3Bbc8)Zctx;X~!fnz-fSRaDp@+r;cWabH`)rUtAWO>wX<4k-47NaXW-dijXwhWlVf z)tX9fy8ieU$B7H(uz2u8m_H<&ObE_d0_M}RPe~JGV3918_sthAb&t4QE6y$*_f&*& zUZXVgzxImPxBC*gA`WBXi3rlg+;;miMF@2*hJ|ggfb@4W97-xsk-Lba+VZdh{RmSY z`i!&P6M4^UYkkGs>DpPf05mu0@J%>L558pe{efH)MS0s&1!CBZa4(oxv;2D zL}|FCF?P7d?jCpGzS{m{4E)C%00#4bbAZ~KQ=3t7r7Lz7f>0ks1?)Q}{0S}M;7Vro z6mhL9O%stP>JBDOH-irxWh_ufGp%~4EU43@v9~@HRWzE<&ZTcPXQyJ&`xw z&>biJ-rmYnZ_gijEp6(YMSWiEa+aNNdcmDS-$6I4`H9bNj|SCR!o zw6N@YdM+s6*KLTdRKO!RGQ(3Tkc9`r7gsLn_^6xw93HmT-DS))V95G&AmGddgRP&5 zXSl8n_z{vHVouLC2HLLN?GiEtPza|qbjN9%fqu|c+BhT(u_DAu-Fas_f*~!4a|3m$ zY{RKXbus@||0$NacZ%Aju&UAvC$7XSeD2Ec5YlDS4^*&(CpkjJhG#u2Uy2k$`9gu*sVwiyYGa`! zgP=^Y`HTUZOHYD#5y8>k_3Olr-B#2X@8#usuHudv#j?iwASf5>19u1Al~BC?9n9oH z@*tdAml|3j;0X6AAmSiwAaW!$4Kdt1Ij_f}TPTdjqMMKh;Fa^~KMWkaRbvnJqqeji zjV-iA-R)0-Oe@ke0ryoc(rugJ>l$s0DHtL4M>cGrW$TAfWC-Xu!N3J|-LdsSfbvBA zw`3^mu%`Wsy5E>^@FcQUyiyBlkT>A#@V`P{fbSKt0=hG3--^c%ldl~HmAnSGb}+|l zA%a_Nz5wWea{X<4FosFO@mRV-~C$Or9sMs-YvR zNV_Z%t?1ODaz*6iSIR2KkeQOgl<^0DT*-Ml5**bzl$D%7rcWX9 z*LWj%qwH!B^=-4|QZ_J-Dv()kDP*UssEQOfA3P+`Z0hj0QaHn(ot=#0pnnmVCMpzg z%KC;C;Wn~|oyM|wbO)Ma8ry)_lu7T;AXwB2L(lbDt(eGeXvO(5b9G6Os-~t`UZy^O zAr0&Usv-SGM@XX|kJhpb^~xt>89@BQMTs!UXOXE)RlV2BBao?EOdyjxJR@pb_6BT`44i zi7O^;*n!jmK=_iEsE0DdrgGIw#?uXxu;VrWs&P&5(~N8iqzY$3=&74s%JP5?zef6H z_`{28o0)J0OY_6WQyCup3(~cw-Gk^`r9!r$AS9Nb6&CX}{4tr;d%Rzb!evdx)+5?B z!aNN?>w{A@(Me7u@K8z<=20|)78I~Pk==oFSIG?)Ri;PHI=iq7aOkgc%o~^^ypkY* zT=BUWj9?q@DJF4*w*H503nN%~calE2J=&rLaFO#nyAJe^=~7F?E{DZ5v1eB!Qzt|| zzWqJVu-rgi2$^tCM1r`!pe8h>yw=)|F-^GOsDU<9BN1_x_^v)2!%*AK1RxrVPs6i} zUp*pSz!GXse__p6r(UCx)OI+D?+JV zIsHB;23Ez@h8WdISjR$M%i|tGc+hS&6|JpDx+bzA@qZ;X#8_rVtfS1G?z1EtP57mR zsP_ob&a|dR;0_q<_zJ}eO9q2pr@Y(+t)ie&d;}Fq6-}V^Ch-Cg&Us`K31&6{m~LKP z&RwAN9KvsCU9JBrKMV+fHmv%5GU0pOijWA|M_@d7&ZmP?N7pb5^pCgIZ75aE<>|!; z0pegB7gGDE1B$LkA+kXG{L_(Ne&Szm^o2Kh@d^<{u_@79eTW!6F&47&j*OEuQkxw3 zA~Vn#LXpx5Etl{)717&$p(gx*3}(f(-u~WQO(m?POAx+clN!wPnN!$7vTt;qU-;zP zmT*jT%Q2PNG~h@$HOvBw+N{%Dz}w)0vze{Zo^B`JQdsv$gFhLk2+yWO^_@;Ad1Nw< z6OiKd*Wy9QsuDrC#H|TNsB=pBcy(_)3gyakJlWJaLC;z;fPxJKBqoZu2N>Nvp1|2uso$;oTE-q^GkIx zQ2Ir-L~b;jVRG2-2}3FX!lbshkOQ{Q-78cO5eT-r4xlsWU>L5k>aA^ACS$UBN*EQm zfs8S1d$&MX{aoa<@7~|`ufxocBMnr8C#-c4VP{-}E0Rkd#awPlGh6p#!}6kp84Rn( z3yRHV(-#XwkvJhI^7@B-5CZCz^;~5f`RVe5e+DB!6lX263#`EaK5%4W#Ag^s9?J5k zo0176!6a4{TG%z6EMALKoYDapoR~(Mj2k9V$Ms z9j;+K4Uoc+bZycq36pv(_c5{+yF)_-3|z|`slgAU7EY_((p+)KPTrhsc46B%^Vg>_ zO1Vq^+w^+CISHKGA>bPg1v;3^n!7MxuJX1`oI;szUhJo&b9RbnKs*IiLdp5<1YY&f zm>9nxewy`SX2q2w8E@CLe_c29}e*T=#mSPoYyu814`-9pFqIw5=AsW!v9X-MG)H(!lLAkNthHuMevsL6ivCq|SiOD&CuAiVyT%_E-!(;r1G?Rx2;V z?i<`_P3z=PWz++IRiE;DaTn=1$0AR`F9Mmr=5$b0u#q3KpeuI!hYf>F^qHmPhoHc< zV7IAcLRxhx5)i49kBm+>8cI|)iF0VJ#E=4ff=f0doN}l#M1Jke?0g|DhewlR$w>f| zqQz$8ZUX=`lPK5NZE*S^;W!mqYV?<?2?aB!6zdN#0kz%B0Z>@e!$Prc>7GP33m*P_O~KW=#ZO*Ag?ksNi=i7T38b;Z^j1bGh|iibTt$drbDaqV2>#N6A_L6em1BEvv~26 zq?gwSa=DNYlpj>Okrie`Mck#mqw(nVTjWa7GZ0w+JWm8_`nD?y+9n5xpmz7PX#Od= zPuxZm)ddO5f01E;fi6x`v?hXAWHcI`P)qR;?ungOg%}eZW(T9|)f-#Z`iIv^jwFjN zP+wnk>%7t%n+@hUCP0jdJ}U{U5|}XIT};?U&}L_G*|+c-dK8*N4IvaIeH>aF2M5nG z_pbQ+B@k|qPv|_z$`=9f`h$3I$~uwda)USC!%Pt;cW%I0m3Hjr975Q|u)5Qt#oF|F zU~9PH;qPm8A%{oFw2CDvxJuS(up1>Bp}r-c@tq73D^`!OX(^jD5b&kMX6?jlhATWY z+#D%Xm?$VCwfCC2o3YiaI@z5kOCs-t;r(;|&%#5QzJU^|<(ml*LjKjIlN*qDO)38g zyY+(K`83mhJ+*JsdDTt^Z?4qp@Cp0!*U#b0ezqp7_dspX|C7c@6~5tSa#G6EnMpd+ z(KhRnC&$I(260{87~?n2KqGeL;4}fS;VCV8gmYUv8P!I&J=T}-og~Iqjo*uX{s%bw zF576e`r>>72^Jl|AJ35UbkTX=d*J1-%)g?>UNqzQHovy799<8xu~!~t+e#2kXS!EJ zU00TmgnZHNLqvPyL9Hh%niTRmzf?Znl1a&7SE4be)nF2^Vnu+pC(?$D2*1-9#Q2en z;PIy|En#1Gj0j>pPm9K8w9Xc9;f$$uE;bR}jW@YgkEh7VuP4y$VLaAt=ia!(`G229GMktU0yE>z$! z?#sUpfRu`3w8{xanHKAkDhQ_B%`Dr(3P;*W8jO`h1$yU3XGZ8YnA$F|2LC<=%ro_R zc3Hql?$725yDNSjCJ2#iJO(kWObxWRX<&Xa1Q(;SSewML_;Rh7;2nam%=o@ zJgyK8ngNlyk0M_`O#ZG)h{1)C~w7|>|9>hCnJG{*~BS1t&hAVaGtM#8vpv`IISwEBd9)drUbH5qSJY7KRSFOu{%+WT{L>o}eeHQYqq)tOKA&u8q%<(h-R=lAeUuHf6(gM&dIKtca8tdno1 zajKDz(bRNk9oqTx`_C`;Z^8c)kpE*C0{xdhG69sUit!&>IpqI&M0RZcH;>4_K%5h& z=S2l+TF!VZsd`<`&X94PN*PQ>18nBFj@LcOk0q3DyrSI!DQX59Z23D{~61ykb zR@KcT3VZa>I%A3_IxIOWM$I2)qPy@Pg=F0t_*u&1GqcFn|qk%s|& z>JW{_i~z5t<#`To>X1Up$*Z>pN|6a;^$ZC zy+3ysoWbLlPctjM`mP4wMG0~z6ME&Q{^2h{{$bR|hE+|ZfMsNbLcTz`h&NRdK3fV= zTdiE?yXXjK2VF`PWG>Leov9W6e{T43?Bx7HAVsObQHKMU}BJJ20b= zSdiZWbFs+&0A#BUNfcbz%-Ism4V|b>ECI$j`1Jk;zf0jw9TaxcEOcProaBRrgA;>h zh2HmLEWp*l$VAaXQF33r1cB~L{U?X*2D%2e145I&FK0gqp7cM+3Q`e;=^#N^MW0J)UJGw{&Pnj|-P+xm*2#tW$>E#S$)SPGA*D_NAdfGB&&Zv1j#Kjvi)eS**xJ}N z7kqY5t)DSMprFkeeDd_OQ1)ALS07x8-cJ?gFaQjemALkdb!kE_*^9_uA4SttF&CN- z$uA52^4`nL(9WBk$P+mYc~>V`IE%AcoqoJxpu_*~agE@7(Qe>|XnknG#FZ11(%f^~ zTLWeqAePLAq&D2RM1Z1NaosM=nn7`fx19NlFDgV#pKl~Sw_`6drlMn@j^=NLzL>~1 z6jnPU80tu$c)g=8MOy5gUpDRzpJbuq&^C2$kv`TNZU1(%c{m)2a|$mlWz;(SxtyZm zWS1o-BjfwaQ#5fBM{|shM@;$OMHY+{&m~Yb06&R=)la&t3bG2L#P$O|c@zS*kd&Zn zjAtARL@LeAw}JOahdXzZimKXL%1#0dslC}PoQ3pcSDFroD{)axt1BtK3fZhg(Pd2d zUNPoAO4!w}j}%B-2BXV1zsYZ@{QGZcAdqzd+|%w(Sg)F$QxmF#9q8bjhF2A4%{g2V zfUsruso1`a+UU_T_lZY zg3hR_5o90DfxUMY8zKTs>V9zWtTQ-r>-gQvKHJa6K$CrbZAM8eR*?qf=@RhT%sjOR zTaI!IY|SQ$JdEqLt9lP0tOl$)OMfjC@N*?b=iE$<=cjIV2Ehkyq7Z1dbELBNq6|*q zI@amQv2=d6n=K=$R&Z93qJFs0Oe#ab<;rT!Q8s;+54NjVMmJr{hm1p2xVx# z$n%vg>X5CBU7Nj%kqh7f`mbSTHU;3{z3HgEZooR8`b1g-l#gT^m?L^qe6eZPR1y5EgL()YW+rSa|G+ z$bAPyoeqm{RLC;Mx5)4cx$P+SrBhGGk|bRpzxRNev1D*?t7Ibk_qR2Ff#IZ{iqmf* zC7fxXyixW5{g6<=?woIrKA_vJqf2nnpzQTDnac~5;itP={aruWCXcT@1CWn>m}ruG zy`~8nrvWf_D{oJoz8i`V16$Iw##X_{ck0_7HY`2O_oke);*VXwWDv zH2W!wl+*eBn0Y9nwRB$V->+{qMUPWOkHT}fSv9aBf`dfk)jOEk@8?6&w5&kRPVYJZ zW18NHg4!)>9DXDFY}_=u2%j$&`Mm8)A6;QaV@i7(n+O|isn|qcq?cgxt19fo?GZVK zziGd%pAfpY=ftsb-gWHxw(OLweg8LkVTk-^Y}Y@B*&B26ZS8+G=lync1x5NF$1k)m zl=0fpzh_j+ZwU=8!lJ{UGNqM61KpHt;O>NUvs7W&wlalfJgPL#&C}&dXb=-ACzB6( zJ6vBj4T(DIrC#^$^OxHtPqGzulwN3C2*oNVVHz76x(7uuPNet$OixTyXlSK z@FKq{W{!@pqL|+a*Dv)n-(TUBWLxkxDB(gI2eamVC_mz zT*6d4s5;p6+Mc5A`maO$9kHM8KpRje39BEG{xllX_!4>k5Tb`QMk8m!pNP(aI&KBA zM~X1juUXs>^mno@mrm4-b00ey+xBmelL?qs;Gb7u_Ft?e2bs8~EW$0y;1=G3x>&uh z^)ym}c;^3>OzJYivykwmdYwSp7=mOJ99}t_g6N(_KX?oTYfYq_w2TTHTLM68=skHO zKb<(JB1A70Ta?LG?L<8anZ#p+UBO5^t2>pWlZBI|*BJ2Dj^@1?G$#TV`c3<>BKSS- z?HST$h4pu$NdcF~@Rpw4)~>3%yScg9ekF*w7_Mbk{Z+2-o>d%m^AW?O1lg9Irdi1w zo!4{Js>a9G&Bw#0`IkQ#ODbR(L_%P;F$_@~tz^1R`DW7Hv9w^N%8kONyL1++P{qeE zuU;2h3fiDbY<||A5|6g53AOZ8QCta&P}g=Lnow|5O7MeiH}B{5YV=|6^sp?;KprvP z|HiMVE!%v&&Hc|GRT9tRPhNsLk>7=(pVGUDGzlvUfmq{YMt(|fab$qB;bxk|jf*@H2Fq)Rhj5bsyE6&!03dgim zhV57j(gq4c(|9S%@r3;Cdr0iaNkylqPF)^Tkma^)0m73Yv_5y*{5}EelF5TxR2j&T zMeWU+yLi|cL6zLz8|GboY1Vi7o+ z>x*@bjT?R&eh=OkR~I)OudPdVa`4?-+io16-vo?IPe#iLTWElO_Ci6$_ek@alDFn} zzsL~UA-%ae5L*-}xR@f}v%2Q^$^hZR%s@?&_5N;9AY$bW*&r%txx;$?D$y?a+}Xjm zINzq0^P`-YU~xhM7b*xm?)vgNxB)v#HjYeZd!wjqoAG1}-UAkQDHL@@p~|zUoYSuI zXtQscxXKgMf_1?9cWrm`!nT)7&(hXK&(_9UOJn1QxrfEejQo|T6a&zO3oKS--XX?X zbw9ZAhx>d;c02Wn&rT7tP2OR|i1b*iVfiiT9iSUpKO*f!A4jQV#7#{RtZqMiM<0;b9 zn6308tz}X&W$7V2C!1f&TDRhXIr4;JGY^Z@JSbTH;){>*%)QhY3x=ShBF2$)H$%G3b0}505|LI-YuUK$75ijHN$1j_LEEx!CkXmQ zhl!rZrb)n7JJgA6#=2m3hKD?Ogfw5qJ3O;R4ARX#3)BAFMn$Nl4jh3h@v$76-b1Hl zpJKAe09xk}^yvamy-G4|#F~fJ`wYWr3{{5t=387n%eWO6#7XZ=xvIuW%QXeS;-jH#II(bEQk}tGqybf7$npLaaYS#;O6zz|C*;%IPnt_2=&lB>lVOoMZFKymBqG zNVP1<<%;)%BOQs*h#o=q+>PCa2E(Ggr@c`oS#iL$((Ubhzuvvk`FRf&jVhaZHM<#l zj#odke%z=JdKI?3kizf@8Ps~@=wo#f@+0i|SB0w3tVCXLw1NpXIIu~kVt55?*D?XR z@DS>Gn}aKH#NOPDwHGGFCW9tYUG>aP9my(!%GQG=1-+Bp0iqyXrqxkE%f@O7ao3U4}*n{$rJ$5y4- z+YRE(Zo)E6BC60^4>&oskhW&C6-RX*HP^|moC@TnI6G7^QaeHef#!iefO!f_MyVvSsuj!iYBWYC?-PC59}+;XrmYlG z6KNygzr;=H_lc^!Lb2-%>kot)P1(flTiI(;1&)XcKmOM0pYZQAg+=kN(|nvGEetXZ6#%RMdTPjRm}$0yb;NXmqa zUO~92e%GvRf-}@IV}_on8yS5tT)-6BIYw(~>dwR&Ib*5}!O9UMZb zmri56u&iy9c;2i-4`j2&s3$#U;_4NRoeCK4>nGW(emsh&u-<0iGE13O=achUpzo~_ z&bsB4aHJCJq}jV+&<+3!!*$K+X++!(tbg-O{9zw(P`f$dR-Wep2YRP#)QpAG`PIO4 zzjWo=tJO*)I9A4x72wU_t3W@kjZme|r& zb9Cn-e)QuG^8*Q>I_)z=2KlBLm!Tkl=#Knk8WMYJu(iw}Bcaq+K4qpRyN=kB>k8&; z_$A}lb5>l|yPvJRTib%{HI3j6u+~yn0f$*|NmhX&s|QMuz$b|MquXOh?QW>|LifK=>L}@bhiqO4iNuOuNlM`IkGLS zl+XQCoynl(IYe3x8Wo6@SX{Z?n4Y@_wS+K&Uxa{BUU6e*il{P~*f>8pA2x=Ch55-% zR*n~Nt8wIjWOGoo&g&Du?!#*Sd~m-)0EsL)rg$Da1fzc6Hz8YcFRsVhhEj~wq* zPwYRt;nPUoD;&>7WA7(M&+O4>>oRj(#~a}tKk#f zI->%JP@Vc3fP62+*-XKRPkUx;FDcV6cCcnBBe`q@kpK?s$Y&T-`>cVd`qJWp5SG&v{AKg7kK@o$OV5HAjIuFO&?b*Nnp^i{5}B(Ve5>U zMQns@g_6PfN@?^oI7x<}@Lf(!_SS)6jR2ez-}ee#$_0W57LSM&gO`ONNXUF(Q|a?M zGK9tAc%~hWwq4ptbbzNEryvGR29u-f6qm)bFvb8@d$g@3&ycvezb-{5wnG^PIgo++ z$aDJyK<6+x9j0po+^WHwhHJqpcb53B?Ahkvy621kv&pJzhUg0I5eDNl4%#K5Q@GB5 zu^`7ik+dW^C}Yl4D7}*1w|2=k772rHY|>_zXbFFF66#LPbW6KZ8aTzn!6&D~f|m@L zb?+^7WJBjA_T%Qf)zYRT197Z3;JH~HED@Rwz`%2o`fmAlqw~XPdu#z=JHHh4K~{Yl zl|)b9Em>3K?jKQoPT}p5Pw=+rrNrD|ZC9Zl##6QHb3gd%HuJx5$2CRB$H&n@SiX6> zzqyZy@EU-16w<>MFJI=F=S0$CX+-9q*+8@AY3mo&NW8&@4_)w3&{1L&$D~`uDuSp0 z=qxzcwIWCvNLPuh+)suLhf=Q?)KWi}tS48bAsy$=J0}5`1^wpCt@(nvyHbw5?0=3j zy*q+(JT?N)jP^636{IM3?7O`6+rqP}>>x%k3s{o*`J@_9qh6%n*r;+tF^Cgfry9OcdVq?m4){SfbQGrYf0k%kS>s;)mRx$mJI|A)oGl=>BBtRyLKk`epyUsULe?s< zJSU9TDizkeh8?-SF(y76<;YY7n>+7xv8tO zy&y|!Tj6wy$uHQH&Jp6bqs2bLeW*ep`Vh?Jlp!7=llQB`u5=;O%`nFUu#Bz?|2p;U z;~DSi8OSVM!ed)V35@w`J3?kM2>Kqpkg@N^%uM!9$4{lHSJ)V2y%#N8 zfSzkBQ?s4Bcz(RI4{Hk*NKOsUJkHb*?L87q*wVb&0WZ0c6@^=13<0H*42DY1n>Y-4 zm2M&g=^!}lD%DNW74Po=#@r|CDGu{(nB|1~NR0}HD5$YDYY+^&xH#8h|GM?ty_d&E z^Jf0hwx3M_5q_zP^>221v@Y6Fc>IX;7o5AHeE%9kY|K05g!>9B*kO9a4f7vVY&ANy znEI-2&trdSJoaDSoXPyqauKxoW;UOCXx7{6%J>cpN{r9qcF@G2IGI+P4xh@+vh!^V z{r+#B5~Piu3lCHvpiGC~!q;GwzpcVR;s3`x)wN5S zw96uT-uXn+vgusu@m)AcVgdwD2v+5E6`f|p`v0V9_yHe_AaECp4zFu}Ns>$h#fp0r z&3zRxzsdVH(A4AN^6C}rJKDNtuTRCs-t?dX47T%hBWrkFyJwq^UDJf7$ZgUS*_Yz{Xi!G zmPAtUtE)Y69p8E$wX%XQlJD<$S@Ptx1St~A-l(6qKR+0RO>&{w5i*vf^6~Wd116E* zrYhN=3=#*D_)(bM+t<_m(^*&3{m{x_hOD^fX0`?VvdK`%%mE==R2ZC^#uyx%a6N?{qHwl3h=Wo&a zNdy$?cy&SHYf4w$9ktlvIP`@8;x*vHE zE;gcCgeim;+83O;hG3(|t@_Yy$EGXwHDu4pC$^`zjC^6frXX_8>SHkWx#zU%ZFfYS z@USZH)|Y$P%5``9`6b>p9^Ugahfk-2yHDp&KTPzYNCV+vcX<$~(howdOz4wo{9gBK zEKaqkM|!%gEiT#n%R%x(baE>|LW6R&_jsS4yVM)F%;PwRFVakqhE-2(37-oL+CBrv zsLZKQf+a)OXeXYgo7v^qXZlKX0!@68jq_oKW)76!V-+^lT#62EQggGTR7dOb2kme; z5z9^A@T}sUA6=LY zN@gQ?!XNorg`|bHP97gV z>*^Y>Yi&pH)V1|x{d#4a;q$zWX&PG~qzZ{_t;n?poiHb_;S3fq9J^vT&^$OZx4U^q zSlx@maIAGlhl~Y`vKv?fDFgPv*YNUX1(Aeb#c3UZk0g+ zO`Vc{+^rhIkA8P;Y}YmHKjVBdCW4dg-aP~>G{k|eCQz~HqQTwr61wKVhlwrZ?z^K_ zlLcUR#RpDlFp>ZT^cbN2j}m1Oa_CzE8p%wOzlmmPeRTQk%BN8Z^^-*Va*u>mMkMs> zAXv%j&{g5g3Fs^cf%ciQ$A$P~K!te4P2V9aS0w46yj-3K-9h|OWxGDxh^?>UTmyMA zX^MqQY`Z?TO|{4>l2!Yz@_arx;XDCuKpWw^VFM8PZcG3yOZ$Z=;GMyJZPO=HjaMPs zIy>ZaFr#!R13_1OIu7{1HEQ}-Kxd*x_neJvWo@_?3;1Uoz0@{)g`HrB@z=0*blA$4e;(_{XPQnyk zXSom!y^@d;z0!#1Cgb$J&cJB0Lv)~p$Yff%)E;(bHwZQ)#e_JsHk5qA5W-diRkMn| zQaFIonLC@jppsdh62=M?!bG1N4)c_S3l5}4sDa~^19zCU`WvoFaPWMl?)`tiybvP) zJC{%2pPa_*9mBE`u9%yrHyuiajYGV}VUl8Ef?VwCR~)f~U%v#V)L?8bJkbNq4Dm0i zZ^B!(3dW77x?+zH++sX~&gx6KZ5^IT$SPko9n6wm21#UyAHPgZFmxcb!FU9X6Fs)F zsNzh}DQHO-DkzP6Q<(GdSgfW#^|^ZYu6g@LvTxmy3XvT`c8neq6$-Hwr*LOM)o3e3 zRj(=ub@#qZlt7vLOBOv0i*qwvH5ChBl@2sjwE?DCJd=JOwJ$RYzLxog{D6QKnpf?F zq$V~u5J~3S0do?PG2wr(v^d4z-J<6(*0T<(-jc1>g7z!j_Hz052OPZeU$+LLe+#vM zbtkb>EEb#6BYE7LQ6q=Nsb|UlSwdc{PNbNudWuu$Q6{D{;~%y>ni;hX?U_VC)(~`M zpoK{i$tQi>$N_l>B>mpW>fh?agA_r!kw!E=*RDCKRdGdUkoKRp&{Bw*8m@2GFrz6S zld!rlX*Ah^(1!vXiT@z%oq{t9yLIi@wr$%^$F^;we8dX^qd;t5iRWb@sWnwO@^cTp311K3{!lJCR}_jdDxVJ1>3C z%{4jusn@Z6G$7zk2;qQ(Aa4SY?6N1`ePD!XJbT;ex~sEXsGFeJ<%QA|jDorwWqyF;;_6USZ z{nIoVF?ipDWLAg7R6|-pJmjz}Wo+EXyX$o|UyOx&A3?`}moON>uptd_&<2lT)z~Kl ziNmgH9QLfMumt+0un-~Y2v=?`x+7Z8{He{LPUCeH@3h6sIWt@V`%f#9QPFOkip72Q zJzHwpaX6Q&Op_ich;7TKlBzkOf(Is# zIMsUlya885U#f6a&{Y6X;OOSBpPR$LHEQ26TRAG40^1w0rP3BQHSB^r2l*z6ti7vM zw_d@@>QL!B6p@)mhwLEiLZK|5uiB8{gsfm1;$hh{-z?wRH;8d{lCwye?OVphtaPBa z2mPr%O^(42o2=x3!R#!bo+jORn|qGM9oZDSgW)-iR>bGDe4+s0T=&!udwU!yBvD{W zEoaUuQJto%JT=XUN!@3TeWI`JJyqEN&)}nqCP?!@It2oe#3q*xN&JZ7^cmuzTMKZ9 z*v#V(fbE^jZN+&63f3r;`b03Os+wf!Y7oHAb^WEKnnahcJ`&!xNGuz9#%dKe9Cy4$ zbwyo&^Nll6+&~1NfgTpjNS3+86vq05{!ER?i-XOz_DHFN5g%U2BTOBQgeCixA&90& z_fXUc_Q6ZXD?gVMM9=*%5V(rA>V_AS1r9X{_;O%}SwicgqUCp?Gw!|gm;ZrN1dO&J zuAcDJAW%{;%m)>vX1pqz2?@?pDzWyju!Uq~4=)g|Ym`O+Lgc7j%^3o1N=p=UQ@y_Y z2zDQ_!{#=fuoq*06iK=*9Ldsc-7GDBTLXsw--(GvV;TMVth@Ryy{=4(!6*OV##SdC zLKa+qv!N9-v6Q-O#O>KT6jZ9XU{28NR+3i2x3O3WqFkqO^e@t|ud=$x=hVR{OP8Ey zAP7^Gs?c6Q5DfeFsqHli`3EF+4eBUgvnaY>;y?n&jt$AxO$2azBA*U=I=EaxnV3jNux`+ND?C{hIg z`uUE^JP3gZ#t*U>QYTr=EwIVq#2YKbc%!x}?|+PClU=9=vJf1Y)E_B?p2_^zEmPw2 zWI_lw7ObD07^3qz*7Po!bI#NsiB@SBRbHaGH#c-a`k;f}km4B0D{7%UoWX|hH?{YA zS#dYc+gCJQe$G850wM#Jy}t6YOIf7oHVgw_-d%GgGZQj{Zal_>CM))z>S%9vqoiL zI>Ow0H5#2iD?jjCSS1qDD{WV$^JYxrZl_Hig~lBSS=q_PJf4}vwYrZ)=;2S`t*4Ri)j#!AfGToUX8`eJ1y2L5(pgk_MN z@?T;Q-ic#3QTz1{S2`82r?Z}9F3crwRL{k)ucXE6 zGsP)*v0}?^g9KlD=Nvu-0%DLl)@vX$hP{^Ds5;JfoJ~-5*@(cO1+WxVdyd@oTrNp_;|#-8%lu|O)}^hx|n7@%2tmwAR2+Z3*8HIKuMMt zc|Rcytd*ykp81nhkLN5b@9P009gcNO3_-DHh9N=awUYgUOZy5jqrpV~hK1U*2c>^2 zX5lF1LZQRj4}ale(MAP`C{%H_n;k2B6T|kbbQ~9jq3Gmu@i|AJwjAtKvous08R~^) zCv*H2dx9cvT2&e7^2}x>Nfge5%wuL~ukum-!R4TjgYuVoyg)VfGo95H1aNbEhSyI1 zFcdaIk&(8E!a!e+5l-Su|7Wc03xe*M9uC(tC@nPhVP@ z-IPK@3Wyxu3qCR7ScM-E>E4oarjolY7rQoD_E-Or$(M zP6g8$x}03WQX2tmr@{cWt3mKnHRk*#sySM^TDrOOhJV+pm?FYdF?V9GBo^^S)e3C; zrww}z(^fs(U;kR~thCk|a7@)4c(;Lx;m)VWng>F7W@Z)J*34LBL_OiOn5=3AMdXuRV@BZ6(? zxfiEaU~eR+p|HSkvPxrNwV(>~h(aD!;DfIu8qc9ZlXMzeaiucTY@SWxu}NrA8VgOXY-VNWC|8<#H&0!i!7f713dk~#&cQH&iX8cvm zqpfKifi}suu0YHn*3Po_b%^8v3$>I32J7(14Y@#Tr21t@BmqO(V2MXG4{$Udh5adW zmldQ|)G$=r)DItCvYZlh39efIdKfTfj3}Z3AQ}O3gz%Mm^b8{dRveY)2!GF%%e5$q zWt^z+5r}%c5X&b2i@0R%vQAln3m0z*pn?S0MYN|J^Lw{YyMxv| ziWWKg-0dEm6{#bAlf4WBmlX4&P2JCU>mO?ne85L^UfevqbT546+dWiCtkcrZpN7W)_S8okhk@kJoCft0Q|$U6Ri=on+k)Oc)f|I0WHd#8 z>%wv&0^t|3TifnFf2z#Qig3s5XrYpS%SMWl(awdVmZPPryPK^WncW~jl`G{Y=-!#1 zWJ0?HFG)_*8o+lpsFl7qySUs5i;cOE`Ox36|9verIi@!p1OfyU`(tszlSXu}r!i&LZ# znArz#0jh?~YSHY|$t+s6Vuo}aZaRcb(OPIYLomY`xW_;??bFSu!>`yWQg(7)}dh zAQbJtGyK-NngzfZ&r*)kItTnyR=I7(1R2p*(+13y8#vlLfM_c7fV` z?|b+Mw$=KodT)_K*h{V*5h%)nM5elLAwOXNO3|*%{c>(S%h$;bCZ&rrF86t zgwFQa(llQvHuj}v4{q?=8|;s?VS_GU#wv%Q88{`4ZB2P1#NA3^)@nJE=|P-nH*e9{ z=%#JuC)ImkUE(EK%wFxbb|H6@opGTCw|V+`7Wk&Vf5>T zQI6YP2c^#Uo=}drVQ&?t6*xR?0jJeQj5;XuJm&U*eawfohhb!aZ|tINJlvIc$duv4 zWWk0ow6+Cls<`3LWJ&}f!1yt)fV5-aC{TlMW$1&R87`y#X98bfh<~@N@rV?d? z68(?!>6AX}bs?mXYp)3ZjVL>E;?fN`tHAswV)=ZNR$VP^L~9#SJNMbfNm`pFide-vu+X}7gZDtrh1Vrr-Urv_JXH_pb;r&7qHjG z&{g;%0B%-kNr}rJ9s#KybYgbB!BH>DJ`MDcreF0F$ej6X7!sMz2#Bu?CpKd#* zCQ&Bhv?th)w_DULWSOL#hY>@sJ|f>rxO-x7-_2*v=1v(N&@{rs-o-v&)M zI6WbC0#owCU8}2vjU%?Htt?rtThm@PYRnlSbdB~c%aQWV)kpbj?p{7{jl z03}*EF>to3yMr@vqC7Ee6Xp@fZAp~b`5vMh!_1w-VCouq?6JfSQBDoa(O44 z(S7JG#!k@}r9DVxTTq-n;*YKf@G-#D)6&`25vDuu^$4A-ewi)lkxFSZw~9Z7@@NG| z#;SuT0E){tnaZNPEKv{^i}K21j`4_^fg0e^)%B4e zYbJ@x6hvOO_XW=m?GvVKURmbQmN(+*$oJU^&a-hKNR&yLeTXw+6cRU+jcG#; z6h}=jxg|ZGTR#j10n0zsG-Zie_@|9J6_!I=F2tjWTq*R|mQxEXXfBzh9jtFYCW-O^ z3%J9WX2m>jL}uPWFOv`$n>eoI9CW%)Yw@uTz(IF-DQY$lm%MYLDSo?LnM7y+If)x4 z((v#XG96ShN=>1c8coLuVy5&32!0r!MZ<-S7>BR~jFy;nS$+9nhgvW>MDW1FXO#gG zr-J%Xix{$@{bZ~r7){&PYQmOi_Nkp-G9m1-zah&mh_+&4lMvd;uaGeJc{AX3>-`#8 zK*SNj77yv-0qaHK-4L`VIX%r^IRueGU~VDl3o_Y!N%w2HV+i?Kx{uR!6nt2aqt1)x7_UwHXFnrN6Y&(fO86n|23^uL#s=hK|zk`fBKcXt5{bL~Kqc&w&vy>#$nk^`fJvwu+O zNt`o)#t4Lm0q)Upt->jFSfXI+6@ zD*LdHur;_j&;C{>HXq{gz1&6^pqEoT(zf{V`49i!2N}Zv(7GIj|mLcCF+S(fHo6&yi(C)r@F1zcb!a0hSd;GiO`} z`l8Xa0|&6CZwN3saGcNvRu?-?z+RwCCx_Cub)>EK%uH@^BlFh{gfc~kA%gLvX zPEor>RX6th%PWxk4_ixb&Pb&i928tcm+vu*_y1VrhCVcDMg3s;>104a+(39hb{2Ln z^d=7Wseg(JHo*| zfbbks$#IU#vS5s(EvoPe!ILU_Y;+j~E(BNG5 z<`SAPUx=46Oo(z!F7c|}2OIN8=Ly-!2hTQd zgN#HzgC2&rBn8p7p^HOKlE;HP@r=_E+*_12!evlNevhwzlbDx=wpt0G6Fx-BA}INV zp^Ag5=U@>$pik&_bymH6LU>j|?A1Vmsu*W^+y|%b8HujK1R(2DaYU}S>b>v&<7v&; z4AjlZ{fj1ew4h+r$PRB+ywy)CG5sPpeWPCzQ9`onUl3f$8+6Kn{v6Cl*|2Fk&xx?+ zl)1v#2$OQmXv&j}V*s=at+x?lglx_m&$SV^@;>cHpkjTPP>la__-SR)iuAR8jq(ml z)Ps=3>=MBkC4kZB_x*9t_rAgR2knIco@>n0bBsmCNqK>n>Vv!_yB>dL|TGJ z0fVgCSs!kE$N&?CzSGVM5uhsw0UB*z=rBA~Am-n%#+Bt&=xA$2(N#PLqt)c?(^HT z_Yyyt6L%bEJM%%51W^?HEp@GN$)#iSDQG-oU+LdtH5s5LP39H@w&fYt@wGXG?+p8C zYqSk3K2J*OA=h}e{Wu@y6s@fzfKv<}@k@{!@SO@wJSmJ#RI8YzrVA2p-iMVr7P?)G zNycy?&jA=MlGt|wV|5D~p6!c14RZxUI(4aJ!nf-2`7()ju^Pc2as?x6J$d8vs3aCy z2)}tZBIi+N7>nhn^VYsS=V7&tT!WFSQhoecsl}q0w~+2ivmz0aqs5;SvVOO&N6Si^ zvA8nkcz>K2Ji!n~y=(8)p{!`H$lC}d1Q=qhJrpuxfc z4=qlfGpiw!f|DU>IZ}R>kjmAuvOn>wB@Y&fN(d|OZm+kJqRFwzJAlOBkE5FGJ*Z1A z32RlF13Rn@jX>aqST6^x5v1FT+@>Pfz*9Kt?U0-5YYozKn3TH%DC(g*TbOG{547Jn zN&t5S;pj+dhmx~LOr-H`TXW5$QP2dHcTIEhY=@I=5nBUpan$0NTG`M(e2Psl;kCrX zzLPFOJ*cSrB27qq*M|5DJ{tkQolB+TZwmtVCpFD1a7nl@_rZ~|P?Kq9UWa?-%eGg6 zF74ui4Md$r7B#%PX!eeBD}!RD*e(dP69Em0omm^jx4h@}&N#xR@TQ0bpusd}lY#-E`V^}jA#~;vyIza3^ zXp*H|Ylw+R$z}DWd1IRrdDkYLh#z@=i9;K@L^44*FAjBdvCO$?ZG4tJ_!+C(({G{qR*~Edaa!jK z>&~Fyq8!%vlvX4*T2l40WT-an_!z1Jl%}oA#x1q6>Jq3}(GiI_-LSk%;kir1F-BS0Rgj-82)k_KX#M(`EOLoK#r)35&*^h#G=O%j>=Vv~ zPBv1mFChkEc+|a|{7)W~?Ia}7(efZ{1q%i*+AhzV@*LfMVm;y|T*Re;=qgoBPPCy76p7n;f#@M?|#b9BIl{#>u~Irccoe~ z;8me#G;j>M(Y3q^vtqwc$`rokm+@#0y_(GnCXa8bUmhG+t=IQT2>_oRS-UMCYr{EH zUHi9wOG>Q(DNPyTN5KwSW-ubUD+)cvdUU(!c1Yoab}samK}$r^HHSYwfoWTV0lLA` z9NKT}^begW0`(ZCj|mZTDD%S^*TYftvG|6jXdOR_;ygvW8jI24@4CNQpmDf!JsTYk1%w5Y$q}uL5l3A&Fg^p^pl9jvoEH?@dJuy;a zMP-Y*2EFI67Ar;N_>1~mGSpWr*(y`HfB&sm2Cp#%NW=*Kngp06BVaDrnI`yTjfayx zuMKGt=2vxKH1gQSj$0fwoklDP5(XYV(t*m9fK72JN-8Pe%@HV+o1e9J$s>a+bR~i2L;G{W-0G>{;|Ffm9goL!gNkt z+g)cko&V)?o29cunfmS8JonN5T%&>ZJ=Lza;txWt;@f12%fSf?zdtqQ>7X1HbRnYt zez%9^v8*SL17H@o;BZgnrNk>o?pI!awt=$j4ik`WDWi<3J0WbFQBKZW{LL!%o;}G? zAS~`5|bM@+2iDzFLlJWp(6FOxKs^>KFhk`|(JsD}6!o?q{^ zIi|NOsYF>g{_dKS_39Y?!`lS;wsisxXxHke@18vBmJeZGS#YD^$a!)a5XT?CsBum5 zDrt%9>c%oM1m^1=nkI+_+u_1#X=*ZH)Iy`%9|FAUwj{>o3y^=IPg#BEwn(sT;A3uLqNhUWcB7p?Vq81_x{fC`7XUTUr+{ zyp6%DlV@hnRUTjt9I8)Gsyd4l{Lcxw(dG$M+Y&2q0zgqFJq`8 zspdyC&%n)^^$aKBDIBv(AB)AE&`*_qalw`m6wZ~bi>0@@>UkTWO9;sQ@Njk#v39T0 zDWtC53UOqFwQ2Z$s_g zYd+7$?*Swb6(Hd;gIbTqWmp0cVxQg)GJzjtHyW_iXvzXD$JxNIuy{NT&G`}euVd7j34Mgf3tMBzyua8tNh_H)lUaQlZTKNeM7aIOC{tUN>#2)Ld9q;!yC; z)RyKD%C`o)w*LYs&=V-4ti{=`VS!}I!hma(NEu5JDKTY&9{~R8y}Pd9ixv=?VL*yt zzlX@YgHW;?!k)R1e6hq>P)lTaHtJYj^Gs7vxGq9}xmk(m<4}|_)p8_V(ObATHY{@T zfv;X^VS-dg%}A{E4@6 zEEF0j2FHmBFo2k>v{FfvYB3FWTd640JTNu;(^)aieEbbDCoI$}@;169kde7`uO~lq zw2&-t4dl6E%&v7|>j`h2#1p<$@e$P`^UBre9cMlcI*OaM3VEs{NMpZIr0T~5xqSOx zr$o=k<xqRAI1ostz&L2)hKP*?`yzQWS1V|1{D<dG4Nu4tszr0}%SIcY3KxfmM8LaSNf51h!y!QgGfTpjGn3b8#)k|v zH1*H)1|VLMR?Y&Po_E*NAkpfVD8Vuo0&*B)NzaP5pk>Sk)kZ~4km`IUkGvuRQXUgW zhtExiAA}qDs1*@GWRxE$mF?ML!Ve*xTu_*|nP=Xsbqy~0u1VTA-CjCs%kixJUfoiA z{$9KNcgLYi?Z+Eqd*z-ISc+aW{OhRv=5g-loKW;ccOBKp#oj3%Br;7RFA0aQT1V0a zjDQb|4W#b<=siSqUL{Hmt|RnM6pc&Uj_!o~eKul=RR&OuJqU)mp#vwVOU!eal>p^* zbv{p`+xVpk2pA3P&YIGXpa;x6K37X5q_BdJn1dn|#tAEE97)W?w0CHMp#!ebZ7nI7 zD&Uu@145@4%OhJFU!G?fUdayo5v&(G*-IAGncfP$sjo8q{No}K57y2V-Jt3iS0qMz z*rJdZ5!7!4T$XO+n<{*7ix6LXR7sa%6#|Oz&U>s`_zCUyLb z%F4m28dP6gu+ALVH^U071)z1NY)8Y#VL*p;mzGs`S6K^!_B-Sh=i<@Ude_mGpgGiu zU;xmXXz454i@!!Wn(am;5ga9dHTUdguC^c(( z$`!lzyTf+Zp9Sk~Z;jjSr%S@?y;Lwok8ia61xo2mZYIe7eq3kb#iQS{34pT3 zLU#0dM%yf+-XSLgfM^_@`}ee^ZlCOWc6X-fq@)!@s1w}jjyc9FDQK;Z_c_!B5WreR;uf9pqzV7Gpj~@a2FMmmiox zAS9a-;w5SW=!FCxcc|ab);=q`4KQr^Tl`&DQzS)AlMUJq*w*po0c}4`PNNjI(_&SL zoA;8=p&U=kf_oFG?`j-p3Y}`HzQZ`u>7h9u4&a139C9H#IKh&gOzv|s4Zt<1+!?TMhYH4u3Sfx)xr^GEvw3+S2%tHMOD$| zt5VBp&?8Q`U6CN@zGyIw?F`{8i$NIo%wQaA3XuV3eL5>!e^MCd-v3v-3QwquKuWSu z$$=fGnr5Dv9&)*S{xxuV1TaBEgucqpeF5qrXKaNFOK^;qOv~Ak#llyU>xJAL~#*f7E*V!SXb-l@3bFH?P^!?;7YeZ zGqq7lFHl=QE-~rpacQv0o*;%M(^V3(_>|mfhvwMZE-@X~JQ08yF`$Y-t_c!?nw*6| znV}CRI^8O+8PLGNx9yq^)SQsr1b;=X8G5g}fo(9Q!nv|r#HQN*v@dw63xsc z7`^Oo!VvKds^dA;=92CQ6flT@RmTU_j^|RPJL`bk)Ww}hXj`FPVLTtAq}muHHvD{e znb2^Ey2rpp97p>C2H=o|mn7KsL}{BKzBz+D8OGe2DrVW8D|;)=b~r}RoSYgqO28h4 zeS2FCohbICp>p7`>sk*VdeD7fni>v+uqd`>?zJVX+H2<9ZfYr6C9rtr9mCz^t zyP(7`Pfm>c_ur3mQUxS=D3qQ#Oz)al@CU0U2MwMYQU`w;31G)>vN&#}3i4-M1-yn; zkVO;LG-dt%)s1?P@v2NQQ?5oKNsYQhv8UYKi6r}hLm2$vA$RlT3k(70^RA{mv49pF zY2Hfbn^O90pI~2rr8JV$^GJ99G5Mr5=cqgK*X_c3_pjV2@Ll&-TN}fmXabEbfy5KZ z((-EFZ8JBbApnvivq)2C6&jkr-VPHIW|`LQ`4%I}0T^YQrJ3)hG%S1VPYQ&ypNep| zBk}|<67;Q06kdgVXlG#{Su$)X{n6Ct-Ci{&$;L@C!vn#SX?k;#zGAJ?QcZAwMv?*ZH=;}8XnEd4U2#vuUS4i@ z7wtTcc)&@Iu&LYlyWUGuF*sd^*fKwR0;=vu_@A~IlX~0|aTg-q;@=<*I+56FOxR>w zXMG+I6W{}5+2}{vp@_WqBW~)lcikcmro2#1_+W1W5dKxr`i@yIPJ|NF9FuccYqxIW z7VE;VqNP60m%3i@*P_rT)sNV$sV_EqnwYZ;*Z{*cVP5{u8_mv%t8>gO_p_R>+fseh z_mA-4kpcrV>E6Vf%VW@-(G$AQiOCIyjK0?XJZ*u=I7S`Gdz?TkU~8v`3*gan*#huc z)JAi}egqQ?MED5sGG8=XaTi*+5O5@;hjZdvMtm^X-iD`#xUm%w@yH__%H;l?b}cLe zGeE{bDJWv18D{)xAUz>ensNoU*|&gAg*P3cZSJtIc8{P*%PY(HfabsHqJy$~_XDhT zeI+~8s!Oa#wVwCdbD5hK7 zh#i8NpEtlEWhRD>5T}hwKZG{K&=ufId}c0rG1Qt#(kB)t`8&mcqGJ~sDCk*Z#!cve zR=1{_1Ak8(5o0oRk}t>LRo;;urGIRSVi0Y_0U z86lYYSX@l~emaJ-w>IN5-%(H6REIU?v#j zV90MyFPjK{GJO$8b@7zyb!wFR?h*FemJohr<&jVi{m^KG7gt_G(eCbg4S~nDgo3&v zFHxS!^=r1Pu?pIc>N|gJ%KX9~i0Fn7kMrWb|6@?jZZbcu@Uu}S0ZVl#0;T-F#&W6G z9iUkMQWNkXW*?*!SP4-7TUn91TYtJn| zOCQgE{7?i?+|jAHUo2*$_}Vt&4>Ii;J3NV1dg{VMkK=rz*4}-U zfzI}KXF0$icJ>jw-50;zZ7`oYLdI|w4h9c@?s=|PDVqq%!&IU<5P9eThX4gWuB#6A z90;P=s{pECCcqDCv}%^7w0Z3$FWv|tbCB5?W*8G-$IAoLQnx|9Rl1h9_D-WAV1)}v zx_P?V-ITbi6GPbXab6*r`E>&eYvCY%uP-vMg(CpzZ-BXW_-DF*U(6>_8=#iKti4toN(N#{8A{-+<%ZJE6IapNG|P%&rj zrp3?bS+AtelAv{4ktW($eD$w)`GFMrIGO>_wz;3zIz4y$vQ?q`4gv7}3>nOQQgt@y zn|l1qH>Lh0D*hlYu=JD{btUe;){bSGt@97^Lb?nIxGNRf9V>|guIuBvFg2}+mzZvM ztOD!l;8DS;jHT(K9#tkm@H|`Yz4(q5`b!l9@E;fCf-hhBBVa%fK-ow@Kvb#3e4rEn zi~m25!$S=v1yW8V-)#ftfYc7Epk85}xHlnUcae4iT@;s!3L2-S#Aw8kt;R0swhCpy zf3?0B;Lb=O)gD4;qDh0i_fwp#xg%S0Cz1UYs{(oP#cC8U>M3^i{WnGTfbNCs-X}bX z^#axP#?7T^H==!`CCjY5VZXVSxzUj3Uz7n2N2&;jMqEU>z^`yCK179=OcU0W`ayFb zFzlkBCdHub>Tc={J+nfJDu?`^w_uOz+*z>IyDJ$xRrYc}`(iiR=&w;pirFAUtfM8p z{t;;|qX3rHrA}H|Vd8~C0BTk_-aB*cMb<~@;N0tgEo=xWEvD#8a!*FQ+r%+y7K|X# zdy*U@!v_T5`xVnv3-gauXMEaq^ZIP%9Ui~fMxkJ-IYm=~qNhuqtQNRq8Y#MPb6zOa zNtP=SGgL8u)ai4pvr+$2R2?X$xT=wH_FDwXub>cmDt4II9W^5;07g)J5bj2S{eFl1 zw?9Gmz)ceb238q|ErHF=f%+8M^fCt}_P@&=!DpQvMl~t=7v=myf;hf-Ta`BNhp>Zv zA0QPu2~|p72z1A@T{Ul;(oOpwd*SUnl*1513saWAF=$-K5GzFKoc@_0xSofduDJ9k zy5ZExk4PMDPwTk!fTR3H)nLf5&SMK1yt0pE)_;W=lhf?!#!(xXc$$%*?juNc$X>|6lR`}5E@N#(7gaJo;XeNkP zWSJfb3$e(ev~3l@_w{8wRiN%rkhvlS(miyjlpb3Di( zGJY|`12XpYqg^uQLtC=#EROacBN-T2)uhtLhMynxQjC?733J1-I<;!;B@o_{sgxwt$r|`$ix^@GwI!E8< zU$w6DVHcRyzROef&o~S+VoWy)t-W$KxO3^l0VYEdZO!2D@YzM*j5X?v`xrj*QVBDW zJ)nXwG>xCU4))~VFHhMa68)!Rh5X%a`i~)rMEd5UsCL#?)cpr;OdFYZa5GX>{6Urs zHCC^H%^=Lmryb7CGf8v;DqC{eSwl@FM0V@x4Du zS^yjfh$+=59)vu#e*hHqf6CF(Nt^aR@M7@wCmN~q+#m=jv=wfVei3wZ+}#31L0JV& zrw8PUY1jD$;$YjE=mYdSS@w`n+AMpIUDKJcIg740u2?~7QCrm zxM}_O2?guSF>+0K_BYMgUtveq5+XF!LsuXNWb1TJ^-OJ$E{POOlnzB3!e(o!8)7kr z4O;Q(fkt{nh-}UXZM}4>+9_KnjTPy;ben8sYi%Qil$pF)^&lfYlM!-PKO$^b`xDK% zb};)g&}YIa`;Hf{i9=0*p2EsyYD?E7Pe&q%%L+2~Nt`>-a7F84C}Z_23ZVXYvr z1>cge3cM9Bg#nx~aZwPnedqFNOs3VfUpY%su(;+CUsvUbds;AG?XWM(!*}r~rdF|D z+;rMxXAvv(9&7wmFGkpgG6ygr^ZmqtE6Iqo7VdMs4|lvCSv&)vt{@KNwZ0M*R_Piw zSu64ibt0H9)J(YKJhjFypl&Rb?%)S7c){+I@i){%Ikp z2=g0OyyE7eC<=!D%=Hl6Q^kj}YgL+5iHPzjurrilWApo9(gvX|iKs(kA~3cXCwqhc z?<^V5h-G*hFc8rA4^PJW|M48D)UCi2si(vL%Z+|QpZq@44+H5N5${zgEkY~5p}r2I zCZebmr>|h<(81wpO50W-#gZP2l(dd`39c6%&~RJ_ou}S zPtE|+y3DSRXDx;Rr7CTlSiOY1gVa7ek?YPi-3NRqh2o`CJKO8jsSfNWSx10fdUB~2 z-=i_%SRA+Wg*G5{|9nj+a|NQXn@+{b4sc2B`R}G6R!EuIMi`_RnFb4)%Q6;_F8;vo z4e&lS@_B<5&SS%EM<~AAlrU3JOklQOy*u#5ckxgE_ED#xq2(C=vRJu z0b&gzj;K1J8D5`HBGp~c47fL;))+`v6e66=5qdVvQk?!4<2yTr6?k`pbNm(Ux)698 zSR-1MaU(m;&dzDxHL_zPOK}>0LnBrcGgsgVBu7?+V(=>oD>2uc@XZ$4Xg-VQirSqv zj?lrJOzeyylbdt|>83CR;lQPB_EV2^kWPYqrq|YGbP$})&-GViNzNa$@u3FYfrw6? z<#{Y^Kg5?PmvEhY3dBEOy^i^F8uR%dU~8aAqv^oUjsspj6;btv6;!MtBK%+Q>`Ps5 z2htYg@9o?G#jhLCgpaU4h=ue!S=oW>2R_{INJV0XDji9KUVk^@bl;N-gam&H8VO1r z3t!b7EU(U!k7tA68CQ>{ukKDd5Rg44dlY{Btxw$xRn|`T&ZfN`KiJB!H8TTvE0pok zM@@H~*HrmDCbx3&yLBOv$i!BB8at<7^7d`ov${vwaLcT+_9tB`ODY!PAlRu$3sqwW@3ArP9!5)%7H5`e&2j0w0@< z^i?2H;xOxbe;8y0+0?%)l!?QePQpl3Q1nMmg%M1HCsp#!FS)Sx&kGy1=x+bs{jHvy zBY+$q&?a?lYUHg#b|nG?%lKtG21~mb3}ikJ@4YBit+HU!&jwKU-D}&;Ij_;qy4o1Z zY3-nlZTlYWBD2@8EbE^*+cFO0mgq~SoQ{jYuN;SJ!rm3eAfGk> zkT?0uDVZEqxwk=Q=b8 z$qn+nidlWxRjm%dJRE(HeCGxGNqjb=K=$fucyugKjrhSONXumm@0Ic0@ zBsMT<7qHplr5(Eo9BOXacKG@<%v#*zPEv6sg?`RvNBC6+zmZ+mDzI{iqIo@KQk#eo zT7%lMNHzgzx=~z^2jOIF{)1pJW-7?o?>Z=@DlFs-pxRMqCjve(797Fs(1RzGL8C@0FN<6? zttvy3LuhPNV!PUirF7*@2zRR57zbGVm?@<9`upHH8Mkjan1Y{vFAOD;8JSJ0#1S0CNgpa8LrgIT z5Fg}%k}pw3yDNstmDqc)cQEGmczoHq9}fW{!pN@-GkiE9f$G%%%ZU^zxHE*OU8#uPG*5tsv{`wC0f$eLW`s1 zW)Ao#6Nm&-VHehazH7I|mpze==L450{^A2tID7&5GC2AOM&Wb@ikH=(!Q&ax-aiR| zJSklx-snjN&0fG2O!`>XkHYtl(>Ef@cd==I(j4WOTu)p`e`BhJ>ZZ_PzCRrl+6=Ew z>lNDCiu9DGEqRRZ!ctWuN)Jm^sd{uAnqrqf15VHz&H+vfyx6D05}v~C{Sbdf@8A?n zN1^HC>*aUVMQJKSKm&gvx#S__&ie%jJu4W!#N7)4nJe3X5~Vdz?LuaX>K@+H{Ua2* zC;+Pat*<}q0(#O91+6~gm8gpn5I1URD?Ks88a?!(hmIlvAR=vJf1n9vKS<5%CB!XBg)SVoILbuP9Hry2A$ zT+H8Tw_@KXPS7@i3mVoI3$O#kp->THB_4zS6FUTL2)5TKxtE#jko^T^Bd&-apr?(F ziyRf^zg6bK<^*|salwx|hE&BW?4aqj+l1MTV{9fAQ1}n_I*ir!&bHsLn;_}J-f7}k z?S9t>&pBX5^j#1&Q1p%&i2f+wUksOB&2G`QodYF#N4}PI0d(QYG0hD?jy9x*1Hv4& zfTV1Ne!b5C>#JZJNI3*?mfiHm^4ou9u;xdOG@C*SeqLe$)^1VC7?oGU-m(Tb{f*NV z_BYzIj-*x@pVu}=%ohV%%-)VRNJ8G@;y$+p)|qfMX+QqYImf3MlM+^bIa3jarwQ|V zmOeZ>wYEsHmmV_g0$w5@BkhUWIYMxFdZnSIC#>sJEDFS7dxjaNlTle#TfmbD=+Mwj z9QfI)UMLI+9)dUnh#{c<|M2yWL7E0(mUh{;ZQHhOv&%+Tb>S`Bwr$&XRhMns#@90& zJF&B0%tqvskw2cl8F}ZO=Uitj%=))RsSq_rS(AU(qDW90bFg0CH|^4?IVe*MjNmcM zKkEg?L}M0(wr3#j->B)sI+2E*$tezz%M!wc% zE=rrHs0g6w^Mo!^OHlx*SWn%~gS7EnzaVRnEH5MV6LsPUyEoHoK$~g)8`x%=Ct2w} z{WW1B0Va$+AJcIOj%K2>2UmO3qT8HlrHCxCnbJ@W%AsrlTX)Qqzo>!3GS`zVz}8e} zpz4BP(+|y5{0zmmFNY65ClRKbAnTlekOY`yT_k+^@WQ?Qz5yAPSE$2t;n0VKHis&o zPmhQ20#I+qQC?zhA=73A6SbZ%Qn3+^&-P*>N7D>5I?a0v`%d&yYLZ5;)T8s}s>W+- zT5%-<_kFwn!yuY797?b+sUguM)>^=iJ=R}fzFJj;d%Wq;mwwV=0JI?lwbsgVcTEq$ zfA3Vpe7ws0ag>(SQ;&liZQI)V3Qs45^B`1txl(n1+R3(iwfh!WUmN7)mgH4x3v`r- zre@^%A==jiLnWO*1a`)^t2|Lmyxdyl_-U%f=DjHFHI~a>T%B*)tLxt~ICV8&VXbMD za@W?hVpH7=4u*0F0NP}ON58GzjWXH!3hK|#w$gU4#wMLjj~?u4R^a0u*Kh2+nM!fN zB#!43)0(kq^qSyV zf_RQ4NF;l>0SHTIo-xz~s83NZzZQq3k-mtpu&|uDkj(p*a4?@zY`9~6BNfZLnZB6Z zc}j9aS-Z288g4$$ukyI$^uhez+XDAp8lpdPi90y$l_wmRR3D1zqg%8qt2>s$Z7Lrc zKoA5ZH&$({8G;dHF*=>@Y)ry0z=2XW??7YqwmY)+056}b)fj|nzo74t5P6+4A@|PE z3N-js1qfZOox_L;+J`Ls2Vj|FEaE=4KRAo zn(it*4yaTQ;%u?hpk?t%r=hLg_M1_-2>#fq^IB9ZI_I3qItkY$mTic;5B?wTGl)Qy z=|6h8(o>*w|7@$V#Hrg$pzQxs&u2+n*#(Ci#rH(BEFqOFm>CI`vSuAJ_sXnX9%OWP zt7B_@z=TW)H##Jljq7sZE9@iqMYcva0~;a@II2C=$8pWRxhJJVcPp2T5jt5`~_HA6OK6m zDD)UFhP3DxAAjHP0DeL@Jny&>sc#s4zGEmj}r{zF|U4Id}%lOEcf7XFxD^# z=r!-KuV+sxbUs`}LS!&I6^L%HIE_WWQIY+`XJ|7OUd?p=rHV=}7D-R`tYFvwb3w>{ zVvz!9H6tNgCtwVhB!xKn9RawQ3qPcHU|u%)!+$j48+=7z9JsGnVC4MQFD@YE@{}Tm zq#_ON982}geE?l*I7h{-rW2X&W-NLQd-fsYFiec7XoJzyJmHORL@yG>3Y;#Gu1v1Y zGdi;G3C{|r)V{rm?w6qGpM5JX4%==&IzF+#^X7%gIPcHf-qCA~-7f%DmSdfMV-_*s zP2z3Q$vpF8w!_@BG+CDkakDWoo>P9C{D_HSVGCB|b?1xilI*>H&Y6C)>=1$xPjN&< z$d})RzKo{`oq{`_nz}V*G=8xMTFw=G-kQK5!^Num=swb z+t+&DZEfBgpSRCn;Gb-a=ePxk)e6$Wd@LGPw%Z3lPMZ!k``0IeYp-6y#^wYhk{ID4kI(cga zb8F60iZ1$c-usiO`+Wyz?3!^Y3CG}3R_gjig%SlE3;3T-rju5r}bLK0YjC zK!Axv4~kY-!eoU32eAfamx9The}HxVKo!X`=o3|*c$6nWFOSqEor2$SC3!`DrIlqp z&+vhu5&OtZsAwa)yY_i05k6hbyUXXPro3qDwNLi$dLY` z?idBWtS3%|lGGy;q_0ZJ4rKs-_QA``*2euILlb}d&jdxjGro(dZev4ld&#euSVLxW z8h8xV<24LsQ!>5yb^-GWk0H=nkjf~2Per=JOW|s#tsltFpEJ*7%d#2tx5JUV?0@tg zkEP>z9~l755=}P_+gSIWR%Kp;^_U2XC_0&PRl6=~f5>U2y_4t9d+>NYj@&8ZkN1lk zm(S<@Xlw7E*586fpEU(C1}6?o*Yx0(hxKG{nQ5AjuRtM0HS4R@Eq4{^PcM7GAJwP{ zel`XkioIH-;Mqy&Ova~L_X624M>)mM?Cf0|MB0G68$~NPB9`xtmbH~RF|k4H+ZmaG zqe;DrBdQhm6Rs{NzAteY%$~$S8~fcXE`*z;$XiwH*mAmrb<~A5&~r#Ul%CpJ$h-$Y z`z|r|wJI-f4s;-p{U0D@H&*`#$G{>pL+k529h#Q36yjuKl6rOEy$tBKnoRDKDWtZq z0XqPToL+N1hCA{sV*D+~y5MA(P`nfhXI3q5+o8zXEk61K{CMCWU!uk<2;jd>yzoSRiEC}tmqfpXBIA-RW={f%5#f65yr8otd7{oUbpG#dTrH(E;m4N^U z!ceMa-W&G{W2en>q%i6dc#6sm_uz^by#?iwwQb9*umxe{iZFRkwdWyIO|s_^qtus`uWLf?5Z2Ez zvP3Cj{62;gsG{+HAYY757du0n;Kn(xMvq+`i21WUwii0a{JBJMpr0;7( z;WonrA!oBU{#6)PyLIr>^%`j<+d(AN{k31Dku=ieZh}{mmzdY7moW);+~JukjNocT ze&qN!IlKfn!7owWVbxu68Ua>p9dIh~)ag14)@(WarU#s%l(s)81wMeB@vq3brR@{i zcPCSa8~9b2(C+RLE%UtgWEy^y15gfu!C{NGSKIDuTNw9E%Q+QZ(3bCA<{X$mlYrtR!N@taPa8WRZ1fq6ZYIdU4J#$WY$2s=nT-#U1@|6`J`>FQH4`tMU)gN z)3xFuLu95(G}*SCc}BpW8F(UOon2Dz@nVR6rP6jbh-Q{D)$-c_pIuc;eW^AvHvz}# z6Co1>90A-+m-Og0Lqq2|*w}n=W0-e`=N-YH2Gh@=I5rZg2T!n!a_B^iOgV`2|WnH_1@)nAm7j(%$tC?QeHn1gfuaRBWc|%IuHMc+_xlIcF}t=w=> z&jbpzY>s6Fsqr#i`?7caqn0av(=zjXU7==39!BT~Odr#wo8*=-C6-%={wJYpH*KxN zl>u?==!~&F>RSPk7frcp_5CGBxn*(t$4nXGXy`ZGj#-OCC4+QP^9F{;YDl~~~yK>_Coi+!%#$A>W0 zB0vTVc~#c$(SXWK2Wo|Hn5><2fonXv%TM1~B?ga6Jd&Ixb(q<`bI}`h)4g^JA3h|| zmlF@+>)z_{n?ClCM`_DjM4+QhPvRCkO&zkXA4`qLh7 z_vO3jq!p6n^6`x*<54D0i|gEuSF9MwXB5x?3fuT7lFb`imQ{~mW$KYa&T^~_(uv51 zG0v6clD-Ky=%cf&^D-bh<(6YhPkMbCFtpzv6X)mqh)hI)2(IMpO$Npnczq#ZdjSe3 zB7ijvdOG~26sAD5l2)0TQtkq6<;sghQo6I19SG<~HEaj$4y+BvWKm>r8 zA`RGQVVc7U{6~Rj*vn{@u5rqZ&){lWvzlRa+io{yz2H*Q(J^>TNy6g12V>7o6S=FkWX#U)Z?3RRY%tbO^-PWy z&Q59+Nw=Ef=Uuq+x;MiJuEoZ9)&yKbAZ$(Y8X%(K)$E`o$?5I1S!v!+j5eRT6)JP$ z{QsuAK{gyRP5q44*c^L3dCao^6E1vOyUJ#> zm*Ojz&s3ylx$EI?j7J%inb!@_7M@fmCel9Z;^8dsC@AQ-s5+rCr#!%B%mVz_Ke+-Rzd67avacy*OVae|8$#2h}CGD5b%TWQ}j<4rJ&685b*aR&_vvlZn zK~3kmAfLpFyi#PKtj7-he~27YNRU9&>$N_NoaFt{xwhWIdQ?W3513;d3EcTH@eZa!gOIBO- zVCMO284MO)WmTEf_IK$Opm4da~Th4u4l z-F)#_eeA#}nV9+4(UG^qTe27TBh&_Mw1Cu7df@Nh9PaWMf^RFCoUtFg?8oeT>IJFe z;#-pFlN+12q_dx(DFD!a-{R*{z&o_?KtPdF{|g)>c=rDQ2kF{5;Bun;M`>GRXkz-M zLunV)Nvk&r4OUc-yGC`50GYmCOt$=?kwB|W4YL{BX6Vs-_={_EsitU2ror3k`aXa9 zkN6DS$rE~wG`o>1PtV(`cy!0l*^~|b1CX}ncP%BR>?rQjN zUS2U_))!D#QG2bSXhE~ACv(dnka&TJ9hP#jKEFR?%@FT6WeYlZUhc)8`Ewzwg#V6_ z_I+eN8lRR%!0h!OX{L5lz$k!kmj?}bMZZ9(!S%8ePzU&VFofg2Kud!*`t9sG#FKsl zTg~qd186!xMl|nZp+`$}%D^rOVmy=rgRCM2LzN+q03UF~wq6cB@hzD`k|Yf_b;o^} zf|bvqpMKWHfvEvsa7F^v9ytIy#bI}9@%-%xSg=g{Jz#5;?9Y_Pl!fa!s67wq z5;nj_1oORyTpwQ#Rl6_paAU6M6c_tdUi$6a=o%He4pYStw~7MW(6dXSI$#PqSN1EB z3^WyMQiy5zz+dPNrdB#FHz@xW9@mLHamreENasC@mh@wj)2Jzlc8>Nony*rwUvA`C zQ4d!R0MzS3Fov!bdjYL-%#28xI|STWJRaFLkycW;$s>BQWILwLB=OIaHP88sh#f1$ z9iFke;*0WfL{y0GC1>tLcL01~g(I`mv*@l@f#Qk)9O;*b^vL2Dck7=tv{KJ>Ahtz1 zjJ3Tlr(*^d!L`~hbBB(&5|$T_X6le0Y;7tB*qMAJ88-p-f7Yd#JMSg~u8pCtTHn>8 z0iDbk@{@AHcp{?c%b5?83XB%@NXJ@6ojS?S4c-jvGd;)$n?6?y6KbS0-xq#OS8tC; zu0rM#g(Kc^&nvBJSMe5!+L5)3o8^W#y-H~&Il^8BMeOn3MIPG0_HuH*KYyG)`@KT| z=ze?tP<_2QUCi`+I(}V(opj4fptIYzg0zbywf2~RM`^`^69446MV-^^bJM72jD3!c zjfrtbT$K-~?TbQ^AjJw$2*@F1#SFpcuk)V|D&Ap__~BVjyxfifg`+q;6RQ| z6lzWrvio}g?_?n9l&1kFgzc;m)U>4-pin+58CU4Zh~|LmR^ys|aIOMU_cub7$tw$z zl;ESTt;-1Q2z^XfMKu9Q5b03t&cfR~)i!iTPNm*;iToL2rD+Tc%A9ALs+33*%VKCx|BTN`nexe`5I8mZ_z}gQb zj(UEim7oIA2MwMLtQ{`|f_BdFB`syE#Zy9JSN-hn-ukiT($s?Cu9eW504{Sb`nvWtx5oSd8a7k}nZ#^5Z!zh`?kfehNb*LU` zo?rTU+kT_SVoLGr1*7n4q~P-#fKjmb+mRLP=kemJv~u|JaZM4 zcF-pQB%uA*ISYIYYz#L%O$_>?Hf+%@{BHn|Dj2GVzh?qS1X@{tPiVXf^E~~h;Na;j z^(T~LHZqGvo+9DgU;dA@;Y*rdm_}5N5!35IQ#I}c15)yX{%ycr?${sFL?E}KL!R_P zqpUR^puS^f@zOpS5ba<(09s!3@RH5m6VN+Uz^UIE?a)N{UPg%jIzb<<05q*4_3)B{ zt*!+cTZG2n2^g~WirY{HxllG>G7DorVzbw7pscC{s7r8Lq8#L^4suY22XjLcpV)p0 zXQKWQ{r7s>$%|gs>Ek0&nx!sFR_Rkw6w#p8LMbp5mRv}R&{H-gz$KqMXq!W80ju(y zt1m=*{;B<>6~y?=aaB1SgWc8D(RWv?#hTvPTM)YE=0o?;Le5EW&Z7zAgC2+rtOO)p z^*(?5arTT|UHb_hB4zmy*)b287$L`7zZtaM)8hK+pESJERglRG5%JmTd2twxeQwKn zCjMGH7p0*_e)Bg6fc?)Fy^GjZO@O5oNf-d^`xGp0mKP*|p)8{wCJJ^jq|tWP&m5>r zePNN>9P_E!|JXOT{Fh}7J3TApFB}uyl#qlr?mX=^wychkc|pm%bJT7~1Yur*mf*z*;^2Vr2#Ua1+51tu=mW zOUAep0vR1#4LOD$LP~a}$UQe?V02OXBBdWfR0FX8V2ST43OGZxeznVm5s#}?g&kZX zc>3aqEOjhKPU{fVq3qQ%4UY(^8q^*v$%BRpxyyy8uHb!#+20fBUHjC7R#7U)G49!UmjK<~@(!w+eWuf@$Y%7|7Xs#G?`Ql84>;9ES4{uOskU(Cd zKNH#;S49)<#7yl*Cb9V9NkDatUhi%)HG3kwx?6J`;9o|RFjr6=6rJhn64%_dVkPP< zI~i><4I%S!p5_ITZ~(%j2hti~N)azcnPhaB6Q?%@7!*S6Fx=i*2De?KT z(8z-=KskpH1Tau?ru;8SFeh)ORKp4>WjAi73EP9raScL)o1O&xeN;fm*RPe;@3j26 z5aG;Qf+(uLIzz@uA94&S-5UTS?Id9uQSHdrIB24QMw`fnuOToUkHt0nrZ?uQM?23{ zuMRznPMMtw!I|a$VVnT2FXV%m2s&@bxpGJT?@~BM#}6#|q?vrvQda%V-mWePoBLvL zW^9NBXmjZ7J@@1$*xe2J#zD|2Nam%UpNtKEKn>W4y&(qA*&vs?q?b$}#cSRG!xdI> z9fipJy;I-db~%0y&?7 zmrE0MA1N}IeXF(*9Ap!BtIrUZ{IF(-ud}D4IedMzLA~%{fU_a9e)Y1pNYU{p(_Hi* zReH)0RX6xfLICLwOQeaZbi0pGYJ@r*U~vNfBDoqOh$ijM zzpOh2vtT!yPWk}8HFS=fmu&ZG9`ta`u+v>S?d{cUd4|!GdAkqGzix0I-Xvb(gs42w zfyM=CFB-5L4x<&F>x&7=m&%kmcbQO=8-vyTq&2#Wvx3TFlX7H5 z?4m)9+#+&{DyvB$g7wI#GFsiK(n2`E;Oo+Rc{zHNaJKbpBq9}Es<}XA+PuiPjar2-pf3(3yLlX^**R zRL$G{5xF86@zLM>9aL#9xHduo5+I9o`@)g6{#xZ{WDW$zEr;VR{jP9%Q=US3|IkT?n# zV}G=EqNEh2xA5TRC05~Cv8R)pho9HS#r^($_i*WVt%AXqUCd-&`edJgKn%R4`O=b5 z4@9%5#GlQEjJKnU^(^D~>ho%GubkKhjd0oQW*I$>77cS|_Vr9dz_dn^rcE{Yzn}JG zb}~`g^w7@K0C~>I={%_}(k0KNf?enktPjGG!F|GDI3>;1k-TS0Kl{V3J2b@4(H=|- zL!wXdM`D-yLeDA|RvEh?USQzz`&*{(DYh#*B%(+i#DyCh?v?(&<*S@^?G3phL%wO? z1OE12`t4lXu0=?IP*cNz#mZMBABg7&$9|&H<6TH*s=0xK^4ZPe?0t+&kmU-dMlcLs z^ys<)pxXwp+YE@UZt_@r8jaZ}k1DGNYnvT7Z|q#y&mCX1I!E59DtTAy=gyoXg0cVm z`b7)z07w3>yTZc`1jP5hJ1nV{&!Bw&)m6EE2E_rm{$)&HAtM)`sY!OLKzl<`UrQjF zzql_^!EuBjLq@c)1R~W5Z)_&4H*7O(Cp)h;><`=xROIsr>NO&}r8c+fkV9Q71G zHY@}vSu8m?xQ@jw(nhP+m7BJE&@-b!*C;`D%i!HwXso!|1`@dcQdnBXJ|ao z~DTlptDj<*ix-*HzX>N|@Dga!I>FVn4#7#iUQX^}a4I7b? zkdBI&qCdGY7ZkB!{J3>|lp4fh;J->5RLTLeWl>W0pT(ZnO{&&Uc&o466VT1qv(D$; z6Ax}I!WK0M3Hd#R&2wbnsTatn<(``6Ft4WD#1)h3;VirK806Jb{{D4JZE7l>!EEU# z&X$Q6>D$&>7#{%PEqc8hWT0QG*V%fU2bNZe@_%ecLF?QJwUXNj+EF}gpEB{|ABzCw zjBUfYD#z@Ekx@@<_ApOOcod4q!f2gX2<_f24BE>t{_!WBLp3M6vbR$fjr$GP%N+Gb zU53goL_EFt(wwWAj8+w!qO7U@Z-A9Po|z%p{0tu2pZ-R%1+-#?EarM@cE$VN{4NcR z;NGgb;{KaxqE%fuR0LHQLROE9^7Sh~$5)pRpIZ56d(!*9uZ5P}eVfVx7iQ%2GcC{( z?L6!=4|PI5FQHDVCpU>X)$`=~og$6Axq+Rf8}(fsBg>%Hy~1%Z&S)1IvZ(-$$1cZa z`Z6vg$%%M53)cuN4muPrFIqd{%6w8fJ2Iab%;4NJGO8=E>+Y)vr6`f~76|A+4n*Y^ zOWJig>x8 z`lvVP!+GCdusjLw0b(Yn@$=3kEbd9KgcQiw9DGytb}@-tigl&D)d#5>L>w_j^tmK~ zJbsx#@U{QKRJGySoNN8in(re@cSTn@I?|c=UUU}gaS2bFCkq)E2Y}z0p+on^s3}zL&6ZvXn{=F1VpYqhxxn>XYOHIa_AC#8#T+;g z?{Clvj$L8(7^hj{7OY0mVFEjB)X?IE{=Rm;pkGuY4KQAaPP|hNxK`Z88Ax^`#Dwi= z+5mcPe|Gl7hJJRnjJ29Og>ycmwEJENJ`vi(Qr0#8_8l;Go-2K7z}^pZ_q_T-%B zh$&{e8IT8)d0%&I)Txo_m{?aJI7Ag9NhHzudH8}kmsB2I(?iPu_u0|7U}A23sUii} z&sBHoF|nn4Wr!9PCP}KrurO*Li<--?_d{4#`D_F|7%H%oR)z-g^zl~WR*{emjBzvv z5ky?Qq6`zqKBjwo^+<3-)kWh<$1YL>@Lyd`{RZ>p-e}|M2ry(!x^NKaOLrYa(@V+y zxz1!yK$9J!?l78wW(kpv@{S7zr_oV8iI|Tsj{~n~@R{cnJ?9HU+D%vfbH0>{U9YjY0H6_Zy0FcqOje$|b#H$=PzlBc`$ zy0-rMn$Wt3ot-ifH_t`F;6k4=qtodE%()YODf#ZLTCO#7PiM3ItTWz5-Q4-_RC;}T zdyS*bGT_dv$vQ_>A1BZ(3@t;Ua~N2Ai1n^hppEicQBB+3-GesVJiJ2zH3zT_XsJ&q zmS!hUE14_6X{zSb9Eo$$k>>ks?|1b1DP%mqVI*>$SjO55IE?RU06WHV#G!fVe$3>M zAIJ1*e6Aw;8kwXpKw)H)|80)y}oWI(RhGuJ!7Q`Ph3>rh;?d!3{gg|$Cv}I>W zD`CdC&A69Ak{wQ*^#1HwCB}21o6F6u?$(b~hkvr0j}`sTjrC{@f~|k)u(1W(y7cRZ zI3fIi`zd0Q6(@1@qdvB*ml5;9?4hvaUzGbQNO;5WY1${5_m@Rj(L;J-uUB2}=_1r^ z1E#sRTGQG--DV?4-R_lvW-OHs!$j%U>SMbEUj=_6vc{iYlQLmUB((aMio^&tsY z7az!+OcjD&L(SLqtjF(-cRc-A^qo_(iRc3WfuxX&!L86;XIjKftZ3LQ5{p6VKS(no zEDVSKVXddwBiJIzcU`hLWywe0V!SLIhv;FN|c znN#|#7@aV#BOJ><4aH7)EjFr!Gn(Zre!jKSL)Y%geOv1yFkhMCNcac6m_H3+C73VhdKnB@ zVf7Qqco&IAi^_tvY`(!e*%$FBsdPg{q+gCa1vw^7T zqL8H#=KXHVq+O(Trq)S~?qxW)MJMAw?~<+l)?}+$jcY%S5y1_ZAF|pBo zZxZrl3vRA*qkLZR1H%qrF0g*B>0NTRHO8za>D(dbOz;-!Feu9?UGp>+AVeGdu}A`2 ztEZM#U(B5Y#TPe{HTZq9a1bWSS&j-p}n zpyY}U06FONLKDug*W~pbeQ>1~OCT0Dq}GtR>KlDfa!%_D^S{4xlz`Bivi=kHs+0dG z=i*-`4M0UiSd_ueOkE8c2$b2v*7`p_HxF1KV6dlu-d8ZRe~$1g?H_v_Nu=-GQZ4SE zRVY)U*V1*F7$=fNHU;=G>q@BSXN=WD`~2;*@kf!nkSgW^T>Piv82S&H7POxMuWKi%t;3BG{+mik^S8k?9cs zv#Aq*ON4*o^oQASrAC(CL}Cqz(hz6I^?N_R6&EYV+w^%t9*6@ zy;a#gd{zUB)!OY3OIBZwr4a_rOy22}2&=XeJ5u7(T~m9wZ0kvqgXGD-j%OqDpwxI` z?ap8!&=-{iETq^#age~l57&*z-Qb1+2TDB>)e=0=rg|4JRs*3eUB&*l(gnmq#0Nut zJR`&OFO@}u+tlsuzP)+9JOv-(DbrL~5XVMvIPDMkSyD-gjX1RR?<;P-?@nBja z#fWVZ@~RQNz2|%rcd*0pNf*q#F>ETl`n;r#(Kw!+KQJcu@c^ttaWZ&5icSvz!b=Ks zj`re5)(Z&$Cb|EI2F$eFn&X&w>C5JI*F-od=4(0mQah!{?d`e2>rF`+;k$_%qtW$YlD$#f%Not}?rG1*#k5Tc$t8`8fzeY-NwDhWw~+{s3DfyN5a zsXKsi7qSstQt05>XvOgy2^StfD>j-HzSp!1?~7`EWS=_hjebC3hT*I*genilIdi)j=bh=6cbIh`| zFG>uaVyX|)@!??pd~`S{*_Nl|HA-f!BJjOip4(xxcT$g@ha3=Hj^_lJ3StZqHL_o> zY?hZlImxL>Sc%iS<^tl3Bs=kif~6ZFgI#BTWt(0O?cV)_iZe4COWXbzy^|?jBoLnh z^q||u6_Gzk4k8Zm>i!$MWs1?(MidhWGQcVCUt%av?qot&uUSfURH|5PVYqugn&zPN z$l}3JKC>Iv0sPA!yG&Mq2TakhL5*E$sCy<=O)f|8Ct;`?FDn0NIusC@nr{mqZF4mP zB!V<=4lhs0VjVMI%jTe4+crGdcl+53Xd_M>#Tm)I(`o*yA{d!y5E4p}5d&)T`?zm) z{SMdla)!n9LgR>Xvy+GSD%a;f)8VdfQ;QeR(5Ax(Z_-_Or{plem?I^yxzJI1)$Csc zBlpZvhrf|-b2Pk((sRfvdIETO$j9$mEZMKRZ9aYhZUJi!1%>AY#nR{8Nb>NnC+>8H zbs$REYt0k0DHAjn=9l6kUyej+KKd$#Vwh;~bBH*4zbw;%&) zaDGhx1D3aLSiJ1Bj4nsozapjY;HK`BEmWTR+SO$BtdaEHnN7P~$g$RQiovAGGRC2Y z2wC_}33G!SNq1li{nUNat}_iQ)OjFm;rZ`n!F^+Y$`ZB!kz)Cm(0O%qe<@(>1QxP| ze#D;&61if~T=Quh+an*%l(9@4NvYCuQt!%#a-+b9Qc(?clhM~eN+NU1pdTrbXFF2k zLSoyTlP>y5$7%x3+*6pbDn#YoZ9blKsv)u)aQ8G}W{F`4Q95`r0>nTq42U`Q@l&Yq z%d_8}bzCd}BuM#8h+y{^x#%WJE!Be@3r6SKOyHYn%k6rbIgFRAD3a^pYk12pwJIPL z@*K*V(unRx8mqR<5j*yueTgfge;zLWc3xZFPmU@Y*6O4Rmel8ybR_gY=2H_w<)Kjd zf^qC_%KODE~sy!u2Esa1XZLTCFk8{jluBwuv)%m3@My z?DDz`7M90wzueV;=g(@JBt~L(Kfo;lns)~_k9H5EpoFNib|ZKT>^!ex>awXxxvt89 zcGhgz2$g8ba$)Zc4fEAp))%x7mO3q3!}hbpg;8WG`-$m(Z?`Fc6y8vA?%f>zHKfjE z%v0+C09T}M_&>}G>k%T54_=`W_dC+&x1#*{KPOJ2d|)}cc9Y$=5e7^SefNB~>U6&* zyHgce$h_gT4mja$bJg7DAzEn4vVr-QUJs`Y!!~Dh;Y>tb+8}egNaLf(R7j3i_vF6& znGZjZvG*>|^)>CN^+|>EKV<-L0>%-$Y1D3}WrmhfN>=FI5Xs7HY$dF60O@!(BS!?o-DWQZ71jLz|C;~#3x&{q~`#%b4wWjS!xRH7u z(8!Pcg7To(_>V@W#M0v>P|*?=tiekS5ut<6vSk^>ljz{H{?b^-~_M z_i4`EV0+6FJH_==O1|R@uZJ3ter;MdzgwLvTcKTt+-~<+HshG47n+2~-ce&44tj{q zkp>Xh6~?$LOR|z3j?m*UxqvB~p{fy;3aJ{iqnD@vH+b0FDI`yAZekne0pTaw8Id@d z>P;y-1%?x@M33C6j}?AtCT59+HJ&Vo|puo z^_e`av>~Wn*rtnUNZEIMI#Bw0?0r zkQ_5y&-z4Uz%8fY9+sI2XIKSmBzXG<>CTMntUM?R8zmkUr@GPo(gjKhmnlPhuB(8| zf5W%&R{{KW2%{NbJ?re&lJ$~wfjEb~!5W@2SlWVrbEOB_L z4AY#YUrn;fR(_9nQzL#w{~g#MUxapJEz>$5V`^3kZC<`bodd@??(Rct6eR`UX=txIssegJ0nH3erAE&j@ zIn;m=bK5wYdQArcp*f!h_K(g}e@=zZR7`_PM7winzPN?15W&y45o$l%S{=Ub0?v!d zuId38BxmsUxqKlOu9r%gYq@Kgo6xb)+oGJkXSH>czO-WvI$@1~=`i{ndPzrBF-rE=8ovpQ^9d#Kayn*n z06s7HZ;#KHAzj`^2dQkwj5m;5-?B8QfIltWUn#{r7tha)ipo~(DeHW6ZEYG(l%uor6=*|){bs54ir+=mS zPTZtZmBl?QAb7SN#T_wEgh`4fKudT?0Z610(`*Z5eP7SMcI-(=PWcnpKp9l1f$u4- z#HhHjza!+dCFfU7au2Aa-QrvGWVRaxS#y|jg^Vrqpr~s626B#?-DlT8lO8fCTt|f5 zogQsNy-|MieT(^iu$qpWLW;?*C6V_g{(P+bBoKRpq(FzE{Ay%|!jp$mT$77C0d!~k z)~XbM>&cyq1@z+SZOaide7Ai#yZw1COrf6`c%*?NfV~@0{>L7o zd7GgmlV`EKg_;MtNrHfdzv~P1i_&J`J;haYD1>W1K~6LlE=&Ct$BFaP&vz-%v8EXJ zL$fWr8loIg#gF5m4dk|uYmUim+C!u*w`y^0-r%e%U>d<%cBL2_Nq?UO3`iv1Cx?^9 zFU>otckp%2gYPDv$$MrL_Te?l5YzTXs3moJz%nI=ej=V^s`s1Wkh9A0zjtz)sH-ej z@Hcrcwip-khVrD!s{*Ewa!`(for^5TU%$0Wqt}0o<;z!#OEowv*x8a=*HhN>3zshdGcWD?fi4=Hmu>XuTf{ zfnKwoZ{5e0(?Dy#Ba#1>@DR*UMzFH*tY;v}ofbr7MRtjmObZM)xW_W(-sjrQkt1zV z&|{kOwG?EWDIzfjC71g#%gyg2hMzH2-~avBb>i~@i6?%`_q-J20f0xtoURnBzas!+ z1Th>MGhP>cS1U6)2z~0P{B(m|W@kMjkVG8RVvOmXk%SX7Qvb>hD{|UpN^twg{Iff5 zUsiTv@-ZfDC0cOKl205ZDejX=9Sk7_jVk0*bjcHL6c-|~=-{^IJ8rZHuWFgz7#C9< z(cd>g;3xb|5~c=z0$}VSn)oy&&-LZW6>iMjp)xuhhoR}lx@V-A=9O0!G@!A1L>>Dx z>yxr;N^zg#mMW|X*`7WotJ|fLOzeiJ8i}6h7mAK(ZQeE5Pq1&Crq0>HN`v>s;N*D;-edi|YtA_HtO z_N#&eYqDU70KynWASGO0Is4xl0vv|qc___;tmp*y7&-eaVjTjO4Rks3C@9t$4TzBe zB=RWlmK5%3#>OhxA~;MbU=bB?mE6FPfnVMKA7AenU1`&_4ac@^+s=d&+qONicWm2} zOl;f9#J0_eZG5?|Ti^XY&--&pdxs%~CN_i|a@ zQh##})f-THEHBR7{h`sm*vG1oR5>G zFxaIgRXb4cZ)y-9c6x%Mct?IVOc1R{?g}J!#`v^73T3M!_`%V`jKbrzGP-_wiQnb< zeqvyM^>QEM%ainJS>D99R!!N!Ca?e%Fb4D>8>EXDs{PftM&h^}3M{-X8F^NY*{h+P z%;OQm=2J9osaxv_@S(1s%+xOrFIk`64>3(0mt{%ZputTeWTKauh0I_oAg@<%zGhA*i#jhbAn4tfL)8K4C#la*0k)ErNe+fe zfgOhP7&0j9pOrD$!~ZT-7H8x4FAnUFba_R2FM{*NUEk9JH|wZuO0Hxv>|;PBVigzioH^MyuVx%2L@n z{tRI_EfC!UP*eOt(A~|oth_j~5SJU`(9l&^@LT$z4!h=rCo^ABU0n-?Tr}NA7oJ|B zsybcj!~$1+tm3sZmQG2=bS?nhh)jyjDidjc2VN5W^jww2Q0i=irBqh-!A|3G`bQ7| z^AAUY6aUSkqet*E&w&v+7@J&v3n<4m{+lk@n#4&XpafP!yC-f|&?4J0p6*UgW7bVh z6UjNGJ<{Yf=-cahh~o%it&~}IOC3CaV?%)2e76BniHRcRXNXP`WT7Fj^R7~;2VS5e zY9HNFunN8m1ttRdNiMfCSiLiha#wON^A}}l5RmVq`AXjUoRtGmydeD3A zqg*L_JtW9xb~SQTHdDfW>8ntmN0U#sWa=)Tz+<`;Tdq2i-w(Y%L(1MBXBkd0E*?d+ z9y>ZPs*q^l9O}lI21Ul3r_B`DyRtMeIdE(VP!f_X(=8;c@R>?3<|;A23eKZP@-7}L zN-JC57%6X$obEbzlJ`E6O%%JvdR>=ir;tKDB{%K})pj{85cu2WV zq~b{e+K?ToV_;KUX0G@JpkG0Uu;uJZo>_1-*g@@zGOSPMT>T z#t9JGNu#%LN(=r|p9YcEW)>aKT79U{8$aQaUZ{4Tu~FgU{O;`KeP!f&V&%`JV}83% z26}+X`ES*f5A!Tto6wX|&7D6qO=S0PKi9ylE>gX4j!jLvOy3#L>Qtrtc}Y)}0bp@q zKd?|dP|?t!>`o{YiR29(B>K=K{~XA`hhGM-4y)K*&xYt3Z`wO|amNI4ZgV%AFQ*l+ zV3G|TfAlx@@#sjmhu(MUBHi7bumZDuy^p0^`b+f_tDvZKn#CJP74Ie$HLP}d=DQL) z%a)K5;N|qrXYS@9j&G3L_X5FQ1A-7d%YNYH?qBwoOH+YKV;R=SP`aHV7c(+_l9NYp zUl;PQkR`4wGr^CAgLD%A%FbgMc&i$Yz89^V#*j5v2nC3d)*$CHQ=)#PV_g=Z^j(yF zc7ij$Xp8SR)2Fu!oY=dBef6ro;1duH2qw@b^oD+poDboaB(r-j-o(w*19FV|_9!(9 zzk}aGw<->4qF{mLh4w~rvLVUvUPMOEsanys`fVoc&GE&i<^Pe4<5RZ$ZR$I_NEl%iI#~KHj4G0{bkk7+?E{L#*-v0IiH!Thr+sAJ5_G8+G-BqnGu!8i& zm>^S}L2w~5lA>%zB@ zSBU3p_Q$sB5}tg+WJ9BYeO+SQuAM6>^hcOoe>PMRLafWT9Q~B_;%DRvC-)g)f&(rK z9qjjhp<>2I@3KNBNI4f zL~U3@3~&2Y1#1fF6=-vlm0UxN-y_;5;rnd{#}mFZBlD|*e1K#J`NgmUV3a|C&WNSv z8q~@&?{QcBok@MKS8$EILb6y-vGu9W?_z6v(tUtkCSX60kpDQ^j!$n>Ov;i3@Z{jT zssQ22wfv_S?75Bg;@q0j{0CoaFc<}^5ONYY6yc=2w2ooxqwdc$zjy-25*drNNp=~4 zyA|zS+Dg%)EZ~u7GZ21R7;RV*WmroeHRB`BLlfj7o3Crxtna(rFHsZrDH}ND&(^Js z>~Z;)Zke?kWua%{6OQ!)x!@3CRM(d%S8KB$`_*;qDSkUa_nRT4D7~O# z2@xl~V=JqWhie*hv-t&6h}BevKXAI)Nn=`ZYex`YngK_Jl73oMy-18GHj_#~$q+Kp z(sk@2d$6`jg{xa@8L8a9Gk)lv(^|Lj1P!V(H)}|h%fsukJoodF6NTZ6x^NcT_ehq_ zoTnCU)dQyc^={7N0UY;F`qkG4*|E*fal)*2^t7x;3%MNrs2BK6`vL92w11lQ(}^P& zBAH!mZvi=_<$RT5l;c(Mq=|(^@qD>v8?;uv)>QSV$pF>jK51!s_wA8f_Qknl9Vnh5 z%;MFq+tribE8#pjrKJt_9%KdDdUHH07T!Xh4_L+#rBybK^wj$y&Uvyn7n4h3N%UI# zut;;>6|^SwBbj+qW#PL7t08P-_soD)+r*bECxDg-Nx13_v-)06nDVa?)tglX7dno% z#lvbSMi+5qAH!zvNG$b?J*rN6`r>Is`sR@Fd$iM(YbAn3-TjK;ua~WJr7o#&4cb)< z6?s2a+KtBd#}G-MxhaHCS-;&=M&BrVXWl5NI@qztbcSYG3nHbxLwRh8p8s|r2F82C z!vz?ngS`x2u7AIqv9P+7OPPeE@pY0Cr(Bkr7IbujCmUu|Om@S6sdn=W%HtIz)9luz=@x0(`W-ek$ff8qlOMuEz#?yX zw5aNRc;UyHh1INbTW?!hAyV8K>=U_*a5*CeJcA){CULC|!cFUEzr{mnWi8DJc4oba zks4ScQf<4jvpW-47p6>)N0jFL9^b(B8FNP;V8MB=0&mvRl2{TTC>RP`6-p zR)}m@z_&RI$kvCVo1qyqrxHg_KLEsD3;Bs37is5x{X2G-3*T@b`I-cWJbmF9YxJ%A_yII~dG0%qftvE&BvmrF=7HHJwtLF2=pfdLYSv z@HJ>T!nr5*RtaFkc~-ymi@aFbvzWaHiZqQ4HZ-?SA-K8?LB4+MfVGRI+cWht+sf>C*IPJp*df$!IC!tb`6_s%6P7lrfW2mdyg_vdvOp`bC7v6QWz8 z-x_BOq>ep;d&q4h=Wa(6L}X{u*R%U*fjG{jEaO%yx0TgWk~?m?Hq!odweDKwKP(_z ze(M)m!FS?$4R*mE!vUDLSfh&rKT2^zsT|Vyf=g|CW--!uNCg(8sRLAYJhW(~v7xO7 zBvi>ZZQL`=+d2do95)IuQ#`7%qUjbh;e>Aaa8uoGh0F;!tiQvqNoeA-Uz2Pd1Xmfn zB@O7!OmaNR;&{f}-YN;mYOCkPuv^}0<oTsKQH~lZsH|yqQV3?Gtj$j2&(|-OqyIKfe9)Foszj;8pG?lO zpf&^2=!idoY)Pjq%Rez%g4cMsc`&wz(8?hP0zTv46~viz^a%Jm)4mMAVg?;4_w;NTXL5fc+V{KYIWbZeVZ37z;%9ScaUmKCi~@fmIK~+|Eq(? z04$$UD)1Iz;TzA_)zs)Zz0=a}SqZezSms1hpat6Jdx}($>b35m(HJln;aMiApWyT! zSV8e1$MIR)V2c2JcOZ4FzTrn9{NQes0n1oV_&HJ^vYUQ9TJLOjypvZ|@K7R8jX%nb zYn8S6NGwq%kx300Yv>s+(hvqnKhR((Vuo{%xfwob@}a2_BP1S3yJMm>zFVb#jI?=q*Ad5-fb={56Fq06xi@-Kzfyj$ z+K~8;J0KO1*9xhNvZj&w8w($t@TmXS8|Wr3lLj<>CP@!1h(0zZ#K1LC($V-3-GE`H zJXvcylP6L0m3@c=SnCkDMPAd44jHwx)MeTp!KhVZi?!|9etbNY>xR|M+5{&;7r7`Y-qPq`&?X z<3A&wBCh{&^siL(`}+Tx9N^;;qxXMHv=f^#)Gy~UiM|y2|B~Xroc(KEQ|A9#7b$$G zU)SDW%l0HCIy)^lghy$rz9MwByH2@9P;Ji2vvS>yBN1#G42=UUID0sB4FFO`&j{z z*?gYEz_%%%;};Crb6cFNDi#}!Ek(Mv6-K6lQ~?&ctiDx;$JrRI{&5=$B_6A6drd8l zr5Q9m)J%@#;~XP|Y{rGDSOOPqP_1x-Y+o7i05=b7rLTLyBN>RNqpudk$JS4YnqqKH zp#Kwd`4v7%R?s7YrnINCd+*0Y1ACA>PGScT`aX50f8#1(?a!lUCngFUm|h<8cO<|t z%M_Ep)Fv?sqRH5pfvZ&0=%iw&B-Rynbv@bE4yQDPLNr~x2EJ5U7xLgQYmP4Rv5ZcO z=V-wr4s&jH&EU3Qi@rGc?X=e+vk<|Jg-=7`0$8D!ly`fKkg1$=p^*X?T{_u0?-nV( zHKHvbBE^#cj0}q)AWJw&FONK8IEcphPSTA=eD55%sVQ+aUBUg0KwJ0skc`h^&BXIrwAf zb^!^_r;NNNu5xM^i2ZO(k{vVeAHvIp&vLOBSU!ne$fUt<`zp~grO!;3;{+S~{ z5cbp}7q+1$;J@>~V#Kt_izxql>e>IYsIN#BBTN64qDE@Ommi?joxgttz_lPO;H$91 zGwGh}h75($s6sz8l;Y}yq7p*=^ZcZEXQ915vwjO8G=Nm2g~Sm#C$741)5l9j=E2c= z1+Q8!EFO@sMrA6yJ$1?Lr2)oYeFJH4k1Lb?X@41|wHD&f^`SbRvl!nHSewdkXUv4v zFnw+r6-S;2T_72T*~a{^QQV$rvr=obWW9vpD^K6#&7+;*lETpa8HqU~Uh73JF^4Eg z=n(}_!X4pA8Q=ArPQ~2r6A+f>wiDevD&}wV)49;rm%%h6hi?Ob=3Mew6={uQkHC48 zcN41{fE}oQt#0FX;=x6NNmYd1I|5($iAe_O347sd7H&NFN>Z{ z-Y+>fo{OtbuYvsmFdFy}TI)b1Q0moG-5F;}oU>PQWo2VDPZ}{B6JUEa>r@`S?l&#Q zH>NWJY^wJpq5KYGasqLgK^@g_p|}!o@wX$b3Z5IO7wgjO7}6)p2Ueq>esACFQFH<5 z#*wM>)r+M6SdP8X$`ng4oiJ`9OsMNvy`HZ>Q)QO_VJ}1#A5MBjC*Lf90YFR29?&D$ zFm!S(7<7S#P77|G+r?Zyby0)Fq%#s`zLb8QGRx{~=Xoz^{M7j&pIPRazg(&{TjB%N zJaW#xYRthyxcRnqgcvUxo>++=6fKn z5@>yT86TQ3_VF#!#SmZN&}}WYnrffIObJ;+uP-&=g=4pF|3vdd#X|b~v#xJ&RY2jt z_2O2S@yV^swzynBI+TY(>iBAkm2dt`Vt#u*A@+F-tDG$DIgVz!k(km3$X^kmPDo($ zsdvurP?8GyG0@)O%;;t~J2^q?;TWO_(RzyKs((558c{A$u^yc1&?)X|v$B;i=9V4# zK+k_nu=ZJl3iS)`rj_1NMI_*7UB|`7XG7-+D!8ca>A4(@YrYzL`>CyabhEWqgjJzU z_hK*m&Dz9mMPB28bhO*+Ea~?l&7QIB035$0YZ$6A5f&+c=MpMWYbs}vcpf+L-PP%@2b_x(EN|5_Chz!zs-Eze23w%jSQXnRU1Q!}A35U-4YmM82X- zXfFl*E0yP5hJU;JcZLt;uz-UJqvDDK$^SX{Z>xU__mTfdS+>^y<`C;(LcFTu*_|Ai zM)c&`)1~q4$L~T{SAmi6O>e7ur>&$Db;e$mz)}ch_#zw`_Oz2CMro!6gR=j>&gw4( z;D2cTuL>Sr?z9u_7SJNkF#G@EDUanJ?wi$s{|@-K^S@kG-2?qA@I@K+S1SJ=`8zkj zU&%Eg{+*oi*WC+$Dck(P!2ja}k_X}+OAs^uSJZbl<^{~7)bp&94Ynz_v3C`BEck|# z$Qx&XnTv^2-P)n}@yYRwb7JLtnzMcK3_BSz2z}DnJXxWYV{?N4Lh1l6W+s|eC zRVsYZ*mEU$?P5l5sBUi3d2$%7HN`;~m=B0bJKbp}^ceL)vJEy4jXENs z;-~1|?r2kk22kYtJH{aGBC0ZySQ+*yh2(gDj|26UGAOAjz`pTgTo51{zTbB&SAKtj z-u`)aos!MpcSR@hv~s6=^mazAWbVIcz~-xV#eLxP?eUAxsH%{Q+j3(JY<;Nn_=CTl zkf^d*hs5`)x0S8u)QkoyE&(z1g7mU@SnZHu+nfk+DJifX#e#)ToA^cZZ zLv=e*I}#7@W@n9ZiJ~<5D`e5|@EVm=U<^lH>4lWGxyzL+4l;T$Cne zcvuiZT&`;-B4LGCmS$vL^aX}G%g|@O1INO0in*i~CfPH!OaM|7M5P_P?UuE|!RyMz zL3OQ9B{?@7PQtLT;942d1plJEhiYr`Vm^=sc#(9NTkwGnv*r}>1bAbA+#xW83Y%K4 zd@(b3G>Kf=e7Z;6X%JWDy6DtT-sOGzM96uf>RD}T4-CM2?wiMm zMCTUEk4S_cwy7jnOou@OyLRIwd00F`Ds-yY2U6BA}8KWEw&%H)aewR7Tl3jR6;1jlq7wBDvN1bG$GM(z6Gz( zRep03U)w&X`6|VI$XH>x_CXh$JY1y8FSJbi+Pl6EA+Oys&rQOi%^q}ji2ouTxW0F$w-># z8*RREi)dnLYPgsd`G&R5o2Lm!?ZbqP&=+emF9USYP}#m8^OUbPc)&GATGc}p@de@L zdY5HW-}QyjvcrIV+Rd?NY+w5K^k?~Lx7W-uP>78c9JyMlyWpq&@Tt6*lPc)mQ@u`- zujWo-WGWrW?a1ftoye#@E&tw~9oZh|C>iYJ5f=+TF(lcu7jWmAvVZeJRiq;+lwgAy z9szju{V|q)=AieeEm_d;@wynaIqnl3H5X0< zkQ+2RN5YK74icN%q<)=joUsB!IrTG<(F)uW>LD1)#c<-3)vv9cw}AWIRZ(xf8*-00 zsoms**jAvQ*LEerqyHhppDv5ER+!Pk?K;}_d0a1`@#qz?`T_as{6iMdI(`I-@w?%dCU;78%GrybUOa$y z=*$tkS?SriT^n9W(vzc1v~0Cuv9zV0a(5u2l=^nbDY?IH+{|z$mxtp1o$GcnivpkyE(BC}O0T?})n5Qp`aT1w!x4CXKL# zQ>3xRD$HyKi8R1ia>I5eR!lqDyybxD0xmTKYL{6Klel|E{ioFNfrxt-*z?+x_#^C* z7^;b~UpBBRLE;M)=+=^%E>($dFnOr$#N6{-GR8L=RGx4Z#zm-p60CIn+t7XUR*Ah? zb;{-HYV$*~>|?^MHp*cO@u9O(g@(mR?1&H|OtC<}>>^tY1R#g2V#%TgmkR+iMJIw9 zD_&=4At|kI3!&ZO-TI1{)^rof0L`HFQ9G}Gjf-6wMaK&2(b*kKz4s)Wk~lr(;Zn1* zQ>$;8yDHM%JTW!+K??2yKGdr9K{mVP=L+Up=^s3qzDbsN$v%Y0T9clhme5{`peg$# zHeHR8AL_esW2p5Rpq^cqnp}W&{;X3Ytu93|y?cSFAG~ZVhp2Wq`_JiJw5=n%qAcDQ z>pM;!oAn$ebilE+El*7~I^-I*X5f)0`oWfNR>+dHp=tCa<9uyge$E~e zEj3%UqDD}^fYh_xA#?}P7|^yQYd{;y~(IjX0G%07wAsu^z`rDEa`V0p#{ho zcwMm-8A~QCmgYJyW_AFvR}yXQ&3KOr_LoWQ=V5(_rlL8iz6~pP8`~ZIk?^TO+*Hu@ z`Tfi?ApBH~Y0~&+@8}2fr0A#GJk1HI`8no7Y1V((sdPqzTIF3;6o(3?=V7cXTGB$W z=(AlP@d{nA95Yn~qT^Ei3AY5cN)rU!Z{Lw(e2t%Wo_Ib5Kzabnujc`vB2$bnH+|p6 zBKZyOUaJ)l!m@2WuJ?$1!hG%&n`sXpR=`)97}lQ{CZsJIDne!TPondFB0>_LW*7GN z&O_Rqp2L%_Ay0W2rdGtD)UDc2?WE!KLAK5|q4HhLdCqsG*Bi1P8K|G=4a*MeX6Oz< zhY{|741Op)@NWV5Hrk$BQen#>FAeP+Z4W<-W}cO+An|ik9gz$=tW~#p(gs+<^k_J~ z4SWad$CAT$sGOpb=5dLz#pUG|3bDC-xioHshAf13V%qp{TiN|B{vK;aK=mlt3OUNJ zaN+NWnBQY-(iIz%@pCIlbnnMAT&BBT7n-;l9$fGfw(oSWQh@B9YZcZ?F08 z-9!B!x797r>gxy#uN^Qn+3Q#sa)j zLmU^fC$yYjP;-)61{g%zAXA=$MD`UG)=pH)l#!V(eMkIyGWvWH@Du9jM-u4PxY2pY zQ$kqtpI<{*8Mo!=6tGIwrepWQAjci3k4t+?Z$7uKhI41LC++=6qR27D^qqMa^?HsU zHc0PMxGrkb9x?10H}ATF%Z3`n@&SKVLbkZKZcb(Sx(TGC;P&}qrngJx&L948>J%cj zZA?lG9>=Z+=SyS3OHRju!AlNKk720|V->N4XkzzMXDAlm79fvDS?3-(Q3w;2-a%l{ zNh$P;(!`mCz);}jE9mzWW5Z~SfU#+voXwDPvTl>e!C}3b^?Wn_AcEo;Vg+nNpk;_c ze_j1|+sKle_y?^~b#aU={(~s}0l1q&#}LZIk9%nqB_8;r&3C!&)TsA|>50f3%PvdE!@(OJEBpaA`_5_t+n=&y4F-znzL}Inkoj1u1u6tF{Z} zb~R}74Rb_85}Qgb^)x?V8f5?~ezE0Pk5C>3j3?Th{^U)e*>hEBocncQxU)(QiXI%x zCn%)cuiknCn^6i{~;0 zV(AA)F{&laCj?_bKFry5lPBBfW(7=|YD}ua6mvX3mh*g?quys8C%<@rc zUUETjjB){oz8e7f6pY_9v`9}b;7OMb^<0hcqAm1REmV#ZyPCU>;4mC zwY8_mUMCZV<8=9o&1J+vhQMa@6gauMZr}8MY1n0L*Nz@L&CLlgm~Vy8M^n(S9p-e? zd|z$&r@p7K89i6Y{Bt!jw@g5=tOty7Aw&wAqo}TU{n{lUiT9PibvZ{eTZ;NH*9x== z_wthdR=atP$O-6tdfBnYmoXLaQ%v;t5g#aIm56ZTV*IAR#Gx_nOk#sDz1&=ebLoA?yj|A)R~@=gN{L_^}|u5mT@6RrZI@=Iw>U) zjtjk`;kx2nJyyoh*`3+>aFzb~@`E*ZP^6I2hC{^z!u3LU{rH$1rGx-V?19 zMwMfp-O8qJb>frN)r=VRg$bE`K!J;e2UkLktiJ=ycqu-hV~a4ma7Ao<<5_lHE?H*R z2mNFbMRlooR_%N_maex{goq{AEBkSQG_wgZunP(%4K~=^x45C@OHD)Q*!iT|_|9k{)AgQ0yIBKq7b57mwbopJV zKili-a3%&YpHShI+)4I)%GcVi&?-;2+7->@?SG29m!q~aqqdH7+sR7&)YUw5V+fR_4@N~Z8zOX0Oev+AHZRw?Mw^e3Ai;q+(DwCV}ux}Hx>_gk@!a*hTmck9c9 zGM*OeJ$1#9MM{_vXZK>?7VAqCaJ(P?9?Qm+$A~I`C)1l!NG{#>1pgrlVzjlH$-G4U zm+!K|j7u@K(m=Dxoq{KPwXF@FZ19_i=xbZf!QSew6~^O0sgOsh6_bCqQM?af zB*a4aFGr~&NX}7fycEc4 zL6hOnOHXy0b2RMd*2aMOmkJSGX}VxBA8331?jj9XDzwtpr)=MKXcW1}yx&C$TNnzu z;w+x-hC*-()GRt-Wc)W`S!AQ2VpFk8GPEJZoWu7rG*9s3#Q-s#-}Y z2(|JfjY+PdmCAA1!T6W-CYBh@wwTuMiLe+ORRXK`Lo=tbuAws*Osn`}?fn*RSl#0Y z`5VFw+F`D+Gj_zQ^r9;mzp}-fZ;xFGHYW4eJe+xB?T%*7`Cins#pM@MTv;t&fU)Zt z1(tL?Ny&IK8Af?*zUiKa_E$a${5O`-vtQ{O^Mz&Xk$jOZ|D*jNr~d!hesG{^tBlKy z@-bPh5YH%xZOludS>i*DQD5=suFaG=p{tASA=ZR$CRU#SF{Gor@Q(|Ln%WCJn46eu zR-~&gL<0EdPV8I+Hr^$C2VxpWmFk-oZJ6SNN)y7_?;9J{tCuIP0gAEbGQSN%iye=u zRP8UKB%aJ{txq*Hx}B}9&&3LbooH2O;q4z*WC=0u4HdUW9>x1MD=K#q;-4Z=&eEL!!oVD^hEC)fH>x-14R6ySE% z`Wtkc&ca}nn*0ut0tAMeoY?Yc(#w>g1QOa5p^6-~<2%bbT!ole+pwfu4QLY!nDn6y zTVa%7HH2W5O9LM^Kw*m#rwj_>!HM<;7yD8UfVl#C*<-<Yl*{4s> z;aD^pk=<>r06y;RUBRmjVsVV(Os;`!{MBo+musR2UF&Bo05*LTXx{>IVT&#V$<(wA zxKKktdI8eCW_};MO@?;z|$Urzf5VSN5c;+; zWk2beKk_GZ4e)w9Im5ZhnN0q`7hY881zJebi+ZH*He4|&8ciJsyp|&F6rMIrC7gB8 z1*%ejUp~$viW9aY2GosRp&E!t((~)aQb6>z+(y8NLlHw3k`Ja1$_V9Yv1nhve;4jrv+_s>al6A{079||F95FqfeIkb-@K0qrtG1FQwr$2_panGWlR~i5= z7`j1bW|G1qHW|HyDiT!&TdROeu+}u5J#Nb?!K6ix%e6|R7Knb6(+vOb zFjWRU0EE55FC)8JBH2czFfnWlv|wO%gJcHFO#s`$Hv8E^+jWXnX+y(&j(ZL{=N}#I z!d?#4<)XC+HhkuNh5oTN44k-0sbjM2%}WQD8RnPwvXB$8>TD=b4kYNWE~txds0U)V z<>zA7?e|Sf7MIPB58C!8l^f0Nl^fkWgtTg6<&{w-dGE}u3R3bL@cZzG*lc$KO_d7| zHvpf`^;`^6DvqH;&l5E||3lO7a6GWXs+D1Xx!btE z>u{U)-r~V^ON2mhGSG_|1m3U$Mm{D24Fbeh6t)Dqr_n(Xee}~s^t^IFIVbWGj38OY zhd4^IlHvHr5$T$%Pve6r$iQPY>4=4#*rr+TdZDnht+@2DV%=$N8uv&FteMqVBk&Cj zD+a(JyA!uE-;2KNzFBc6ek(|7&F}?Dg;)(TS*_lsLq=7%c6lIhx5^SKcHV2VK?m$7 z;=1GVNaq^%iPy)V0+(=)JX^L%dNEjDrfr4OR92FT5P!>Bn|d9tH6EW^ht$%nI|*pS zjVT2Vg(;sTe_ZuG5`W~>7s&|G8u%?V-h7%#8{Xt(nPY{h5(WzVIsZnS3jkIuFjeo> z_`PoE2_b(zXzdp{5+Z^v0W8vPR1XldXm`AN=@@R)gR8)|c?V-$!doWy1%Px|=n}4n zauJZ783bv&h0^fI0-Jau4MDlNS{^gv83c-Y=2|Zaahfat@$E6sRM8u)Ai#o#U zgFiNdg$Otf;VrG)8*)iG zkYKMD&SPMmM`wRx)QxLhrw~w|k#M;?2liF&EPq$rglDZn#3a_~Sj;G`vk}xPsl}q? zk?j7$uKdG5(}w82pW|tERqbtJroU#jc8Q)dd6YTT?#!lr&t6 zA94{QPT586nr}Ol(z@;Ty5PL4yzDM+N%$N#tCN6T=cH1d+)VSR+Z%BI3;;d;^znHb zMt6g@A(iKKMukk54fP~7#{MCzhvGFepXN}yhlH+xW=`1f)W_Q_fX^{y0Qb{#bE767RZx|{B(5o-W|&A0`Sed(o7us}c49{9X^ z$QD=wC&%n#N5)?bL*wcFT}6fdV*#XBji^QaDzJ66Cr@`8X^OmI7|=Z2+GyX)R>uzo z?$v`l43Afv^AqbV^J`0Pk0^b3Q(gW}%Ku&e8*30^-?Z%&GS;Qg07bt9#KVs#Uv9J~ z>f;3mGs$D~m~(9a^LHS940&&pKVpX-8aWFmJKi#TgqH|3o|g6X4R$dw3Qe-XK%_m= z4*An(=smx%^=37a25!>0)k;l1^nej;LAarU7Y|Al`~)14r#g>!z1;MrHhzW@+txjq z&i%mpR&Nb8v8)e%*i3f!D+GLma{YbLWXz|PmzzbBQy&fqkgSL;7vJyxsz2G{E}=B3 zGC(XP<&SLgCkt54f?-@X@{=Um->L=Ft|ps?%1IyY$xru-@oZ7>ySi`t4rgfg(j3s^ zrYSC>t0NQ}h&GI_DDeWZGZ*vcoC$i1AD4M}4Kh+V&2mJ2N~Qu5hG2HZde?y!EJ;T} zMA?}+^`K6Y+BZV-ya}M%Q{0o?qRYCY^%uf!XRkhNyHFev--P_TlUCf@)U0z0!-Jrs z;rpz^lX$vM5Y0CLALl#5fB(VD;-A|O{z5AFzmN+4e;ig#&w@au5;YLP!Tg7fCiVZs zE1HS^8?P9T{u{3lLVQJf4SFTxB{S7dAlGz#P&r2Xjq}B_e~CNU5ujZwXjq`ti=R=b zBJVI^94PhpR|7m#ybhMn;%TQR_+BO=B9q3hNe{|5jSc}X&L@I0;5nRV0w{nl)BO>o z7#%xH+%1_{;GSMLKWFHOd-N9X zyTxGVX1*8`Yn8w6PgZ0Q$vno?E6J}$|5%3BbYM(LtDbE)&)K43e+Jjvu~ z0~c;xT2P*7lKBS?J&N!<$PwqqC;9^zkzClR*2R=ChPR=G_r*7J*cj=yNy;LLxXv?= zOSHj|?=PG>(PDq&5kpr;&1efJV1MBe=pXN|ge_`e#d5~>RB07{a($>(+kk(ZZW-nb zegP8cmYW)X0TQZyh~;2kctkF)u12%pUwA|!13D+40W)Vo;r6cwn;LSmQzp>i0BkM- zre2K*i7z|?ygD{o>f~?!^C(^OuD(%-ospy_Xi}M^EeRH8 zt|TNy)WjKpCYs~0=S#V^LLEc+AX&(y#;_TnQIvO|quj^iB3&I#BB`IZrLHM)|9WwU zlulxtaC*exc&<2foR|Ph@askQyUdk&s$FbACPvpo1Q|AH95+H7N+dourVx>`;RTiN zqo{B^>+O+F2)a%o6Nw?cO0YOr7(w2#CU#+q#Nmw)& zR*F045qoT{rjd9_tLJ!V0KvUv{3b&K1z*OiGE_ z)QhunOq~Jy>{SAGRLSfDr2`K)Jj*Yg;AJd3Z8DtxSJOOQD7d%D#!|!j7xBt*vjSMXD3wI zi%0>C%$1UTNtA&xjn^o?KBYusy+A_bdHQ&1k`Y1~he7-G$0kd+OFKLZ==5 z)w7$X=x^^yCkMf7Y_XC>o>@+$Ki)>9o*9h*>Un2}Kqprp-HjVsWIn`|j=E#8xEPp4Is&@NXVQ(7%JjrC{DlW(pmN}h)_l0H=(}r0I4gk@ z=p(yh$lK%nC~QZsgJQli5<7k?JFjirt12!cco9J5m>tyJl55R;%O7PPtVC(&ci$i_8kD*o;aC-90jTLLHFS zi7GA$r3}-&>&Ytj9^}1Y(SPWHq?{Q8RLi|V4iMe7>nxQOQ@tXX(6OFhf_SGf-7fe&G>-zX1sW zmbSq-iJqJv>2^;YyVTk8U6?|0$+j8z4+1zP+ncjld79yeh9a^{*@Y7LTM;uN2do{n zwLjR{ZxE5sPd#&Dts_r0*OQAO77EMQuQ1qF<_-#ilPpvFG4Q;oTCaQtT!#Li(7&{T7R%)xC`INtC z&VQnXLd|yK7r9 z+p=sOAwV19a$B)xe!O6J%7ph&1J!Z5F|CMbJHAH2C@~4HLT!jnKP&%i@qp)u%V&Ra z0Dp3kp3?%RH@E#>ta+2mvvcO0stx~pbN;a_+D6Q7@rt6ec8J~Bv@LcUy-2fZ$tsKU z?V;V~`b1{ChZCp$#i7W=Mn`KV=O^9m;h)tyyF-~z!O8KV$!t!U+xjDx%l^Zud)II4 zQlG&8yH_ACJDJ{U)#Z zaYi;dDVMw_9fGsw4osQ2k@MnbdPQ+8php$ z^Wz_i2J|moMq$jC)kFQZH7g7ibCq^=iJ3h0C`$PW?U6r^|$?q`xmz!sb~Dt zA2~LbUWtL8pdV1QOM`|7{1a(Cp_cNOuC8tZ%9M+etWQ7O+>Rz2N+!DP%G?M?bP=^K zg-$!~Lc9$7JBeK`TwQCX471qs?`*Zc?`Vmhn${rKR$qrMVaguK&hzX`XvxXG`N>a!nFaG>bQ}bHsTMC z9KrylUa4uAnhx%9PBE6Yz(F_iSde7@Kuzi1YDlxhWEhIB8G<)7d%7}ZbCl5~lSdCl zQW|Qmq0Q>mfdq$yF#tdaz^$iJ-Rdgy+_FI2um1FO+ra;(^Zw&g{q*eZ=SR?{^{t2^zu*6qu>r=Xey)eIjw`mHq5YHrp9iffRWcWT(2r!yTQx>PN%nOrEvz z#0b$o3LtVCX)<13hLnh6_TnQ-|C?-my6ND|QcthaT_mG7Cs|kBvmV!Xxi~Wre*v$z z#b9=2nGJm07KLSgeX&dybvKOwL$-x{0E@-(;=;V1JTtubVwAI8M-6o)_gy=yac>;L zuCUKdMr#WAI}1w)1N(8fj0yhJ5xlEuodHtm1SkA=H`TONHOSxo>PY1tzle)t^r?9I zXk}|<%@FXQgCVo8@qX56I{D1am)bnRBZL{Z*Wkqb8GgaL<+tGRw&W>5RHi?T0F;A1 zmZErIS&oJ=MJgpDFOl5ws_Jx=;@Qe{W`}h)!TDq?)kB+NxNH>@V+s#tu(IePbq=CM z?s$$x> zequhLvv`*{wOlNlxQCQTExEkapfZ98WS|92nc0-yCI(EKgzG>3PU2@FC%e|EhNZm>_8XWq+X3YZF5Q*_HIiL zxEmV>9VpIn&hS6RNCp#80Q&fxF?=*4i>n5Q(8R)EFH=N-Ve#^7g=NVge_`s0ctC(T z34Iq=1ES2%yC+0R-V!bk8-AL&Z9@&hBn8zYFamHfnp?&oSC?NWPm@vLs=ar~IpI9Q zrrRT;009Aj&s|-B%M;-2aA$AmX4AeA&qQ~)WFTi`R11P3jn**%phHqw1=7;I`a>!k z{=|2fJeYm*KENFGctl18Q}Lab2$39Rjf5Gr(_8p1{+N-CyJGJlQOL~n%VHOw&{ z=>*f|)w=VB0~}~MIDfc+;+$Bw9m<&JvC`0zzP;CKm7T}GMwP)px>^&GRwO1uLlL!Bdp(fJ zb(fEI{7zlQ$SJ%^n5=GARARKNmT#X}ydNpNlfJ!WBuMs4XdwQ%7z3(nHjeTW7eiEv z)cTrqTy7b}fr0}$u7hV_sR)%#UbS@0Fo&FX6e>px0z19!s~T{ekhtR-;$_#ZV2@Oz%87xUrNnR3{d6Hg*{S zi!!|%U|$;459BH1Fd0iL1Xsdo(ky_y3QvcMQ@jin0aMwr$(CZQHi}rES}`ZCjPL zv(i>&W#+5to}PHq6a8ZT+*tR-J^xO`-Dj`0*WzQ33o2IuwZlnPBdaOp^tZegJ-Xv~2Um34_elER~z0o-r-k@D<;rkthv|K>&L<98GF9LVe>{8a>DM^D(Nyj&~0c9#}Fa7h)gKweg7AJJ9gbe0*I_Cs9L zXJ&Ewo`6uKB;(e9Q8HcfyA)RswH_@NOQ}!8S(-1rPcs>XaUJlfD>^vN z+Rq*}R@Fkw7KiZx&5=^cX!VMz?+FNA1cLv)c+}&u*EeL_);zbw&h|TOwz#04-8lNA zXbRXvdn^O^iYBEYJxfD!dIt zX~Sg%a5u0c>=CTR@Ads4C19dQ!iCD6jzLzV*9r0RTg0ELohT4Olz~d&lSe_aQlUMm zqiRKB5}7JcKGP|&Vt)s+QpqS0jHRJu1_EA;^VkqN+oEtm^0=6--4eO#TH}Z__`SJW zsXh7Dmgh(ELIqQ_$WCY{`c@Mx)cy%bMi3z!gEB)>C@a(yQ@gd2n zYqeiWcodOUv4`*ik*?5MGro?-Zq8uJ?B{(ZG31n4l$cJL6;p#zr-A|9rP9%4vH%3X z?BoYI=Mu`8niKdx!|Z5`u;PEf1D=m5DL_@mj|XqkCe*d^sd`07^pYi`BJt5;@l)^W z7mnc&QrHH^Ft?AdUiDTq@V{kxVg%o$IzB5Hr`Wv6&CynvVX zNOC>)?OUg5Nv9^Mx&idvxX7KvQKwjU%0F^J`vz#tL{svtC>oo;X*Djl8nA(b7j)Vvc2E-E^7^I?b(Y7O=)R3Cj%m zqZfEybcOG5L?Y$$JANe&Un!~i|b0Ma?q8<(VJIXi_smadS! z8!7(~u%;pR*N(!}5)r_{+ya6hT=Qdhy%2nPyi!1&{(?WJCq>R+0>IazZ2bC}4N^Ky zSlWJ&rCj)s36+p&W}p-aIq zo;z^ulGW+@C{qIu2cTr^Tx)*jB{%$i6L-?Pm#(!ku?G!5IhW^OK6 zC9d13rJak;3m12CAXUW_$vH)YF@B|i)v#@rsZRa3 zGr(41gICw~4yuOK!X4^_F>yfXdn^&)B|{n+lm}_()QVS24k)Ia(ZP9-=o1SzVG(jX z1EVAyL1Cgu6zE0}J)21*V0cRE7+^MSP(7iew2P2$#_u)jpgnLbG=}!RqMV8AgTR>H zJsK9W=o~YeH(~>1l8U;>#b~u#6gzD$6B&gqtI^so)qRp@WHv9cHw=3M_~$E6pb2^K zxwx!bFe6V507oxO#Sp^L;fEW??9XAu2~+H{ByOSA1Ys4WlsL{Y)%2SG^O4IXQedNh#rCyiRJ@6r1di}EV{pf z9>~AH0?^-I(ciRGt7JzwJwRb5I6d^j-ARP)hz@TO=i>k0k0uMtiQJfwwBxNwC#!oy z&Z}~EvX3>9^l9nTo55tGtqeOaOHn<8sI+(vjB*ple&kr4M`RSSHeJBJh3q>is1=tv54JG<@0(FvYh%d)P zXr^ey10JekSIL9?RJ)m_FiLIoLN0c^Q8tUsl$8aYREMU9X_WbpyilP+vc zK{xna5V)YFEWQYuhA)VjXf6^sg+f5?p>L)bAQX(xKsv&n)-c5e{u|(58Cg~V`~frG zE;Pptvj$~p?pqoJYI+)9=7dJMfL~~^+_bW~g?DMR4sqV9lU;Y4egRi*3+00mlGR(y z8+9w&v19bDWji9DAbB$ts5(0Xc&b3UzKYlKHL8mpF|KjnJLSMuDB#oqO`(jKH7|52 zMWCE^v=~t_)(CXpSOA7}MWJKw1&4jLCG~JZlq|ewoR>L}M`I|Izg}ZNXtn2r1$&AX?eQ znjZ3LLg)|!I4-doM%X7hvF`z)5&fE{#}?8=I};e@g&J8Va|vWxD&%bBcTw{Sw=)`9u{0X#dEmiejBk7JTo*v`cGgV z>(j8g6rQ9pQ79IkT!l$UL}{`HYrGxmT$t)+x&88AlibIbV_0BxgXS` zKkw(VRu~Sa_Ve!*X60Z#3N%w z>>wR5i063^wpwhqPW~l{1!oU|URA0Dt}&uWUm@MGFc<6FgX0nIQNCdl0Do2ky)&v( zwRP~Ki&v+)v7MZe-)yRMty?}}KT|hwLnDa`mi`@_bPEuygt%AN&Rp{DgnY3O&*qvk3NcM_qf0*_;kW`Bf{LjrEoz~R!NNDnt*n^m#L^mflz3UN#>^C)Wd zD%~^{XVU|6pM?uXc9m`#B&*P?Y3YzTosf}!4by1rIsQt z2U3rcV-L7}J~^BkL20rwv}BXT^IXZenrZ5j2R}i-+upIK1boq<^cbd|{QB$R-_e=U zP3f*!u*i@6K&-s=M=@t#FAKe8p(`WAq>L|mg2{P?`=HO4`7Qp_aTYT5q8heI+xLE# z>Z1wB(a{uD=}cvJ>g#9aYyW@m>mmN=2}6Hw>A(R28JGhBN&F`dHE#+=^go_VTz$vm z&IkU1;KBZD@Ts%ctqOnEYqJHb=A3cqdLd=5RzRf1FG809H6ed~k;z<%rTO1~rG19S6KJE`x<1t6T=vq2!bwNn^hEz`)G4Gb3I8)2S+C^NXsTCH z%OldJDs92Y>|Vrys!M{!C_zu1g_M`Pzv82 zo4dj+gdVy4BhC(0fnoQJ1q$<1DaE)SnC*rPA#BR2l#fw=zkKIMzhjjE#J|4@PxgQQ zVs@d#=3U|AN+hl315td8zn=8Xw$P!=By%O8MeJhKen4ORf~WgwONENVhz7CDfL6?f z-5sf7gONt$5+gzJE+~b`w45x)s|cngSd6Uk=Nvl#g7PbgX2P+HDi_wElSzpatJ;DU zvl9*Z;tQ<M_F!})pV4dq7>wu=9WMer6-%H8HkZsES!pE~drU=@mI}p-^Ga|R_ zQ}w^5>gELT6~o}A4(f-g(-KZSBaW8V2+j;PDMju%#2wL1m0*a7BxTBMoB&aWCC^|l zSD!v9gX94Pa;NJXjGb}hl!GRaQft?x0C|TIq|cx&&&O_ok^zzhaLnP?1IL95K{yHr z$r%-}ZKk-@eMAmSZ%J$-GNkFA*Yx3FiNQAao)`a1bnigaxugrX^_;Mh(o~LEWY=mF zZ9g_*^A>66)`DvUhrm}SF4uwd;(!(%D#dF|`=Bp^$lN?%n|_L>ZMgGX7-LMoG_xoF zlB9MNuhw$PRS{qSV35_^>)}uf9ci)wfo_N*0Z(lS9r??GB5+hRZmi-zTYVzYi;RX) zJPfPJ4dXJ2^IfEjn@N~}N)1vt9ehZXdY4<51$ z=5>v((qhG-f&MIY_lZRqdB-*2862mH2Sl9&0>(16MooT$2fq;Y_ z0kW-G49T&kp0@)*P?GvL-)bM07##cJG`RC0`WscuRe3^qr z_?G)JVJ$y+=dbpQD9wP4D#R@qiBXh^Rt9zCO=E8Y%2kSDZ3$H|0jg2ko_`lrR9A|Y zpSuRy;flXZRblAaB1sqbPW2qLH%#16|AZIyo}^oTpF*gJ{j;Vmcox@Vq9HnAOA^o% zO-Q?!Yy@8%nnA}HeW$RWa&u70MA(qCK8%~A3RxgXsWj#Xw&Jy-9i9@Vtc*x%x2~C- z6LkgyPzO4sR835LkMIPWoj%MSN4~PGZf>3~ zvw+v4wY;9g?JrdJH9AAqWS^`p7jcc-=jtT@$!mQ|p5+=Pw!9Dn32Q=ROG@eiyktlW zwZhKzua8(9a?f=HXdYV15W1I9H-EUkWj^Uf9cZb4W;z_^u7F#twNxJ~n>aL_ zW#u7Z1ISAhk-SMo%VKM^Mln!Ab)mq?ze4LfP3vfgRKF{9m=0t!Qj)=i+}V+5-j9jq zmNwljF;PL!W*IMsEGoPk;bTIq;b>C;6#gcMLXP9)8;ZCMBps8QEJ%K1{S+a!aYdA} zbj6)rBKc0szS9k`{-34xmu;2V!mSy>z$@q>I+wq+)k~$bjkK3KvzEbA!CL=?r=9o! z?O!E3QmEDht|zg4aOx1DQ@}RCWh6Y82b^zq&x+nTmq2>G z*gL{tYZBEZ@^<}h5c#jJ;ZMy0!N|Saz48{YDu4HA2;pn-yh(P6x0awhZE+`j#2|w{ zYIWX-sgKJ^<-7ufY;yVxQcUU}{gD+{Wq0|Do|s>5+b62mt$SG5UY~Q(cT< z!FNG_rLZ7Y!MKmW_p-`5WOqz&!F8~gW!2azWN7+FiHiH!GLVIy+GUQcFBXc=x;$w^ zMCJBF>?t@-9ne$@9;i(LY%5VAgMET}e!-#N3lr2zmiT^6kGH)Mz~2&cLSGgTe3qS@X|>E2b~+`4^+khGo&9%vCJZ$dG&jh<-7zfDL@;=(iy+ zAil0%_rH8;Nf6(*V-dSjlAkK>T`eb@H=Q60!@ujL8F3A}-<1p);p#snRwcBm~7u>V!Rr}Is-jEO{>s$^buDkz*IF^(5>HA_!FKT zyzH7SNu1l3$qMS(#-aZuQ@g8YH`zX3Ep$8EyT7ACV<+x#oxJU*;bPhCH9FVSj*UE& zeyj&+1xNsHBH~Rw$&@hO2Mb5HMEot_drbw!y^iHUp&8Q-NQf5P&fo6FaC9QgMShG4 zJ`QKbQrW3Vd#+u6Dy(+pXW*j1v&zu|1j?h zu-w?ot@fP)2@;w}-E}EZj+V~Otdcs?40hD<3wWxc_Wz6s9`f3~2 zuL1SQfix{ZtT4DI<)|-uG?dD+!^>%s4sO@uo6!03Z@;2^PtgHR;Z;MVj*SB2I$E`f zukrM5t1jVaf3u~mV4hUQ{cSC|>+(MCuK+|kydTB^An?nK+WA@kkXicm_ME=x>e{S|dtEE0<_r74)yR!U?b@VRPwI2qqZ@d}q-;5*exF zCkc)SKAB0965yO$8gvT9PZQ0;3mS`yXsEN?et~>~>7V1wZ?1B|_>2F7KY|?P0}PNTFO>o` zA?$hYm(E|&-L7T>U0dYNrk?@GcngC+K>z!NvNCI?C=_O2vJG}2?v7_iU8 zfBxy{d=aFlnn@|+Jv}@i`XWtbPdpJ8KIRdpFi-sRl}6lZ+@&(5T&BX7jB8$wz`MR5 z04LFI<#d;extG%C_5^MbB8`-3gSir?v+gx7+YeJ?r&HVCt5Xk>DpN(l z8&#uKscnm$LEkYNtxwU0U$n!u`wV9v85!j z(zU}YB~acC2mfMAYvoU8o%iU*0m7G7fck~b#by(L3FW%724&A6Z*90)RI9bZddsk% zw7#(B%BDO86s86d_b3W0v#7LV@i%m_C{!^5%wxgL?oum^A(`%5#DKRbKpYBB7}1ca zyLYaAXl-HxSwAaR6i5XZAZ;UtP>fW+MP=IiQeE_No*5PJYq}Q0mEpoE0d5Uv|M(k% z)@SSDp@{)Zxj7J#wBnY8wK_|@=aiD=J{(d=5tOrFX#!7=#^>LSZ_Cawy%6ynic!}+ z#s#v~oGYtzmaa|Yc^#Ql&7_zez+I&#vuXzcui{4mj*OuRz`5NN9@i)X8I#-O6-Vji ziAQz;Mpit`Hf3Twtm^51me z4r(igInU_ZsIYyKq^xGtFzZHMu2uoEhM6Q_kQ_og)Dd_)=-9(q*t>OJ|oK8!sK5u5Xt zVI-FC_2r;S#Y!L=muVMi(<@H=wWuFVv?SNMpYbOs)nHh*2(akL_5~_&t>IbSu}AC} zy6Z>lh|)MwGss`}37U8H%m9}*G0FputqF^faFCwwjfyl{X zfj7g;5%HK$m6S;}E(kU_6h!z`m`98|k#KN-Lq^34G+}uv@7*{mf2%eVB46Q3QC&I* z*$b<%sGrA@;~WJy@?v1Fb%u+U*pkbd_ZQUFs^Te`j3Lz{zD$pmebKOEa7j56!J^2V z1sJ1#Awb>q1K^4BIvpuJ!=Yn?0s|{{FzqX;1LLs2$W|FoRev|y4m^jx9z;tXhB_^dU{xiz6}4{ACP zR-J*g)h86Dft*pHe757)iH!?K=x$i?##MwkFy`{60Ep2|`Xm2p4(uiivQA-Y=f&=v zBdg39u03qf5)Prqls2Wp)w2c)}jc|mGPCM3>Pk2OdH$U&&H&lZhNZe?2oCYRaeDjxO zeFsM|tPM?BRZ^waR<80J_2oX*1xPUKVdp$>0NPjGSKoXMD2j6n{z?@{@7Dnwrz2XE z-@15@_tUdpT6G!&EGxXdE7U5Q04l~%#dJ`;ap{o0aR6($V*ZdNu|sIC2r~?Pn7x75 zg6lip{>a2`pX&@_X1q3aOFdS!wUVuPu{P+qo_6fMJuz6$*a{k-2@WO^6DgP;l4^^}joIebl*EM`2 zon8ZL^{+$9?SejY1>TAJHx8Kb4aQB40Pg3+jp|{7q%C|J22>BOYlLVV2idP$c8^@T z!!z0Z-vR+BF3MPlZH<6}V518QdJuVPL*?R*q>_$_CLvT9Ku2=rd;1iknAgZBZfbhiQ zYPc%c7+vo80WDZ{LGK`joSN1*g;_wXX%pS%)p|@0v(KKQX^9J*@UM;itsX*8LDyrG z+Lio05LCOLz^ZydN6PE@f&`mSWsuj!*-J;pl&yjiN`RWZ;A4x;Ei6GUVT085{tK>G zkeGbUuHq}xco$5s{Lw-e8q#bA4nd56!}9+kDR&W|I9I*(`5mD4qBl>Fl3n#aQf)a1 z?MbbTqZK_oWGY}3^I9?!xCmmR+ZCm66nqJO-+V~4_j_cBPuByCH{T1305qmoKkgnX zw6aE`54f|fK`dUWKlHL^50&1vcjn7qCbfNKIq z9HTthwX?@J%tHAI?d4r!4y-%wYiFgOr?V;4iXbwNF9`4D(M}vou$+IcZv!A68dk@Q zVZD()yhazRScVIQ>o(zhc>4qYT{0>oA6ozo1qAdUkWu&wN|_M|0ENj|h$Mo*G?cKm zb2E2w{cp*;8AG5TXaHPJr2c=QzKOCn?@O)xrxY8`L~PRVGYYV1VRAPrD2Mtgr=ro( z1b;~Xz<$c|h}N&kS`#Mci3Z(HVX)&NoWIODJ;O-2jFqYTfNJ`Yqadu4wCLpw9rzxw z=+h9_aTCHB^aV$}-Q6CT%vE68Q8Q@l=M8kdCtt!^z;&FFya2WtEsQ_GT{XyQ3@vsZ zBZj7?kOW7}o19!&yp&|?v(RPYmm@mvnS}dMPk4pXQwCj7v=m^{Q)p(UasztKrvBo%W%58e zDo@C(hAhje%5qRt>xLJ%8U{+H)Uylb4@qp@x?dOb;ydmW-i`N+_H?=SOc+0QW!8ZC zy(=F!1^_`HIgieclKo_M-;gfCy1I)Qe_m)-l5-G*xq)Vo_7=SV1ixaWB)UYWP25c< zbHX;g@Gi%rf>b0ET;>rX4a&kBxwb4~MOT5qglFsBOklNkmBg?pBRj5%FCk7c=Uk`j zl&a410XU(M{w@kiLQ_CPhTIqR{P#xz(|3U>DFAKs?ky|26Pq(FRkUZftnk^w*k%4j zKL>e=B7b@UlN-Wb48pdIFyz_(l@6*eGijBe1`?-6d1+v1DvF``d39TwFCX_tzyQ_QeC*tBQ43D=J1sVm01RRsHPJ>6+bB5_!3WcWbN$GGkXd-M03; zHh^UZ!d$GMaHFD8X?z*JSlnEIl!?f1G^X?^oALEpkwi+e=!9+kUn2A=ytteDT-m2> zk|$e0Q^f+#!1ws)NG59>6be$i6B(Lf?K=k3mOu3(N1()s9`Em^*>(sK5(#uc!O5}X zkp%7xG?W7UbB8z)w9!a#;B=B-9n@_yU4Rfpb>rAyQe!#bSdhW#GQ=m_lm6Ra+cN_K zVTtn^#=bGFyzWvF5IQkQ8x2go$q(tOMcc@$2Hab!5T<+bG=#4Avq^a**V&_#~ohbl;0H28+Rzd(xtM z+su+3!#LfWqu|09^sTff<6_*_Jv6b#L^XBHI0wbb=>_8gvvTb7ej=OTQxXV4i`$GK zw`&R^(&SaEP|W>t1N5MclSK^d;{c%DEL=eZ#+c%}$=P4YRyM@1g=V@}wh`Uf_In~8 z$JTF}oCjZi6(9iP2Yr}th5AqpmI<-t$z;JLFe|U=h$5H@hTm}Ef(eI;Sl>a>Lj!k= zj=xm{KWS&#$dnHk*6A>{U72n+9nLP^V&3Qr+j>Met5+*(<00GzD&seltO482?rv>_ z26^?Exsj1?+iM7ZeC3{XSF_o??>)ul`;1hGYdH%${c0t>>OD8A%9*PfCvlX<-I1S{ z`ir+zzzCwZojcdJ5dLG@dX?8m2#66|TUEFAzrz+pMqMach2M`KrxhqvYm*=Lzg$da z)>TQdT%fI$0cNuspXB~LkpR%7kf&$z7&R=zb$bDq9wlqZ&Wx4c&-uMYHC6yyE1KKm ziU=AEz7n1{ZaDqg8Xh9aI(qoooWd^|Km!OCTXk>f zO%{wax_IZmZhuJ>vw5`EgQJ(tR16i0*%oUFG;>@ygvaI>6wjS`)dAvTPs=T(g|(q? zmTBM%J8(@RBr_&>xJA>B;YD;;SCv1GxEyNvmdWtj7I)3dFro?Z^WXN6;Nm1W)~mS# zP}914u~5LUs7#nruWe78(Oz_7v60{tnOutE*V{G{Oc>c}n6|LX6hAMTU=CY!WbNF& zxxeLxANs_UZ$=FEf&p!uhVG2A6KcxhA)4}A8`&_yI&g3C60IWMT3r5NQd`hpqByOU z^fj%UknS7I@%W&Itu1GH%?~TdYouM1VfIcVh|l_CX){_vrY9Eb;R{Ur?WMN_rFvnp zYEOmRotCnF{@yiw$oNk@EAN574qNaWxSWd_eBRe!CV#bd4gmP+I6MheYTACW%2ZS| zQ$u;B{#_k^kaDZLA~@Ed4{r!D0JmkLJHqDQ@~eAO#*xb*FNb&78}{4}h^ey={>M&) z5#EnTnVg|fb1efhqfE(1k-wK+X+8sO@oU3HIY(eQ6^pZGDk=_>j<%plQ&E^H^DJLvux7I z>UGT!r_xJ|5I;#@F>e_+X_^aE1kGlIEE*{{cgIL-E^8=1(Q#|osVe5ecOS#}dHzHN zp+u!mZyqi!)o5OS1OC{!%qS2Tdkmv`H-9^O`8=v;qB_uX`LaM_(kI~8_X+xZzJhW| z09dQevM;z{)$H1#0nF5U{ruhQ&{(&n8m7)a`MZiqA81*MNq20undyENQSG*0@`bM2kn+&~8^mII9@eaP#?&oH!qzW$b@Id`W2i;1i60vysh8C`#tn0hG60fOe- zaI8-|)n4-z4LXw+rJK-M%FhJTbz~Wg4m0s_rR@%Dx9| zOV(8avBi@V(mrEtZj;uYq?*lRBi!WcGtQYe zQ8)zlk?oV`>9(k#?{{;|iHqxM7v3?4hcvDAVJr0d0YaiPaCC{1SN(_XVFR2Oz*KLE zw?o~SukGtvVLH8{zL;C=9u)+=Af^7DC&=CHH+wNqn|w+r8}4LXBU%qsyUlKa7=t&a zXgXRr;{ubVr4vdpuuR5dV1`9DapJKRHP|#*A*F7OA_x7v0{(BeyE()?tItrRWK550 z?aL5U01PS#upqxdEt{Y(q_T0Fr;)}v@B+}K9avBvOo@sqEw+a5NR|{R!bm90_YF0n ziHOw6DfW}5s%?d!c5;E$*$~Gx-Vv+@(~~;1MH#rPn_6pNmsi@~9a<`lxUf%P8Y-Fk z9545q40fV$by1jp9gr*e<@ISMKNWWJ-|I-6fVY&=p|ln*6|%Lt1ju}c@13U?`Xp2$@jHR5#WMMFU)T`X5FJ+av%$0~opl22)bb+O)Hq`9p zsosSrUe9T;P3G^Bcl_CLEFa{zc|t<72PjfvrAhbRYrdkzo;+9*o8tBb);9stkMef(9xYX=N~JAWmHAGgsQ)u4I5Ai z#9Y*>s2OOSNLZQ6V2%k34C5Tp$L(T2L%H;Wpva?~Ls8|gzhe^#cBhGv-gvVCw=l5z zr@aaD)r-8l25Q{KRr7sd+C~9K0}2Le$45o#uOFb2+-5X8q5J7D?A%GiAnLnx*G?+O zvtD63VKx=9y2^qfRy?}BH?k7lL0Ri|F`8)*&=q**hdx+4&~Qyc*Yp_LQRc&4+CLUrX!}gvS3WJw=)S@xA_5I|{yoAOnkQ){00VAqVHSAe1 z%ubFjV^K#@`VbGeBp69%#vgvXbjNpsN%eE*{7%0%waFz`mUQq=!)a^PpFm;ntT~1J zpVD>rrJH6bu$pnS1gFH6WZ)a9nDQ4_+f=0s$r0IXZ6@-j+tQlP-Qz?KQ}%$vRS zW!m-?jJGFtV~G4$8Ya?8G-q)_{f6V}#!G7`KX)^}Q-`pv#LawGfEAS`TN>PIKz)*+ zs>BT6g9b7J1apXTe@#>)wy-kfa`hskIm7m@Q(QEGeaGn*^?rd`7bIO;QA5S+xeRRr znPAJ*)$#Bn0{8XWl)C&~%}HJS&!EKsmrU8Hl{qxIypX4MS42HwnCXPwa|iS%Ca(X8 zT*v_7eEr41;&Q$zAWWX}@pb7nxxs7)A>K|PIxb?j@TX1*uXv#ehwp|_)mqRkyFvAFGv_im8nW}AmcH>QXI&q92QoQ7ZkUun(FT3*DGr6T zJ!;Xe^>2^9r{}2HdZ)ojM*VYwh=;dY>UO;<8nGs(n4p?LfJv+n8}*q{99txz{cu z*v_frXsO7k0IhJkEP0?%bL-#-wBnVK9b;_%oh%!7In!+lUEL9FLvK$?&FcA_h^)9e zk%XpxIf_{`Seo)`IPLOZ*y$Zw7Pk`Rx#;RYu{6pOw!N99g}b!5Hj#W(ww&gZ4n%!M z*|ow8ye^+>1s#kr)m_#L%amllibXH84$4}Nzp8hA00wn$A^xBuhRAE@p*>H}=W)w1 zNREtc*6WFm{{k&=cG#Z6kO&Ffabj!&DMc1G>lyhEwOV(ALs>{LZ|ok!xI|s?dr)Wd z2`1WOKS4ZpZ%tlpj4qq5sflAX#$CwuV*~`3dt@f*>5_Np^1^ekB-Ej^nqUVDHx`+GLANuNt2+zYqn-4>+W%#&d|g6B3*W(Q28 z#^t2E+ks&9UyiD*W`hu&%iKk`V*WP23Ak(^9lmx$T0^1&Y{0@7&`)rA9?JEoAR_KEBo&9SP2=5W zLS?Enj`(-^5#?XYS|klE#WFLls^nBOJYWbb=F-ynK`gc?pj0XZV9$J<707>Xv#K5y zUeRMMN&AaRJ1ygK(SfH{gtVB^Dzw5Nbx|atjGh8|ZhoC9fM!=|!mW2j>qd5Ac^{#> z4?t4<51%FQv%A97c!e4$?Fw&tIf=Z9wD3#gzdX+Mv~D%!T$s-Cn2NP&&c()2)V{&A z4_LNpMkevcnrzX@hG(kWR20*m7|Yet25@GXRn*_G=4_yPZmrdv?^_*JjC`YhTqiNi zCXE6IuDK>kZ~V9~Av{%gsYU&UnA@&(ihy-$s90g98zNWy?ogQDuj|Tgo>Z^>=I^BC zrMC&v)b6=nQs;yz;rD8viK+JkZ1AIa;m{=Zw(`!4lWb@R7hQ{q0kGkbn8WBiP5acUQ(fi5STO zGNw-#lsx_#uEQ=MG60wizyF&RH~ZX1SwIfE>l{B!aThE+#qdg*y~>NMo4WMssmz%W45YibDIk$lGaW<9{kAmqWN z*WA|{4`wmf4nT3=AKjaGMsyrx42;0J3?o}_I+|Htk1$cJq4JZW9l()rdy!IR#>#||`40t=~WmrliOW5tjY z*YLhmk{}iWq@v55npr2>@yP`#pS*Jzbv={#p(>?cHf#aLa7EXB6{BCb(U~=q*9zQh zvhCn`jTBkn%pvZEnDsc@Y#9K=I$drkw}oxV@_r^6dSe=njnt;#B`b&Asc9Y#>(wMM zUpyXJtkr~a5T43{g`92CKp|!>a2^A;{6fn?UT>MXnB{Jh5L=TDnC~OnR$k2O@kej( z&f&~%WRsQPoI#}%3IFx@04-mxby2YK#tlc-n1taO_3t0a@s(FFk}^Q?jpO}-Az-A< z-PpOx5 z6jTC23ypDTIuKj7Ov_5;$CntsdWm6hEO)FlJt|7BJm=I_7F2oKYQV*z?f2*>3#N?4 zRm4p;IQT9SI1==dZXO_JENrLnlzv!`8$UaQl#X%PVW^r`o^U7buN+TpS|~(S?dfRM zEJ`<|eC_LcUNSD54STd{7W5OUfqTq&U99^&MAC7~xR!EM?pM4`eO>b|@f5Ezxy?a3%+JnAmH5|aN#0o6tzc)do4+H{X?~`5j;Vl*RR;NG#2a#aZ?kW`^=_> zWTRpK4pMZ)f&oolrKn3K z2NY6~0PCw`GAZQfSYNZWzl(CJq^HJ&Y-$B};5mQI^o=&iP(Gb)8pLxiZk(46%k&urQTFMCxy@9+3dPSUn$5b3#2ng3l+BTf|yyZZ2;c z6HtSlZAZBI&ET>&aVTRu80s;`!|ZRm9g5%TO!63|!7 z9cr@+7}N6=vc~aO0&k}rwRQ*n(_bvZCk$4 zza5%8fWBwJkEYt~g2BfPaV9Hmv~ZMtB#8&4jWr2FtH;34bob%yDp%N%d-6v0;1P{( zv_AOf3)R+!Xx0fgyXci| z`j(&L)T`FLhDO>>DvDo3QX{Z$W$ZeWO~Ry@se*2-^e*?vc{C4-#kj(j7*XF*B@6*9 zaP5HMxiS1N7q4p+Qr?TItdVJP?ib(AxSs-L&$^ltfT42)?H=ZaYui8&5Qk7^db3;6^q z3`ICv$wbY~+C(>Ze#7{Nn$}dwvvJnKhsh_FV+3CyCR~N8>`%JMZ=#X`A2k6i+o1m* z@J16N?T6M~qFA+X`;F1*FcV#MAC@5&rxrx<1lwk`S&pser2BB?%!+ir(`CqGN=pB49ora`}5M!nkNVD+XPlgK|HW3zFmRvjp zxh*gZ1WVs`K=QalR5!h6BH5vu$`^F>FE{A}$y%dA8aktPF6;V0lIYGs-OYMR1RZ*q zci{?Tf-UG78hD3ERp5+DUe(FovVU4AyJUFA@sQ2lm4LxKvRJFIbLj)7LKpp6*c+sJ z+6oG@QzceTk$DaavK6;?KQHjNzVI87DLidW``G!6z+%6rG$v;w7^Tbqt~oi;&MOqBCk5ljfx*Cv565 zPCb3neLIZ5wcP%**&fhdS73kjAMmH|-z!o%Vdw><@izd{_>XmZKz3Py#YKho{~y>O zFt@x=^87^g#U~?}@Sm_DS27Fp+nUW%f@nYj0aY?&BxZmK|Id}1z2i0q()X>QaI4{#kcZvG#Tw9OBD=70t$y>Cwh~;3 ze2isIj94|<=?Xr?wd6JCZN@c~O#8{C`!$z!`bo$kX42dJZGMk$=?S+tBP1WtG6sZ1 zG!BD!*|HT95?!($mVS*|z94||t7AgH*%vxQALn6Lx@BzxJ|#|FV83(5XxM-8YkGb@ z=~JrugdPjU$vzS<*$o(5M%)cdfY7DD%21-QMfKu1hjqo`3v~I8SP${gM>EN%s%Q^N zZa{?^ST|m+$}donS#uETC``|mtrD3rZuDXH2|7ZyH9!U(ekgDmG7Ug;AsMacv0nxItn``PpHZvV%K>5IsMi8mB&C{@pem4Z|NSon;>=H#6fz61zil9d>o zuSOec4!$*uq3w$S-W+m0@imD;BAFQR-ph<>F2|PRO}9aJ|7O+j&VPScv+tDt?{jz4 z-Mz>Z(eD>OYPeI9h#ElLk%`*vijhpRzgI9bJK3%roFB(px$?@u;GF&1#vlt0Fu9cw z3+wzU3(@5#3xe$^c629dsgS%DFHbozwrDlJwhp5VD!of(g;e( zxtDqA5LXlzUZLP`sz;KQ$#xS#PN-c93x_Y8GpT672oP?JNR}8q(2x9)9)76FDrPEJA zhW=bU{GWqiTyVgO5h~oetw!cat9scsY@`|!IrsnK>n(ulYMOOn+=2wRKyY_=cXxMp z_W%pm;O-FI-Q6v?y9IZLAi2Ex-gEwY&tLae?cHmnr>EDhwQ6S1^gNF<2owam8MZ3q z9-r3_SW>$@>%O#M$>xNyObRGcP;bzYQ*fci%bn+jKTM3Py$C^u(2uqvpP=WuxY441 zX!_{QUFrZs8=AowuXc+M)=^r<)tc@U#<~93?(keK*E9}n)5a`HnNU;(f?P-dod*kh z_D?~DNpEO+Ls%-38KX}giq%?u9TjmGtXTWV+DgCD_HOE56>(nfpE);|4;soCeG179 zU01q(&Gp2@X-k^pI0H7tEDW+WwLRundj%TsNQ8oj9wQU+pF8T8oDAyWr2D5w`eJV> zoMF=L_FO10Iq>Z!Nswq`YQVt&sZi8cGwR3BlpLThw8N0Yvve5E^nn~`O+RRrlrG_1 zzF>7u)7Kk0(OA|a{7!ypDUi%Nm_e??Rybl|+|ODbwoSdm@U@JDMc|Ouq6%S)uob=m z#WQA|1trKuYhr-1pm&J3!YVJ2bh6G9oP>ySY@>LG?3Y8GqZpcIjYymYyh)~M*woCN z^NUU;r0BdSK^9Wclg`h^11d6UwUk9C9}2mg3g1*$uNgp+;Kb>b7dL9b+EipW8|Pox ztd1pTXsEZb8<}K<2?nUBm#}XyYK)eDR$>%;t`c)lM?2eZKkF@6d&t@&ZE0_IJyOZ8 z^Qy5uDtRn(;-B`L^ft}`4Y8!={Z5{WeguRXC^k5EIvK7dX?b#W&dTd6Qx_nE?QGJ%eBL1f40Pd(Qy6(Pt?*ie zH8oPHkd(1Pw8R%AMq!(A;E8K+6-^=7oY5kRS1wCqzil07#^1HIKmVW+F*#jMPrrt< zqi@Wxk_eh3^JW9NS2gn}Wh`@KzdqccPCfq>#KR{2}+rYt^&iA;tp z&{u~1NGILLNQ%v5hJjBL%o9M$j>XBuQbK4_j3py^m@Wc@t=jNXUpK&7FGcsOG zi{W|Jh(M=^%ogq{uj!laoC#tAeJX#c(iY4qIfUV*lbU#fynaszO0K&-dfIS&^l%Qi zct56?**l|u+%ji_*dH?x%eI|i4c#z?b=Zk+kXpB_0=}40+hiINlM-7E-F`5Hb5pT) z*YCaS?R`14LBMFw*WYm>Z|w*gDn1_A;C^Ou6g-=fF};v?({RN%jXU87nE(EcA=ljm9!c7LOuD4|A38DA3$c=ydl zYCoXgKcb%C(EMf2qe&L2l?Yp%(0)z-=eReC`pX}3&QSaZBjI*tVJD8;3GvA;KkHgS z!-Cbmp!Yh+KGGO?Dqfs7Fp9p$5AwmenImBElShje0BtVM!EJ2q+vNG}_raNV$zys)#YL{$Fq4Oa3x{`vmCCFIZE2^U+aoo8hY~wGexkIQ zQ`SZfHDj)0;uvhA-@>ID`C~OD_mG-QC|B_a!A1iuKcrQKU;+jGC#P5*U+|PPS`CoI zXwfk1xj=50+%w3ygx?Au9h~T*40_F%aur!)w;F)Xfnya(m zYhcd3_t!mVGN#tx(+rjCb@MN-#vx$?P=m5E7u>%QU>LUw;_61tN&b>p`cwqqo)-OD z#}sw<4dv6!S=9OgqDmJZATgA;fyoa0cq%rEfTWlO?f*Ua`2$_H7JPDuOA-9wUdI7L zCviwNpAilTWg3#!{0*b=yQ<%kVW@lkbBPFK6+M-7#sIUdWBo(;=9)>HNY){z z6I+I%9iP08$R9$9oPV=AC@m9c;3G+-}pnh#>_Gou1Zg4nS*# z2TxN|i}Z7w$W?0I55GQG|}=OYlB+r zBNSx9tVK%rLw$w?856di!-FPRD4d`P*UmhAu(L+~fuJu6emOY=@oaLRSnz!e&*H{# zUULM40yCmACHZQO+vG}QxP)nc?g5>qut@8y4u+klN4sG-E&8WRxsqI6OAC?F`bZeG z_GP1Q><;Uy!~-Gl%Ee8mIR$y}7I9tT8GdNz8BW8oqog-WXdZyZ?2>MU7$ib~09n4z z$Uw<=zVL^q@aw{F{n4Y&_?2O$Y^;VpP*kNB2`BL+-G~C{P`Is1kGARr+`P=9D|nu% zNl?a{crKyZrKc?AmcxiPm`%&-}Dh+x|w6qM}pI z@V=nkv5XJ(BHlG^vO>;|u%#>9JSe$QC@1B}Zt{D-PnF@h2`$x+qLYHNv{JD836oCx zld(+5uu&1<6lGb2p`y@6`0kuA(*L)MdDHEHk_}4vwOqxK*vMhNsINh4ZvP_LO9ZtH0+x4cPbD*xM zj}TKMx^8!?erVH3rt;#%G!Nl{T62DQ`@WBXiJcHY^pF^8XBARyWyg7|a907RuYT56 zHQ=i?SZ*eGJN zxT>J~sBJOn+$wBZeQSc8^5}0|j(v^JjsSYw+cjRh%km2*K|P60*nH6Hi1n<+ve;L) zzwqJYW*WRYD?wnP&KZ?nv2Ant(5$}AVBpjaq=445FQh}ngcADb^x;^<_euGAUC zmsnXFZ98_SSL>P`R}KYF6&}J#uXfU2F|_SNw?AGDcMykh-FTe?#%B)^^rC8bWu0IgC2j(Wg64f$#@>iE$g4FR6|{vs7>KYK=EL3A+UTe}=@_bZeBd(=ccdVd zL5Tg|9+7k12`60ke|GW|CI{6N6BEY>_i>3w5!vesQ3_4Uo0QNvz~jO~v7k~3CsYvs zLn*L^U=Wh}hp=#hOfPdFM-0gqXG5QzPeDJfR)aZiz)70!2M59^Ns>H^fw=hAXRC%@($SBxgCfL+#iKeOx5Y6o=Fsow2S+acmxUzPjCm z(6bL5=NbZ^q@~1X=q(`5fLtOTQWhq^w+}wyrv_SNE0Ls(UL*&h&Jnc3^#EArfTR$R zpwf7%t`#yJW(e$&d%)D6=w?w2wXxR9fXiqLiT1!r-3f&~i*|&lX4i|!szpPn#qta~ zEz$FaD!SMwAB$%$Ysn(PsRc*GT1fW}DlV&Zwd)6*@~4| zibJr_z+cZbpU|P_TKW?64G}8inVA5=k~Cog*8!kxZZK!?5Gp&PZK3WmgQf7x9A_RE zb~3YUgnQ#-cQUhSVBk7wcq`hbe6nMf_Vs*_4e*XBpJd0j%sRkV`m*{OE|ZfFju73Pt{1%lEgon0~gsJ_pO)#D=yQ%}hX#5xR2oj%z+Ck^_i4j!u%7u-=? z>|f8)uk&qj%dNS6Xl#qsq{nsFeK#lE&e)xcaHb3B!p9%QLXtvBny;n2i^wLd6L zZTSl}>gICjEMN;fA%YINKiNg`+f0q}Mk{E{CxD3K?ZLto6^H2_~Cd|6Y47o&{J~e!4m=$LHgf6=n z0j%idGbG(jb{~m1Fhx|;HuGh6OS&mymsUbx(i499++|W!K*dFi4VQC8kmBT3U@H-3v})8t-t@-1E%pdIA~mrb@U+J-|->j zxw@+EJiuVawR$|e>>!I738)c7>Guc*RYwjGcqL}H z206o^o=9%D0m582&vq5R6iWLmz;DDos4(!1IHCE~Ic-c8Dp-F%=oloD z6EE20f>k{9sRYAXFr%2CQLKl!a~)or{a8|Lde_T`!pbh@<%&k!NmEVl2>_>8lEw;p3$c zkd}n72Dn!zmwlO{aahjNQI-HF_;E!(+1Fq8I;jxV)Wr&r8#E=pIAJIBoaNS*z8O3? z3W@Q{j$E4DX~Sjzald)r#n?(Sd5o71ajvB`BbU^rqaN-=lQ$Q%7v7@&lR#B3xpY6Y!ItL!blA#5dLfqBHyl5p<_o8 z0?@{mp_ViZ0P)H%kDh}t=tZQ2Ol2{nv$QbZB3X-VGS*t#?}%a;EpUBwZEUpyq43S? z4jhnh=vgASmi?s{@_3!66Q&6UJ782}JfskKy-nOx6v&?^HCAEh%kZWFpNWqM2eR zP=+jAgJ(-3Sa9QVZVzOHCguM?=_q-GrmX^5nD|^IE{H?u0v-y&c^OcGZk$JS3|E8n zNeQ*}Io@;=E-LnTqYpSrdcgcKI?XAS zK;`7JW#)d)y`M2qk;fj&c~q7&nu7s9L>rkYjHn$XVFU5}X=r2i0Py$8aTfj^tUCe5 z$hhQa?{iWZOjWA9a;Z8`-RG#+x2ES0B5LZ+rurZcBGZ1`fVG#R6H{95&x5^^i9c z6{sCVWI9RpbF$(jaUf($L7$;EzeCcHnY>a?vS5~@flK#*@P!D=9Ka-?5ZR3M1QCHl z=O~qeGl?S{{t}#K(Hw~X14Wl@wGb=lpQZo_{>#~)68!;j*Kd7wjkuXTp=(K8t`tha zBl1_WWQ8K??Wkb0qzo{33>SdC`H7N3M6T8dnM1VckQEh!C^-K~6DA$yfIjDGoc#SJ zyxV*Ci`mOK`I~N5xAzUC9^Z9}z$@uz0Cqqh>~As_b*ie$IV@ZEd}ZOj81nD+?ZFCm zh#$3gEziU4zH6kHmYu(P_Nh5RiZ1F`PoBcOWbvn zT6&xM{VbB7P<}k-www5}v?F`$^dHdc5lT1a$_y!d`NPfsA!;p0G-5 z75PJW%~p4u;WC=x`9E%$q1>UZJ&eneQ*5}1W9I@xNw+L|@_YCH2;iP&^NWoaj(ud| zKAj!^r5X1_;f%*M@XDI#O?HKz>aQZXum94?$NXp1RN~^>YsODd!3JTyG+_GK%3^!X ze?GS97D@i=!=2&3;(dH36jagsaNvBF|5EMWxs{p^+ldsxEZqHCM_biao-l4~9~}@o zBVr8!OdPTsVJKtQO^?Dz-L$IvP1)|_Xdj5zg9mvb<2U*;fS`Ru*_*w%PAQh2v!6I- zbHnx!Rjs6p=Hho6km-G0BB04I^6B(D?otk0O1R>U>^Tv0mH;M>iU0Sx)W+;nk5_d( zMoI=V!Tzng%8Nf70};>bz#|c$FQgpITs>&VsS7sVBT(BWDy+MIhO_UoWp7zm^Y&Bh zxyO33XM{5cqY~cG)Usue#&SvfZ8cM;B_B7m(C+(qxx#_GtGDhkBMNKflaaVUEXf{};SmM^4h)r7}Y zhzyMPZaI}ywRZ0-aGBmWe|e=1_5IeUvhQK$-;X%B<+RM+>nQ({?LK{IX8)cX*u8%R zz2zkE>IUvNMYxv4Bvl50{j^sx*xrHw)h}tDyGZZ(^DGLBAZ{0Q3TMU$Vn+2nf>9%G zpn?VJ155>0Y(pu}qd$LSp9ZnvzenqIe_P$z>B;wxh4xe{=LHajS0Mm8JZ{&E%~`6D zc3*6yJQ-fA%p}Z|*+n?Z)o#NXU?12*p!|5>TX6%#0Z~#9#Y-eD9ni82LYbHV7NH}y z8Wr?8xrJx+UI}zr(@S$8a!g{!4CnHhvO; zc9gxA8_+G1DZN`VeRahKbcgg)JVA?QbIyy#f&T&MRHp_wn0;)YX+nek7ZD;(8v)w? z&Vl&Y27w2pMJMxKZ1jt5S*bRubH^8|N@hnbFH_V@sGtwi)TI-Ust)Z`zSy26Z0AdY57Cu!tZvkrx<=cZ_4P7?^nRmXo~)F3ahsxg1%1w@ZyQF zwQT2wkBtwF$o>AV(GWB}9sX0bt5%=>c73P{%qz9`Lw5?&`E`e<-18?H@2^QS{^}iQ z-8z6y9ldG;D)6iLo{R2=O3L{<_-(41m0q5|wuB~s?oVC!pL_c=;n8Q)!ERNX3^Rsg zTRC{Ky6V>fU-FZ^S_c?yp#0mz|t4-#LBXg-BZ`>gZ!^vLFc6i znCDnz4xe9i^?EpeS!wYMlrvS%a*WNMunMGoV(5E{9p+AmO*@)#mk{Lu?M>7%?yrGs zmoNN;nR~=a3?zbHqs7k`Wqzi;QQYE|To~3u#E>^KB=jaL`MbMQBkuXkys!qV6!IFG z=&k`B)D9)DTRxgR#jy04jym(6!OaJTx~OkUYGDBTcu zKuJMsabU@FL)kh$7H>|w!$Y}3N8JGT=VGFrKH|~z)Lt9Tcxk=WSL~--I6DvMh`!b` zZpk4WE@xjP9W+<$+tY#D^M^Aj-XL9i=%t!6b})#Cl6mv1!~?D%R=p|v#LU}i!4yz` zEWIrzbbWhI)uLJfQjaOag_>-#LtBzDJ@+hK*$i$9p5KVt~@yQEU8VtYPAyhyB0=_lp&k!(uALgO20w9 ztA5;7fWxk+DgH>K+C?jpS(es1$2;g)P#}zt0oOhbl}%Ah_s(SLxr_r~<_)LdidRiF zNt(A&3R`3RF{Kp<;$!`><@{v}H^b|t8 zyLfgR_dG185!g4W_)1{DMz&=56ia%gw?P_f^;^Nc?WC-DDhkZ6l zZ#rZS;f@3+SKPdHW#R({5w3_36@R*RCSEjfDp`X3U~%?+<9#1%fU=Xltmg~7!{)dn zLs^((6cp4_108a2><~m6`)=Ojl?0!boiwLy@ASR@HM5Aa5H9QnkN#_M1J+n~0aF_) zbRPu0=<~v*wpCvqv*vm4tEx191yWolwpSC*NiR`1J?9k}X892?eeFv=^^4AYf}=@m zor!mLIW=zFS-O_Y3cayQqmZ1GK7UQ`7#Fg9k)fb%jLi26Cb+A|Z z^M)ZAtO=X7+H^xf*<#CP?}Qf7jX=6UuaV#9>AOB-KE39KyqMVacUfm2*;D!PM9YAZX@bfERPXengos+ra8%JrY6@NC&ugp z#4}BDWZ(20P#f>;OJ6t(j$(P^d6P$jSnfhK?f-QJqhxuUFY57Op+h8q_12{yLf<v7?sZSU{S(|caJPP;x68N1WprIzc+A)@4Jf;5u7r|z#!sN~0*l>ioSjDEW zAQMhXWkdL!i-t;(xJc>x&}4@@Z zL5m+vbRjR_sj*et>D>tFRp(AVuOs6H9I`jY0?~^?^fP*~(!6!ykQmE-Y8a`hZ3OK;{cqH85y^l5RT+El0g=}oG!rP^aBs*k_ z-7&~U*<`Mk@iT`l>o!{AB0j}L22Q3z!o;(kQHVTnFlW(`+dk>y{|aOklZ!D@U2Wd) z0Va<27fY9KNqXYqLNF#`evUj7S3ia<25Eg7Q-r(@ZD-zb`+eW%103#* z@R99x50HC;x_QP3A0f-5it;SJ(06>U;^~P8kEwn#_d+bQAo0D9)ls4#9eaAfZ{|q0 z*14>r>mX5+NF`;&U+_<&%Ko7ugxk#)I0nci!<%d%C+|leeMsX<9sH z29yPXhLdNYmxuO=&TCzx#Mtz5Qg$8t!83=y*fj3z(|}G#p`zy?TX=q1ImaWZ_N(RK zdml!(;qEj2+1>*0yF967@@Hit05dDm?)@{~?9X#f#Kc>*StM&)+cwC-5&ig&ow%Y3 zTP-d06<^b3A6er49XqlwZl`kIz61K-S|=@&Yf!TDJ-3f%-c20TAy667yJ(WBxs8tJ zpLkSb?DDE_XY99&M_dbffZz((9M_6v(Tz#xp^M7> zTYpy)=cD(Ktn3IUWoYV@cG&#ex zV|Txv_}CW#@eW-XqF< z_@9p>dGA(Q-mivT{h}7@IccCLsYom?xi9oEJYtqt9s*E=eI&_@fEC3jcj5T&dgJmYdn&i+s@i-?E4?z1*D`c{F^me+Z3EaM zbW_?mhgWTuNWQT#8f8}QihJbFRQqrcN5vSriAK(e+v@$kSCy}0t{CBxh=i=5w%>ad zMeHZ-2bxo-)0s#Z03LkijRnpPZ8SU?`%2a!G&9t+WpfWe$OmsPU7{}8NKX7~=3~P= zhtIZccN)CLtda_K*l?hbvn0Z&U0Z?dw9SDlCV=*MjWXitR96?WK&yw&x0B{%j3m_c zfuH4i>+wG76z{@=ov+)mr`QSnumG|kvrwqXD$~voQgjy?@DYw;H6ghqqr}r4GVi#N zL>0$ir5RoEp*^nhM(SkILZ78aJPYv+j=>s!bnTL? z?#_%AR8_rvvX|Bku}3TSD8`+{B>a(|PJ&yX+m<}nzx-`ba7hV9+EqJ+Yu$t#RZle& zcRc&|rixE9nw5Sf6eX5)y)XU@Q(ezdw&Ca6G?#t~;MrEiAG$avtVG+=3DFIMvc{V} z6rB`l!kxI%Zj`4QkGbR%>YpNn0`&vdtg$t_boV@bpk-5MD1BB+35(68z~N<5pyliI zei8O}65^+eaofkL%$TOaahz{u`Z4Ni_u~btysOO_E|*;)4yW;@p`Rm&cfD!%U61u*Sft)=9Ho zbR_s5AY7F*^%GU3K|-_4Bq>eS3`)*foL@L<0D;&1?N_{EI3249l4ddP90CK7caupx zqdD!>KG23!uVLmq_pH>I%-*Q^j9Z{=${!)6dTbNT zx>UC$72^_<+djEvLZ`i&6ul2U4{66%Jf!7LVz>MByo~PTm(H*pxl?F8IOh>2jXyjH zU7T^EACtMNJ@RGb6tZYIeDy7ecKnIt4g}$+`j78&jI z#X^a-dV8cWL}(p_b1C<77STz*)q2MFBtIXO$bQslqhA}Q;R=>!Rl>#YFWCOAK%&&N zxPU!s<;!6<7~bxTe#z?ZIH;pR07}E<2WpwF^om64i4*hSyAuyr*`)&roPXpBv_B>2fxkha^JD7TJeh8U$Hu5 zRGZqrX$?-8sxAOIQF|XX3i0AOD-Dn7s{7O`wWQp>LvE+?=_;Ch$y0#(2c?~<6a2xu z!r}cX$qs#b`$9aO#|(9Q1J4Yg0gP;hs$(UJ_fZkQtqx)rMmE{Zh&q2d)v_}p{zl*L z7Jl41Rs+u^figmYaoPmSipVxtGK(G5-0*;M( z6wI36SQqkj_E(}>J)7pbP7yv<*;b9w?s6m|n+gsvR?P02oIh943{#FjgP+3Rs9z7c zplwsh#>{1%x3yt@8E5m|{sIuxTCwP*IeLQBvHC_#uA1ofON%-BxgQe6T^s4g?$|%h zEh^VbLwT{GEMwI77a^67N-01WGlO{D7t!DABNsgqS1<2ktC8H2wnbvQcH89olQgA|Eq8D&N`j1F*7gXqkSl~Vas0shcpD!fBl)0xP z!Iq`udi_6yyV@VWb!NeP6qU=LW)%M#!`osIy#F1+_O~O5g|#KzzbU&3$-jLd$A4C# z7rc)q<@x^^cDDeQV9VTpLHZ9?j! z-7y})`*dC8f0X~W`0z*NJ@Q}Ii&+W&dgzy)>-Ew#g>8o<_xEl;euj@*ZdDC9Vdcg8 z*I9sDT0wR|{-2tU>Ob%$dIn538s~zCL~56vzabA6Vn4vg0?f-s#pL_%Eq?}`;{CA- zT;e_*_mAylBujpluXs^cojUuIL~bd1)dg`W{jUJ$&)W8Z-Avi`(e0%8TinTo*83uN zOW6B@(n0^<0{H)u|CO3N;f(!8=Aj?(n6)DCUq<(EKT7mxLjE=S;uZK$YN?X*Zy)4B zC;^Y89$U3R7tnn@97nIEemH`HlHpt}XV3B=A zg|$B`Wy(lQmqd~N6KTawVyYcas@e3Ya)dU3^TCsKi96Zh_pMgIut2LfOD7ja1_Gv; zhpoh=`tegP4C)8`JZ9%+Bql@Gw?~LTQaLD^oxs7hNcKScJRF9~nIpjlL&j7u00TT3 z2YbX5CBN6PdaL`#pB=83ysgV9(|`zUxu;pl;wVC8|3S;iEdOT5! zq0Y^EF$U%;f8QKtWH8tt^fd;K5jaIk{w&NY4EtE2zrpw>6ndnJa%YqdW9VAbKrtn) zdbZiYAJ`9&0t}pa!0iO`B$K8M09Q_ZYH+S7qWK3QJ+kmS=uy9zC)Ry9;au*i*2Uzo zi`U_ay+tI%-LPmChmy|G-D!i9#T^WuEJ(dquZOD+9?aszl zZIHP6b*b$j77d|dA(KYAR)@nC%6g1edJ!5lyiJ- zkf#c+b-KnFU_z*T%tTo%1+=|v(IkJvzjciXm2J5fhmN3OC+P6I$63d4iG5Afx%#|t zNo5oOxMM%kv{>#~S4+e*f~4(%P}VNTIif=_p&$6~y33QGaWVswrW(DfaKtE!LJKga z1sY8CJEB{$z41)Gv=(@KtG)qg^HBXlb_*v`lp+vqxruwvskI$QfHtmECFJ_nnTB1e z98012?&;1>*G%iJ>MQelHvjf3TrWk}87vsA8 zB@R(>XXYwo^NIp-Gf$arvZfU{d>$LnJ&hZB1ELtIV%r$sfJHa!xVzwnF;`l0HX1sa z)^{iATKa`-nZ_W7`^4k~cnFLZ%T-;|y!eDT- z(96>U3*`j_M+&eCy{AwK{3^ISyOqtYii9Vxrx`KI3lkFizyetdPmcH+S$_w(pQU)- z%U`pSR>Xd80MD}PVp2t;U2v}E;U}lcrsZyDq|^>4pTnq#gq^*Y1Vkv;-3iKRwO0D| zZ<31YW_-g{bm{YckGeq7;>1J!FjCedD(D7ggektpkw&y3)`_ScKU$^3(aG-*TUMXnsiC3BLSMurtZ+aXS}1A5rlw2_Shs1bAB8Ra)g~R=c7Yy!}rx_p;Si zW)?eeB0HH0pSn7}qR5)Aa=Tp)1W;2RP{>sBwG>`kG^-AoW0is*I^0{r@Nb`dlaep} z>frv?`+ivMB1Xf-5WFl8@YB8jwsjH!(p_%y+evyXiQ%}As+A8yF zg=`#^l(NMh?P(MF3~Q~G$5I=GEGjB;*_1jmJg>5*`nrzR7=c-(xn(-16Fug}cZ*R{ z`vTN6WgMO}Pm$(qJ~Z(}2yFzNda)XgVIHHPRv?mY7&Ov3EZE(LTD6niBy+M}@WE*a z&!X-1Dr!rqC@2?oy^ArthRj9oXZK>vM2K3ct$xN+{-QbWi53ba%Zaqd%Wu{}ErC3V ziNWf-sZN5OJA5fys%Kl!1y_>%P)v*gkR+o1V2N2{`vJ?cb;JN|MEh;cn)#mvyIZ4f zKY?1ZU%A$dvVuLthIs>Il-L@T(K@{x`YRjbwv+C^pEe@7b7*xhrqP6i+@+)KMjh|s z^Vd{dG9v7hXKbn3WC!KzOOM!h)bH4HG-FUm%Q9!kdOzSOLY6)K5k$Jqv_ z&4{G?yDF8og|?7)khfkWn~52}1{1=rPausg6T3ERZB$;U$pgL7{LqSa1yb;Pk|SNw zDh_y(36+($m&|cNKxw?B*{Zd*zISg`baXdw7mt~C^N;R9CO za2XE+cDBVT6)Kjg?KMe{1ygn2)UCkhPAe<=0#9{o>tS}GnDS@%10q`*)u9nzl2l~D zDpNKyV)Sq}ZtR-cF-;0EY`Eko52#Pq2i*$kgPw__EH|TGz-WPC_*g0i|DjT3&7f1@ z?araVAR`m8^3V7|lSQ+X2n10mVhC8_cm`=CcxFC#t87@=P^!HN+b6q%>#gSF-6049H)m%6ck zuu{Tf_*oav0fv~KpJ9x(Y%serN!WSf3F`!y(+W6mNI&0*1=+e0LZE7ae-(~%#Kvax z`vct?!rEsMR5QUx#xo@*HLh=9m?=;%3&nHTqe>hK>qiPZM>J!wl)+9JDcTX z2K_u+*o%9nTkxAFV4>@9sb*29f6|<2N3tnes44qcr($jubr6j)>L4Gh_m^hj`Bq^m#;AL!W3Y++9#lB6jOrf4(MPjp@LHSj1Ypkad+QoY0FiqSpo( z<;Z}71wfsMc?FYN0csgP>|+3bhHemz@NH&g{lbNdUh;CAeA%@ZZ5axKTGlI@;fq0N zGnVBgmj+b+ofj@!`Y?gFZc|t1lBPW|Ufg$6w!m2X>ojq27|SYDjSmj(c7mb6(;lrv zbe#mtGRG^G_T9KPkT#D(XR<*A_ zQFuk0x#^?|;+t^(RDH`4@hc8qduR>=kS{nbX86EQ{KN(ELFGR`O9Tw1tAtJ0@IX?- z3|XgWa`o{`mP$cs=G6GP$M^HQF@$ zDDwWhpkWx`+>wz`A$endSVNStk<@#Z zIHP{wGqOk%`dJ{yY2sy$ucdcaNg22m6aoA>|3KAqi!+nGT{U}KF3dqQ~?JC$egf&p2Al?ko&_08XEUVf_{ZZBl$ zKAoO5k@<2hZ#q+h?q~$frd5gevd>e=V-k9Y2I7CpXPvBfA%j&Eg7_`$mdh=fi2w+K zIDt0Ch?r-O_@nK>3-PZObHqaUwt2oHevQkbny+1otivvvM+9|ds3Aj^Bb)a~0KINx zb!pnNadTsH*VA`%Yj20%$a;I2+&t~f>IAs*kBBn_S0LDUZtKPSICW|S_-g2e_qMfa z_#)33QCgtS!TmSJ_Cv@l?)qakgpK$SRSh2mAiV9qg!m-N#+$m%Z%nN-4>{O^H4Y!uWz?RwHI-eGpC1_JN_!$%*I` zUujHPbv`XVN+=!Vb;KmDSOT%%kvZo^xlF)m2h7O$0v9lJjJH9vUB=tE*Z>qqK9G=B zp1{_(FW-6bK5Z-h%mVAD%mamn$HF0An~yx27;T>@it#-} zJ`Y8bkhHUYy&PChJK|SB=>wwBCr$H}>z6*MfFVD^i)bdG;Vmro4r zixCO@?RQxlmF47~Xemp^gfv(}w(0Ht4D8K$&R{(|pOCy`uz8ODRse`=K}HTL6*uZ3 zL_A`GJJt7s*^D+pv)VGE8~EHpDZTB$_|v7A!hH}Cd~dLR-G%bEF?~cUy*38HH-EvL zM{13$E-+uj2%c>YzU z3!+8e*tTuk$;7s8+fM!y+qP{_II(Tp#>9F#=hm%v&aHdu)vMaod-bZ`y}$H_)k{C0 z^oQAG;fo1L^FLG>jz3u`yQ%9YyWRb4=Yv{6KsjY$!cL{=$Is^Vp`tM*?r>ILP@i2q zeLZgrCc@lC;IVPj^y&$4W-KDqac66TlO5g*jdp{d^wM{#T$D>hv=^uVA`z=w-D_Z4 z?*?hI%TVe@y84@@nV`0#1L*K2uS<0;s0oyQ-J={OTP?CW@M9AsxYHRgw`|!Qey2m( zS@uUk8Wk*9s7@l2fY1h#bL!IE8F|LzlU%!SRc7z8OP5Nx(mYCw1z>a&1b4V;cwSLA zwvx!e{=f%w2Seld6eA-5M)O3dQX@_s_wQ%%(9;gu$>>M1z>6R!4#rTC&5+O>{({?N zQ~@u5ySKmB%icYs?R}%zbf*=!a&kQEH66VIi7psPn97)W#@L6J!9%Q%be1w#8G}}+ z`Sx42sHp42$S{3exB!0dx{DnXqq&1G2vgzU+#5d}0b7Pxj37P0d7rR1#>EijNY%=Y zp~ZT}g(=@v0VvV@K|jv-BkJ1wS>j(w|!UX|66avj34UkkZHwApBQnQ9ef z%-p_}E8HCDV#~W_=gd|ArhDDXr9LYCDu;??KYBWJcbWoF8+|l&fgqaDIk8!_YS;Dc zwu`-5c;bTX`Q+3i)Vdb@z5@yJX&En(j3l@xKSpA%tO@?i7}cky^g6o@1;T+~O0nb706CS989auBmyo4N)m8aA{kso+*O){N*P|h5CktP*Q zuV-wxMgjK_|75mQtU=*0{l}g}Yl9M+m#uAbbW@=2H#m=c1Q9Fo3|9aQ$9bMz7x3gir%OpIci4_LJlMmAGy#;$mNcpf9)dF5?wNJ z)xJOARz6&0_f+&?2^LYhQHZP>SCeW+HK07wd(#fbu&b%()obAKiI4kD?{YV$L~-|+ z*V@nF1uQn3+@tfiYA6#avTjkFhK#+Gv(8u@{k2ZcUzbd%U)p_=zq^_SsFd4~#0yP0 z&uVLm>R^cwXXJGQ0t)U?+mJy+T;`bDq(}_`G+t)7wjlB=fd!zg)fbi7!r{=qH18z4 znhYeYbhrznek$Izr~aM;2ZzWjPJ7LU`GWJv1t+j?$&~x7V3ftSUcyRXahE7e0gw#< z{JvKpXI^6qq=AO0CJnQ6hy+TC6i1el_fr-G&8vh%UQ9_Fl2WEOrJ=oN*D%;ePXUIz zX3*c&{#&d9U%rfp;nn-mf$hDUFOSadpnAslxkE1EXb)07j@d3uG!KW?7W4AA zY~*xu&@w9h^U3x9RRsKB)qIaAsTpg;NVtj=Is>~$VdEY?X_APqM5*#fDNqFIgfx2} z@)-qnr1pE95d{>?i)5jhgNjL5)+i!!#-~ygp>Lk*NnzalLn{0ZDExATCo_`&WTg$0 z5VhC|@6m#)E9m1WKq7%5we{Z)+{aXz$yf$kwFm)>A-!-c5aSSl!8blqoZ z;qkg}p?^o*)AVGbO;;JVSvA2*T%iZk#iaEPjE>P273&aasEeOL1=}DD#~NT9^UsfV zHQOwE3<9xs#Ay(z<&ectBnLQf|A5d*Vc+2@DF_E5_wTPqh@yr7QfqxDRO_&T zn8oNjF4lsf&ZHuGHVMyL3S;P(N{ds;`s)o zQ>5_w{`Dzihi6oTjhV|o&+yaPpDnt&YG)Hz;qb7-=j2L=log7p)TAU;al6E%cTvdI z-XyJ5SNzi&C)q1~R!+(T*xo0}`8SR!aJ-ID{8~Gt%=$1*%KK4%Q@)Pmkn6%EOlgLmvYElgPR)KL2Pq!*mbdR_1N<2lGs{-+0{~jTQ z>;X@uj(!JjM@8Z8ex!~jFfU;#t_0mb-c6O70CFj=#Jua}T6D|p*G4F&CwttJsFjrT z-cnKycVyC1qFHV9DyI=yN;_mLmcEtNzYvc8ro5P3d?tG*%B!*{YGmyYi5@qzwnaTo zd-DC*gVw|&j`WXmmag!+xos_PlX-uS!IrpbW-#WH@xK@8Wvm6NwC*7QC zWO4u{)2K9l#eXXW~38WrGGE5o0uGT=k@&4en*pXSqhMEC@P5wc+x|X*%r1gE@Iu=1z1K%KX!Y88Z$6p2phh zzg0GAeaE=v<0Q;<+^i?&rAl+{C4+nFI&!8_`qx#o9gvVoGtK+7JtdotUXTC_Yauho zs6Xw8Sg^b+cxdDnWB_^_afkT z8VXFwQUXW{w`yWe?|D&IcEGpi-bCc`;Qc?79>T!MQE0>K>N7|SJZ%9A4}o)6GP$iK zmSEFr6$DqdxYCln<%cIhx_p}-$$mA${oPrcHEQ9}ST+HSG683u$=apWi)D>W*qSz& zL}A%il6@x|y?&iwRYwMC!qq>0FulT>(edVs0_2%c-ctOUW<|4dSxWKb7>sh1qVpO1 zJKRadIt)9u+R?tCY>EMa1F2#g_W_8aLenGn#hqKAGnMQygfFO=VX=nmL}(#_c(;?o zj86T$3aw&glu~Iwcr3&7_+~vE;wX6GTzA(D(%t!|1yF#Ijc#&MD!iH6dn*o< z&1>rxttu}XOB#1}-Eo{z~ z>VCg!?7s-#D)`P6 z?@}KZtEc|U7^VcooGhLLciWXS7(QKqe8D&UQeu92epssUyC2=dNlHzjdN{#NY%Jza zw{F$pee))aUm3R7IAx5VqOK}St2uc19V0e|FLSc;czf=~e zGiGmZ7HS}~HbdWQz*MU?;|Cx~^>=yV2nLw*OGko&+dv{_DBd}ol`09TgwXxT3JFpM zVR#OcZvP|jo_0wG`8n7}C`SHfR0k*d+9s-1fVgXjY9$a8$S-YRcIa(3z->|7GGD-R zX}F2FfnZp4 zQNnyvIt{VDp_F=f@#^k=?!VU>MrmiL!`P{DY)+*b_glTtslPt1I!io9LrY=zJSvXS zV`wVD80aoTrdL9ME#nL?mOe$anhk8NUNlEMuOHxXmws)e#jWMj@u0WVBe$SlptpY+ z`celtACX|pVpUYG-+~`c5W9WL9#?8B3|YQhLp7yVQTrej3x-Fc5>_Co9+Ub%%+1ddAu392oI)8{rfWCFOaWX=wP%U zthqn2wl2xpY>_$u>A5>-sFZf8;3~4ON%{lHl25)0;n)mhq{R@Q83WJN)c>*7>Xjc3TigBjaIN${PuMhtYQuM%qlP4cS+_ys52;czBGaD!lb=L`m zPyY7^^eq=K0cG$1RmqqK6vw*h6v{j8ID&0&7TP&|5t4PV51Je~k~QTVrPp!NzI3IK zb=JCZ>^k)Y{@=}xXB0V0BoH8=lONNA8VC=_&ce=>-o(K^P2n1h;(s(kROK8N1d+Pm zHKLPsl2_$+7jX+wBEbq5!HJ1Y>$;On)hs+Zo3fU(Uywh9{h^z(LT3@F3x%N6vM+P| z9=1Krb0KfXp*trVEq-fj7d4mhO+bK_E9|76DC!#hKw=^v+49g<=Fy`7;e-b*SJ5IG zx)82@4gAY%jxP-2y^P2xXgESteU_4nmVxJFJn2=_MMZl|RWV|eT`b-d7bfMj%hj4q z#_i{=x+z?hc@j3GD_ZUnEEChWEL0T9lX8573M)v|=?H&N@0!t|3>O1zuqIRx z2YUgGOo7sT+WSE?cDAH{Y$E)~zp0ek8;B zv&AoV8jk;lu{VE-^udUp_B~@Hr6RTw zBK&2D&V@N$ll0vS;^yi@txG(oiIa)CRg-JwO91b$Y%J5ilrOV;W)m4kV8$*nvv<2qa z74z0pK^3Cjr?woRp!9Eb>954=)}=QhJtGzrv2lkDuvb^uuN8{o6h1!x-T~hdD_oK^ z5vLzbyNd)1O#=ff5)QFn_m%I*O9pYbbw2;-j5CbMSld!&Q3cvdRNZxm_?&4?CYoe0 zeR?+-()b0ngcDqD&E{25t?=QtgvaH)!gSrv5aw4(BIGX?{~j#G z5Nh)FQVk&e6?FC+TzJ(l6eR|f&YrGR9~I9I<6Ne0#$VNI z8k%n@Lxg=*FjatafJE-31RTD^cgnN0w@osg+6bMw9|Wq6I9O~`oysUbi5qD8yT!_T z^;bB?U7RgnD(W0!LJtkRamnwO7Qj=K#5aC*T6+d`rzJeJ1kH&((dyLD${avL?ESi? z2>Q{y3|$3_0!ti#aWAre4h@#WRo-Z^hLj9MqK&|9(f0BhUbrfsz=4R_ErEVLqivh5~9oi=Y%6R=W zkI6zyF+yg$DekrLVrDt^S=UM2QISd2)))W$QEeo$l^e(mnZgX; zUZU9o>_G{utRrF=-7f*6u#vkHwS3mqY(#ApDX*sPi=got(h2Z9%KA0_DjT#JuS6Rn z^b?2i@FL{nO=!L`vP;g})~c_oo}kP51*RLr`dr|l$cp1wHTwxeG3O;lso4p$xfEnz zl=dhel3e$EzWD3FOVW!G!%8g8(5a%nwy-?hzB(_R08EFqg(%bWQSp9`Wv90G`PWz%!n=AH?}HSJCC|jI%WxiVFL+q^owgXTuYM69Gi)tiwdzT zO(i20U;xd@AZCSn8j4HyTSJy5PlY0{cLd|0L~oBjMU@xELFM_O{6hJQ zPfs5(_TqY;B$bg}Q;|c7odIN)n;|W>zm4CAi3CWmEC$?d_bZ_Es4!~(ft;HcM~3lJ z*4&Yclm$kD!g{{ymp_=N(=lsh;!#D%x@vw8BeAO6;wq}& z60k-rH&Krb*{BAw0f8SG=lK%1`2GZ>0Up)v^Q@6I52!pJ_AjM=Z>p|pg6$7uK+o&Z zl|1id`vAPMF`)Bknelx#y5hml`!qnc*iACn!fZfnMM<(f69bx`;BF`Q*&TeRl=l&o z{BH4oXj2kf8k@Cn?k@W3w#>mZkt3h$*6vt&@uAR+hbH#9J$`s@am$S%P)VOmT@7nM zk1Rq)4s|?_2d_`ZV@N(pl*U&&nZID0%dHQ4Q~~c;o8qp42_x*1X~dEkA`0WUR&ukN zY-O4^(yicaXh(0uuaV3-(dn8Dn;yhLByyh&a6rLfN9Pb57?nQcb`BzU5jY4X1{7&L zGF!h0_P=@m-2}v+nT=$K$r!lPieykd184`XcqY{L-0c|*>dMh?LdM$W|0Z8me}L^- z)Bzfzf3aw50DPf5|B1(Xx7xTA}m<)o@w#^-Ab6Ao2Nlu^Wt&Et>aO@1fyF%aG(dG+&2bpXeM zN&W_t@R5Qk(}TyA1F`%!vl82l6HSeH3K;ny)EfnTkj;5yoCa5Epw5M!pmZ z4f59^iG=hP#Zx#psjD=wT3UV_U=7-&&75hmkN;{W0^7)FLqesTC1Rl2LR`JNgkEv# zfZn%*!XA${mfAyHO_Ht7&Is1$;I-ikhy3U*2QDw(jjCS((cix{YhW{MC2rWGLji`; z=lkvMzEJboX(4W4$g=_+hPh|DL)c9or`Cw^YvFT1L>oh`ALdT->&r$C@cIQW#ij7{ zP4piLE@Rwf|7t#rTNDqi6b#8;g`W>~ly2O~>%i8Qy@qye9_M|-K9bnGzFe9RrFyDS zG}poc(Wf!D`l}C-l-*6jdxZ`+3abt8&~!GtRiN}&fB+JvG z&0ZIg7}Fw%UUOLiB-p3SRhMbPoi>lEHkMfCdzdcO=uY!5qr}s3tQ0~F@p93T&v!#Km#0<76#MchxtI7M z$|jM@SZ4Ro$uFcd)!IwgKnA!y2kllp`F0^08;jReMdCsQaAO%0DM(xLEZi$pZpovd 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νr*|aj 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

    nMn7NjsDlk z5jT7UYe>laF)_?`$@DVoeHidKRRd1|ckhR5y=Og&^Q(X^xnXT^vFIMvFkAI;v%)5efHJie6B0@vxL3QNG6oMQ|5<^b^vaMQ*>gG-3^FGsk0v%RcF!YT${&(N$) zqM^!j_8}A6Ofw+j%L=pih`s`Z`3fZ_9xgT35K5U_#D}VeLTP}wikQ#bOGF0s*zr;N zajfC|^_Fe??2`1NcHe$dO6CLScgtz+XQeLS3fj`mYqt9_-w@*9_+b36#^sst9o=&2 zjS;#IA5oG;DbUh?#o`7xWFz8A|5V_L7VVi1w2P+gS4jQQhPRNgwH93MrWVJflnmw95Z;GsGo2_OZ zFPBomq`^yP_s};`t!lG27TuiMJ$-~HpYVq;GIhmRMyiLy+J)UHneqS^Yb}HUYcx`J z8<&`-oxeLOc91BEaN~AOu0BY}zbYp!=iQS%M`MfL;HCf3ppIqWx+0_%r2WkcLg6l| zHqC?(4d;sD03g7V9UC0205IKhl|2MG>m3IdXNr!L*uQjcrDS0#DhT5qrv#BzEiyqa z&tDvrOPxpk-RPqNO5Q1vlXa0;m~KSewhH{G4q#&f*0gjq479OR&6&I7aV<4vSdUVT zxn6gsEC@C@!Cynp2VS}&LZ8ACV;OLr z?ouIUv68lf;C*Z~uWXBcSf_6brqLFe% z`plfgGb*6xpz7NyRPDO;9JFjlf%_FkMum@Qma>3!OVQd{8DWuvMDwsm}s5hdbi^Z zM0E!0WTS6-y$ts5ag>>iIRGAB55VPVx>GxK{QMMX)vl$1M>xYC8|!K*&Bk;tIWu(PM%ik<8`9s)MG8u9g z0R#`>1rY=<`Z*_TpF5WKA$>~gC?Kp)-uJ|WjCW3h;ZoXZ{p(}UrJYHUL%~C?%4gn| z1N1y4>idznT<l?pU$vL&Q4L`Fv4a6t_Gt*Y_%@@6XA;{oF zFf)w&;R{+WSnPD3dDFPgY`LYgZGA=m3Y_U;X~#A_e9D@J+JB_r~WF!TLx6T5(RQgaVD>+;H4{;RLW7$n1;P9dR6v%p%_M|sRR(u2ImW5 zCNoKw)34|G7nHRU+a5}?gq}kAM7Q!FmWDos^tjcuhi4-KtGB<5yC+f#;P%+=W6-RR zwJKb!CGhpA`WK}7lH#Dg>FB>ec6S#8g$k(ydl!MfZpB7VF#}YDb7W@&J=j?Ddj8Ie zGgSB%giw@64o;;j&ZP)==#N3YYJ;*NRu2vsM5+|N;algM@RYv6lN6lbBm|+V_{2#W zaI0E@A(1Rq{O$PzUZ@DpGbTlePneXw{#SbYP?A zbjW&W;YUg=mjQI4y>-bC!5w|IPIv_q!(PO@F!D{MKL3ULoQpbTg%CXcE6Pnqs^~LO zQr0@F@nii=PsR{K|B2{UNq|5+ zI5r~P2_r1t4^dBWIcHuuUQqvgngQYf=SILH)wa4SfIxs16Fcs{wjjjO3w%CE!Ro#tY zVoTBE8wh1iSvZ^HsHRnvBLh&MUR7N2&>9s9UoW=5+Wwr~m$vm?nrD7i#__(ntfb82Nsos~GUO5jr${SOVFTXy&R72=*$w?PxjJ=4;f}m~hJ$|* z)l1$LPJo*`&x+1tc=PPW7BZ@Wi#Jngn|bR*Z-Ix)8*(~guHTr<0r%p?cThTUSg(s5G za>iG&geMZ=v2Pp8#XEjB6z7rJo_&;rK^$Q?7aY(g6oihuFtfbHipWYIj=;3D7fjab zp`v!>Ez&6#FhEBjY7*}SR^r@h=l!rT0ODz8rdXVHHo{{5v9Ym?GyXZ5EiEAipejet zlJ8?T7P3yN52z$qUlNo%!G${$X|$hB>5OOrzSAKF3MM-uaaeLilzjX!!S-n&tZvEJ z=qR9Kp$cCt3Y|uqM2>9gGX|>A9yGG|Dpr(E-nYGG1|1_16^`b}KAvz0ICgE~?uLb6 z1tH6yU>JO*!WCL3rIoTbNIrA~5EG9zsVUqg#z+Y6qa)&%&)~180F9y5jRgKa&5XDu za{$2y<1*3;7_QfibCT?LmG|vkL=}~}Pgnzo`Bmvgu)TIQF=9_@+$| zH>UrB<<*oUCGv}fB(cH_KNfQkO4D6QfIx}+9{75Vtug-^-bF|b#Eu>RUvyqgf`8s< zmSYNuOBf8);bRG8DdZd2BMlmH+F+jx_oL**jL3>^OoT*efCtYT8WzRv)A!Qwc-a^_ zs6MqV9(gOQX^>F)TNz6PYtQ20y{Vw9OW7#VOp)*|Z{v0jG8IXaR7yPL17g=RpPNHy z4w08&=n>#uKd!gHElWfMh@u#B+sZ9@_V`fT;m#DE9bU04jVSE_49p4`SXQ3ogAi>`a>(u4`xL|wLR+qTtZ+g-M;r)=A{yKLLGZJYD% zS!?#J?_f^z2V`bsL|*rahyZSZb2LPg!f88BYifk2N`5z)Vg=VZ1XAxHl#zi=7ZE}1 zc7g(T=^s8GjPx}&Gk+JkxIh*8YTdGeV`&xwKYgRXVSej#woi8l!$)@Gm<}GiTa)8@ zv%Jnhf@UQE_Q-Uf%hnu!jSH_iJ<-q&@!;n8my&@>ny>p zpOgCpI4lL4;jzC&ItWTVehaOW*txrHWj*<%)c8XH`M^zj44$c@_P%C?btq(pe)F5{ zsbHpM7BpR_BRX5h6pp(3X)i1ocB9fnEU;ML*;87__P%{me0Z;Fo*wbC?~dJ4RAZ=u z5B`M@_bm21Fp&R(Yw+2eMPTxb-`)*&ju8H`8WmscSaGP_x8Ggbd3uvy*W5Ikd;`k7 z-8!NGMvNP4ev3Ko@}CB5I_UbWQaGF-a|a*5&#z4bM?lDNbZ?Wzvi=-&B~8l2dn#TM z>wx-<)Lu=WS{lEZ!vCJujQeE}^^0_dH|NXwU!I+s<8cG(pWC)S{`UF+xzq{uYKBbr z+Hpc=9C$Tqr+n65Z@O)M1GCZ&xbfQRXmd~iz{@M!Leb?K6T{t7ntC87rh7`U^h495 zur7~oJieN^mgPu9h}!WPJi=5M2R6f_U^`rsXpOr-t0sp44nPdZho3sm)_u;{N z3R;fm0B7d~=cnx~ibRi*Wfzogb`!`WgPhjvTLkuDen+E^&gUH_tH!h%3J^HUqSrOc zQsh6gN{_sV1y0W+S)C&YVBmJ8o=8oAgQNqOWHZiamNQ&o++l90_8bm_AQlBtHU@ew z-oLYO@6+!jf&LhG!`#oPupn~u55T1~Fbi6SJxVMu%%077oOiYE{b_}SHat}FA))wY zW=77dc=-kkQ(ehqb_yB!TVsXHZLt*fg`C=OlC?{5y3(W5YYLVgb9wF-it5UM$oCv$ z#MN=dZ}C@U8K8lRTzK6j!l|sBL@}bJ92P@aW zeQ$(c%#l-`F$1$GL*EG9_cS|T{Rm5m1O3;2u0AZT@n04S1<<%w&JAw*)VcE_a|+of zP0tsiGHnQLaTgevphz97w%qIl-o#xex68i!AC$h*WJD~Te3c9Gc-NoVfMevOWR}Ma zO9*!R-R%3Yb&k*V&0yT^HuC#@#Bhk$#HK$bR4m7}UkRNc5;sx&p1hQR7~|UK)GObN z78G^iEKkve)jbEnv1KY}!VIZ&PAR5nJ4>@QoWTscS1K^>R*ia^?L{{qyZCv+}dqd47}D$ocj!I~(5;x1oy5^E&pd5)9_?Z=i#H7@e>lcGYo z+&o(ulf2mEl#ToptLcGb-dB#IEcmz@KyRzzZP@x`gi?RlhQ*IJlarrm6)Kd+qI|AN z93>$|@y*z=qRI=f-5Vr8u+o(lZ96-ZN&m8$cZFt(D?AF0`*)JOsa*RjtdNXR0Z-dZHp7LmL#W4exs6GUguV$ z0r|X}Ba@T=8SKDQCRXTZx%o-X+Il|T)v>d#wWq>%V76;bSq#YD_~%bp+6ewnm9pu2 zo!-_VaT^6-9lulOSeBFkL`ddCA8dW=lf%oo{4e29Y4#P`Li7?1JqIF`^+}F2nujS? znc}H$=H!~w^`$lrmD0A1x8t}m0cr!h&|B@!P4fBa3g-?&SmSiki}yx7!S43Am{+Zp z%1PLu(Dq8t8sI!31;cp12!1RoZ_C{e!bp>WZ@K^=hz;V^Lq}=7K_`GdkhM*UUo+}g z%?~<^t_UxyMqn+ksDMNJ z4p_TY`5Ib?C^8-;1r)st~M846qR8g?tk+&(YOj zn1cuO38)_5O*Rbl#cbcymksWCmPbD=Mdc9!y&y~GX z&a$e-r}f=sOwe0ZsHD}sa@Q*80sR_C?DGf2h9E&Q@QoQ>mFBP~<0{^}oW9SQL59}}7u(fLaIvU;<7>r3~C-X#c z818FBBSwB|XgZf`bkF3&Dkb@>b2v=5w;1YGCqe7Dd2xYX80k$}x5m|wVqO{{?VJPl zm!hL;N5qIbTO7+Ib*qznZ+*uRv9ib9aGY6e!MNSEaP8xNH_bj~(48xfZF?u{A5er? zy`A%*Y^?>m5V1aoYn|RK<89?^3}@n=@r8=a&vP@6V4;i(X4w1|lEl97`lx~=2tTnH zV;F@;bo`^u9TP|voDkwhxczHcVHyB}k2a_!WM7nFh_mt~sq3e)Ty~il;`@AN&FQNI zu3!6~%>G{k9WUU(**rE$sl;@-B>N24;mQHG9QHCuj(gXz%lQ(oUh8-rHI_(Xl;*Kl zx#eH@QWc_Gk|8ZU?|h;L<5Tlk=Z3@7*N85nw@ff^GMn9n@}>e@c>YDevUmW~X`+3O znk2&dCW6mo?y6?|%+z=co%|frQyNAtn}=pl;xMvb6kZ5RAff4*i^WT3+NcRctZ$zn{_=?gPHwKi`UI|NVhy#))vE z9wwPg>>6tb84GfX$Q$l^&oHN4PeI{y>|0dVs8SBrssuEMMGiKijuOK8Y3}@`Q#VQx zM<{(w)JkXKxTl$oR0ins@gMA7Cx4xK!9fa60#>R-nJrH` zMEz6^<03MSLUSER>MuyDA{9R@>l2eGM_c=8AiX~JQTOjUen#KbbkVg^qUy7QwZ!j+ zk8|QV*CrTmov8i51NzL-Qe#`8jiAr0obGguQ!u$CFxz}x`cAMxT?Bx6jXH`>g)E4r ztO4N(<&-q1i*3NRh9;N$hD_iF=;g@2Uw>gJAn7N?O8S5UUDHPwue3`KzTS)~hhZTj z_a*5}i6QCAT!bF&O%%tB?1~izN#`lBN2qBN!PljYt05j6RroJe+2`qK! zmhm8`gqrX8`vdA0C5}_)z?Iiu%NF~6>;d$Qp6Am6zb?2`aVHV)wyJL_UKg~+7(~K; zG?Uyeuf4}PZOM~+6f=>z69_#>VMLx=xlrFzk#A}F(Ty&2Z1V?~c`L{NC1OXB%{bqM z4%eJ)BN@iRZ$m7thNf%iC{l1~lk*Al>_gX}fsIgAPzBKjK7}I~E9t9)I{-6A%mZ@c z_gRwWOOyWwnnXQqGskkp3|$_!jxHMS*WQs*H6GlQaF6GiKvlIs1DUH;8lvXP3dLw@1SuaEobXD;eWc9ujBe8v>0z=_ zbqcVS{sDoIA)ry>l4Y&wLF~J>XabE?q=Ql%5X(&&Y&IL2mKYLA)h3>PP;{c^M{jJxqG^b<0FwFH`f3NPxOBok{3)y9%N9QsGQ ztByGRc#H=k$Q9>AwDrKBHDv>$xlW!6vAmgBh?SQmF31B|U5{Q2! z>@=YQe)#@vC2)1ac!-0?$m2Jn>pHRL@?5jkSr`hk60!ueaAl&xf`gx7s!V((~QRD9ur7d z7*4jt#0`~Xg?aA>Yyj}a=OdYP@c=^<1W+$L5-VdBGNfg&id9UsA!UsPLM|x1b4fXB~Km6KwkBM`H9u;EaTi)=_7YjO2iy4_LYq{Xn4L`2QLmi@b;w zWOV%Z7!3yzi`g%M;x(LAMf3fJcNuF1B!Ig?S>*u331RdHA!!9>^m35^BkZ*aqB=!=gD0dp?+5cK~pcFwt+%;_*%atCUyJ@sLdLU|7(+(2)|3ki91;GhN@zt9Y=Fq;^6XC!UyCg8Mhka$Ip3^lf7`)Cd3!L1itzA&dJMJ>*2{I>t9esL);g9K1l zhqa_ZNuI(v^>9+gI|m$6w&KPokQQZ`S%>cXr4tY{c>pkX6Fc^*)u99f(?yPcp%bME zl4xJ0oMW(>%9(lKpJOBq5$xsUv81O(WQBqE{|e%|lV!a&wYYE|?TmwpVX~BZObrz7 z$8qtm;@-~76WofLO^_j`o;62xL;TVoDG@aaZy$Q_@V1evqZjtci1FqJd?|+3L%3jV zIbbO!ZvZOa-_BQ7rs^gf&M;XN_ENXh@GzL#?$YN?0BbPM)xpoQK%%fH1wDdd7UwLB z&vlGL{g0W_-t()d|LmzW*@`)ug;#nKM#w}$In04@893gx#irmE{2s* zyBqmDVkqy+h_Ggo<`7X6w;OMp$Fc`)jiUi@xKR%BiRkBC$$XTi6k_osObl#VhWxN=3UUIK-~mp=}1l3Q(NDpl}zLayX`5hpR-S}7?7+_ zTLJ39(aanl)@@a^3NEr7Y{ev7=}@!8IK6;OsO})8#*E>p7ZiMMps1+#XNkvA+4@Sv zQyRzv=;P~UrA}+~ml}{ezB!k;bg1)?^R^R_;6bu)GQGu>Iun`s%jEwPRXSi2n_eZ0 zrqQO*Ju^R8Ezn$?hw@QNIjF8`2&ii1FyO$?#4w3FTCF;EHTvS`U@;rEhkm2O8zaEFRE8_ zX@=Y^Ei7$nz-M)yC)@FI1DJ&tc^zAi5Jqx=@w6WVAk~;|4`+JQ&~zr^!J}K4HHQ6b zOGBJd$Kj4wj!15|Uh-MPws$4;bmtE-B2(}=zI8txpb~YcbOXJMXxeIHJK9embDoc* zIis`o^ZSP4#hn~B6Ftu9pB=)joOPXWj`!k%t&)CipjSx@tEhPN282Q*nPt9vk?v~Z z60U5!R^w;?HDIV7&T6Rt3wnu2*cY8G(5bQ-$g-tr2&aXs^NS%XYHFS;o4lp_`i3K; zJ~h;u5tm^+<<6$$MI|VUKhyNc0 z;Vg=Le9a;xK~h8!4=COPvnz4E*la>Ft82ke`ux}gpdpH$){UOwWjN2tKqzMrDej{C zpGwbUaw#+&qv8)WGZPH7E9f(ZUm`tNDEC~>j8I-1=M_zUQ7V-=u-ZHr=Sw!+Y^_3l zf|DP$f12Em-~EL(>5hJKH1C>hLpGCVR9#b6#qqMW;oWa50K}-Y3?mk=;nTiYfwXq) zD!A)#|97L99m0BK{xoph1%9j_3~fYb{8HXYB^+HlT?|s8BuPR5@~ubZS1a21$E-^c z3jY|P?OgXB{_YVBQ^T(a2BZ7y>G3P_5tK)i2-2l_8__sPK7u#Hsb zO=Uy=>ld*6ybHBv&bVen*r%mAEsN zvf^CL1>m{NbV_~IlycIDxOv1 zb7SHBGHIu78}^k|>eR2QIZA=GxJMUuoDJ|{=9DYlFoGN(OX@rFyM&i01e`zVMqMZ} z)wmfe9M}4<;hEjq1+$VI?|2tx#ifuD4EeO=>-Ng8^D?=j-O@|+l%k6)@O8pec8)v7)$j;w4>0a|g0Pu87hHrJ@;oP2RoTw&kJ!vRebpy!Nx!J5L zma2K+(T*vqjR2%MwebHsx`*D>7fX`muJv-?1l?=aH#I=}!A4x+XXtLSI*(AaXhKNn z+pG9|t8JhBsKDBpGNq2*q~%&2A@zeY;jnF177xRn*PJRnz7lAEAa0&Xn6&njROZaq(X4awFY>g%UH-lttO;>i^g6D% zr@@_EH3ZN;R%?_%@G?ox0JEd>5gCgKWeRSvXdml&pv*`7DG0ccxFuS~hAghcgk8>( zJsIV!IooPZJ$cHy6gh&}|4g`KKoBku#t>nzu@|tGj^2Hh!%ptcUQ^fV?B_^2h6OL3 zE~|5Rvo1NyR8jj91@SV641IKjEob1count|`78$cwyG)G;w5NB)~@!l&F0=2c1U;4 z;mJ+!2honN&xEs(;C-ui+O%)(`eydHkyyZ8xL#o4ft&NS(NqmJ=30w7FQARecD3#}M-5!e zY29yR01Z1BmKTBCs5F(qTi3- zDJ@uXNmA3b4N-zm+~XhzkjXp;f4LiO!h+Tc?Qwn9f2FmgYiFllxl!Mx2=Me=j{E~f z+bpd%jl4kHQ1fL>) zY5zc^%cXlqTZ%B3%2WHNDIe#Mvn-&!2Y6oXBGnM(CdcMDs{AYz01`3w6h@m~B6|vw z%%6Zc32JqPi<5CU)Q`e_{pL!tWaE;#@tjo|ub;Jl&v>!KgfsfL)rL+l$AGP1WC#qw z?>jgQ`K*;xuH0~y#sb0sJr%w>rzEQ5T8|w(3WBV^e3ds8dV_g{W-$l91NE=90+Mg_ z5BOn0yK6Ca>xM%M;5k|r2eX!QS3SCTC6FV^e7IJpW~Qf==by_dR5Kixaa5!mo_B_l zX!8n?%F&&)iY9lTame$XqFr#f|?^SRCu=JCki#F!uwSKWg zExYepR&5TR!m*GLC2LOQ_lQ^|hwk@geaF_QaqXtFj+9Cf;PJvsx7TUvypw^wX*mIY z(mtQ_8M_0=E-#+Np4VWyM8cXPcstGav^gWQE{z$)Ju;^Q6QcvSTtWByFTQq^#4%z&kWv)i$gx{Q(2Gq%>*h4P8#t25S{xyH&te$f!$|17aSvX${n@<#=O zk}yqkVTZBOmSEK0lH5JPT7w6fpJJYKnxH7=?xT?h5Sp$j^Bj<4YXfixUth#SwWse6RxK%gne+S!TbzM5>_7tbM^c5##NG}oi5E2L!EfmM6C$3LILJ$>)Sqfm2`8qca4KYwZTuT|J5aWJQ2E$rm- z@dR~$(Ji|G-~81+l`z0$#W5WE3mP8Ne1Ag*z~{({$D+h3mWa`)-NRFdLB>UACl#Q# z%vikcXu9Jw;O5&#weH&pP+sn@{$Px9-3+nwW1G0CKQtTdH%KsnIgkh%% zO7QUo?~kwS|Kyo69~CP(D*X*&l5wmJh9#IpX+vW)nfP)usUJY}&zpS*e3ca&cTN@@ zFbA`G5H3QlNkt1+)kq(iR?p=`|3_~6-xEZt+CfVz_9m2;$_6GuLde+Ca-tz<#r1L< zsWUFB87(v`S4;C?rtwv}l&LBvu-xp1-vo!NO^ygY>cz*~Nfy64{X9*IyUd~M_RC(o zpX_aSvMc9te-HKBh-JEJLhvlrv6@5*;6)xfYqHyhsH0y~=ZRmwDkXJ6LXXayw=U)z z{tEn=`bB?p;pYUjw;;4ko4z_NE?*$PUqW1qnZ!fsRE~L-J1G2=C#^gF@30bg^m`mk z1|HiI=-l{eTE~SAQf;MMweEw9(l-D!YLdYGvhix8gT`UQcrzt zZc^xLs(sT;1hJ22y|oi!KP~ub=)b~IeVf?|$NGcL3jwYcMaxZesW_Nh&z>ShQVLr` z_M%C$F3G|GB+R%j+t=4L#E&G8b8(CqJ_4X&MAZnSjvzekI4ONoLFWms>2rP%CF24E zie5^cSois07Hg43jBxf2O4QUcW!24T0qo5$p#RxJu!vyO6hi<4LLvhKBLCk#gtSZz zLgfD=4y83{5K;hOh=!!CmYVTp?3BPlyGS%ptRqcQO>CCY9Rv^j_P-Oo&D_%LofZb) zgUIRsKL{_^v*grMBSfB*oWh(W)w95qE!?Dw;Yd3|A!LE~KHoHxhX2aNjAmv~Q#|b- z$_29=OA0i06bS-K@7h5D%#gRDy+AfBI;17aNPE2J=?&n*i39TwqLnAv;@#O})&BT= z=9z%FJIU^tZt-}~0(KAWKBZ%-*o7$t&A87T9PguCdW0<;(#>rolD7wFeR|3%_`;%>?jh{G&Om3|h$2F#S;mv`2B$KZDht#ztYN;Yj!Ly6xJ?YguNzi(>nB zv2)`8)d0mtAAy4j4czFd7mRcZ;qPC9@!e+T%HHd*9j(N2)VS$FC|C-OlkF3Q`$ zgASCL1)facyPEVWEDQg}w^vt4)0{ui)EwRDN|remkA#%eP9d_#qJt6j@KcrzT3Li& z?zm>yo=lBNI&TgI8Vg~TYkPSqe;*s8_kcIGkF+QP`VDf6gP=5{hVY}}xBIKLZzKWH zY*JC-e5nJGPR#Na*on^A!W8Bz8x%xf?Me+stH+JhwLOP>pa+f_^0y-UXN-} zFwJt0Im=w{>+ls@9`n+aIte*+K8O7y;IWh6rOEg^CsB^$Wt)fO zF(n^8wY!)*Hc5PI`JGBiY^rh6K-++;w`%7t9qFK~6Lpc{JM^Nmmsb~=|+ z3)w;DB3=I8S3}AXQDEGpy4Dg5V`0|9irtoL9kt-VQ9Q3r>x3rG`g?rpQ$V=Q6hivxC#Sj@ZEas?gV;> zF|q1}O&uSkVuw0cM=3>ItmB$+6jzpoZ0kfdD!z`L%L&Y&dISP1-snidkP_%vO9Vwn z`|QQSr`FxMhf*xnx3U9}&CviUqCgYuo>oKz9Ail-1hR918Tmt4$a8?OI;-~L>OLAV zRSAX>W0+EgGQ^nMF1Z#R-G#JbcxQR~17Lcfd{`IY^Fls1O%xUB+27Vabz2hWwmnnn zTBcdmCKN;{*G-llSHwfD*+_Z3sSS|a{F{#(jeIAu7hce5UV1_#5N9Iy2-#4u2%1p| zW;4`2tvw0xbXz(cA1T0?5XqnR(8w_BbPG-w38pegEATM*L#F>&o)`78nl|CyFH_Kw zaH~qI=gkXi^6zq&)i|Oa@I)$)ChF2?8|&krAn@Al9PkFpB@|WF-Pg*2C6TOyp-lTk)5}D`)Ca z?0~++}!%h zK6$;W+XPSfwoEKdes+@$UVq}-BWJg(sPV58FQ-@!!2OTegWm-e6>3gHnaNPfJwWvC zH8-2~ieFgh7-Brj)2LUlkI|kS&Rcnl$A4H82^o_imZE$lg8UA9@<#a2L8nYC03J>Yd2B;Au zHIxf89ZTqmt7H%)?e;jP@k*lC*o#pE^Il+DbeiO=r$vttX^Eo{_CK;j*AO6qrm$Ae zO3Q(3xwI89WLUO~bt!{_uBqwzDVpMlajhc#Sp(d9->8?C*4|jqTLactwtl21{j#f# zzBjZg+0fP@DA^{<7euuFade-DH88Svz5NlDrrg>xg`ehKVdrjMAcdWank&J)U9*R??EtpgBIzufBYkvS!T8(=c=8bW~qe znCHs606J#%QpPu=dH8OorP`r0QtyVZahdue6Hf@0_Ea>J2+|#y} z=RZxAHNzB5w(O>;CL?AQ{AguXsEkp~85IlUyvk$KKp>fcSEZ1xY z#11$ zBh+&Q2R}VJjs9_{)saz;tAF*8I6!sLPIflrQYtp_uWp+@xV~~l=sa1+B-QO>V47I1mYpZL#Yo?P&fJOPc zC=?_yHAjk1SQB=UPe3!VQU6<6H=-QEU!S&8DLIhwGRw` z^0|ZWV2G8*g>fu~$Sdm*sBMqPsn}$|)ui)ca4-V}kWiR`3cDfdC}k-A3y`@5LVf_A z^3znJKB_cZCGNE(=xMD#{;LH(Be5w^_|TBCeVb{XTyfLW5o&Pue{2if`*u08Fqy?qA0Bs~l)_C!oFtMcUk z2Z{|XxYR~2a+1yx?Aoj!3J^_U%H$YhP&s|4lkQ1OVk%*5x)IbTKZj`RvtMBn_&kz4 z?06tt@)knDZzjFKG*@{JVHDL9h_`SOS9aq2-_*L}wAuN4%#MbsPTk?sDGM;W2;U;8 zdlu`JbO}Ehwl*PZc;}I{=*Q}Hg#GaN{k>y|(4^s&+g>(>!s2*(Ga#r~tcar1(XfF4 z;cfKa=jb1PS{_!{s*})CAw0pw#Kk=3^SNfS6csi$PP?xQ!ZBWkMoSrB<3}a>&R}jg zgUUZO)$DfPEkOvZviY8GSo@RU>bwFk6S?U@xEi!?>M0D~m#2(S=ZZ|zeD225TSZ=G zVh^!xylm6V(=w2JssLMA7`(FPVop*wjPbP}f~>&6322&l`l^^>&n!~oIF%}NHml{w zz>PQW5|69NI{0-Ciz0*GkJI^GLPAfGPGgg~O-#~xr$2)k2jMupA-gmU0U7Y?8{{cgDORH)gjdBKd)aehxav`n)En= zo*S)33eJ+7FoNi8I1eD^K1?#t3+l*>p9iMMyMv1NlRG=srI}W194|Wt3blS;4n0gE z)6Ont8xW9-+kg{%FFC8D4rb)1O=N}`0VS>qwm(46UTDX;FZ_)zOh}Him+-skn%G{A zPC{ZuVxO7SWGXNGutRqI$59^SO=e$Xg_A-7yB-;n zF5--7*X!GqJ~&0G-E=nVqNeKy3nXmtcN)_-93JH6b%0m&P0n%n-^ey-r?-ZTW`gM%n+Uk>UY}zisc{J|5<#d0h@Rl0b$zi91(chgd-uw|BJod*4=c%ZJ+Ns zRUtZrMX;8dSQx25o0OHNwRBHOv>i_DewVq#i8B*I8FvWfg_Mqr)bR}G`&Y*oWD>PTk;gsyxKYr{B0N*CTmg?;U%HmyOp5s9G|p@tF8x zqdtf~hMf@@GNSMpdm+s|xr!nDbnZEFoY_MBw1>EYwD|Y-2)!xDPw?txK5QCKm*$6O zmPBBjFy>_T!`rVw_--{xYx3m9a5pjZB&Bx(N`%5A1W7Q1wFY!sj{hvWF z2_vjIbUv~Sg=BUVd7Ri3`hEM)k#!%Lb^NH*Od}3R16>4dupd@zy$CWvG2WbifU;Ih zi)M(TRw5u@p?Gh#k1#%=W-Ix$!oPNaWO(4%C&OFwFd|+LSbiKGAdL4Au5*QO{&;`& zMT9AptrmJ!=ZpNFR?e(;X(rroke_N20`6D*L^d6WC2ar5jaBq<>x*1;&`*%4H9nH} zNiu?dQyM->^Z_ihQ-fWm9RJ>ewCSZo0)1xJI*hwv6$;RH=LkmD~coH9wa zEI~0K>#X&Nc12|mZ~)#7w_{PUUsKb3)1o+Wv_w_IXprZY%I)imj4nHZ-b<>QFKJOB zc?X{C>Es5opI-0%xmVzL1Xa`@1EB*>7VVMdPUl05z{+t^Y+y07)HEF`zM@Y2;JlIg z5%FEp1}L1FOT;%5q8rlgT1bsCo2U%rkD-R6(XupOoc{MhplUlFVhX+{Od*3#*iV{B zE?H<~869K7o!`L8_X_Nn_x7cH_Y`^+r@hc831^u`g7O|?m+Oo6b%CUPvzan>Y(-3z zTV23o3=5dXexT$Sh*i4tgrfluIPF31SS(B(K(fN#NjCj7IlJ{#7i<5k8X8EX6KB#? zoZCxV*lT$RU=CP#9u>3m?hhw z{r*mZl9oA3?epTL$U73rJVi-V{E3oE;dx0M+ejGtFDOmWGQ7yneu7Mbf()6X+r7 zyUa|ckN${NBHXiKY+9YK51JXjex49(#`p{>I)Fqz0ip2L{MrpISFjPk%EY~Gr%}c) zX8?>1byZQqMu5|YDeTvG#1L%FEMGRg++rsw;gm}sojZbALPZFJG5tk7I&4yEu||pk zP>9ZYlI{daDU4&N02!G96*h%?AUjy98kRW?o|$6JiJvTIh_71AOk?Sz6;8D@W(gN= zx_-ApY?%%1_76K*`TN7c($BXZ?RjsVdU`PApQ$i{=mAhuXg>!ttyn{A=+@}JR8G(U z#uc{j8a2*C8*tP{*l&dT-{&&9kmDkMK%r*^deIW5#RpAC^y{K$fYjXkbYzlwCu>>w z-;$Im<9l~ao9Qb{=K(w9Zg?UJd<1oRm%u!y|GkHU*A&_E(lsPcKu zXV4JLJcztpK3O`Vq^JolWI9nqa+e@t(u9)odaffwA}FSnN-i@tJUIHKLSO|Q05FqD zI;vM1rwUHtNBJ^^<(Nv8f6sNS;Y2n~_@08w;jGhk{7*7_38fhiqpn_I_*%_-d#`Kls3X$VPMWOHe?{6H@?B%X~x{9?< z;zDu_wEJsjGG=RSA${3nW3eRYj)n+=$+h&%ed6+oO5>ktikGxX+g`!8^sk%avY3LD zz8bK-ze0n(v4>j90pLrWC=Gu5=Jv!qc_10AHPB-xXRzo1TY1hi~izNm}QDBF$frAO) z@}?LL4kce0AYH5`GlVtbCH+0dGY!nWkaKE#2G0r{#Bhe15-=xIZPyG>k-)Yi`{G47>KQDR@R_*JI`A zxk@9efvn6^(G1u$V~jK#&;H+|Z4{Dc*WXMf!-Bb{ zikt9D;Aw&ofSG9`c>rm>EE1pgN}9IC>6&+1t2v_*a5>&?dMe6uS#KorZb>;ECxgHu zDQZHoo=|3Dnp-$Vz$DQKq7*q*+KjDb+cGKn2Y^UDqA+>)!6vHuCt!1g3K3prf)c;f zsIrMtFxM~tVXnbAx}m{TR8<~6X|cM2m2u%!1;@!pv2szd zm5@@*6U%`@->H+XxRS`Mq|({}Mqy5%L`klsxJ!Dupsqod08u1q1L_ms)6t5NXC!k^ zP!+raK;!EE1CuSF1XGQUp%-t^uvufnRPHPY@d3(XI>%D*Y@G zM|PKbK@f$@XE8K(<`)DZjmN=JPJz(G!VYT)5I$8$!Q*r4@9KYjRoemhI!|;J;Ns;x?r4yuK*CM0hJcG0@YyJKU_*xYkVlWUj5ySTX<6Wte0*YSk z&C;IS&v7puWqt8^j()f|4u;ClVr1r z0?XK`%!ukaf{`_)=#a>1XQWVx7Ju2sPW5-V9_du#{92 zxF~t(*Z_b$w@f3GA|)lNzDlL)OuK3Uwyo9kCO1O(T!9RsqH`xmya8U5eDO8>o)NVI z=qA?Sjn(SZXdFTlybV#cQ{9z;#bd;uEL?N8lvQR-J<{ScmIJN@hbJQ+YLUD}!2&Dx zn)P=o9qnG$_w$FNeb!!sv>I9jAQ4w1PjkMR$Sm#xJH6oObP3S|>%^hy;p@+G zf#n@(ocgY{GPJO|?m@c%{=dFm*pvlT8m6cj&%H$a1deRMl5Cx*(siDwl5RNg2%mCm23UWf~* zh>3Kln{Sxb*<2h?_Sv;U*^!CX(#iF zE&S*I;_Do{GmE-y8{4*R+qRR6ZQIEc+qP|^f{Jb1HY(Pw_ny}7ZRf)|KVq%5_n3Y5 zasPTo*%M-S2vDm_b)q7Z$mUya^;{1_y7?85swnXp^L2i;y-7@9AG1FDrNj4_&t=iY z3$}_7ahLWvJAaurPXC7bU0s*TwK`+o{MNbKuIT#P0+m|Kit?mYt-TTp2Q{W$KyEl3 z%$OqRqUt+3wlqzwwN2gG-C1M5X8C3VnKd1Vrl2yn25?oDaAkh^Um>UX?dh6-`A`V(;mVfJ<+%H5DdDa2+OxZ zQ~P*+su`gzl1^0Na&&V~8&nml1|Z$XHdXJz(bIxV)NwUaRtLBL`nP@Cw`S}Rf~g~h zAu-ps>qiB++@H~X7w~_1b&7OmTbb8?X`m~r0+8H1EutA1p$?&}y-K`+qU&rGmsDbJ z3AYI(9skrfQ(C0#VZ2$A&1UeZoaWz|M*2UAQck@_LwN8wd2wj%h7Io`ce>DGL{=4i zQ_sxoO}Rd{4mZ--UpCC46b+Sa(3<$HOX zSjJ_5SQY@lM3x^f1OAntk&|wDr3gX;d(k)$h(Sv8p}LGDnhw~%jTE992&k8bD$R2t z?b=KfSRbj=02T0Yw+;)_el+};XLBiiF=@G9Bh(P~Sz7!Y{saF--(I|pNB9u)A$$mW z|1}r~6B7JaM#C3O$ou~?8vkHIOA6%wWH;gb^P67(V1mDX{{agAuW}x(iV*34N@#|3 zE}b`}-2W95oe8O8JBkLS@i$k_6+2mxZLGxEQj_%5rO1Gb3MCIgfg!OGMILgsA~q^^ zC??(J*y}9iPH9ssnr<>1~i{W`H2zmnImrp z=_0ZJ_N0gI*pV%3${}tiN53paKSqA+U--^_#zJ;AM;lPy0s|4^w)=DEtz1@pfbI_m zX5{5LIH2dXuLZ#l`lD~c#Cee3R7OPJ^1N;U@fuD7@2G%13&Y6` zK6fc!B^t2B>EzJ-p-#*Zqwck$f?J>!#G%B;L&S1aNf=#5# zGpztnCP5yd@&3V+{R7&r>i8bH0{+e^4Wlb@;~Vk$+S6U+4nf`nN;gaif^JJ*oY(w}tQ)XBF{(grzmW2TN+)&aque_>z zOEs!i2dzPA>jdyLxmI5^o>)(!8Y_!KH5 zV>vDYwS76o$&Qfc;Qs5|A6(-tD=;fIQM$n1{+ zorM4%Q4H|ZF|Py+c#x2FLo@#20*b&f_2!yqys(*@D`&zxaoucq+kzellA1tY?GTz- zUbJq1*P{m1GjsqZ_lM1l7}ao3pGe3y3^o{-+enP~ipezB_d)`H49 zlBcBkf`hE1srV?}OzE^il8*JYeUto`=G{h>afeuJr}}hbumb|7GWrC%KCGG4J%XZK ziHQxf5}1RVU<6slRO@3(UM`i?LJa}x)k#_mISU)Tbp(L+VZL2RqOwwogF9J3gG)FF ze+yndzXx3t7(#x#>s3eK1m56^Dx(1n0!?NN67bD9C3F(JRUxT4Q?5$9v9rNORsw)7 zao}r)xwsvSwP2MXDG9w!sJWP(rGqZG9J$J{R6+ziHkkX~41q7gL|;Dv@LN8Jon)5$ zFCoQ2|1KcLNA%vEqpM^M`LNM5Mk<+%1pYT7KiA3bex~KH(;hL5`9RsG;V0=fkM})Z z=H^zg5*K%8(qIr@j?5=7G!CDjESmqs51p&wVM;?1yK=#h;PlN@?VU-$BO_J@8K~6dD8#lxm*)MKe zrgyo2j~9ZJ5KZ$PF!|=l!Al7b3IuND`K{6vWr3vALhvrjsE>s7ys2&pQsrK0Aq6f4 zfDoYt_pd|00tGh8gA)^ObRuFYV4pw|y!RuJ;MM~}DkVLetC{Etz2H4yQ%gxCRj84T z>jn%ppJ$b&&$~YI@dO?Gt1E^dKINnJ6(j0b{+p+FeLub#35yf?FsTA&c$r|E6r!i4 zM%aN;O7J(Sq9KiJwdJBqRvUru=ihOc-r_w_6TTA1w#mJC81LB%^79ogYYJwD0zu)Nt+c}BIMcE z5pvO8+m>r&{<}o4LgdTIyHhto1nO9nm_UHQ>sab+AIw+wpL^69WOayC3B;kAzD0mH z|5=y&D7u|Co*P&-n5n1k{CvZEo^J`6X3jmnJH5%n*|9!~G)i$*6uHV;fEjLLGAS0L zILtE~BXS1OcWI0Y-%y83^Osb2_%e!EZjmtjYWu=+-5h*s+>qaqYZXk3nF9WW(&k@f z9NqfW>~C*(e+6(92IO$N3UMr9>URLbGX8u|%Lh~lo%mO|MO4+~;kpjY4thXh15Rq} zGA~tia;^6nIm$bm1;N}bBqJ;s^loraZ;xmA?`vyk9{PMCOYTWiaJe(=GP33~A5!(x z-Rt*&gpMj%3Sr++3?(G5)3+KUM(T52q9-$pMm?@1oLyA8rYO+o8KhFUfgFGy94*wc zz7bJuR$gC_G2g93q+PCF29&tkNe*ORn&r|xF<&a_OLEQL(PI5c?ai&U|(Fg?Px zK${iC4>2*E$HxltRsgA+qFA|!jt$ZUef4e^-_PC2)fa_b+e%|C{nuB;B@Me67bd>v z1k_AY3f>!d$3tV46uYSFa1CHFs-}{-FMjMN_R6wa*tuaIpV+DWHwoOV=`e09*Xj;r zZYw8Bvd-cL)#Yp4#&2a2P=(?M|EiEW9T5q*U&)Wuk%8RfO=~Aj(o=u8DUdb(sM6q0 z#x~th&I;EfYVRnUqLjrf`-R_*!72$xOlq4$x(QM}toDF|zwh+qcisVn(hH!|UU_9S zEssuN;Hip4$M+n`e@VBU>|*zxI9tjEFa%mz^>a6bCJ4ofTt=^C0Y1MR-U-!2c$-OI znaH^XPLHM@y{CT;|Lg!Kh!+w`_@|)tGYO#`tGT71Bb#MAo-P) z%5hjEvr3a~YKeK#JhYqs^Lmmf5r@lZ`#45iha?ZX?ZY6_C1Ri#PJqafVLKjC;MZYV zY4iOX^Ai9OagZ%`Eg`FIvZ%Wx4UopfvN*sz30R1uRqtKl-KPOi%z&b?<#0m%BZi>F z%_M+<>LM0pccS}5tY)%eT8)jg#%upc)>=FY85E3ZI7yCdspJ>#Vy76rkm-Mgi-IGj zR_#wHN^&<*uxrz6sHa1>{Y6Pw!<<`u3=e6qHQ5#Zt7A%mLUcPb`uPWE{zrXfj{!!^ zkWvpfr5o@3vfLh^{$7$fxgCR~zzU^IB-*&wM{`9%vdimcH-0EN%|jt61js*~qV@JFx~Y&4HF z2DoHtvBj7gT?uky_0n}h1ilX1cNqNw8OE!+e%mW+{DTP~>?IXaKqf|B0t(JXUMClw z^Prbe)}gL7qJ;kF^*XlZauRUmF3Z@7KHGQ(Gp;|Tj&*Flw~beWRzIZZc{iIMA}OBv zYC0rz5Jmv;ryq4dab!+cto2U87?BZMr7-h8>Du&Pw1|8xLf zYsMrIFXz#QYF^u}w0Q_cpsG$VA3Rm6%|c}k{i$VO?*l!p`zyK7<2xP!8M@T%Edeq!nn*A{7z|F-CSzMPnevty!Iu z)FhX7X0h^A4d{hV{gA=!N9KfoJPugN>G1+Mv2%0hDY&abS!zTEi>D+I^?B>M7ROfe z3h&*z!5=~xw_xd2uWH-Yq$8Ydk+=z$=#T?+7|N$Pa1G3|Qy!N`UU)(Te&PP@6lrie zit>#<+P~)8q^)(xls2^_;2epF#}98c%p`toI0Q@4;empUy+A#mio@x>Y)vuBAekR)TO6)4cT1X}>~3Yw%E*B{|K5;E;l}?AYgT+OPyb zzr!HNNL8%{J=Tyucaii3GX);|J@|mcqz4v}El&T5?<8Ws!U#hzKEQP5|buAI1Y#t6H)d*}o(+aOsm z&*lR^`7E8Ged4GBcW>{s1(PtKHF-=wp^Sc;NAL*2!^Asr)sgnM8BhfW?P$|qomscI zUzCN3CX%*RH~a#r$aU}Xfiuz+wSlQ>ABr%9 zeuPm+_H)tR@5tCRq_+vzDgS$mNA{4E(+>g+)1aoJo%Y(s7AHb*AFx=g#z`Lp%vECk z`e?Bk(;=Sf-tP3Y8M26x(C?_jvP+U%FLO4WVPSz&n^fIax-uESFM74m>2O|+@bS|VoRtLc~}z8k#j z5pqlM;5PBAd`CtyK12o}&)O^+%cvIIA`d~)egqsqI^mFFySpGtbu6FETa*;FQpe+J zWjuP4&*_Bz&+TO&y|!fAQ9*AQ**SJ4_g zBRGH{z^U}rluo|%`kB8WT4@CzonbF8=ReKIL2(HI5u@zJk+c2it-YJ-zs5=R36ap# z^2bK9bPFd?Z{zx6rgJh{bNR_z)XKy>`P4)i^pZPt6D$V0_pZ)@I3O*r@T zm;bs-^@#^ybaOCxshABor9AZaJFi4s*C}rMDHdec2o`)pT%>q1hU_lavR>2X&=0lN zwUEbY8a`EfsEv}Xbb6h2@2|pDx|$XI2!qLHV$pBD6y-h(2om;6^rRfJLN;b80!uC# z5=k~mYIq^viUq70Gc@;oK=VAkBgg$tPbCFV<#h=F$8jZ>ChO#2pOBT*3;}I5D15dA zTU^w1;;&~KcCaJR1xxah*lBXSFuT@Rk0DQ6VKNd95brnmiufVSlknS2;dot_xlq%k z1~>G2XDva9k8>b_`j!4bveS0^Mdt6D5AzxO(cW)jjEym20jnGo(??Ihy@Y?0P-Nv3KK6tWzIquo>cu^B>= zd8+Syp+V5Q$Rtc4ekz&MVS&^s`g@7&9AV!qjjs+6X&Jz}CQXDd;Z;bZm@)P|(T~SU zl!AigBRhB2p` zc(GLrw2r{zMVBoj-p$Z)9=g19no17CJ)Jq&9xvT%w%AA+d~U_zqZ0*CHw8sueEmj( zDw4q8tUS_m>N?Tzcj1vSQEW--#G$cLxzs0|9c!U^K*aa9Fs9_-h?0+TgtdOizO@2~ zB>Nv3ojGcCVY4H#yyQw?7@ZYtp})F3rK-wmd34BnJmnw;rn1G8%4CXgVHeqjav6sO z#UMS6*{|dLvt?jH{-A#}fqfR;7^-fZvGZ(ol);=wsQPV~>Shc47QsXCTSyVw!GN_# z$Mrk>Gj!gBRUWmoyy*PASYEdEdy@-L#T;y0!wpwhAbLBdGYE?1q-Q^5W5j8YhdY;P zjrM?H3RX(@vy9wy>Bi&oF{^MmU06HA*6F=yMwVLz{+5bLEAU;+!B^Os80q8F!)xKt z?Yg|?f610zl1s@necY?sd$@8RQ;y@oi2b8cWs4x7CdJx}e@bW@jm|pJ90vjTKJ~%F z&)^)HI?bLzv^1~2H`as~UvOm8@?`(vrn3-y3L^aT_0>uiYSaUsMO7*8< z=yayF^yZDiFjL>X7ud2}dQ~T28uRPDb+_4s|BsZQS6NQzq=eK1qkIfn&U>IMTZw_u z^i(K`sHy)<*yqM=50M(lRC*|wfCCrBlW2&+cfvRim$@#Kp>;kKox#H?hE6uwp z9=;_2BA@;NsbG6calI~kaof2G#|*zo$_2=n_oFy7aNpGF?7ZX(j%S1mO*QMa%iQYVon{W7x$m)JZ<)>M+PK5F zY4f>r||66L}nWw`;8;sVxS;wqujZg?}Q8o243qf*;b3Pi+|?{nrVnZiKW_>_C>3<8~YU`h{_YQkAP+j&UE@# zVNNQh4)_tUw!;!`T1{~#>E+a#?CENYPDX3izYr@%;=xzHdEpf0#u5Ircnt9UH46Z5 zr&8h?uY(1Ee-)r&Cu3T0YQqE4(sWsy4S7c9RTFDhyD-A`lfguo{gduSI2`hV(eYiN z?pZbhnRvp^gT}FFirnDP6VTLb{pR8VamdKSrIp};e{n{w@<@n8(&(Pbk0rhvyZCvf zWgbJAcU15|7&C#a#j`qBy{oHfM1w!n2xh#TX1)UAq1d2Npg$oIzR1A825t~FBWiY% zCa3Eg$&WV%mP(goCiKOLY%+2=(*MC2ZCBl3M=9Q1?PE1AaFkH;`kPx~|qKlo+3ik`)c8w9}6k^F|B}bx+o7uVP7~QgbUm z_PXp+GRf^#HDK(&zp~q`ocj(pkdM8*^z$D&6b>lMay-@Kb59;=SlsyP&iB}Zf=}}| zV;K=Ucj3)8UT5#*!P($=y~IUX>r}u#Qs4k{gSzTEq~w(ec?1hTf_OS?s7FC#lsy>7 z0P+FkOV+KkP34xnT#2C0&e@cg(_T;19LmFymnaiK+{$74Osc}ZzM#*yzss`4U5MY# zGOa|y!3s7VJ8A2GvfS3+i0$2^f64!~FS~43%xUHkgoy$q zDb4!%rD!RkRLP^Bp@4^)7)ch` zOeuqCgF;@fkgfssO2LOCor0&f!vg)&2U5Gl@ZEAayQ@!o;3ZdUq@*yxt!998VQ~Vf zE#2^Vcw)kQk@x~k^!?r<>%ZsOBE~zdPcce>*GGu=_bbh`3mmtDSxXc#r}rNbW5A z5oBi62py>p_h9lIqY{c#1~X9HB0ZUdevqYQaiohduY}66ApCMB3^)Wnlp{=NgyV)h z$vwflV!;=&d)a=da(tZb#?!T$c(Vt($Byc5t98bE?!-HC!8@i^#EGeq8xv3h8l=!d zfvSI>aVs**8*4rC?ct<)om~J71*yGR?}&3O8wu=MW=Gbc+7F3Qz$>gra+(OfP#YAE z-0JF2x~g%EE7qRZD&@t2l-(1&(U67g6w)N7S?elpGJjh0|H3;!Xef-2GuOq7Ee?e7 zj)1t#pdPOUPBGknTxzS>|1@5}T3;qSDSyGdJyOaZuZ-=B@D ziqm7fd(kHp4+&vBr7*Z>mHcbE)LrxB(R{(5zaRx>=z|8+moG`y2N2$cc8+_%(nh7q zjgV9f<)3(_L9eGKkf26@4`P+eu=hp#-k#S>*$HsqP@4y=e!Su2XUn`1YluJ2%$~7(t}S4z1h6#pHmMw)a1Nkb+`zk~T#|)iS5v$z_JsHSv)}xK#1cBH&1{jA*+GHh zp3K27II+}W0nZUd3+3aMSzkgU=xqlcNMGm?DyS#CDZ><>OUjhWq|N6mCOrk(Tjn(TtL6`G^%dl&yYp(MH;VeG_I>+lLrGA@wQ1FHxwaLg%;FLCzadlF3QGV_=>nrl2w1?cMAHqhC zfbwtA=PXu08MMg*y%AfjjmQ!B4T`AQ+(SEkQDTe#;SxtQbD3i^M+$3)E+O=lHCxPr zZdeIncP+z-kY&-@+Edn|89CNV8%vi5dRWI6YAOSGcO%G%NkttKl|Ls=e}_~};;lrn zCwXP3)-RLCZRVF0dz_PRWM2gEGNWFsdk`A&xHUEaDP@@YqE+2n1XRj29-=UkcoQ!Q zGRo6xhy4jyQG<3}v_li6qHX>hJI>r6Qz9th8aL$xP&Ff@Q)xR9!~pE7+d(tGHa-LW z)=D%MWfMsBs$Y)`EnzV#8g{U*Rvc0*F@h*tT|%gZ`zj*$Kt>%^v&nG)UGPA4)Zw!_ z_E8G}g~!Wco^r!0W-;4rdO9@AK~X{mesOgvYE3d~Gg(=zxwPNjQWfw=KEYrc-$(Ce z)W#mI{DJt!D3QjI-)~m&JwO`NU!Ft4A)f}!VT`7$<|=Wrh8xP@Yicv<}`)L=p^Yjnl`*H9NpoVDIyon}6cjw`a z-s<#GK78HVTviq@Xr}PQEG{dA^-!%+1G9N!i3~(H0*jx0S^)&fIR;$h!dZ3t9YA;$ zM}2*m=FY#zPmP@S?NYh{nt8y9F%TYrj*BMSS-jKLK_b+My-Bv}b5x6n`mG5?=3i2; zuddkhhmHesg4uFfxH%jK7%t@A6fN3v4gHx9@A%BvHK7|Y9xSmhp7#RDC2)wxb23Wx10+NHnO8&P1c3!DrNP&*VD=#!u0wxGvXX{458ytrm zlRb~AXpYP>FJ$CFe*G$5+^$DKLe4MaXYUz7J=13Fc^e4o%aN>Uk=x-I7RJs`ENQx& ztI^jc9T2mQ?yExqI0o9~bl~u$)d@5f_k!QjUp&^F=C$P>Ucu_?{Rv{cJL;|_pV_k|CA$F7u`eGzkdKTO><2YLk+DR z7vcRMt%~T-?&Hui$w$uy5xZ!Ur_NF2VJZ6Fvd1Qh%hhTo@-cjcM=#4n{Fb5mElyVu8L!+&{v%k8hc#dngac{D zI%!z=38Zx1FYU5v3V&nO`mwi2REA0qQ5&I#*2jA<70*>O8A^-jWO0fOeg^Gn^v92~ zFyc8`?8_))x>*b`Y}Bw#?3%DyX6liffiPF>ZUri5oxaWY=XE{@kw5)$Zl7HQz3X@j zInO=!ii2~b<&Li3Rp&_JoYRgXUh7#PZ)ehj5spw%F|2sF2U+M7)-=f~{l)*0@V~FL zG1>(Nnt%ZTWx@gh(E{NC*;&~A>ri*FPtOS_KuQ0ZB|-)Ke>uCgnu0H=E z|9$^)2I=)i+v~WggrlRM0c5e0wlUOoQJ65SGvOtpjmt4%B#S?30fn5oO-D$6(gGADByLQ$GP(S zpO^g`)mw2d;&?IO;Y&M3x1p`?D%p^hNw5a~HhP^;2l3I&73v%gzScC2)@zN}9^`;q zR|*Be-TM(H*Cu+TlNcPE+9l(-;mQE;*-5jehZrg!%5Gf_FhFq+ z@4954%sB{ORG6Vy?QRr;a(sUW@hrGPCouI>Hr%F?4KHIdB>&AYUmHT4CSwwQ074g< zRpJ=hw!Gkpw#&06V$(px#Pz3G&_}37{xaJE^Eoh`2t8wt4^;wR9EN^i{SOYuz?=}V zPhQPr)dOM)S;xW#Gk<)NpG^pOAP^!hOR^#!`FtOn`OrajxuXyT;XIW%T`7AS@8 zbcMFZmgeE5*hHcXg&GF$cIl`XJGCya@Um@8m?Im`=J@8dIB?C6+;?wLKFR^!S6TCL+s?YZu(3hDiM;X zB+BwVPn-c`C72pnq!Td%AfZlZh=4uOkW=*>tOTZ7%hHkwJLm8mEC;P|K)bz1{Tmom ziqaR7?4QgMD_2?}Nkte}%j?Vkk;CLA9LYJ#e=724&vf~ZU%P2N|y&qw^%6O)%F{S0ZSL%h%ZX?;$|?ZpXCsP6(YR8U-xoqsYuK)8^PfgP4-{r9dy zd&|H$M~?MYM0N}`S=KI>p3aoYigxOfCM|z%X_h}dMXaTyZdRtX-J&+D4Q}C?#IG?PE{kGyQ;emKr5R8nr zh|RC)n@G0DOf%fStUDKZ^fmT9)6>5MofgPB-Qv}j`*`R+&*FGoUrtb2q1!FsD0v~b zIRaQ~aXb){|9tfZlGj{aD-Ue>n7l-7^-QX{Du%yUJj{K65_66E3cln1_iM`*^Vc#i zJ`j+F4G<8`e`%l`=Kj~a>WXjEep4##_C3nlJwVDz%iY_YK%&Q9$c{FWDek&8mklS3 zc)?WKIGh9>!%F-Rokhk7$;9C_JG`T*U5AW4d9*R=01CHF-voCgPt-E<>{) zNp$bx3rCbGX^J=k z@@y*;lQvwQ(VlPHf!1T#j~v-y2zuhS^aD!6sTf{+d}jm~%? zWo0HPpi?-r;veppqEc8ADKZi149bYh;kR|hZn=&tmS)|czub^uffo$3<-hM-d1kaI zPf!!Y69HcNNL@N3c?sVTNH9QFg3%bY9Kcbi6lBm~k!YWLmEMT@SY9uQSB+AgLBODx zFh#BrVtn6x<0a0U@2ek7u%lo}gnyD~;+r16H`&H51nCu$_-1rRLLHb4OC4-Sz%`-d zhzdX|aXd3mH(t9zy%ZP3fe$HiCZJ+O&_hv3fdEmmk5HI`ktXKt8D7{#Xvt|%>14Wm zAp0QD{{ZPmG+D4D@=Q$i6;@DI_6SMnm~77r-G49gKFmf=GM~E8S*dV`1u@^)(GofN z;Ut7ZFM>Dqzt8e8;7Z7YspdCBioTYo2F2@XZ!y&4Vf;f>LMypRp^0X&8gwds3Py7&PBHYO+eE`wa9|)} z#RE%W&qEw6KH6}2U^rAuKN`IY+<%S%fJcgu?eT;ScGz>16af7GUCyS}GBvjR~e1+`1uTTsgj9q~cQ_n|JP5 zi*R@_>lDmD0wJQH8?p_c<@_baAD}%YlvkPw*|+bArJ6aphmCLm*+NyLMbub1^}r^< zf2)4G{@eac?{(C9-fj3|j7?qz2oFWBcWu-L3Mo>?Gpls*>_vq-)*+Ezf4p@DL`%8fieZnVHjiV+(nK6k6V%vosf@q<{A;|tGN$WRe2x+ z<`y}p1kZ^pUq>>67e#`BzM+hd1a$2&B1d(k3TJ%bns~252(}{atdWKzM))4~QNch_ zp>(|XI(h_VltO2~mCf?S1e+@4EcQMd9=)9<0TaiNiNu%yP4$GN%HpumgA{|7Sfh-C zf)msQ*-7Rk1h2jyDFRUk47k2t@BX0POAspQ?y&~|6d$0}VbVoHglm%L0Z^p4R$`Z> zH0vB>z{Os)G1a=KmXMZvGd)bW11e!y*K~8!_qwRqh1KSqSR#)5Tnfd)b>3Wf$3)-G zTxfJ$Oz;6_+m>v9Tj8!K<7Y8g$qIURqA~59aNhg)m};q;>gi{M&^CkUGceD+mM#lt znZx~;hKTH5A^PFY!;yA_0KUG@zYnJKx4U>&g*}|GP4wJkB$xo-(nXr zW}f!S;`1Hq83g_rw3?&yy)6`APhTzRvSJ=9i3aQDe&)ntw40Y#0K0u1Pk)G7_fYt{ z)`u|Sw;Wq)ViizzCr5>UEO2L=S;Z;={@z~9hQ5&HUys@S(~Kb>^0zR8iUPX3y4{4& zGw;7RS6%n74hE_HJH0qNc)(!{`av5=gf92qzSppVw%!uU(X8pl#UEkt2qTETEE^Yr zkb56Q$hLez_UoX_0MVvHnolIM#A8?|o(CVrq%l5YHm*{bNXA5x1qeoPJZ!c>&;+f+ zDbvoF#Zzq%^YmgL8023V!#`;^!5mxL+rXK#$(q(|_lUZ+a)FrOj__^jaRKWsn*pOw zm~-KqT^8jHh-r261+8&{lJap&Qm9>}3TePBjJf`To>mb!0DIMfHqRb+f}bcsm7@iw z$nch$x_{dbP$SzVNDFM*2YZsr;3^I2D$@0aM1{pBD5ms{z9*$rAmFT-$-#+^)r(22 zBh=!kX*a?{usEoc_klSxL<^3wlN5bK0#`vXpKe2~Q%qmppu(wQ<#L(i7G5rntuPKE zx?G^B%2L{409|q}G(+Wgh;Optnnc~$YoJ(0!3IBW-Uf|Pr4WJJWS|a}QtY|Md14T5 zJ&L8I5s)(SRTwK#sCEUX!T!-`12z~t`IM>fBZ0U?`|TjaGaVr=;vUo~;=7zZ;{GZN z(;2sgDMQUBqRIEi7Xbg~WIE#pu`nDTro#s(B-%s};Fwho*y<4@0osQYTAwzx+trkD zZ>*1J@4BhX3Eu9$8ie97Dem6D2mCRuP)wbqg{)G`g08u2P|k&}7C*Fd!cYUx#pY&r zn_&AMR6Bg0tZ2J31G{|5Hmilr6s$!rczq$7Y=2M(USlqC>T^5+U#+>Wc$4iEUOp2@)G*kHs4QL+;M5Ma%F!}N4g_ezEd7D0lhC$gUc5@?zL)G|yrk*X}< zngL`Uf+KW@`kGFHwahHirBHx{ztqM?JY5)oi7bpvI&Z0yB)+iHC~Y!=?mV%pnAP=i&zxwaZann-xE@A z)8me{K`N=Gbe%wD^9^S0}erk0oH^Qj|Ds^S!3P%A&B9gDj0#PoTqA|?_ zAgRq3U9maR(4Ya?Wy6)1szVza55i1z2cl9K)_yeDUA;j=1E-00T*_)Qtp4c(FM7!{ zR+;A&MCU6t!q9*M=EQKTp^7pkqpL&t?r6iNqDD6wrMpI`9OZ_1bpi#a>P=fe}q&upy!!{dJO28aihGYcWDkjDn^KwoAL{=|J zp)Og zrkJpaJ&gy$+<2AM?!YYOUg<}gIHF6LP{602ib5v@CeW7UnQC*JzR4>Rq{KxHmD7aF z{Bz4mXCZ$q))llh(+7r0HjX#0jBHGiYMu3@nu z-xQV$NQ(7Sh9zq9z)xTj|9~YM_}0a7)WK(F%EKRQ zbO?n_maduGk&OI-9%M84#oW+b2m~!vGUhU<2mu$iPw*NS7TV(+qV-?{0Cqye7(YK0 zMS#m7Z^o-;5r(}ch}DS33aGrhW#Ixd?R=J`0)o4o$6DEjKx5&C@Qx;e59Gl@Q7}6( z!ml@}2%8564r3%kN;d(|G_!f-2b-g?eLLn1r#7x3~Zdn z1n(EhHQOjL6ahLVo?`fF3sv?39FoDX;2zVG|Lou$+^n**O4aWn0X?-q0G^bx!37=) zyHWMo`GqI;jK(b{m^X zy4QpVehp5dI+vgfD6B!?sH3|wwMdK=)q`A5%D&iIXt95m9e=}4Em^D>OW&5Pq8D+7`qDExtXLZqbSQTk+2>f{hRru4V8K#4M zTAmtk0&lr8jGj?h8NRJlm1(rABzTjy9%VJiT-##>g7@)* z=Z>A*#vW!AjGzSfcY2}+Ht%u6SA3bHIBHz}+Pu|SNrctr5@-5=B!!)@ILJSLxxziV zjMF0$jjw=8(oqB7nGk5W3C|ha7n9eq$KIj&IHp0(KWHi*-opKz97s_WI>uSpcAdvUYap_-|WNN@u-MXmB}kl78%WrdZk5>+?sW z{%-rh01ikrS3uw$F%d6@q;C5^M`x>YY%NLnf5IsiK<}`|WBHqRjbJq=J81l`EumDe zQ8!5?5J(+g-MdEbWDQ@rpG!sJ-MF`6?`p#pr~6ucR3a#>50k!l)yoCODmI(`YrS@m zl$1}+v%uHtISd~xrvQk0eTWfX$Oo-XV2D;giYkp*cA+4_CW@{X)Q@JlY+YD@ZYPq7 zt%hUB+nn*N2!RDQN!MPFIf#4G=x}oAy0cujzG==T9JojIV4pQb&qh&1>X3!c+C=J2 z5!Zwa#JCC8S;Swp@*uPKE!S1~!?p<-uF?J+denqgY!|NF2_i6A=zH?d=(e)ijelGG z%9#S;n&-nfpoVH>HaA&n8znuz^+zMwhx&MIYWRAXvq#vOvFwDXk%zAxp7=fzs!>I! zrW#@#BXc!>+3ZwRn!*6*U8r&uTVc_=7G!)MXd45Z3QTJT;O2-)s;o15`n^!G8I9L{ z1Dja6zRGTDvpwceXkr#Wd~a6-9;RCY?$l;jo9NQ zBP|#k&n3AyJMgNs4Fd%^&m`s8al9qo?1IQ%CLN;LrH!ND--8?KO~Hrp#_;}{;Y-`- zHV?-3$}_R3en;E1lRd9bWH)M!EWKLIBdoPCh2`y?S8>X;p-D8OS47WRGSt~^naB;gnb$T zm80M)8DKRLGB5Hv7F<6~)goj0bsfXg8^;jX@13rzo3B}st8`0l2{#Zao5n6xn(dly z6P)mt{NeVi8J|mSCfbmFF=j>>(%Tyv<%J@i!1lJ~jK3CC_cmp8%3gc{OCB!vjn?9A z5+gCs_hEY^%T->R$&1~63sWKv`U0pFU?ZBSTFNL|D#=<( zN&Y@9h&_YJ7U~uLs+dgF)4y0epp+kIEhAnmr~hW!r-`d{>?j2Qlq2`XQPTWUL$Kk# z4TgI4hv48>C)QfHa7&B(3I)dg>M~d@?$e@FX3DwU>gB7*JxnQ<@dn?VQy8=uwefc+ z&(xQ(1Cf!IZhb!X%!i?0KP#q~z};esZa6p5x0S1v_F|T6>v?;d@xTP8WLuAZz$hM@ z5=g_@%z1vmz`s1xlf+yq%r4MJ8ThxhnPf{9eb9)=2)z)c^NhvR z_!CD%X`wK0lWj$GhSb7FHH+_r-G?B}w0lH%ewJ+SBe$G?KqJ_4T^q#Bdeq{Xy~}Hm zO#s^^-T#NLb7~JW+SX`n+qP}nM$_1~(R__<+qRuFjoH|?(b%W^IamAQoIf$w#8~ez z_3dcwfc50afKHdy=IE!=Z-UUBoWY{6S!p%K69@E*sHrMiVhV(OZ$}Lwa*9kJFT%Gf z6T14N>~d2_9*>kNonWNbzCq?0V)kCE31$U%Jt*!!L6@)hu4(X2f451p$X+Th<(0TI zCb=10>Pf3yLUI-GsoYsITa>a>*4ZS>2Es)?nZT^(&9{U9RXWDM+B{HA)$W(UW%%!M z7r@KMEK!!12Xy`#Oj0%48uZgfBowIaI&{%fgot2cooK^{X_fvaznD2jmT4=d<2NfA zrJxq7M|$yP_r`yL5>=QXG(?b?zq~9Yqt_n8_1_FDZ|%K%(2m!94RYH!2K1_=2bUVI z6?wHaEg^`Hh)iUQCV%HPX4!?IRTG#mj|0E<^8d1W6qdut)qxt{k3UO0{wc0HD(0^SCro{p1CYj6L$Ca4nM%5 z->^hp5wv_iP8mt?P32*sV@!;(PfXy}^$g%*)iAte;D} zT7=&+JKbT}={Wm{kOs!9uv&|cJQO;Rv$PEMeomeuN|=i!;b-Zun%ack1$w^dorM(! zh3I`uPcPZBXCdgTM%HR&76y@t12X_MVm$$5S}A+K0D+_#!a_B?if+4hx+h;(#cXG-t_k#UA*y&JOmi}$jC~wM1aIbk63!_qfv9@y`(Kz)>UZBPS$Do9{>^<0)wDHgOKbIM1_}ZtXS~mMCkK_NlmO5`re};L;sM= z^vcdICG#Ei{a@}M7`a810<&Exz1-jj_xh-N);>YleGy0TENes_cphZa9#Mf~hETbK z7_Ok#=&Q=y=-3cLCblu~p|8IQKB40IU`np-`&D3{T{%?q)PU=9PZB4n_QC=6 z-^l){jS=E2>1&D47mo{thgWE$DnhkD4e><_CH$1X_=?>goq|$(4Xv&IoV?WpS-IgaOs)#ULE2(O5#Ho-%rn8Efdw>eI7w&(FWaO`)vhvx4ns71xUx)!px;cw47x9 zhA8T14bX-L5&&^hsM2WjEnt-NnsvVPP@uT(0tnar!YTH5tkkg!;XHpqaKvgNirbQ3 zFDV8-)upMZ^RV{X+lDid!h4!A_9ftkc{@h}_%JVEjhx^;z{pOl|86?}JX{Gqa6;jb z`GZvWZ+Ko0q+x}ToZdC+?rV>j5$tD68sYd+d$ZzL^#u5fkK{8i2vZVIfW?HC($F z_M4ddq)5&9GiGuz)>wb{RPhvDHL%K7>1W<#d>c>zH^!s6+zHs$*e-xBVj+}lZl5LH653t!z?pG;${O8fOhwqBARJC)XdIU)4a zDa4H`Y4~xmR~Z5J^s!F!Q#cxr{Z}tl6MA>l=Boo!eKj;)cwG%Ye|Jq zM=QyqCM^p9WfaR+V+nU*HManE zTa|9BlP?_P+Boj5`cJuCF3P6&u=6Ah*h^7|1>g zum0VXu#8>$_{<6k(YU|oiKk|9O4gdGw~qc;O}U}Rr<4d=1sOV9NpIf)dFZj|yfi2R zw$3=ZrlO=w_@UEAZ}L|+hvN_v$~2B{U#K*rVXE2@edXJYXu&$^mQegB z(%QE|&lQpU*a_<_09?4B1rZ1CZ6Yp8tNlqmr0>6vvPjSH)}s25ARzw{^icorRrX)x zG0Oi#kmP7zI{YI@KI+Qa)%_*#><){DSa5EBlFZH_I9z_8jx3;o_+DtggjSNMp~p;9 zAGU&iCF>z8n`*{y%l6SA#Pml{p!+Fa=w-J$e$Q_D8TSx5-f@v`zm8$OwNBcz9+l!x z#ZO6q%1A9-puou;I=fsfzBmu1mti#VcUmBvREed|6IvcL){drFKs3Zeia?Z1VsJJ8P`b-L<4>?l$1p#_51l3{Q7>tSbi-2*LcAmC8(6wv%%pD#xUqQU> z?VTu1Eg0B3pcW0PjwA~hMhS01RAxhyPj>_g;xz=A14!`e1^+Y|d*+Df74tGgQUvH? z*gg0|1dbDo&08A#r#`p9`+(6#XhqNW=2K9)V&qzqQNq3@4Wl&4oKiMchm5Mh3`hph ziw&TB%d`{&-4#$DJh9Yy;BT0W5RqGKn*P2$QNvK+Qm6%+wakO=*IbS6CBKBR5E%%V z-38xL7VGFyXlOZyZd*w5o^+6kk_BkoJupB#anz2epcG`^5y?;z#9WfNr;<1?iw`v( z1n@Bp!;Pn$Yc(Zd8z-~)sVBiP)lRu0U)NH3_M&8zui&eS|2~`9zJ5nG-idoZU-iPf zuf*%68@WI8((l!sXf){*S;h6#JNW{@qN^(7TWr8W`5}Ag8yM8gSXd1Sstj7vQ(dM0 znSN6A+I&I@F7YbFcLPw#9h@4fh{yK@#G!IG*-spzBBb|tC@>*MYKa0>4!pC=WOKZlMWfIB@F1HnQ2jrAuP>`b?0z2h%(rJLensQBO z2G2tuC-pr95a(Xu4=(HZ^O^;lta;KvBA0Hz9%ZLw^YhPa3ELHx*e#IE_**1(9f9@c zbp2j`TvoC+fiu%TGg$m+Deh#dFnDyTGvJF?l=gBb7`}4*CtF23Fp>0=?s)||bi?rT zS5~REy0bbrB+(iemr~r{LyiALPELl{o86-36}ZMrl#Z>DOQD42s77AvS{- zLa|XX6JPD_$v6ut!e$cne?6Ji8VI>9w9EMIy{&{RP{k@lr*c8HN*v+#F404{e~x&xwV1V|#S=@KN4_{8Is;(yYg4%scc61Q zjH=%M3@THL27J=~i9V@-c8cxSMrfy8R(Y%nA@-K~8HAsPDy2r+5N@uZ8WrVVp{l5h zyuQ!SiMzYc+Lh>Zug8_;&W7ycu_-JOL3BKueH=H7Z$V4|dLeg$wzv_Ior!hBGi<7#wfsH$|YMEg?lTXB#Ew}_U5D=-6z)CqUe z%AV+ioorwRVoIgequzp1pvx1af&0PXm#Cs)^F+bwP~J%-EPPrfB3z8oVv`wL%MoZRfqv(&y)(~srII(L%H1- zQEJ;tjJVE~fw*%}f%JBFWXF1j;1LYPSs%AX&UY3F@vHUud(_ju3|-1GZb>;W*X-(6 zF+~by4cTfey}eb`^R8~9p%L}Fz5DsL*L#(r6fE7=s0iC0p6J>fbCn{G4NKvztMwc5 zceksh@qM-ujWgg2`?2g}v3dJd)XDuE+0OG?-gn`%&6IXhIB`xRt~euF_<8>6>GM9W zD1$F3FG&$=g7TFuW?(JvFrm8tvje`2Lz&l)tYwkGa&VH)_QI`KOS8 ze}$&w_>h=`@u+O&mkL4y$bd@TpWib~&TiYMiVL)V#%l>5nE$&_R}vZW%|wEL$hm=n z;HHtbgJJ;c^0EpFO!j7)8vi%$*V6MZon9xE@_D-MMocRe1P&=a86!b7V%#D=IWPrd zjHE)vLNcsB=V#JA8i@2SP*nw4>j#cHb}m5+doJa>g>9DW59$Z-JNTyMwKoD`q@Rgo zRh{E(63>UvK*!aa0e|d%i!vPMGxHt)wa5q0Zv-#J;ho@JNaGf_HwK^1jW z^6s1!YiZ6wUubx|dS6R8MIGdp+EVn%vEMhuA@|kbkiHhpnUF^kp{I>^v(ySuPnJz;= zUA!^|`1u4@>D_7eyUODml#A}BPEr(Hntgq66q_2;mEUxzJJXMrm;cFW*6U9ln~R{1 zORLo97c(LP*ZaF~j;X$~;_8kEG_X#PgiDm4M?B$#JKI*xwYA#b9IBdDFWvZDR9}Z^ z&(9P*SRH3~d)@o|bfpH~?XfsRy?LV=Z;jM|1GXG1d#%>@hq5`89I>ZwjEsio-$I!k2 z^~l?^OcM@LW5vbnYm@3KGu3K7;TTP?ceJdnyBV>*aTm4&fA<=H%-<@Te^C$m5x2KT z<-*oRx%kif6#^7_jN3czhZw=8LX@aC>H1cI1S@&v0(<4C_ zKeFnSor@2PM>ToPni`w1;3;+9Hq(%*@7?SfafYz-Vl$81Xpu*?EX94;$6ir|8TFHA zTgVApv(>AmS6zzI6`G!1a*-{g_GJ%oVyH-19Nt3q6GKfh_;K^9jk&HYXElX@Ni#3o zKSd7@uHFZYUd%Dr*Vly;#jbZOQ@2cIyMWh&H@P^Wm+ zuaR)q?wCEc{?FD!@KRq6W>RkS30>dSyRA-iQn`*r)aFGl;l))S-$^u71VLOBz98Dt z!^KB%v}EUm!DOV^5i4<+G^m+D=Ea!zmHvcZ>j$%Un(zb1!(8{s{5m~wT%^j^Gf?Br zcNXAwnlq=L=y4y}MY4Y$;L)*NBA_xox7w|+0?K5#+BYU;joTw1#w&9tB4Zi3YPlWu z!te0CMAOvUGZSgwn9dB>t&z_)|B4ri(UwH`?v|fd;-%$k*QNy=Y)-+9%vX@mlHi@u zRO$Py$WoX$aZr$uFeRd#@ysL$R>vt^NfrJ*yAAUq+H z;o;1iwClc<>-t5Ec}k*}c8zS1olO`&gzI<~I9wXE|`mMlK9fbz%EKnoO3JYbh?65w<_37i;gGq{Oy9 zn@g6wxjYiajD-B?+a(QciG94Ww7z7NjBKW9UYT^KXilNOsy(uzrK?jX02Q})r&?(9&%4u9n!C%$?ja-!0GkRNR>)<8jX zP1dj5q$+FHxt_Wa@C~Q$MwRYz%`a6NT)!z&%zrweY$^fp)+5Z~+R#G@WwSKQVU6ZD zC3YMcn;950sAE+Ot=Br|6*CnT7kWB}-iAvR(H;IlG!4=hA$IW+Y=f+l>KC*4e$rkW z&))?-F$NB97HOs6#Yq;kVtKe6o@J0;N$_Fno;RQmPxCEWWTz0#!^So;xA1HNo@=TH{T*^j|FH{ zPl=A6)>I1E?|N_bSfVNy5i+j+E^afvKRgyzV)6bpDa9LC9wA4?S2g=YRUcy~(mjA#CPAf##3g|;Q-_x+5o-JVaRvuLytB^d`@2QD&u4rkvzwoqVJt zN#w?AWAa?bIos>g*X7rN;>Wq(vo;f0paJPX;Wvw%Ipjs@>o?+Y!M`%a>Zq`rSo$WJ z`ul(akJ=)Zg+VtaW5oF%<`05iU}q5LMFjTMY4{1S?)1j;wxj^Nxu|W*uW_Gn;LADu zLAs9r+&8lQqiNOV7Di4u>h`8~O^NK+_;Jx#cQ-4k-jZ_oH$M6m>ebx*-|@@@l3I+X zP7EWjbeNi!_K4Mn#k1#r?;^pr=Ay@9Yb<~ZE}2G+SA3KLBCK)*l#*!WM$19c5GGO` zft;!FZw@#%$P6D%!IYXSLc+b|7~19?FN`}}-V~Wo?Sc1Ksq!(%*62z@G1s{U6a^W7 zF*}F*9ldd`?*o9|{N_YqI_wWc$+HA&T7DP$NPlV#jgw>*Z<+L1q=G--HxCVsBr|}} z<`VS2XGgs7c;~f*VUU|XT#C-h<)!bVjql>pT$C_jHev6x{Po_6UU;(K_an$8UUwJs z90<|UKCt2&2!;n`#zckUEZZOCc$@GBu0IxJhdQEAM zArK4)$RGQu3D9@GGMS09+%Eez-!_2AIj5wUs?ds5xiIrv=?pX{)WTxr@oX;?^WSS$ z3I^K#l<*|J&J6NhtEkpTk`8(vk()bZj!8_N4?bRnEQ!bW^BxahSrsG8!=W! z@j#BrdW?h9?)KLuz;VyBdlJp=U6L*a&*}7^$=0J*$bfbie32r(f^Dr+oH%Xof z#RDVLye^2=u0)fj=^4?Soo1bus?x_F%1UYy?&0C{79XSOl$A%iSNbNNjWh>a-0v?m zrst?+M9?uMY0|?)M!;ALwE!S^9%(>cde4hnx}@<0T-ke2XIYYzc`o%iM>)z<{TVk? zr^TBfN-y1SD`}$ssS@dv)FWSTz)72yyviAOpvd$@>_Sz8_(JJgV|z-)PIo;#^z1+Z zy{yB5XNG{7$U^76yRoX6`5o_fm;^>_A`etXOv9ICV1lUpliAu^HV7bW~#-C!~VGZU<1-DHdcv&8MnlZaUB|vX*H+QNv=Xem(X%Y>bDo56%8H4TDhJ z^a$hHe2g*s^Iu3ZFQeDY#CvUU;N=rV8^tSSH78T;B!LM0ccI@Npzd2muw<$gg=?Ex zf-Q>mF@Aa(M)$B>=c5g=_{9)>LQ{fYblc0!W2?AnfA7mRATa+aMt&_w45CM)| zF<9O!k#x*h&*k?F-@ckC^>J0K-ODsB6AI~Kk6kmPoR{=Cgs_Z840Gy>c7m1&tII~0 z0Q-UB@IJxUysw->;cXe#PPHW+Z_uzA9p7kgVa2+BnucL@Odr-;vEg$I=~_|4gM1S_ zc++8rS?t3s8(rY$hunqIl3hg$IV$OowWP0TIlaU!1f#y+q%K+pEty6aT$&q%1a)K3 z5#_x}#aReL=oM_s637>sSD}pY!8sYZ=L6>tfHEZi3*KcYFWT z1v;IsR&vDcyvQBmo4g&IbDzh+nYzA8XG~Y~^FG|PJ>|rvn0%QBr>v4KF=}is?jOQ8 z4zmUSmihQ<0eeBOq20DJc`ajp8M3~fVhvJa_qCCWj3?mw0zcc#zPbw#^UtHH6fdr> zPJ#2NtIz(~{-FSeGM=@e&exnRjxo@UKjD_TN`efLY_4QlPxH>U{Bm9zS`H|-6>kb( zUb&;(Od9__w4usD?iczE>8{nX?e4KY9|%r$X~L}kIGmqS9Y1tp;< z;pkz3r)x38G<{^FYboNq30PIEuyat+kOq<|BpKCz?9Z4F)Asx_^y}eRoIr;{OU%00 zw{UEvq-k1%jZQLQ!5tyI^hhe0fq&*SIbBZ2DnIwO;BuKf)%b9-vO<_Zxcs(Gg5hX2 zOO}#A%HTR$HeS=ZdAej*bt1BAVq@4FTs!~uWz zrknigU%DB;HhpTdK3wImqfeeQN8xvvIvXxR(aL;U1Kc#KKXOM z`&p|yDk(g33%I5^n6%65&?_fQpU>AP?~A8(51$YXe#AHnxmdk%@0_3};!70WIfr#2_lk9|;j)do;H zMU^!Y203wsR3)iuf>TD}pXji9c;McSKZzF<7eK_gjXg5vM9Ar`coISvVPhF@uD_nX z?!G?yzI@%>y!@TL-r3f$x7s|NX~;fS&x?Xwl_IV4*rJZ42ULG2-vN``P1H>7yI?Ui zonr;)+Tv@mc)fpIvfX?_gb^C6l7%o(H75x&4-Qp5avrZeYUhkIC}UaaY*o3{`2W`E z=nk84chiPUV>Fjvwe#<pA@A0$enC)UIx%SxF*+I?5*K`zEjfuNe55pbNqWd$^WZcr$0H+1Y+RNZzuj) z9W3o&vy`qjLVJ6=ALxz(1w;*1cn}2V6X*(QN!C()?+S~=1PW-bsLv~?+1v_>l6#Uh z?>+T#6+$Czub8LHg!q5Vpckf7Cg*E(L?(w?+jIYVK>wYX5L*D&in{*I7UVZ{n{jb&Hp zn3zzyJxV!stBAsYs`+{L2EOO0_S|PP4Woy6?+gAhn&Lf*U?5JA%dw=YpEa0vPlM0m zAxUOhPh_8wS?2folTc9S@GS3v;8^@ik!7bnhvFZEjc2^y6i@j1V!IcQ ztmfgzK6r#`i~;?}N)Wa-3v-ttNvkR)(o03C-+f3o-#N1YEP78@aEn3{jmd0AfgT3j z5sAKxdboGS=6uxzj^@Sk?)w)M3JVQ{Nsdym6j(PececZFtmpERIouzPvC-@|BIG2b zJjI@>=n{f4IlovyiuAoH4oWCJwvnz3;ea?JcJ3%c)=oF2)}0>9>pb<~;Zoi_LpuI- zZ;z*LILv&Y@Y&3CpLQye2b&2YU@dmW3{T7Ysph(8a7fSC%(r3d3 z?DuP@EOeRom;FuvTp9X$@~8jz1E#3{oHVq^1eq-dZ&DGDLTzu^07hMn0B$~;LB6}1 z=Xn*?*PE^=?Km}r6VrPz6Sn86`{^HRI1)LaIOr&VU~l_Wsj$uSAO&`*#@5(mPh8^H zE35Tb#{heP(_t+~D<3}MN6N3Y#oM^-x##&^ZOv=G?e|+6Jgnu0GYr+`V9mFe*(m4d zriO^nqS6Rad$v`rhm0x1u(h-P^Pp?b#cM3_+5vKRQRUj`u8Mb0FbA962&~t_BTi<@ zy+akis@pQYpPWzO)Cvs$C7RSuZ++l)%q?D#Hffp}Sb%BF14xZSS6I17e`h&&Y>;4S zK-WXK#FkkTzu{M*aNa3V9sFk2kdMISMSgU+n#6svJeUaUmrBqjz@^AqgYQI&mtt@C znxNT0RczBPlCa;oYlv2tshHWw6CMXybm|6fGNz;o6SpQ|Q|ZREV;F_5iIh2glr4%z z-*Cmm9{q#7u$gLEr;K%;QMwkBZrzEWE$|COcDo_p#6soGXPe4*ytv?_KpOS8D$(0* zxV&B$TY(JHLM@N^zd8xZFVFJqHlCk3xQBz~@Hj-)%nYl6NDnY@HxczP7f?>wf*urm62H{z zcu8Y*w`tq(ZiF_YUhfdo(55}E$O^BFc4B>r$|Wq*8OtjaR=Sp;o;Yyiv>PWj-9?Xh z4a8Qa!Zt=%aB(%=O&|Zqg6H|wR{>fmDjTHFQxG>9l6$YU+fE{y&VLQ0Ry+n-IT1IF$1E=> zKGkrqGL4@jGtP|Y)GjZZvrbwC=M!7zx`%=jts5D-0IVmj1mmKG;Qfx0X8=bSxbgs} zzd+=`QIXjnp3AM>juS@R;oc?|27+Yex}}> z*y~qXh;I5A7rZgtsS@)+LBM#xJ785$3NP=<!T#|Aj*`3ui;%G7I4 zs!uBmv)lQ&?{4)deV8c$6~N<*Jsk_BFm^T6ireo-{pP@hQ3%#MG6qWvLo~GNq=&{& z@wmjaPJ6rLnXmGcNXopuRFR)p%(YA#QyYq_Fm?x;J;Bl-z5OFhka4Z%Y63Dr2O@S9 zr}XK_`GGagTuPAFR~Yx`gTSVOfm>lwUOtwj%u4v29K|Lc@lIYZ4KUvthE1sZU0$9D z>S5N;TXv;Tr)0n1R+Pl<@13y}CRnjmTO%0U@|6Bb#bla%`TY)q2lrbzNqh5Q>Ji-T zTk{Mb;)bjrR{t7m&+NrdhbLB&{> zZ!{@^F`X`tjnGs{qEKl1|B7WD67w_?%KDsUCw3V->bkjWCgZo*trIrb92 z1HQYM)@ex|DO?;;i{7Iyweb=Md~hT`N*&6T!#KlFCoySl0e9f8V-=tyzF$BoJrS`& zcn;;Hi{5=c_>BzTx>8+}D*8sG)92^*Lmvy}lClMXF?5jm$bJ-zm{cxV6{uzIZ)RcB z%2dycI5l@j1~!8Ts&@CqmZMHD-ns}6NrN^su6o~wugohTTr^B|0_|3gFxI%H8og3` zu;=pmMnm3fYM5g~8!=pP9Ev2|s~#ZhpiV&izjfobtDtx3CQo`B`V8VY(o{KlP+$MO z(BkBom)Gr7oW{103w=}y(QeNf`QX2NJ3WVA;bNO41ITkd>hh_~OoNk1tScQdfA;0v zP0hS|B233$aXO$n(P?y|Nd4l+#f1#a98S22vMxHLLB^Ze89w!!++NS zMz3VI2b$X|XY+h^g?#3TLzG7H*=8(qCL-RGTK?ir*Ll_Zn z%P+HaG{r_WLyHR;dhy7{83~cb95iLS;KcV+j;8D&q3Pcs;A2^;^+JZUC*kH}6xR{E zJ!9tW_~b@lbTpb2_Q3+C)xB8EWfO;4A?oBXf%#=li$Aj?LdTzd!&|TQj zbl6;JZp@fswjBs~2r zLY(b7ilKsg?k!R!2c1$Gvq9%?^Y`O@p#0!Wp|5j*eRd@j+GPO681z>aowCOZjteFc zK!1EFQ5pYeyb>SN7WPRb$Cp{H zC9mhDR~9rw+^vc@P40sH`0BV-00bQ0|Bg|b6F@X}-?cLF%WS|oh`Y<+Q3$MNWGLfr zEe;+U%xU4*jW~|{22UZcB3#HOBe5+2W~|k+N)0lfZ4#^vqW#X?Qp~*@c!}A&yk}_( zu>|TCtGuK$GZ!p;sncy0$(+B#vE{`}Np+-&5d`iRnK6`YB5$uIt=2na5U#UC(DJfW z&@Il+D3_h2Z!5<3@aBhQgwv}tV;9Qa+)M5s3}p5w+n22xjZuvA_WhxYY-P*`!r)=N zOVbC%PiIv$^yF2dgbu(-$%M%ZHRf-TKO7}$RduCeV~NZ=SVH_*4$T-ksN~@=VSYd! z>weoU*HPB4fQ7}1hHyDX1*r=wtuz6=n{}e${AG|Jyf48 ziF?4KwKUKxaJWW~^m7c$e-@hy2!-Fe!T%YYleL33ENgnAz>iLK|0=XBtG%?BBx&)g zGg|eH?@7P;7bW79*jZ$7AD>6!Iz;Fo0SFYeQr@H`>1-Tc9ZD4KGOdU$gjjmklC@R+ zU`M%O&`C%Ho2E)IEce-8i?nAv-NuiVFdxn-bv&8}JagJ|c%Cbd8U?I*VCTx5Pzo}} zCR8zz?P#AqLqlil5@uJ}UisS}-lB{-1^9!ckzlLZ{5mX;6WQu7LNy&-1$@zVKMZtd ztmK6q87)iYJY|gZU&Q4n7+Y4gIdNn$LZiINra03veTT;qk~N}}+n0ZoVU^Fyl(|5v zFR_Ek`qrXRFiZ{$A+DqRfoHK~@M_jYYDS^%zcHluq|w|vepXU+;%}2dkn3)Ct*1sH z(UW!SqwS0t#3+em|3(IdjZBB{Aq@)`19*NgYV?=K+LOiUyqlV?kXOt5bj-s01hnJD z;%Efeqh=!x$&2i=S~`U}syDJx2ZL<+UPQY%4Ejqk=;DX*LrT9dfW6V7-`Y*iV|jNC zVxtGZR3HY@Su<6!mZ&z9bNj*!VJUcqIwy=0IuUm@W!h=mVqm)spd+lmP$8evpuz1V zA2qPT{qk#73yRE7PkFw-kYBP_wu-v~mjT)dOd1|kE?{7Qmxfbih*w=gxJ@DG;k(Oe zEgIOTz9gf2(cK3*U@@H+&G_J!5-7?Gz8Z{o#hyS2R#YH9k^h~eBcs%U#8?O)1jI<2 zA-~*zF;Y2D`Ugc&1HU(=C@<5A#N{Z>l&jhJ5vWi$C3d|3! zoKXsV)t{HKsHW`3Y`zerXn4i77B14xH(uxGEAv$;5^g1QY6-(POh={0Nlju8-YJNG zUrxBKgaab?2Z=n(u9_cAodx^(aSl2HNsNQ}ktNn?Yfrqr^BeV{J*sn{eOE-0&99x^E+Zo{w zjS_qle$v$|g($oUMI-PE;T7k1qqHtJvgC&WmUKajljx@8_reKNz z%eAu7ab>m0irw0w&M{BFh}B4kwIv&ZU*mS z;-WkQhYL^PiAY1o5f<+}M9z!u^d{=43GL?)urzDoYidd!T7ok+s(z;uXq@GSW48So zG0$RmbP2aea1`yk)ZH_V-kWcl<-e=vYj!=3_2bB4eQ<~cqyx^t4YZ%W`MOV7hNltu zxt47P8fqHK0v*sC3R~RhX|Mddx6~i6Wn|wtN?$@_?3m1bAOnRj7)SJb8>bEFgbiq0 z3WkCAu?u{(UOJ5BNN|>sJ#W`OH^c~B-OCx2f`sVjpSu*+>IY`OA0snVf ziG3i@*1o)n(?gV96;)gdl`#@`?{s$n$|1i@pb!{;o=tisQ!n{g)V0rqtUF7yG$Hj0 zsR9R!cBt-Z2oR$-_^R1h=r&S4dF1{#rc5bavnxEZak9oy+TVOFfqZ_n0iLp(0}unu@v~8& zcHf!|;FBcbaqA&yt3@7xy*NhdTAFC?!J-ZcoV+m9_lfDa^jmqr@-nfkK(($6o`XsK zfMVJj%YxLUXE0yIv?Fs_cYx zPnjqBW-EY1uK}`>^@#)wyuJecw^vWn(3>9vuJ7lQM!36SZ0-hHFJ^ik#F)&DW6a={oEwbBp%W6ewhq#B2mpAgPOofnk4RU*0$X? zvxKO@9Fb@=`q1w9`ctehWlp5$2iK}%E5vYg93#-S`%MO%Z9{N-TiG2qOKt#)J{~TNN1@xrSfVZzO%xcI<*vAxpdo= zQVzQuVzB;LnjdH6vG=AR9Psl%1q5T;|msIB)UV!-^Pmi-_z)FlJqXRn0VFRG$jX@(&*euxDNAMS} z&q|r#mPhssQ~Xde2l=9ps!bZU#K=T55yul;dwv4m9JlS;uM|s%D0)0@GFVg@Xw)=m z!lDqCLZRh?1Rtqb#W9*t^Y{sPo+iHmr$QVWN1R`o982#btf7AGU&xFuqam@}L0oO* z0`zeedJmw#Qh_|OKN1X@YxUqe;N@b1wgZ8D1sP%n2ht+O;+7cOb0s_*mVRk*s|7EF zBxeu_DT3gZuHdUd?D7mIR%XubC0oMSw`QQCtqF*|Sc)ixRQO~gKZ$jQD`vZo=dGQs zd$5K!DS6a|$xMi@P~)WA=Qa7p!@T)gM%F@$GiMD!)&U%`D42uOf+8I9CjEpD*>FV- zj~63kmHk>{10`L}Nv1+h$! zGTEuAZ^jkqtqTioz2-bW*x+qqbXFH%PKO;r9%i{wBV^TX$D%--*TD z!9add?Hgjx^78u9lfvhznQN&m+&6lqiT;4yB?34%ogQ_5%3w}jLz-}$fW!@+C?P9e zlAZUnijg`5mP_;=s=^RHyDRM2MPd1gTeb)~0d2W#NoxJ;CImE+k$78+uexC`Cd#k~ zQnDqXslGdE)*$$Q8 zpuZmz1qF^@ArdMO3Q0fg#dRF^v1H(l9suZf41eHMl{=XQSgUEp66^#6yy9g4=Y-b=3B&*lFV1YR{@ za$}pd+tQDrErkiM2=9@mr2P zD+qbH2fQ`|PF;mLbPYKxY!E6-As=-`ykjk^!j9muf`90ugzG&C8M+Mx#RJZ9)zzS2 zU#dU3qDAxsp^)is7l#_SNmIXx07_{Rwep}{^kHa3N43VVBg2&mhmVp6&xea0mUsll z$)elhh-n5I{67fz?Pn{*%is{3z_&53$Y6ZYD}KUKtSykdlBYWtL5bLH*1+W&ZmHkF z5=1l||4lN4%oQ@^=SKnEDGT~RxNT|q>zw+t;u0=HX7r1J5NkQSr4a{}02psGUsqKX zFEuL28{(!3MxyIpefBR_gM?J&^OeM}p)V?I&iOYmO|LMFb78KkDCLfU!B`Zy<7Ebs zMgMj)b)j>TjnXZ|*IFrr*Z&R*qQD>*WJ~$XV*E^RW+(~R5nUQJtj|sm?q0Jh!uXzn zJ4!?I!#yv=dU(1euFXaf0y%viZoNg5HH07DVZK7P-nu&bGXY^n_(o@Mj$Vu>h)cH13~7lGQ56tPplp*65~b8V?aD zu+f?UON#z1sz_$+t$^Itz%U0m6l+FhCA>DKi)Tn4`C6h=oN9jPNM4X460*}!hO9=n zt~)He&XoIv*XU>f*bxM25CU=EeU9EmL?F$B+uO@@GB@q_nhfYHI9qzRe~N5$vot60 z$ut+^2D+nqYPKw#KybR~8l{v}5w_hq8@~}%b-eKSJoJp|!yWC^-=#f~G8pf> z_`9b(iT+v@64Z;7L`nuido0k=TGU)CagI>ui5&EB!_J9IbWqFF(J=C}Hn)By)h$8| zf9HWrrFg(8^!k>D!NC05W9*;uaQzzKgolCG1VIWR0)S~L7Evq)M+&#xi*gJRg`4M4 z7dt|QMDkScvh*FLgKCVgf(EFiAtD%OXTVlj_t3v0;h?H1RZ!X@tPB_X2^Rk#Ax$oy zHXfe25Cp>jD?mFaSJk`;GA}Gh$Tx<#da*#!wL?4JL#QxX#)k<51u4oS*9*^3R3YvX z>bsOQ1IFwAV)CNY(j~~&+xQhb&m*{OdHkXn|3fKVc(KwO?+o|O4o!`-lr?b<`NpBY zBDr4Sj6o+G$nU~@Z>sWs)|g$Snxj|6I7pIkX}~6@-Mk&TKB74$it>HW3~Y$~i)%M? zBWrqpvTTt&&3)eU9dn@l#Lqoa*RsYB+i;^c!#iuv#o11Vrf z^D|YQLuYK{m(yJRL1D-<)^bS|PX^pjDZJhkzb1^~K-iQq`->9=gI~M%!SnA!Q}73T zSz!3|p`Auj#))HYmG8Pbm9ky~yU-}12auDkpn&NfLhtM~x~7z-W=^7037!oYbxL9X zjufil8Iu-&R(5^REY4?x+cCGI;}}$zxUHx%P}_^xF+LrY&hR89Y4lBjj8<76@~>6+lAS z$9>i_b(KC{x;>YN!D3wfM0UQ1#g+{=JU~8aD5|OR{r3eI88Kq@90a-gx2Hl=lp{)V zy^dHxeeJ%U2l>{iO|e$YuI}RnMgr>u(gPP-YV@_#)hTK=w&(&oo2Hrr+T>4jbHI9D z6n9yaE4QHT55Ci{@)3vgTg5_;aA4TqDW8bxax9dJa+#5hCQ2qu#R#?UF>_&lc=AA21X3Kck{>56`(gJw!kOY~^b3D1u1@BNWtFY< z^Yll{h}busUeRd0dtI0?&c#ZFd#}gWx)+L2EjCCM9%ot7qnHeyAwHzcDd6&309&}l zRP2Rmf(JFPq7~9(B*CR0yHFSjSe#Mhp3FvcaVwj0wyp4@mU(eawty(=0;q@K(jB_Y zeBWk6Q`>84&QeHLw%-pC&oFdqbB~>t>|#%GE7~(4pxoU<x zX}<3%<72EJ2w8_2{iKS{3$Q@M5M!I3*xE@_DKe_eEe-XrMs4=|3gR?#LtOAztqmA9 zeGol|F5u2XLZ@$_{723A)JO){FWS;cyqa>1kGxn3MQ%61e51LV1IKA1v!h(rSwb+A zBO-3UpFXvW@XR4oKV?FG+3}{T%-)zG$F0^({2pT+x7wK-53TP^-(62}O*Z5dI zAbO!${z9;fZU^NJZ$6oeUV+lOaS`&v2QO{1_MV=WT8TX~XZ2*7HXyz?%MQa16DGXx z73LB0^WLZ&TL{I|df21NQD8{>vsn0+In*A^u)i!8SAX9ZTtx9L(&_UBE^xXXNqe>^ zKA5wE#;nnWi<_H^3kbrD+<taz-!8Bl2AlYD9K9tf+OkDavYB_!Yf0tns#4_^J=ItrQHdR*Nlvdiz^pGz*d# zC<(*>VAmpLW1_-As9`QXWBUQRMn&Q(wJMX{p!zzPHYq%uJvaHt3|{771`dhI1{#pR zVyh)jEdvonP^YvPrp})1T+FhH=}2K+%$xrnau_^#z-X=`?+G{6Czz88t4Ak)Is??oKtyD9R0hvC^&*U-MN;DT;I~j`S z++7O_RXy;6v(tT64(Hd;d(TuhdEVvjvS5o7;(D8=jb3;Q_odZ16?u(20d_;vEc7dE z4L(!V4yYq8_`RkmgEj2|0CVPyq{LA%pH`#~fU_o5uSn2Nk6%WA`X1|G8Oq&#L((U^ zFoP78EqORBSFGNk=)dP&brQs>g6zFICZ`0OhgcAM9sSe)UY241m6eq2fL@O zU?qOp7ZDkxGbiii=I27)4^%o0Y1IXFpyuj!G!hy|6lA2Iyi=xV7O|ktX@auQ zQVj|TV>GRlTzOZn$^SZZqKGyigr6 z#nq*AW$D`Tm#DV~uqmvq^`jksr->kttT&qtcfQ$ZvD~Q-8Tn?TWQ>T>2J?S+84033 z($Y#L#o#)K?==225emLGmCvvi-C_WztNG%iVm~x!m~L!?cS3u&3Z!!31z`smJIdVx zObBkOHQhviTp^jyekZ8^_VwS}+SvHi+Gglzr-Rj6j;mob&qA?1wHPhc#S>n_cN-FdLs*?Uhe+3FJ{myngX%T`E5QHEmasJ@N_zl-p~+z%=x} zXMuk^e`v`}#m}RkKQypU8{0B@NLzi|*uGHc43~F*u*C({JP3VAM3adqQaz*%z{I3Q z2{HBN<8^A&TEBxTG)ps8FO5~J$NBjn<;L#IgJaPO_8V2mFT!c(kYHw(a;%Ufz8apY zWK`-zS>H9x13tMOIdv|2M%USMhX~+KxoUm))F8AZ)*DxO-9Cj>K5f*j(}?xUWHF`? z0wFtpfqjbNV9v@QSZTEvpfrDGa<;+SN$gVGYr(v$O;&;9_UU@U0!Bht?DV@x&^0yX9&EAWyqcEc)hz5>*(QR|lGwK3dU?>!S0i047kCYm65tHs<%ye9~JeK0T3%<30y26qz z9y=)=`+C(2`_nC{Z6RM$NA?X+yAj`dXDQ#ME9=e(LRVnhhn4#(Qa~4V>D!AX)HDDI zIH)%kE^-M}hG?1&@_A{>t*n}4;o~w<6_|8uL`v73>oI&rN0D!(G>ak z9VYkMsQPojIHGnkt7KSl5DzyKfX2bZ$z##bP`PN-pER)E4gAp#YR85#Z!?hv%FhS& z0qcM1Zsi_!9(Y|C7sKuRYam?ni8F#&*t4APDge*L$f<~ZTdSzf6cE&z^`iIrrt^Dr zK}1|sL|b1BgZThz;vEg#_&x-G$i+_BQBCRAaHb}|j=vL0To@24Rp5{4Bbx^osn=Ld zo=vlBnfd2S=0bTT2n}@p8ph2G&54O+55HWRV_v#XLoYv&4?5#?*%~R$f3Gp1k&6L+ zn`M(YRVa1vF<;WM9vrE4a}wY`*D=gEFa#y?>jW)LbkS7qNY!O$9u8?Ym*sZ z$m(5{Yy!+7@Qu|VFrf$T7_Y5Whs3J)LfXw_d%M}Fj(n5(G1CXjoo4I(h}BG@)&8dQXTjPN!a^P3_#5cC6Zm2kzZg z*fMoNRB?~0Lh_)t?kzI8I;2&;3VW`P8LLsb$bwXP8esdy z?8}yc*s9yZdq2J?%6iGS3}Lksm*rg$i!^NAgDjC*m2&DB$X*TS;ub^@NZc3MrG zE7#bq^VsH_MPJTE2EI(;xk(3+)zx}+=hp$mjRb65$8m{3kvU=x3;-a`qr1ng{ z(SR_ZfPGZ>Rz{V$ZafVtMrkr|36rFSN!#AhO%;CaJcA9d%0=T2`pDR?QkC2v|7ka} zxMNSSt0&QFIvD7G!9PS&yPDTt3BeE=iBA~7GtRN>{;tcd%qEy$7`{s_w(f`b5Cp`k z@A3f9tJ zU91M6n9iBULdV9HE|ch)U54$+_`6Q!X0y`_1{&Y+$(UY$088yGrWQ$owe^8M=$sYb zrQ$)Xv@&urxuv7P-@6PYWk1Stnl6=qN!qRuDezn)#?gt;!re;4CYUG@uIoDi2W=K2 zp$fN&RilFTeKlm92BI40RR)`!g!wh|b{r_4acl;;Dn7(=4$WjrbWx}A8`fWJP1JEk zEQrQh2SPP}q#fJb#NMwc=w2~qc>{`30bvz-br_PXQV79kJ2n-mr;BYG2P*4|ZuRF= z!Ybm?2W6n&fp8y5mo5RX^1By zmgfmulbkMg@5~-(p^RJ(_Z|+z$c1);B2b+7UxJHesTES3gprpjI@GF>B^Cwe0Eox4 zDFkDxLX2_|f{{C6lu4B=uN}Na3ZRin3v7Nli-%_%2fj1$)9vt>oQ_;YRSOL=iGzDLkOY`R_3cJuW zmp>c)IJaGZ>OmTx#_U)jLBHB9QEl^yQ8ECl_fTCH$H~{5)hj{sK7OnS>}Q3yV<1NQ~I6_g4R7e;Yb;z{jvph_qZcpnOD>r@4`Rs)8@K}$urziJbxZ< zebd?OJo?=?-!&9ICW^Y<=;GuwK05g6;7D zH=VGpMgRfUvUv$_2e_7C5~O?R@H3}>RzE2HVm_~cA;Yy~F@XKE>L&D%VS1MhF5DvP z{BfP-&u7`B=-<35pTkf-9)wri+;BZ9-5Q1_8AXPutq2^ zKDo4^8!{95aCb0(Hlz1s#{NsE)3N*bN%&RXG=(F2y=%7_Vz4hqAvg#A`VVP&!|MbC zfK~A3dBZKx3uvBzn3xsFFN?06ryhWZFoHNBBa`0r)ibk+*sL^eBrD`e!Txp>^# zt8F)=$q=RQ5%D68vRonGiDbRST-W<_WO;SLCgDFeS*;$|zOtktudO}mM8n!3?`yxD zU(&B7%>ZwF|0pmMWx!s@s$r`X{6V);r!TN?13c-$TWz$3_Vw^JCKxQs-LW0 z<(hc?l}qe|?5Mdy>}Irv>^1r1H>*FnBzk}KXP2e&2+^fZB&Q@U-~IMKysOk%3JY*L zE^nESw6vH0(1`-e#b;V&?2UAy6b#!Et)US^|>0dV%y4pJk}a0-FN{2D)Y!` z>V%83z9~i->=of@uG`IYSWAnrbhul5@H4X(qKDRvZaxf(@IR^0{r=o*t8qEIV}(!6d?yvHlDwsvt_D6#;EUt23q zyS#%iIzEhl$@mIi42YwMI2smhUW{FhsYt4YtJb}zE<8O-^&$A%)t#3#U`hA*AVB*?K8YTh<3WR{}@5i!%Z8i(<> z&2RqneGA4v!<$bC?@A?6EZR?FMC!Ou@C`BQ zs4~%q0sxWA?w0m8*V{JLelY^J6%iN6YbzyI<*mxPQ3CN#KDfRPRmK;?0BV#apLH$I ztjo*?%}8knc{OdzyF=-E5kX}+4`-_4yNV)zCgUxC(nW%}s5^XBX>{8{gAoU2v0DaU z=R&xEq0CT5OeuYM-p9v$g}Ati2RaYchfNesDzi08g&drp!)TPa0$Q?lrUL-ZU{U6! z94b=eTO?AsU`KwjDx4JU$!YuZ|O0K1Oc{rmcK05EKkE{wX9bY?gpF z23-h=<0@?e-FUHkc;vv|f~{={!pX99>%u@_Q=9s9%*7*M!cD1omKsN;-uBaT0g)9tW#`297O$R!g*5WHTyEfAp~_dFCs}E!uBn_Z4sR z?4F+Z_)6)^LL5cdjnmz;i^E;l6SMCHwmjkOjW)2cA|ElqRBS^*mi- zZ}vJAaUL#41`pxc%VE)fn++H#wZ48<5M+{-POp}D6$vCf-GR_r+kUx4YXRwhztB*I zq6(qGhN>V(btx@Pr0O52jPN+Ut60fFgh*3S1U2-Y%6Ri}j^G|dvZjl>gNgOw2;j@riX14GcUNUKuR4Uy+G%b1 zgE*_o3t_(04{iY4u6AHK&%8^2*TtsUzH#Dvu)&&i32kj`Xh5yjHw;|RE*?x5272Er z0(g06U!ZT^RR_>A5WxN(Ud2}E1o3(r|Es66QcAb0Oea;i%)HLr+BvKDzy`wN&V7udTO9W&= zHssqCMc|=caoC%qEFCk*1syBr{l4_K)IitExvmM$FRH#R9{PD%VF!nY{yyU4%6=(c z$-vj+1Ebd#7sqf|BOh31r63+}VE-sU^s|akOA4c_f5wCd2b5+&Rr0m<^-lDnf}7A{ zLOM|h)z%nx*{uA?DeL8nnFj*5r)rZqC|(TGZaSNf%+@dY~(_~pUA z3tp#-sbg^kJ1eYYNkv!`HrAr%yfpYU;-+EbaMh1w z3nCN}Q_(Jiy8L|TVCaBW&S z9K;i)tOmZm4nv85bVW0PCXp7t6h>Nw8ljNAs9L}=NJ2+#$9aT*-uR^xx`8|OPdbWj zD_uxTA=uI+0WJ@w0m{R@z&`#%6$}*BlYwj;7QLSurchaoGOc7p4~Zqk-;Vv5 zOHE4abUFrf6h=L^t1KxK63YBNxCe^BUPGs0n#Q(eYmgv+BA*}!$}}%|ilSvhTs%YK zkn)&S5nTTq>{MHiH^34Z8w}iP#841RTzbAicZz4(+JP#RQ2I5@-n)`J$nV--PFiDD zDNBo$+sWTjXPwl3E+6god4u@J0+nVHIk11E`)e<4GrFvEu0H4Ll`y*pksV%^Zb zqZva4Le=A&ArOU1SQ1#ELi3>#IojXlAjJ3hax7+lSg|SfZi|rnRGL=A2u5!MJn|bwZ&xK3_Z*qcs0Ee)wz?~jW%!CMY zKm7BXi?*3du$7dVD1KEf9ml~53YGWpYE@Dz=^JwASR&x$0ydHbq=4mS+SRk~2h)|< zU!Dmxq{j^=o)&t^VyXgBRgsBo?rE5NPLT_7O^O>&1oAz_-7LR<0MA(g zSD%~*1t$r&(!VKG6+wKCud2~?;IvI&gI*LdQu&UosEP&IHjN~ z6TDeQO_#Vfp%ngTqqOo_Jo?Cg+hyVnje4kyH1%0#BPP(`dmbI^S9QM2C(bNaA1V1= zCg^tq)C|*q?oHMQlFJwm)DrYnF5N#qj|ou{BVC@cEl)Nc!B%sF*cM3hQO3+5$oube zho=x`XuHGj$oSSd|>+d@({ww7lDY)G_DtRAXHlvMyVSsF^fQ z858D^??@x<8sP96fYfv<1&_BaLI*(<>+5@3ggqpHN%XD^PDX;QR;Q0f)n>#*q*1&o z&M89abl}1+l&PD477OocdVP&*<=ijJ8)a6ANI(S`sbR8Seuk)mv$a+y>`e4L+Hh7X z-(%T7zK_70D`zo~wk*=EnV5)$nfmA}ZIYbpb&;K&G!Hv~0v*v5suWDx>L9RneVr;) z#R*vCjbJgP(He)izTOT<5($VcxHha@oJ40E$hCB*e>>oRKaVyBAu)Vp8BtRqdDH96 zgTQr>l>DxmT>|}zf|aeUy_vD5X3FvrbMhGP9$@t$D96BVd2!gd8!B!{w# zBN=ReU6;EJq}TG!K|@|q<)v_$y{A`49c*VmQv6}ekdu@EjrNDq!&|7iJjJ)FuaH8> zAoB7?&m0iwOfgZI$b_0fl?jkk22-*Xk{w9g1x*(8iR~*mF$A>x_U4r#w%g%<4*EpN z1I$U$++=><6}gSj4@w0&O5_!M1;)<9{3x1#PFNt+p(L6x;S%P(l{n*`VJteuTB2~q z+*!%$UCL8?rA|W*$FH7rJuas45HhcxWpDdJtcI)=jJTPSs~EBdEGGDS^GQ5H*bhHb z)(S{dLjqnqC)kV-?suEL8)U;-s(=1fh>^2=RI+d9YOczdoaFx1+M4WF?Vt!icaVF3 zE-7v?2Ari>445w$1zIGfbaXjLBWOe&;p|uVPP6g*zr?>E#lIh1{QigS-@n@a{rSH% zS{6x5|CTF^pp8clqekS3!A?L5?8rM)!+0SfOaG5O>*2#Y(x)bWw%F6^BD%fmUFbFdmYXZ==ZnoWjjKWk!@b~a%4AJ1nQ{?anedJUw* zezw-g^md}3(UT~yR;Gy?JNd&+?eU6REiD?A)A9jU+WfZl%Np5K|Ej}UD}&Rb7%Hwq zF>Qv3fR9>O*6jT@} zTltj_?;KYKgC;u_GI1+gJMP1G8#P6)``Z>K%N#Tzk#Ph%kaL!ftKz+3(ua5MI5<2u zNG?VuAZ~6wcAc^40-k5T>HBw2*#}TlJZ^0|y2HucBGXrln9sBGR*eH+l7wnsDAEvX zXPDm6@!NzjA_RnC0GBM6l@|kl#)!Sq?jz40nj2z|22R4b&#R&vi~%s4H#jFsY+U6L zRarJ$Fk*XOo(71?Dm;6lY3!Q}f5Qyk(*Uc7e2kvNusmp3lvTKP##zNqArv}VL|fA2 zw}Yxha-EYuSpcs-?u74BSL2J~;J4BHXmhYa_=^@dz5A>(JKc3p^~HgIZcKFZTVfqx z6MT#+gOS?>P2JSC(GYlTTjJxQ{D%OM`*sMvBVTwZZ!PSyhm?lVV%zXsJxa=IK~=Ug z`nt0qsA`|WE!gK41iyDivsm3T2H)#y_h@}KlQ&zwV0#tkOXCTUQ3xRxHfXs@-YqE< z0hI^UYHEpTiPOHdviN|1C3lk#;G%7&tie=9e8GH_4o^W+%TH##uU=DqvFt?ul20gI zGJU*c*X2V$H&n59cpUP0Q!ckejgqhXRi&9VR5IbV_F^DKc4*~^#+itg<_4aTMH+7#eTrOuHJb5yF^Sb-&m2xlPnut-u74eWoX#BZlc%X-Ti}mU z>+BK!ytr*WtyG0cnonsBRkpzC4+3jsQ9}~-SSb|54;ZYZS9GGN^8^bRdV_GH@Xmw?NeYgCKIs@sI* zg@3{&>(Vq^>U$D@Au>!eX(r3ASX<`MSGv;An*98M^8MkUZ5#IB*E!&0KEMO`>6hfG z#i!LhuayNLaSpENRsP=W4kJB3X2v6`QO=SySvE#-%y=-(-!YrPN8o7CGAc9i_?YPf zWJ=+T;9pxPrHBRpIr;^qMMx3)4||gkH-Ux z7I7ceHXcl~YPW$iqR=lbrp@KJf*PNz#~HMUWC;$tRHtg^K~QApLA1h%xbvViJKO{9 zFU+F(dtYOJ)M-gdrL>r^0}?!!wZEGJUwWEq&<@ODiuFJ6jJk4LxM;+hWzNlsg|IL) z1GU(fH<3ovW20if-EaMizCU5U-eG$+>*yN{wV^@U3mCaI;mX9xs_ZB1bXZ+`I zpm7at24l3NJ;YYDqvMw^-lzuaGd9AI8XsdfboyaQV$3 z{`T>c&G--BeD`g9xp}#jZKhk_Zd`39KAp#0sI;bX0#^}RSMoC?x~ydb89@440vLJ3 zfDCGXeevZTTsD2^?9%w&`A=5eBbue<+m0*&t;N1pAr}G8R-66haEyE6PCC(v*0s!t7 zfB3_9eg=zL*ozCWt?C!+2^~X4K&k2D>AEUMq@b$#E8P!wN~<`k(kF0r!XT*tjvc|`>W3oGaY(F+@Rx7)7oKb^nI2?+o_#F>tHe)mWl94=Sj3 z^P}uqdnQv9j<_UVf>btBmKhhLP3lZm$$K z*R_Fl3`px}vhq|VeDXwq{4LT%3#4H2*S6L9@v$8IeISV>V zs`9n}3xb^NcU?Nh1kBUXs(2<>-*7uJnYe5-H`z2dmx_uwH;bDmxLY5Hgga<|w4)kK z&sD=}_FHSDQFa?|syGqiY2qpQy7HcF>SbFS(ec5XXz%Rs;&5;Gh_u_f?}JMiKQTz} z)(8ZuAE3OV55n$c!q1M@2*Crs!k=7k+9-D#o)DZW$!XM-ft?QxPJjcKa+N;rZ_lcA zv}xpA*^Z3vYudq{hIjVf{$)rvdEKm=tla4Pz2V(oaXCPhV5xqIfFQ=${XN&vxU@tw)a= zh-IVEbMNRdLR>uSqC2}h{aOpPLzyhRq+064#j*2TFKnG1Y*pMv=)~5>SGGwJs&vpn zZrPU_|H{@#sv@1xSQhImUlT$Xvx0Q>X4D8WHOJSDuWSi%VK$aHR&~W~9=00C?hDbg ze6aZ(|J`~Xxuur->_s0Y`~JQ;WyT=aeJASKPpW1WLaT4eeVeIaT#dBDL!#Idr;Zgp``MFvaEr zL}yqwogoJ+l=LWn*LZ^wBG8b5!EmUmm_y4Yz9lZKUgOwi>05?kT@9fe8TZ`S26SRW&Q7DVeQrVCdL#sQp2qZ+JW zF2aFn{gOWi1tO@N0i03!$TuB9R>o@3P&=Otoa&JS*oOZCY~VlWiDurbFs=-@b)o}M7kOHsfnlB+Xj z)zld3I79lKbA{pvl+bd1S-Lat(gR1dmmn8@uY7lA?h}sECROvxt0*ch4{zf{{-Vy^ zPr`hE5EZ@~$o5tct^BfPXyJ;Db4}t@D%)@fD)*Gx3X30!9CsfoQ5B9=86|uI&#ah> zQZw>~F}j`$>18K6O)V|Z(M=+5Scu@dhBGVw%B{YfT2>~-Of_UVKsPe3X{P0(eC;U9 z&kgE8)wFU`x>a_!@hUhLvjRgcheZHY>W903Se=XT!po^=%C-wsq?aBAP=h_lV9s+_ zNs0`+iube^AG%-;ZqtVv@WnXBAd1mf*9r@3wGHLSWSO1~#OSvnp;~fhvZzRC{unN5 zz3ZOG&cf-V(%o}MmYK5SoNV04i&f`A$SieMP)9jmCal@eP(F8D_1(*)>Vmm*26xMU zjD_&0^xc<_kDB*cv0EaAMw59-5s~0)LFMa*ZlfI@U!0&_OPN)HG8>i_j_8Y4$%4Jr zV(`z@A+U@BUK8_B@lMfPUmtMKlf-v%2rK4QS3I;b=P|DS12`ah6?y(K`+Yq`D ztge_)&L(5IQlbI`^U7Lf^_jJ7p*yXYHlH|g-Eqs*5O?e~Rf1=;)Jn9wruE>#PYW?K z)uWP@x+o22hP1p&l`^ks#PTiRVwqJPq#0v$SJm>RING4;%aIhD(FVirSnErF-8$3E zSNVmf14$>MAIfGt-)wDH-Z^dHo}{7BnGv|Bq8|?SEGhqhQ4D*oM0U$M#N}!;GY4@9 zhOvMgOS_LgR)C1zsua2P2ix%~zeZ+*OD|8(H+%Bo-r+IvW?!Ejfy=!U3393-@<|-e z(@{L13iU;?6fGEd&zoXAdk5MW zMl;k*+Hx#1bPq`kE320G*gKlBDR;3DrV7)DB!CP>r}*y5+NUlcT zb{uk}7xNIsqVP=8`@NH6(VP!@a>RNUCx1FPwxD0l8u2D(hY#Z$jz}nf!m1;iQPOxl z29OFezXqC84~J)iKEm&d!QD2)u~HBsJVC%q#y3EBgV(ya)X%UG{H%zz{;4a2On=EO zwtVa;z(53(>%Zm`R*gq;Q6{2kVxR``!MI;Q7TV@BNj*9w`fEAEnUZ6k_WRjn2H=)B zItMS_#@xjA=Q9si{#=oN&4UZu&lL0g`On+W4DkHO^t)qA%-DR!f;IA;ggoC)tXtMej^O?U{j#>-6fhP*%)a*ZYtUxX+V ziYAgcyDPlb@Jlmtu~BYzoqM_GUq|2#>7_>?@h{Kw0l7y-AfRi1;#jph(f3xRayue5 zqu3OXU{u_*tXM|LnE<6xK~K%1kXzY7w~4?Jv9@KWHWQA$$4Kkb{woV|Jl>bqtD?hc zd$Ha$%a*2vU*(K@>!J2gXPQBk8uZjn`13CqZnU#gz1FEs1ge9Y=xBID={T?&&^mz# zn_v!j7^LwjqXeseJ9ShRArk6WQab@)t5tsO$dVrho1n{C123ztq8=P&R7LhcCIqu` zFzwukC&vfYUvvRe>YzZ$K9qghktxl_qR(H-VaqBMi)-cPKK#(|TDIC1){qWlT7?)4 zMD|q8>XM=3StTT=^=}a~su_fl82;Ylcx$Wm)Qa_v89|qSMj9JkOfBlEa6)hoBkqOg zMrA&$^6cd5O4e3rCr{%l4n<=Z0+Fz7XqS*()^bPG8!EEuV!VA{h2Ucz4i4F1SIv&H&YbdQi7NA&r36n_eheXCPG57 z5FPyIanl0odsRUFqn3OLZ>RG3%HydS5AG)#-U&X;hZ&;Put1GYUKZwQ;!WZ8at?PI z8;$jUZyqCX5~*cuW~p=fmOXJ}yK|?3zv9h?e>b1(G&aB6>TGmGQ*(d|&?oL`HPV^f z(SNXB7{H|;@bcmR%$P6R?o7I2Bc!ps$%eyD_CB-TxJTri?>ydmyj8u_9}RjC-NF~6 zShf-*N%uC-ey{!=DA^(#PJ^#}b}sLq$KO7GU#a1=-*W_-fm;$y`oBU{-JPGg&2+C` z{<8EH;?C!@p>*`n1#>xNaF8j{5b<}Xq4Pxd>?u0|6~Qs5n@)6ExUv=@q%X~@W%LMX z4F$t-|4Y;D9OK%etj6}CYy;`;he-q!&b zNHvP7zDs0yvzu}wLbmv9_;T<`2Uewj5&z2WSeD6I%bL!e4vQM(L6}Jp(2pW)o!~*8 zJrOO#8SFcP%lDm##|-B5Hjs;8c!M-8d+(0X#$%5PphnOI<$-plnafV3Z$pFHN9lmm zH@guv>-vU#c~7gZu!MZ==#(CQ5-1=sog!=tGgyH^np8c5ss^wSi;trDxn^B|Em&02 zAPaY#v)LR#W@a=<{+${CfA9N)bU%pBIDw~ex zLA3B0YGs5fr0Nyuq0>;L4dfxEvp9{J8tRaDL|*|5@bBiSaotcEw`*Hq}TU0Vt)Hq~E^Ci=2sorK)TxB37JzCbc)mR1&4fyHX*2ocG` zJy4BA+HnY?TV{51$=oey?tgn!D)00YXD9$viA&2t=G^4vQ%1=46?y_7F@M`CtHKz* zMjLah6a$B~UxlQhyq!gV>UTb`nNkKZM$3L7z0F*zYmxcx7~NLfTE3CC7dG;6VGA?t zlN&r8pes3oR>yPDf{q4J_Ey;|seKboE`y29;WE?vBdwH7MhB0JU092rD#zgykMNJ8 zyD)e#i6`%5ozNUoPEuyENRw4yaia2_uDymAD%x;up(hnuvD<=wIOJN-c-zwqmn#bL z)Q*l1emXewq0b;c3=kpKfU5MQS;JvEDHVb|t+FQF&Zyp3vuRr zTFPuXcTwR;h7BlpDI5qvl|Ytq*3Y%b(=USz{`|Re9pi$V;g4!FWYz?tXaa++{*qgk zW8!|hIOCrFbTLwY_7g-$+c3mgbNgmvVJ`5ABo$9*Uz$XzR^#W4?&*iF2hhBQCNYqT zm<{Zfe5ad08jydu@CdL^?vu@135q`zllhQ#Li6b{&ZHBa02o@s8eB!Y5ze9J)%qw2 z>}AJGAOx%?B}!!zrt_eZBO($w#h3K#&^qw~0?L#iL7Lfr=W-q)GoW5~q|a@3zUgd4 z3LsHN^)?Y(v+L3W!v@W4o*+v<`T0X59m=xFyow}@s+Nx!D`l5h=vQq-EdT4mL7%b8 zt3~D{I4jU6=)(TcP+c~7OjeKehnQ5Q^HtVa@2tS&Eln6pk5tl+98rjn$b zP4r>4<*em@c(3~7rpO1d#7SD%g)TCn9~;23D4a=7joty2m&+1=r?F#j{#KJ0ZSB0; ze}YZ@XvZe49X;lso9*Zc|9G;w#ej@OSxaYvaej!LuIiroyag9Tha->!j_PlZHiVU+ ziFY}|)oUI~MT3U0xYE|EN%7K%rNqk?*@`!}HV`m>fLM4PIF%Mx9A&B>$K$pe%ThUG zz}roP2+}L2NKRzSivAOll;dAIMjSdy9pn#3H(K}{HssCx>I(UeKkXj9J~*d4*@QwL7_KzZ zyuG@At3+3o4p6HgNx%o&E-M)rahh_+i7gn%uh8BuIVkMrmUVLtrOvCQx<)xF-e$37 zt~8Rc$iZz|dP=6ylQk*G-qB`TKy|dLys7X^!f&~q7{?336V|${j*!XNuMg?yH&=5A z0|sXA%nd%&*>(N>%dKFA1JCDJG#r%WTWw0Cm+;_wUzM{iEf{)FnTRpLn}+6*YzL;1BR zpjRFmOE#Bt-S#y?!8M`mb-tokm7w*-PCW{#1>d8CLf9769S~O+KFn?UXu+VfDE72} zc`#~?>Zm^Fa8gPpgy+es@uE~fyr9_IHepzm1w*Fjf~ty&>ok}%z|mPf%Foau#6}Jj z6|IB9l-X}tcc)H`@^Lx9TSFfAmp1AdR6fg)Epd8GIyQIF1 zDzC|6*>)iWM#Fsk7I`Zul2NyMtgRh?E}B6UXW3`FRoP>SN|cpQh{E?{ zSzl+Ol<0(x7FCUOn4|bw-JV)!$9k!F5zx#;Sm79v3QqfhlNL zzZhNO(=7HfHYN00OWgo}RBL{1*Ct9Qp$8)z1Y*-u^x|A)=#lxrEp&+eXJ#$}mrKvC zq~olVrlnM-Kz!-bDep4${4~nWc!TLaJlDV;C@0uS=6>h;SR_7jPFWG+KGp&4aOsX> zd-n8!B3zwJ`Y?o+O-zDdFF3t_!3Esu)pCC6Z_t2b&>1LTRpWgczsD>3apB%J0@iM9 z>~mt}DFVVr`m+IQ8iXUUmD+DN3yOQyP?1KS`YE3>DD_o}rICi#5WHy->5KxnPsQ+i zu4i4}VN7LpS^K|ZV0tbC_?FP8^4O@bsgy(VE-&W>DQ9u#kd&}N;;QCdFfA0L+8Xat+x-Cugfq~|q3m&Rn&x8C+7K0}rl2 z^cfiKZJIc7Q@~RDxM=8q)q2K#aE!x(yVR2jWJj&+>w}JW&(9AodPj%Hf7*R{z-&|o zcJ5dBxN>-`h>XjHyjxrQezBT{fl>fVtGu}^(kY~xBFF_R!z5f+6vIBz_D$0crNvCP zqvmEyGmjjYEyFSOtmb71wX2%|wh}cY5AQ0_SmkTYt(I}DYvPQ5xDT^^k2B_$rv-ZG?Xs)~-Av%E5ND`G-dvk2judn!fJS6J^&f zB)u7qtaTLmZgETwrHI8Pfu6z~aao}l* z)(Bv?j9Pp(|Lb4xVzNQC&YBL~mmhG0VIu^Y&=ri0r8%L0H@B6sHrkNIKSK(>T5)7| zZCi%aG;>8Zyq3wG<>TBni+y2DTrxpuZ(LpzXLxk_T^I)2jofNM2&msVmVLi`)guG2 z`WAD}+=sxa97|Sx$)&8$44jfSR<~Fj8_Ed(HJbu!VTQ_ygl5YXg`gAdj%&fJ{mtb)J;+$|Cu#_i{$**M-ouTFB@Y0siQJ&F){$0nrLJ9Qmg;&PLO(b{Y^= znF0Pg$m@Nw0h*HA#A7=;dFjJ~wJ(6plMS~D`Yes9>hN>yo% zCu&Mi1R~6w7VkuX3Wsaw_M)_5A>fa@k2f~ue~%db(P!0C%PCYd zzu)50$%Y0~`%A;=uW~8B5{fu{9$o@4)i*+x2?2R*U-A*HS%14n3rkE#I9eW0o55unycuBJb-tcH38D27PJlQ zm~Go#wBE2fb@V)PL0j_Y;c3#=2qUc}gPIkLV&OHq8e_E}X_6VBngEuhlTd?PV_NWh z2AF)}A~BycbYUgxQTN#RGA8%{6hbm2^*m23MLTejD6nr`%Jv+oqBEH&imMfWf+X1S zGOU|??SYHXamJlGZ%Bl7>;(M8YU6n2!Z?yJxL5FDg%X95pHh8=5G;^{bzKKMmEZq= z?2(ndU4*h_h3uIqJ49CY$|$>QW|qvGU9z$xC0W@cE3;H2O45*#%>Uu`>+8Atd%g7P zb)WNo-k*Iw=N$KWDh!%DA3PWew~kPa=MPGlojxZTPvuIGRM2siy5*>%>o9}8l>Y^T z=&A_*2bnD2UyqbpNS^Nc>RQ9Ms>-i_CN!ujTW@Dj?=@<#lJ^F zc`8OH%kDVwmluAS8dn;mf}^thlrAnt+Z`*6C{P#OiAYIu?Y#FRi7rHB*rs6YPPQx4 z&j9sEQG#f}PhXC=TRbx3B(SJGIkx_e6J1V)Z0 zOOC#?2vDThChg~KtIu#{d^`P0BZ`6}968VFpSNq7-_e0{ z{i}%-snaSJf2D`b2!hlSIoliBMz+QAGexg|)WmKME3Q|F@ENtf|M^V3X3O?BCvjblJ7KQSSw7q?5pi0}DHA1`U3{(#KV%ZC{p*BEC|0h5od(0XK=AEtrr4tE zsOI8X)vIpjR&xVI`pRqSOFz0c^b%1PZWLIjbd^@~O5uKLOn)!y^bFZelp1XHx-pSG z(S=T@jb2k*_(?UHlp|!oTzg%upYrnTry6nx&(lK7`E|=8vI*>I-1px`mmAT@ZQXTV z`K-7iJ{$1WC*fP^`ps%cP!oPfkV2H z-g=7pcJMi*sX4)W<<*`-Un$95dp-5W z;@3{$nru*fX4NYAqsOCxKc66NR7)9iSWYo8h7~c0s0Ij90E2T$cuZ}%Lp)LGNW-cH$k&S0_}-^!%PDHrG(+#x(dnaURsN5Da2}1j8*5f2 z=#F6#jxu!N43gHmO*A;qbyZJ1+ z7o;Xqs_l>Et6p*q*DYNGdDwdbj(>+keysb{nvnSG4B zrDZc2p&pUaZQMLL`kdP}KYqk&4BOjpOE8DlM%8|%g%`Jx`>kU>zwm=$HgUm3k1tnt zQr|yuC*p1ITUzD%#;=J#BLW`a(UbGc14aDd>^mpCjvF7RwP{|q;5HK5=sWj`+`Z34 zt2^kjqsUT`=Ep&n&3M83l5XV*wIc4;Twj@-V~RB5)8oONeGgrBri+A1A3PMcjZq+I zoUn$7@hvZrXO$4-DfCxq*Uc}tv-k40Avmlo$w*||JXW?tqu7gUH|mO!a<9oeQ}o#T zsQi2KWqgH%77g90?d?K~f40{%ziW51cc|u1HN+>5@iWV?t5MV8(3aa~y4)izSw8A7 zj(8UBpvxaqaL1PoVnl@S@1QB3mN`>?rS(Dd&I!GVavG}`DT^vkYMgl|JGOKcJ~94Y3zB# zVi6Z#x;^u1&whR5q|D=(+W~Yu=aQ-r6xLTWN}oLb$c#+6ZIXmzXx28Xp}e$8eZt#4 z=Ci^vak8C}O7rAMS|rLO0vI$Jzzm1_H0tICNL+O{HrSEiPyxr`T-ma5+v&;(5=4t5Zfmkm<k0QDi#*+53JI6#@UtiQcnLu>fXzb|E z_%9EQo{O}e{2-BMnlL@t_PjZ!fu=P6@yn!P*Yzg@ zTepRO5qO(su{Oo65FPnd?=HP^Pmmj@QtLudzm}_#kEjIkB4HyVNw~LW;E_#Ros}t} zYaQ%9HwLu1tMfmdJ}W|_C13n;#QxJ_#p3QehREq>@1FB~WdhI3X=yL9|ABm}l2`D{ zU}>45#HXj{%7m-ruIYE|SP2Ivv+NYFVI01d-_lpDdgj*$NMF6>3id7{{|&x~Tdz-R zUfIGylof5ac;y%Pf_>_P-&zH6F5l@SHEpjRHUHQ>m#lEEeIi``8;z8_vU}(&AFoBl zRtlE~8H0uq%gj+OsXrbWrH4*lLVl##T?kye@!3{_i*Nf&XbzyFViy;C2udCyCyQ9%d@&nmg;d-rAr(@FifcOnZhp|+hgK>~a- z#w1jF#;l`B$ACtdb3kIBY8}TCIyIJHP7@I&^h9MC;qdd9a%IEUwCk?~)ari~YUzHzl}uA3QklQvn)>oMQCH}RHosSnnx`2z z@w`VKhJF`^G%lI91T&Q<&!v3{sh~e@e^YkU#r7!EER%rtwp_tyd}0lW7=jnb^Q}gG z9p56QQj$q}PBeL`PK&c`^~aE;4t=wtnJPAp_T^FCQ4q;H9`)*&Fd??**KUpv3TY63CPtR4Se6QvlTxg%{G%AEOwa-zaLeMk80vi{jSPi1b0;FY7dF zeA8<)Y^|o>J@%oCV4S|plH>SX>N#&RGQu*mEWytKv@yQ&t$t2Fo8;ZyV~Hhx=g$>z zJRfjS7eoE(>yxkwyX`mN(2`2Hk-;P|9emN`A?|y_3!IKgA!Ltp#Eg`W6yeky%`B78 z94_a^@qh4&?7NJAFV@hlGZ$C6jv?1MJ?iN zO>a&1(~sZAnagQ~INZ?GwWWQrDut_97tS|`#Z>3**h_)f&2=usGdj8|`LUpo;09^k z)he9FG8#PI<4)>J=ABn+vTOVrDrJ6aRAgG16ZuR;Gk!!Zw`Vd9X?Rh(hC2 zWj*~Qi{>-TAtYaeT9rQLfV03Tx1V1!uB`;xdnuPV<`pS+x)#t(UcnAU(Z|Ul*)Ask z92zP)m8Avc3d+>(j%Y1%uwQ2I?5N<+K2pv`M^0WEB-?3N5=)aw5!TLs;zIw}dMTZo z{ZrG)_oXA3=DudrsqoKn`n~L$+O7*+l(gl7oFe&6-tz;jM zE-IevmCrN|k?!?4D?NUkM?qm~)^Yj>Rm6!L-1qYr^b^F0E)q5qKX?t~(c4_J&t>NQv`B{DT8i~G7&W38_jyVCy`4U6y zFD$k{XQ%G++kSb_;_lR*o0n0`D7GQ>fw9Xn<9tuyu85h>S`MdunIj`jPSxpbaj7vq z7Gu|7ye3JHMWwTi6D8Ua?ru+C*@#G35c0H*S5@5zduvkRBRgy$-CD=6ILL6!xk7_J z_4>ewyz*9!>ikdZ-|7an*!4g4FCu-7YmAE%%vTKEy&SXiChF8Hg0_4!<+R@j0%%_?kBAGKbamod;)N0o00+pjA6bFCqZ(+u*@KUAMJH%z(E zF2gq2Fbv**d!og4IdHj?bF75qd)7|WMa9`Cj+eqk2W?Gu)P5<;ttYFP>=qz@tP1Zi zw-$tO=)3S-*VS?lp|}=OBx5mec7*;K$Ax8`qmNfLq@l%g-gy)6&iMQ&&xl_(ap}Ju z=^x!>{p9M`T>Mi4TZ_5hPLc~t4MPZmpt2+S{hd+iuU=1VNW7bfk<1|!wK4L#opIyx z4?1-o_eZoHPrJ$Ew;9T(dq%~Wpm}Ro5q4` zeN6$5x2_J+UHY2ESfafsSO`&uU==yN&#E(tSADwTmqJbWM&ec$m&mB8^l_}_7nCk8 zL0iXD)ZIpck@W#f8!o?!d>#dC{agjlO=~keeqwa+YHTI%5UZnby6xvE=lOwPq*e_! z{^@8*)*Ajck{sD7`IwTHtVb{SP7G1%seRkJN@#ET`%FrV$(U_K3a`a@LZTpq=ScYZ zlCuE)mgDU(+nMD#gW}kl8$|r2WQpb*3b#+@AQ#n`NAmEk^a4Fg&V9JjdsaW7v7$I! zg(Upf+vgWrAFFnul-TIG&F3mPS#Frwn=+Wr z>sW!`;w{JeQHnv3Rx9=U28w^dc`se8qmw6OV)EW)3Df^tl9y6NDdik`- z%tKULNZeU{Za^E0yj7;DLw5zA zize{sS3L5`P^=&6RfThwMh{J#a3YaS)2!}_eofC5JRDQE@fv&R?wbww=ps%IUz`lc z@lll6>i7^`pP@kWv`$gC?Lu;rRc)RsHv2*qap!Oyj)P7w;qyhlaJmF*Z#kLq#&5nl zUDoL`!ic&4ZEH`Smjx8OjP!=1=AlT3oyrp1nIJh2LsC~)?X$#ZZTezlf`v{ZDO)@p zDQZ@)fjbrOW)FzA9u31TD^<&*K0hb2GtSkE}wCW?fW04cB!@! zep<{){ET$D^ZomZ#p`h&vBoW12`}XA(D|L7YtJ?eeuX{rJheWu9efwxWm{R}8p*iN zO?oE19l!HQMzkUy!C&eIjow%@IaM+CU_0!7SZr9k8p3er;Y^-P5&p@5Z@Hhu7Z|uX z-D%m|Y zx~)SQg>;fw(OkT5J*TRaATP$J@OA!?##1i*nv(Ibn%vdv23>k7k(BOskF3?N$(E84 zg|T|68|y%>;LBv=`+gTh@s9Q`oEO zE`i`FM`2siIlq^v*56)TOWRl<<@wGgLQ{z9U)Q=syOVmOv#frOJC!Bz*}!F|Y-DfQ z`PwPr%~-Q>;uW?nN~|*rPibS8DgA_M>AZ!UDtBnV-PvVnQZ?8)=DJh0)_s|RYUJJ{ zztS1k+tEv_fp;ipMqS@#8(t0%FZGjsPm>&f1jz}x3A6RAhsD0qFi6aQ!oPU4vN~ek zSTGKYIE_2&Ty#f4vuUe=t@kTE*~gtoiw|b=HBIKeE#AYOjm25O-SS$%;J~-N<(SFsM)WE zvR1o?t(>15rB&#X{*)sv5YZrLZV;>gnzF<%-@#qdwCI%!@)75gzVXQ77Zv6XBFH?C zSXDydSgp}o-R|H0?_X{z`n!ZpZ!X{~-@>)FG#hzd(xA_Nw4LHsVMg+VqwG{%YB1OM z_;EWeB{~klkbe^-ZDfj#3p08c{i-!AJ9~qBdxp zKB$+N=bZWm?y?YnHIYBgsF%04)V$I-iA-hUwy;?Egw>2Tl-Ggfbpr41Eo<{`uGXZX zF+(zQ2ic2UBE9dZ(_X25UAL=Lr)>-`UVTmR;S6!%8{rbH;1lBvy$%NUk6d%woRFmp zj~^Fs5@rlPb<7ws)IOn+pCm3G`Qq1;ua}=_{s_E`XO%W-?ADPxO_xN;Z77SkaJz7~ zi;l6({~odTb~;shxJq~**J!tAq;A8bK=3L*`tZ<}D>GUJ?VHcU=|u|_whWWppT1Hy zEO5>*T00^kxP=Q2BdP3Byk^qRAfKDawB||Y+f;_mt3lNdDWhI=j#_-qUitPde?k^>a3C=JdSCI&M>9nEZL>Qq?kzDVv0sOyyTr`EHu&;E+Eq z3~HyuVay`T!gYGjPnhEKgYM@xL4HYQ=x;TOL>q^|nylHvAw!XW7t&}LPqd94r&oNX@xLCUbvZ)i}u$p}tVFcJs6HQ@_39_m~) zf*y{p!lq`iCIVb%F@>FFK7dv*z#>BBFk_J%^3NO8j(jB$c18+hlA~3#}R%k4>6&B?oW&79OqQZcS zRDg@%5m9D;fYLo1L5Ql0Lr}m4ruAOH$smNFT4l^=E^fUg5i13PLLi~#VVJN$G{)sVf&#^P3lq5Dr*|S8WL)W?j4KL5 z10RI`L&oiCgEP;8e4FN2kQ9tBF#-+SkKL4TEQ&+=HO}~^69Ti)DnO6|4BL@)01G0B zI5qPh+`BJHGDAQF23&_AaTs2s-~j$+ErI}rxQ!r$TPo?Sd0s9+4?AL7>Qv`NkY)U#cNlKijxE?%?U%$Nf@Sm3XPHfjDwF#PQpwP90C1Q zDjWzR1p>k+JcrNwK=L#CI@*}UcE5yhO@G=J1yMT<(i)y7Zx{EV5^xdaQ)Di_CxDUC9X_b2aOsw)(U>!o{}9h}(@&rqz$QQ-O2d>QWkADjrz1#EbtnWS z-2Pe1h7)n1&^Q8@@xp+bENGzM9n6X^mu>KNZ-#UOPR7^V!|?yR zQkhlEc&&nT<|V^S%_l}^s^ARFHjJA3`si^62to*BVe~QdW_uU`)Ro`3`2Xh1>wP0C z2jZ}g1q-9Pm0v|;12ZvW5qCA2_$Kgk81Sx z6tr@IS(wVbRW(n(1~7Dzn61b6tUV8(gqxl1B%VYRC~e}P(!)z=PXSssF#BUn{K-OB zc!ojN*TrDYF)fvUZ9s&oEB!|RW~x+@2m*h3(_rR5*>ki?FY2+W50#BNWzWG-U_x17 zLRpvzAGD(>Kj&bUjn)Mv(mhLfwmSkPgRAEKmgkn1c5{!Rw|hIbcp+i2KkE`l5$Bfqu?86SXj zwg#fY`+jUflx``Q(OvIj8b57PbRz@IEd)H6er6y+iR6RsUw{DTu%G*=S<=%b(UH9vx&*90vkoJ#aG8oML$4`ZYa zy|y(4S}}5CE@5sc?!zbyth}7P{@FedNqzFa4YYFw+QGv^Sz`|?kgAMxI64r%ZCk0V zpzphhxsFiP+w=4ZN<|xQM|Zb>bKb@|RU!nO7k`|RWu|2>{Qi{pOFFs)Xo9>Qj&fQqF zISsvRJ^!uRi*ECda4@yUgEj=-7re^ZGt6<6WI7J*A;(kCbc?$ISU(6Hcpp8Ki?&E` zF#-V(G_^Iyr_vx;6hMW9XJ}168ncn}530zOM<#K=ifP9{Zwspjmx|G_ppyUg4$w<< zi>ll76rgPJoxz-6%xln?trE=nMcn3P|9PMi2M`g?^XmDYB^2P=$gl6*>jXoyC@?$V zjJACWasw;-f7@Kit{|ZqFv)=q7~aCQb)%)TDnn4i>7+XyqVIsh-2*7$nfC3)9!7xT zoV&N}zxl$HsxP+!YmgdYu7;QU(R@1P2o5-3&Y2fDgCHj2*)iKb!8fRf

    e@a7d;4 z*FzAtpZOq25auN7*}YH~hY#OMj%F?ag;xfI54@=i_=1*5dJgBvp{QGk!S zEEw9iKPpv%dZ_1wxx#D`+rtQ;VyX~qaPynyar4CkZ_7J?9kc!W7S+cOM|PJryP1>1V? z()7~^O$PQxNKjdiFqbS*?|e3lL4K8k))~I6l5;=<$*pk74q0E3X!ErxNRvyp5TpjP z%C^%UOdD>*WL;dB3&0ja$B!?M^Ng;a}0n|Vg0-wr4 z&C$jC|Et(CZyzkpf_hkYXw6O;gT4pp69frdR#A=dJDxyRm$R6vS*M^eVE2vU-~HIh zm}YDvkOoD9n2oeS4q8uwTFkwO5QhS5T%acw*eZf|wTy*mKCsJ!u@}Kh_A+e&R5-A? zj?vYoRG@kO=Wb%u*TR4J&wa@7>SYiwo%NVg=hnkNN*3cD-Ycv!LSC_>2Hi9P7KW^& zEoc~H9j2^HRK%ovv$P&aAox~T)%ZRJG$F*O!aB_Sp)4OzrUna)K4(n-SG_~)c!?PA z2+DlyA9ALzwUL|zHsu92Jr4`d)8Ei?4$k2o-b(sKsqH`klHn78!nccmt)VG}>k*{z zaM>;#6&D5LtwHgJmoKN^XiQH1fn_fH-qA!FwME+lVEw2hOx4K1KDbpah;5#R17`sH zAgDT2?FLA>u*;aUngA655o2+nvKtNJ=H!k*?1NZQr|IzM4(9hh zuAX%4RXQ-fI!IXfUUHl~UXqA73o54Zzd%MGLZGFD{`;Z(V|j2s0yQfpoX0~grQ*^5 z<4__a^~!t?NK-=4b;3LMne!-xCWOpilkan=zASxn9Mr3X<8Y;dLl`gabFiQ$nlNpC z)A2bM9{?=@(81l~;E;01KOmiE#PPpO=yR8hW}u~>@1Fq*9(b_z+rBio&#^l@z(kvL z3{!aL&_6hn06fM+CKhC#x<~em>0nzIk*4d`ko_B{1s@QjK>iXMg|HDC+G{| z<@!YSK1lc=4_b$~7NA3R{{CfFR8Te^@4+$qx0N+)_rL+O{sh>ofwv^j3jWBFmV*ad zsqN$Le!BMbt`G#(hl7n2Se|iL?c?ZC&8-I}xqT4M*^gGLAY(cY^|pwaKV*Du2v)e_ z1y)g%UK&^wbVsMD|`XA8SA9#pE<`A^! zPfr1;mepa6#Gb4)N4X~*p4XL zNv0jZNk(k{-TiQ&arUdK?SP4C0yIkSrd#*a9~@=pf4%Adla#cuq-;^bN3r)Js8E73 z`1ptHU}rFUS)Q04s=}MVIOwHR{)4+NgAZ#W(b}+efs@FG+9;VW1p8kpoB&_BYz2)tJBk0Cp|cg=2z4RO0tA%&5U0P%tff4pilR;2Mc5lH>#g;l{zw!h=Jy z9{dGjoM!W`3wXT+=jWr=m_b4`yoV9}YqEU`#>%fQA2}f?)eYWA28U=Zq4g>2#ay5< z$-b8y1+k(EA|D=ysWd2&A>eRJ1~wuT>x%;u#y*+A-NH}$z<8I#Fe||j*hKjQWIGrs z`!Ih27wvCgV`E$if>;j}g5Z!i)xR)8(kmWi{}0@khnAJjhFb3>=d1FBg XFq}GAQx5&9+6Lf1_)bv>&_Dbii9Ja} diff --git a/plugins/s1-secops-skills/dist/powerquery.skill b/plugins/s1-secops-skills/dist/powerquery.skill index e533d60b3bb967e86467bfb839aab4352a387882..531074c7fe8ee933014b0001485b9c6a0ce46b9d 100644 GIT binary patch delta 75270 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

    %k)&w7yIbMisvF;V?=x^3$~`NbE-V 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 z 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 z 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

    3WAvwvZ1xZ&b94^#EjvIMy%vUEK$Y_ zZbu@!%E)AuriV(&TGE4CDpg0p%M}X~2SH{g9p({$m{bC(H7!&HXsW*~{%&$A0Wr~49ax57c3wVg@U}k?Pe;NAgA)=+!3g(!r)*b~Q`mlU=v+k$ z7@()vU^V_4fyu4n=T<|YhqZbVS=PThW?zd!Lf9{6j~cRx)O~Sq8`&x}EHc1proDr-j`eoH)>_Aq98G{Rc`srLb%%keH;^En{~H=fy&d^XYXk=z)SR z1N649mIi()DsXYcCje`e5@dnU{ir`L1-z=pVc6UFVG55ZhxXSeT0=l8valk4X;J`Y zoEWs_djmC5ev|Dn7WCaFloNI-G!WU3;$F1AU$A9Hc+e{%Hc`7ou zEgKl*&MWcaD-mMGV>a}G<|d6-$3Cv=8&EzWfe{3EYu+;TK^q9|b0O3bQU`EQTheQ& zbY;YdK?Dtm8^uL_4#10}1PKzM8@T~SdR9xj_*KGLY&Fg)T3 z{?#TjmtMTXjGTuqJ;4PnIOBrRGFt9gbw1qIpy4@~ylJ=#!jASF6NU4w5LX7XNk0=c z%_w1{=XsShd;*mZ6?R~>1*X~YjC-|=3wKz_culg2()gy$b~~JOz_P0vw>t#LV3X&y zeTpbgnT_q;6Hynw_uxtIETmNDdQ?hz5-GLL@<;ta@! z#^LYS3XjIY-0Id~hWYt8V*~*Nv7gaaK+jl(+!9MsihSo$SRX=m+{d%5h6{#a6)h_5 zM1mdPt{eszEYS?3pdjE~H#y2Tddizi1EjBen1oyil_SS+Xtch=o1lB{fUi()`AkY> z?svoW+Bhukb_DUjnY5R9W6RpYxQ&(xpt^;cL9xc+QGZ(tgbl!k0gD0})M$t0ceI-7 zD-H}bCYXY>@6|1J26hLH$&!W)$(Ne2R+vFyXeEN*_Yew7W@T3U_z=ZsX;Q8W>B;x! z6i@LungS~ZuJ9gJO52tu){cTx^A`%{Wot{c5k*Hz|%=m47tFO zAQvBRA&>a|0rSiAnIRoFugBNhiHDcho143%oue!N%ul-6ZH7x&$WDf;w$P?+^ zQLNGXI|nTTy4^PVF3!*zkxrr!2{$b9q`1168kMGyMLGFR3gylF) zYhA%+X7bw{#c0Z`H*uXvAUt2ig*ImOEm&4&tDOuUGW&^>yYZ=tNbnSv->MXbJ3$fF z$OC}U%AMK6)kBOT)I*qhLH{KP5=Z#XZUM{r;3y_I8x1difrT0#DS|u*pGoEHr>R}X zd*v}CeJd{n4`hviG+0Se{g7U3&lkF_&rOT&Wx^FY4e!T4}hpf3^PB0KS{ z(U&7P>k8GFG2JqO4We!m2oc{ORHMVNL@sp{qHa$w?ubHv6plo=+eSvIYGcvqltKuk z1qe|&{)H6siQlV0%>-_B-&x30Qyr;|M0gLQ^G>~sy$is1lB!Et0_Ms3i!wf>=Q@7@ zQeY*2orzHq`*&%0TtxAJ2v5CMvr2^)@J_cLL zuWAVgDFq{PG72X05FzC@KZ)`*^`k0yTEImIZnI-^qa${rk7SF~w3nPzulWs*ftXsW!@G^tEjQt7^pQMtr0>SsM0X@yb@Oj`h)YfEjOs76X)@*ml|`UU=s z$1A{A9&+$^LKAWj!70l9cE}F_*JNiL>x+uYGbtw))!dXBys;xaes>Ow6F~_RrSwku zTRr>s8Q;AfcZgB3fDazt^T{BEutTOD=xs#vW;@H_UIdAA1E%Vnrk0=I+iz~|$q_T* zl%9dO;Wm}Litx^eCH}^K_3@W3{hjtgFAI5)C|9BbK$VWn;(ELLW2s4ug756`ZA zCl||MxX;WOYc|yo(0&u(xpttxHl$)mYk%QxeEIM_&?LD~3?YDjDI&jI{tURpPpdc7 z7cN}c?BFxv!z&Q7hDQkqJO}9I_TWar!mvK(EsCVU6WNY04(p{00b!)%<^ZY}K*Oz5lCp@vNJzdqkb%G(m^vR7>Or4G`IuU7a<^fU}P^ zARy>k#;V(LS0k_dw`*Iqm~YJok88`s^&;47^J56lQrQn5Rk~E{;sHN?re=3CVaX5o zUyCvKO)JITV-Z2r$3=tqx{j$OjfygD;o7EC`ZeyhB>OK%QfcE^!~WRFwV91Ly*uj@ zQVILf?XLLkYF>4sFMv?iSx=`>XH0I(lcTF@Z0IX$qREmbDY(zOVQD zblY*Dbkufq3GoGPt;mS7qF8vO-uGrzlbt0I4?x{nR77rVp-r}%0)nR*rXCNd#0DIh z1q1_|CBw12R}LU#M|rONE7WIEcb82D zgL9FXWb+$XcQM_&$GMleh%PbuFILym&Ajy3vm7jf9Dp)3C|u8YteZKmUI-CPab9(?7AsTe&g`W|^Hk3xaAuB?LP$HgpJ+U^WJ@rQ z@@0svn8_<5GD<0wBTCB$mr&eXa}Q~AlTqy9+5@^LxG$MW4!wTXjO?DVEN7}UU9Np- z>1?Ne3^2$CZlRHx=q;Wkz#bx`oXSL9u?f7R)#88b!`}=ZbVvL|RkcqhYl38#sdP)) zMCO8iAq%l`MtzhRcA%evd9)iE3w}p_nV~1JqNe^y)xB!Y?}2;s^dM_21Ko^^)|~8PP_8ub8h2ITMh@=L+k<*4S9K%8c)|&rgN~Zar<^q{96l%cb5x6nlOFA z1VAgBAn;vsB!@T5L|RiNoPGxqxnGktmIoitB33o^whUk@F?>==e|n z5O&;}>b7Z#_;-1h$x^p{+ee)-@h@H{O)lz2Yd{X*#3kaa7R}21b`%bEi{qK8D74-H z^s?g)HQjJ4l)2;+bN1#*W>y2^9Pnw*ZouI5ITob%m#wq|QW!e<)c3@dE>(M8BF4x3 z-NCri&50)k6gX$7J3?HC-7GD=Z46!gQ~UHE#G7#MI?6~T#mVA1Op)n(K-qF!Il`WGvJ`8cSq5$Yuet`SG z^)*q=9v?5*6#V6e)*#Q@7>OkdGr7Xq_NJRc!T; z>~vFqi3=95D}%Ln*-7$I6Z5%`uk^CTNrrPutu!k!In@aS=|`I-&X^eD@Gm@s$+i{R zBCdc8vj(0A(idK5o@%SzP60NN(Or|!j^p!fL7!0(+{W64wN#kCYg8Nmu-%yP`Q(v_ zG1J&)d$i@&xP!LlMDEQN>YQ*`vU&DtyrP)fcV=v1nd}m;PRx1g?Vb}WMzY4+;iRCVVCZq9`{L~-fyc2vPr7{ z%4z9_802rd=Z_ZBiUIaSU{+mkbI)oEo;|#E8{|%8r!c9;*G}sl+XQ`-26Num!j3N< zj*<5kpSugN&F!~o_(3MB4-k-Fk+Jw@2Hn%Z_RTm<3hly4XwB4mz3O;PIB4wB0(6(@ zCp#QX|2{Ek#bOim#pJVA&Ue z;eEe<_2W?rymwQblFAetxA<{3(Mi#QMCVN)x1u%}OS-=t)e6L~^`8|B)6-ZlUvXC*ETv>pV{lt zmxMd+q%xk_cOEvJJt~(6JsF|Sks&QqlvIcV(;l~t9soVg;T{#v>(ZF)I4MKvKjrZg zg2r+a>c@?xk?|^#p}lmKTwkHLUw-eS%oEJ$UameiruUyshm2KR?1x^WyXK(6i_TSoWwoa1$wloW)c03NVi>J?!Nq|UQNXr$KVogOHaQkWGVxiDJ4Bp?6@F2Ir)Bo3iI?(j z+?AML|cQr zvc>Ii)Ds*%3hZ^zM>Wg4QxVR-w!Yl6Kz6Bb9#c27f3Qn`M z-#jXi6#?=9h^y}V`CZTtiM+=`ge*>6;0{`mNaU3uEZZ20d~~PQ^)+jw0J!j6r0>-V z2uu2wt}=WobFLX|-y%n_Nmh{c=5o=XivK^?4#1m_?2K?gKu^R#Ks5jBDY^D372N;o z|4DmSCL#k+5e!>VEw$iE+bM#Db`z;1&7w@uOsrK_{rJsJUEj;fd2s;h$9*$$ay*Yy za!+*8xnh#jr$lHTgeENzCOnkKW03Ox&CvUblPs!UYiCoc*dZnWM2dDXMXE|jq5uHr3iNb2YVe=+lncxD*2H6iGHv2pMoHu7bg8K+2Y>elj?+O<+__DSLwMr~A) zq34p2{+Tg3m*i@E2etA-DCU5&+=3J=xZ5r!vi>yIx-K3I zpf0-hUVaC_Hcby_M@Fr$LAg7+I$ODmLq{KZeq}ok6Gn~Q>7Ptbr*eKIO{s6L_L1o* z)AVeQKosmI6#*WbL=0+9482fRfe6MNeE6-EN0EWRQ3x{_3Fv^uLt$Moe5?)6v`e@4 zVtPre$l(N>7X6dU<|{ehb${mj2S?qAk0*QHrDgI(n7!X z*%SZKTiFdF9|ZvAKu%r-YYZEVus5gmmNp@Y5!m;mELRK^WEa+V+b0c2eyZswVzeD# z$wQvM)YH@7cC>apMDBCxr!iDy&=kcR*r}J=eBLqEFx1BaP`pKQ{Ou#KU7G zOvVnN_3_bH-k85qjpSkcip&1|m4S=LCq#`Jzsqz1+x1u12%~~x;!?9TQ6?K_D)91p zQ%cO8gb*ztn50}A{4GF2drM3i2FhtkVks{HBm9y)Oe8Oq*!K>92r^-$p^S-`w&|D3 zMZymh7c&R=vQSAwr3T`oPvWe%Npy5(mpTgDkK7;n;!jWVb^=A>YhVDwQJtSY)H>rM z!tH{;{r)S8Zo0;*8j}ZPK-S*XJdZ(;Iy8M2$h=e37zKZ$YBq+6SK(wi0>a}toFdM+ za;91SyV}D#0>5dj)X92|LA|?{vcUS91Ic;ijGY&7_Zh7#?scx^88^kVXJusYw7Gk> z3l!R(M88%~Pad_AH39zlb@Z_@@ll~Im~fg+OG;cB{i7Y&_i`z-w+jhEbrQI}i5xbB z=;ujoxaMs)@a`{ROp6WS(|xh}pb|X{ey<~)5OO=?psS~-5Wd7rj89C?4VRZ8=2RC5 zZnOk|MJY{(Z58L??BbbAFt}RRI2y0Jj1ZT6O!KFMk|xLvWRQboE1A!k~uR1{RN zr6)cLYsO+~eJ<=SFt$0&4gu{?YoW#j0=QS~$%v$V9N{kkcF=0uY_@bHU*S`$Hu?(^J$<29uj4KxGL zxHX(kQfCf8D)T37ygS7cjUM++(b4^SIP>A_>U^|WE9}lo4B-10p)v)^V(H?&8Cg>^ zuXEXFoXV;lLCPg3wO8VIs?Oiyu7dX%4xwbnQ*wU%v9yzxem+sP`zM1R<2^FyH@lg7m+pyHYgZR$-YR_ z%H=6pC8mQ+CH%^xlKre%8`w|C61EgnQ>=L8){X)fQtc~+qe8N^(V{Hw`tvk9-s=Bri^$km?HvAI>O##*gQw3Vj#N}h}i zG+8uCI2*%GkhK*F5vTnO;JHJ$c|JZq56ul7GVJRad!>*wv^=R}AQ(p6cK3bycr<(4 zbMtx_OLOb`yVDLo|4vQqxA+49>b5G2u|C`|xu^j(-UDF17)-2iRpP&ksE>ZI#e~A* zDteM`s;r0JJ_JHxDcQ`CiS6oHMIz@vUN&HQkmaD^%^BpvU;7h}w3j!~ba|{9@*od; zxpxQXd@U4gCH^3}ioHTRIZ1J_LCmvC61r-6iHFC>5j+oN-V>xTb>087-W=~iKxRDI4gF!!qIayzJHnyS1SXr@xPZjGW_ezDKZ^%8cZZL*2CcU7`! z9c|B!vLl=FmjT7snH{ob#kF!RQb(XR{beu@5w$5Z4|zlj=l39@E;nE971{#p0JCFetjEQi_;#Vg-PHx#EjBOIT5O&8cCRmNKA zvy=Cso{^K6rv}pkF>V7rVX@3)8jZ#UCp~9gj{!w~a_H}q+u{fCor|tylw-59v#jsE zhInOvM@xm(;#EW!5_UKq)BuKW+M`QpfupD8Sua73*LYQwYsy*edN%07&PYgrbjt`=8{NWn9asT&GSKg~ zFR5aA<7ohuL}C{&UMI)duv|bXR+9DAwtWgiyfog8Zn(X;+1y@Vb^o^}zy5i_0H1 zVPr5e*5W0@Vf}KQhj-(NjIA3b@w&(~6*Zs2?h=iF|t+LH(%!PBe8rQ4N{+j9+Z!GNI z_z%&O&Ss77mp@$nF^k$a0)fAv);!sgUg%N4S$URL@s>eZ$CPfMSUKB51Upt>meSHq z`Wl0UPx}7zk26ijh)DFm@wT>dBO)a*ut8H`-L!8rBJuzEE@MvA^6US4aGO#(kk}D{ zfR1I-5cCPj(z?#5F#bQ1vn`zqXY4k_pP4=oUcj!SkWwm=I~NW!uBZ}{tBH1tNg3{l zGv8JK$=?H9XLzZ~(6^1QE+Dve^rw22w&^ep2pY7g9X|h&Ao}lmWs|d+l5lsAZnLT^ zpM>F^XPhxk4o)-miavnWUGkfy(lFs9dbV%)h|F#Ll{nAzIyV3FiO;` zkelOU{PhV+3c}cc@q`WHnRqq`{6Uj!-*cFh+0AoEBz(96zzRTeqyXWUUywmYo@UqZ zv^iJ%mQ8+LvH~_DJ&UiaFKhc<&GK%6QQ&w(zD7m-fA@BB5f>MyxM5SNr~&I)Ft ziKPDfivh7{-Y znXn5aJCQn&;}C$@wuZZKaNe+;eB`GmF%OrB zp+e??a|@|_grpJ74V)54l_pskBNLo)+;~j6rntQe(hES`GAZ4zud2Uol9@VKAgiP? z$#F{L2?#*Nl%GKECs!|$wk;F6M^626a0c3jl4E%Qozocy`2-6W?v>(P<3@?V;B`^B zXJoT{H4$DECt zc&dqX7^-mj#n*^4u_?{+qs;TSRHWBihBPCx5CD*=sVCf%eV+z=FEt?Uw5gIz*&VO- zg`qx6Lo|PXKK-{&(7t*6>dM>3 z&&hd`mh-0X(wu-iWJQe@dG%#C<*dRmI@UPGn$5W$RqMxzF=^l4`grbAzb)x#SRF?s z0l44aoz`ciK;cAc|4K5Agwq&9N+ayi%mmP6oJ>b{OLUwtHjoTG8DoUIWb4VNl{}>6 zndtz2h^39b+})BS)u{RPMfQ~*I74Rj;H}0q7(>@VgI)9og-GOet6d805d~+19RDa{xQAg9M%QI48I~dM7hGd@>(_& z4Zf$`suQ>Nyk_a%e4&_UWORfv8{Rf=2XMY$FoO^cvI3Y4%?dT;#BvWjR1Zl;F=T-? zyAA$oGvd*a%eIkqgsV-Z8~?%0egatd^WsvN5#cb!9b>SSa4p%;%~k7ko#oqrROJ%I zC`uko3W*em$r%gKOoq0>Ngl}5M@{D^pTC4jKYRq0ltawQS>n+}(?UC8AVK7_!n8(c z5+?Sr9`ePubYuSZX(&Cjuj#}zr%q4NJ$3j0s^hn%qQM78nU=1>DCregR0qtPcIVAN z%XrS%t7Y?SEpJ=(g1DIco{f&ntI0IB~h*k#p}ya7}W zD-34cAdBO=G}vJyPAMH6yM(6%V9@E;uvn$fjpmut**Ihs;b=n!5Nj?lnAIEXBVPk1 z?TXvM=SSt+iF12|G~NT_l4D|(7zFAljz~_D4qX+Jx_1#7Lux}LKs{rg7sxgI z2jG{d-jC%_w$?^sa;c4Md)I1lce^X9EoV+1sVLTMFOn01wYpPmS~XiRL=eCWf4Y zYfvi4-=vxk9ys_&6u>3iFdoHpN+)}7V6&?FT}qxnj0>_Ze<}TV7DVcm2H6SwWlc%n zQs4cQnRv}b^LC3nII@s$w0?$dVIc>UKg>?gV!G1^+YO`20C z-4~HQ35GigPArWBRg-@Z^-&wbZVsXIw+$^7>@%)&Y7FNP?T+>YVDV2dX3e2$$fd3N zZ<8r7cUkiG7eJ9JQsrTdkog<5uTfnPRB>|HVr%*%zRb*k2ZF_+9;4YHx-@KezIh0B z<1dvmZ6Pjcs6mBC7#`t6%H{?amTJ&A*DMI z7Wo6t-+ad_QvZoynVe5#CW6ngNy2(rSw>%Y8}s-PTr3ypG zKS@fKZ-Cbl^GY+Y)BwR8Hx=RfoyRiG!`XnQq0OO#rZ0TCSU3nc$l7cgZWPSHfSFO^ zaR=NoQkU)b(I&Dw{hq(cq@2@1OwbgQB6xd;9#J{=+QH*P*>!eO%etZ5Fpz2@QUnus zaE^3Z$XoJ>X?zWtjnIwgJicI&0g9z4q2qk2mjDezb*+XJ>mAFP%4wA^ZTT5mZu|w! zFjV9}^4ykwI!^I|SVYVdu{@;I4=AF~{*0NZ;YucKHPho(O}b)S@7@xOep;ccWtfFr zuN!P)o+27bd}j=($|byScaNYc;>ozi$tkp1Li&7MJP=Q>NJ5>}j63>#WLz(gbQkMY zEr8Q`6ug?qYM3@}(>1EfoW#`<&pG}|G+){o3TaA@ipXxABc*41isU4V2>QlVOKa;Uh+st% zHNf5qzMpSv`9#u=cvmB7DepewQ98VfPy*`p479bPvb3VOo5iqQ&XO)?=C?Nw+KvwA zjoXZ=d-!MS@+P9pwYxpkUiQ@>a(q=GT5eojIxL|hLOQc6JMw-(&mJbopXiY)oVn$9 z3VLA>ozF%2hY)#bhsS{e*pa2 z;GQ%y?q-FQ-xEhzn*wqIeco1|33X~(5{`V5%LkFslPsxe?(K#SA@0TL8uARfNhRt z>t~`XaUN^XEH`$8^~DTc=IZXy*bM+P;Zi@_-=2j1S26G6Q&~Y(qRn3F(_ktr*Wb9% z8}MYxUGgISkGq|(r$sXHsxqT{Po!o@$vDMw{kvi$>}6X=xy+te8|e~~Uy1eBK|jM% z=Z%r+N^J{06I@ED`c|Iy=fdg-a%qE2JX%0TN@iL_b5qnYi#j+6ZJ4c{}^^{@w zUmacUvlhfS3B7L#l75EIBoZKvu8_s9b8d^iWvj(#kq(6YP%|E?vxEDon*ox?UShTR z6Nf!5aD0{`E-hx~Lp`i?V3tSgt6Y*4Ow%#qw=pzvOUKnY)V zVj1AQj8bHvuoT>iVG--vl+v;^P9m)jdBb(iM|>NlXsmpa#dSfb?GNx#K7l!l74D8c zcn79^a$}m?fTLAgyEDYJX?0~0G7qK`P{Jo#T3YAl@Oas~;zR+D5&`4MDiqDb?dIma zpZW3gaw!dc4y1#WbWlL_hkD9yJ~5~%GHuybr^wJcOh_1-=MGX9ukEGTqvLaB8)e-- zy&uJk=za_csOyrq5(BuqU8aVKn?s-hq0jL7PTt#LQourRLAis}=~%^f{fiV8uPt0- zxo2{QIcPP33=IMtfW!>N!o58s)sJT)InvKBluGsu)J|8hRZ^{zW>x+~ZQpZBqo;F~ zZjnN{C`c*!qAk*@q|_$c12#Z2=~J4#h)Ym3LmuojQ3DVg9{|fUU!>iAB|YzdQ%iqo z?U&TqyMUHbN)5O2>c004%MdFBilJk4A{L!nIoR@SdGRR3;e~dm6pZEDzq-Q&{q{Xdsx)_?XH`PhJleZR?Wcm2Iy}uG`r}SV{mkl8Lyz3|o6Y*p zt8VU1)S6$0D(hk`Dd{iP^TFLby%*%hXoU{-fr3Odns`mPa{aI+4GIxqSa^J8+o zt4)|^6QfE0qs`-(-*Lvx{dX-c!XE8gUePLTlJ-6Mr@Ah+V{Oi~*@JbTecq|dESXaH zg4~pKg`F}Z3mJyJZ)hYuAguzu^^iL8+jM&;i_{oY`;YHTfTJ2d-@-|r-xykPO7=iOut;x#@-_ZaCd2uq$k?` zK_7KKTzXX(_QF|EV|S&-mzE?XNP~zro|@}X?G=FfU2ShaIn>kV_XYNCkz)cV>--EC z-8Rw#4ONihgZQsYeH4#sNv*KO*#@YVU^+pCu<@+}buiV3@^6+w=J84|*3L#b!nV^t zg_Tg7@7^%80SzPDzv)}UX`=IO`QH`3=Z1139(_Nr?+%cTEUKM*t_?LsR7E#0+$nnp z;lcr=^>;D%tCX$n;*!eD?LjuaB$Gc?%H-zByWg)CB=G56_s9CT8WDc?!se5&&cEEb z96cE{cY;Rn5j&jm(IP7IziFtigP-NN*V&Fgt`famM#YNH<84b~u?(LuCy5y}P|L-$ zD0M?B@DgK=hHR>xP4hgxjAzn7Eb;-sLd*IO7yfllpYueUZpnQRz>-wj|50YrHJFO_Kr5DEQHD)Vn_vLHkJue4_Dl#r!_1PI99 z??1VLoKhl0z=f`@)qfpV4`?7@uqR+3ATSglAfRFGFT0I#w;z3Z#u9YhbG1Sv^A|ML z6>JY%(mP#pH`^0Bs38LjClW{5gl?RLRyNuBuv6q`$#-t^(7Zw%@Kf6mg4FShp@%Ql zuvAmnT9beDK=h0;<+gW2TRgQ6;+SN0qC{j-lrmsXoRE$)Xh3rxTuY24qzfMlx z^k!U|dC{>w&sq=PkLxoq&~1a`MOsmnm#!;-q?-dlo!mT2JLKepY1)*4r(^((X}b94 zt^`2wn5;5`;0}j#w{`bsf0EYM`M9$@GJj{YkiYn*OUh^%Fg*dK0>+dcNg%B>uWOo% zY-Ea81OD117YXy}Bh%=8OZA4!KFkx*Pwn?CEslfg$pj~KL=KO%J1pOg{Occ}v8ENQL-9G+;9*GteuLUX)7xg{aTYjnnA`12saTrX~qN)-D^+$sJFF5?-8Y zB=EZ|5+hn+9ihpcF}>^cciMkxSpcNX_rgtc%dEIEP^7#*6k1bk8s{QR`E2-$TIa6K zRXg$P(&y0txX`rk2>!ub0ol+S(mlef$`S(xOmGr63UOb5J@Zr_-V z(IMpM>e?G~stM>p-2?UfFjg!ubUmLIR6VHEMh+6!nmDUhX&cKWSAS(o zbm60Vzbrfva)mz>1)|DmqMm3rB3bP$D{2H+p~S-Y$G)-C-;Ef$4&dFF@FEVVhI^*( z{h;)}T7`!6HpO??%Hkbu4NDJA3eT+m8|Y~O zp?|5~u$)xF{YPid^k~GR2m6jEck{GAySddoe#7jEhz;`PWXIhgd00dim=GHuO_!7c z4S=ZCNSSpwNLhcBdI2_nJ^0}Jr>ACyf6@ORy3VOP7beKUv28miwr$%dwr%H)ZQHhu z6Wg|JJDKll)|!j?1%1_ByQ_BXXK;Q6ALeP!$;WN$Ki?0h&(1>AAqKTGn6^TXPX%YW z39~Sm2T>lGBztj4YI5P3Rq&r5uAwF7u2eoaEZDK>A6 zA~+2j3bh5^R0MFI!%6)Ye6OG4+7b6bYGEuZx z2(bWi^b3*~wT2UhSF~St%>_3aP^cZofEeE~%?A~dlqADNKQ>q~)R&gu|JWqDU-qS4 z0E$}{oKhVDGBn#2Phvt#kSwB#Cu=gY1#3afb{7wjslmsiQAlv6Y7Z3S^zibMMVSFe5h>)9f&9`P zB17!5q3`Jc9N4f-cbGiiDor|+*FV{utXX{TRI8s83I1eU5)BPYf&^4639cV?_tY?X zQ4C0l+b4Fqa!b3sfK*;s?3^=jsPkxyhBvDgVCjV|$1z(ZVgdgzenQb&nhakw)qIU*<3X)p9M^PA`g)Z z&~uR7kxxA)JkM%ScGdYv!oYmqS)vj8L&l|@fCD$hMh`RfDw?v(tm(Jt;g7x?;z0fk zYPE#_O{T_gkz`I8lpNK~9z&K0)RVU*gtn8CMSrKVJGM%7zoR1%xk~B?r(A^={b+pb;9h{MQ#YR~&rK zacLoR5h)qGLxRq!EVRi`4C9_*$4`dfz=Esw#AXk?ONjLy&--&xHG=4K@rV8Nhwg93Yb0C9!a zPHs+W`~h=LspBx|b1braX7jJ&xifuT!@&Q+Lsn%1-(cwSp&oV~H3#*SMmhv{CTEPA ztjO5>h|*2ay{|HfrLlv#y0Fv%NYvc}f;gygL0v}`MnAsUyos%LKyDBer>n=y=I6&+ zw&q@&rnIXv$#O}kFw(aP;=_R-xEsDU3$i~V!dN#aH6rc65*MN2GsEmFL^Ike4i1hl z_t)oP?6$2d4KZ|s+vS&4ETWv4d>#`}Gl|J~@p=VB-r)Zi06%l{JgkPTZ zd2x4>x@8<N8sTi%+n${PT+Q*EbL(U=9|gnh@;u-&B_RO~fz@v!($LBE zb@Ye;uJOjTqsH-xr|mz;EA<-GHOJzb?n$Q>j9_%PRLsySgBPWP?nmI|*h6e|O+i|O zXz!OJfgrxO0y!GB6|Q)?U4`hdE`*SdeOHTE_(5i7Wkc4F7Y0uUPc2TABxfY4tZ8 zRHk$V>80O@yYU&d`HI&0Jt}>!(<0SvC9@=ZV|bz}nf*AmNt~F2aBNz$n?0d7G;tKo z0D7*v5iK=!3V8Y$OgEQ#PBX)o@>9sJ4)+l+mq-Zt9S# zg{b73Vsi1mc82~PiB|2)D9jC&+F?qbyi>8PRijpQ$ol|;wUn^ND_ujwWR4GRCu!0~6=z`}Y6V@81CtT?h`!jaa_qMih%%xB({pE3< zi%c0eV9N36a!}euP2E)hlU+QpbyFHiXc=}zBa6Y`Rn7Ll@fiJfV-+Xk7=7FuPQHcX z>rP34W_7~PIc$jmJ&_EfwT$^ygl3vMCU;lrK10VNgS#SNw(&T2^femFy0n`FkgQjP^ z38cg%9tsscUi?5wwJYAKUY(2FG=p}2wmNI|*8`XOwS_%U#18Xh61j%U_jCWt$<4=w zZBw2&Uy~dGLrFLg=+bdMMoXhD@ZWA0&IsL*1ykore$(1t2K?y`v5P>-wuxq)nG9P1 zd+!80)qYjXtsInZE&Ca2NWSY@q)F7#zAfJ}O^tnqRIxch+faBM-)OTz2C+xq=~dDv z7ZhwPXO7Ajegvh|jg*}$aKm6gMUJ~wP$vo=H(N2sQeF|iq%v)4F~W&U)6zqS-69FO z{)1ztL=HECy=z}Gx5k)m1>qhYuLCup><=VNP2v=}+8h=Hs9F_S?drJh4pc~CcL z?D%L_D{6vb?)5_0#?#Rkvu>l4R?ibsdeE)X_6QeGI3rC|7V>#^*jh@6<%}+@+8{}# zNyw>;gbuM~CFyhLLa$%tCVwBZd3R-4t689hBUFj~QX7%;KNc%Wh-NB4Bs3ej zQcV0g#(8pD8u@3r5kz(&u`ei6ZfBvF7@_M0=w;rN5zJtIl6;jUfASwvD~>mQrWA<0 z&{V4fC0{bi_Yw$AyT4N34i`1&hbj{Wq*wFH`7_yGkyAU1J}|62Ij^b1rzcW$gYQ~3 z<59Ivl?>h4AqC!DJ~~r4LsV0Me%SmU|BGxAePb;Dw#_Uz#i0=4i`ovo15TUKGCtKj z2h7h!Za5q65N49In&p99KXLOiJ9ADncIB=}Pjdf_$5aiSShms}bv?XRgkWaugp23Y z)9WB&3mYT|7aP|#&ws)B%_|^PRvke|Ld^AHwjNJRdVN|v7R>hs8_AIXGxcQ>(`biP z){47jyC-OPV@hda@ zYg`+g2!VaTVvcGXejqSsG5cG8l$`ihfoPY#?l=3s3%Cj6R`OJvtCw-L3`GL7^HzxVOn|sN^r|8I9a3d)1R>9 zEz0$t5_5%#tUr#T*yuI7Ew>B#vD46p%_gpDo8$YlUwEvj-#=PIIU0d+fET*Ul!u> z5i`muBxG0SpX_EpJJvC2p|}TR=Midy);&_uKFqJK=r}&*M)GF4cTC5Sce84S0{2=A zmtn(mvwa$wmf9I;d?;ZUS+z2wj=`S&e@sbR=6Unn^7roR44}~wk_+QMnG3WvJEo&7P#$kb1?IHsJ3(x~8y4_t?;Vf&_SiEGF zg2AAdZ9~Xwg0AkF=-Ca_RkAHhk>SteceRR^#TUF}Y*6O>3&VW651p7#Fz^x*leA8N zQXFeWbbotz=K42|qEM?NpHz-k`C2mDNeztV4kI({g$3#>Lqz9w!;_$NwQ)QQvuV%<=Q@;mO;9#pY8X z@Cr-0#e&f}Zds?Co9$O#(lUlio85Y#lSVtlaIDLD<%u`C*YtqZcJ5mXFBbFBtOz!^ zj{%W#k{0o}6pA!z&{4ujA(@k?bL;}p5CwHihK{%)?oV5dUBKdq_h)G)P;qOMRjsCb zr9~_tYSiz^1&xrr7JN2aiX|YlKKZqdj zSlOsjw2R04nxI5q_i06w-5RHl26t_~-63xx~=tNpuv>iy)Jt&3=K@G3sZD?EGaNTpx82S=}F?7Y~7k>&Lhz6A!Q1{ z3!DsFzh`ShH-?$`7^YaOr`)Yk0+%L!xKO3aQ1>y`8ArAsD5FBeYL(9({yc>3FPmwm z3fs44^Uw+XQ8ocrqy0c9MiSNKW>+2$IIx?R`#Mof9?7*JcV<&v@LvhyPfxH^+rQ;` z${kX-u~E%L+re1c;n-aahWHxmnQH(vzA#ylncVQipbg9kMbO-xF3^Yv>u71w~8BVu~*^$%P$BUHF zD|bNRI+!&EbXO;^&ZOLOF~U26F8RsF0zASmJ;LU8zw4IWbW64}alz*diNeduUlT&; zc^^ukxehkRdpq(Blj}8Y)i|5C*=F9&uU91Q^6o z34HzLZm+KWTej07jyaOw+B?`6@%6uHP$zdZexhm4y|3%u&35bEyxgkIG0rJw6Pg^> zL8N|4d=mmyDB=-9o_MM+Af+?Vl?B**KRLjWN1) z?0Uh~^1HZ$;|O_173Mr^g0L2M6(op1>(k%Kr=1->6W$wZ-Ny_Xr-btUV)@QMl`W>Y ze&XYTmr!6C(n++a5dQ!Tj7VUJ8L+3ca=nUMW^|H?-d?t?PK|q=6QiEY^f?ZiQkH&q zWNmIcDg=PO{S0^h&ax?*uAUn08v{M_m(H*N_;7@Jphw%TCTp_lZQ4;Bb#VDzvZq*u z+f6IQw@yTh{Cch$Sx3Lai`c)mSD@0nXM56H-2Lz%-uy2qV6K4IXTqB2y`A;3$b}wG zJRJDty2%7?v7H=#7E7ybmQ?d_%Qb@j_b%*h^S~d|uAY>vPXy+-y#d9)nkQYc<8q(Q zc+OjR0_lH5UYk4WfOnhBnqch(`Bx)2WT@fTyBcQ=no2G=nv7Rdx>zk~So3U`)T^i$ zyl@=4=3ZnmZ@2)$dA7sLXIDG1Rj;aO&(9@Z4qmlf%S~VJ2x?KGIbHHG!(HxPomqEt z1TMeaUA(@J_BYS#DQs6nfvgnSb=$nkaCJLAi|Zbj4sL;!{d&>rMXX`klh+7FY|WeSzb_gSSzdtH(T>g{hU1JopLvV+GmbKE z9NL-{@onYbyq8+LwwNuL-B&7zq^M{VsZ@^Z!aH%Qg=!@<$%gYk-bzpdlCcu4NZQJ5 zZg_*wwuJd{YZO#{&Isco2oj|Besdr>xH1^y``KK)ynTc<;fkKEis1ic%WiVHU0a>) z23vU=U7Y~TR3uG`X+GRUi_JuI1!ZQ47Y{NbVL7GU5r<`N2Azg8MxnYT3(DV`m#kYZ ztkw|0ik*zzyz8;pG8wppxd<6rVaC3jw5m90-^E!ZRx%pWW@;_l7_HeNu!$m~j~=_t zN@hzo_Ho`M5`Mov^L}CMl=A;3eq+E~3Y{|iVUPz{HRJry(sh`b^}9qDm62%Iz0$x9 zQa}eAeUa_Q*mm-UQE{IjftWOt>bt-#hD0%`ie6$-6H%3~edObVvPo_r(h%((iMMEt zGL}n)EOtXPD(BVJG03wtt^9*NRT~wA;{!T$6u(jJ3!boQ5VU)iczoc6{6)Se@5c{# z{AUQrDfZV}dj)=schz=keFtwX{?c0ONLG@PstVVKZ#q2Lz@6P#$;Jd^izBvStS_}X zY$<9T0fS@NIMZ>hRl?yrCgiP$5>MUS@DHXna~}GRo;wyJk^DMLLWjQxupu1Fmka}A zeeURKC*BA_`ps%Kij-##_1L22lpJ{A(QN=6Ru58<;>b}&x3dVB<@wH5CO8BB9E}l3 z!w=1U>msq*KT%eX(bg1=xHcsp8GJ@c69oNOjk3$Vc0ePiYSy_vcsm%Zu zMLvGRjH9#y(U9JYR|~)DM2U=CBXRj~#V*$?NYk@EWzYR?qT2dAneBY)*j}0vw6+rc zQDER`$MWKKyV)Z@_ZUW1f00?wSVOXSpI;aShZ7?Tfq1<=y>N=GGp4IF!*gyARnlme zMQ_bg`FV!8G9Hr*AkHn}9^K?!MPUIRlgiUc)geW%B^iXiki*^dulj-<92pSLTdNWo zV#Ebrto_tV|2P5z9D}juKT08v)@vZEfRz()U=yaDsm(B}aUC<Cv`@Z2w(VX4-S1 zY3M4G4E!ezF=h<5{AHB1FSiP`DXXLIjuUkE3CjqqMT&N9teAYbGnIJVWuXBLKdYQ~ zv|P}t+#w?m>1_$Ll0 zxH49r#>aoB&UGMRK>oG(wCE96G7Cn$^Irppb9g`_F*MgALaOfDm@yN%-tIYgq@ydW z=WVLw+=7n42Smg+27V`IXYvE~28R35@%GTr#VkV`h%Qi=jKID~y;7Os!0FcPk6p0CED-H*zru- zW`#ruE0Y)zbNw1hQ8NEBTo#_<4Y5X;PCxofsGby92YeTwP5*OsCnv-tD zhDj!8Rbo5GdOax+aV9i%^k&-ES&iizEgI{yn|@1R3tcFQel)+Ud)2MJP7$?*TT_cR*M(AJjy@O)C%c8jp{^>DK{dbm1z z8{352)TatU9Pacz83W^{H-*fu%HU|NItXk!Y=HTEKCOIe+v@)H{-{vrub|Gfu-yGa zbWU!Uud(p~@f4@3jC1Veuk182F7y%x;D4b(3MB+-wksE~JL&f|oU62V9OYaB=ocD_{nJoP30?*pzP>a`RZ9n=G%EP$um zX1+FPVQsZS;>f4M$e2NAcBfaw6oN2E(692riY?cKX`-HxvaEDHq>E6N3wK2ZZA-LI zyE#;A*F@L;yPZvH5bKJxGu!IRJ%b?f$me$USbY)G)3pq!!{PDo6($QdOYGuR`hW~T zITkqovj#C@#~|5;?Ce@ix9K9o9yXfbxov~nYYwf>$(P+Hl0l#xTZ}mA=aol9rKwTF zl``&0|IjvlB^9t${50O>FK`nEtsODCo}z4l3c9HRyD2VLhWDbDT0DbqGZ|%*=PEH^ z(4-w#gmMA^2NOW%7VAksTSH-by7GM4R4Qa$VfUS_^zoYivl`t)mXazCJc=P_8Bj&~ zl!A3n&(QXWYfLpaCyCx}4^tEBO;1p~e%cSRs)vZ){j#9~v?kiYz^vhAz)(9C6l>FrU3PyFh&JD&?}~5VFji3*&@djKjW6QYH~7# zB({{Q_8(seBB>V{CZ8~qeeV@>=YhsW2pg@^$S0&=ZAqEB-BL%}bWl+1ZnztRM~^D% z8Y+I-u?9LO{3YFu6Tg>Mc5ad%Iq5RKq1tAh`X;T%ig1J)b|=crKSJ=fhbJj*WzhE#<^7z1gVB+#KPE(V-=9cJTAagiR2bg3!?U zJA}pt&+gxq7jWQ2>gcPvayM6&o53{+^N9l($z)auq3`ta3FjTC zlzPI#d#h&?1E6%kg-jQ{i@R3v7&5oE6}-i-5A~y|1@!gE^yukf=GU1zwYVJxxR_yG zH!M<@lw)h08vjdzw3+-bRHBBGrT2s!1K$_U2>kxE%L6RXBBH#>S<2r7@#T6gF;f@N z+G~T>T=lm`Lo{V)Yb4-25L-ywN?xji(MN7}hb5+Y!OnbSkPzO@^<#bMsH^#Q2yFDC zsdV94_!r}RM za-Yn!M+NfOp*i2Flk_`rEu>eEF_#0t%C6#}7Vf^!p)rUHA^ob7gx?(#DZS8`{dTmm zn3N8SLeBn#4QO4tKnaVkQ^^qUQ{HCt;S^VZ)*NcbG`8Wci#J2F0Em$QRj6y2HubAm z+n7uk54#VMzf<$AC_=%%GEC#=O0B5~505U#g_#?wF&tqNpBjE$WRJw)LB0e4sjgsl zeCc~`6A<4Yu0Dr}F;?9k2Vilf@%_lUsUw#phQXtO&GPQwc3yBs9QYgmZPWE!?wPtU zAv2VMa!d8a(`_XEj+8v3+W5Qsb@sy1eV;5p_KZe$PTOAE6X_>ei|B__6h?jkc5z5bIq%b0j!Xe)q-`}=xAwG{PkdO^)z{9im0NtI zLbikPIw;d0UW4e4qa~w9Y@2k0Ef=B)&J^j07nETE{W?w&gH=ayCxgiKOD=4;glRL; zI_%vSo({V&g5lG4-zYvqOG32bz+6;IOS@EG7ZKz`M-I&q=`c z>NDgcvX=il?enW>41g>d>g1#7imUYjbBn~diIM{O;K!9|H$A7U_*3!eZD;m8M_@8y z5g!`iH;_c9Ni+N1U`#|f)0vfw=AZX)o7x2ycI~~MIi|Jf^aasme=YfbbLx@!gcJVa zisoEe?g2KpmvrQ`7B((G%zVgoJ?W}YYh7uJ5siht4^yTe{LNL!T1SIa>H>vfeMkI0 zS6yMZHmTvu_PLGjb6r=NSCgQ4ep3s|_$Csbu}|32;(h!6&b>%U26g|y&3CE6ML8k$ zPv$Tv=JCJoxLnWku%da3^mLJO%y8&B`3tKRul<9m9($oJ%6I=0$)WIe)V6S<`{wysn=a`2l$D-9m7CYMyNCJJv6cSQ@qY}epiPLMU4sn# zsd|Af+J~;HO*zxQW`9xaG&FadT@QaX%cDZNk3-UBAAK5yZKI5zJ4PL6B1inc+S@Q_b;-*|XStaUs^i?0} zI{Zjf6<;&m!e(50LE^xZN$@bpqk=9lrHejkHB2*j<{Bme&tcNBG69jGixauJ9^|96 zD`Wx~P$FzB`ay@X-}^zkQE`3WNGbpX^G7U|dkmXaD1xI_Dr{YeQqbgb+l`MzYAcS} zIzQ?&kvOnzcMtgFVSX-muX0_o&F7d_8eRd$ZH$ijH@U2FV~p;&ve$=gnSs&8qJ0ZT z`(ngjkN^|njpLr(FUbG9_GaLISM>}A1atuh1jPKmK`YQ{zLO*v|DR!MSwq);lO4@> zwXR*IaYm1>L#hqKA=4-aHNStOB%J5UkOoAnvr$u~SWww9`p>U#SaNoqR}Jiysb4+0 z^y{5pwl{sx<92<68E1;s*hOIJz)TT7&ZU9>%P* z5fj;-4N2Q#?F4q9>$tmc3x<;I`}4dq^S+$Vy74ZJ!^3_2-Gw-HnvJ`2>=_reh6%1) z$Z}u79)4eM-s)uBUJG3SpaWiAp&VVUQz`b5{s`m#{LiWKrl}Im566?o}R&pMD zp-G8_6M-M{6~WXj?%=1HeXecjyP11#o#TRRmGDfjjTghVvn@Usdy49R?Tra1>P9hv z_~URo#o#2Z7(4d2PW%26RB(PLi9^9JHq!=rx^PQZ&wdOagj-N#0PpGqg8rCK7arUV zM?cY?1K(+6%q=vl3?w&{FVTMlOby+rwW+ZUWF(8PlVFoe`?JheHF>96tLu7WX;h{9 zTi!*=Os4{PcS`=w!llXNnKd@?b$^r%C2lL)Q=p zwwuv}SyyDd8GC4n!Y4M77Wxub_9f_MB`tEwC~bI$j5F>Mz-z8t%HMkM*!|294TL*j zt;}i7rG8Z%3uxjc$_Pg!N?5FHU~lX1)7!Y{E1U2h3Ogl=PMkcP$%J%-Os z#f9>CB~>~kRC3qXB}g2J_3i~OKET7#4fS;&-iZ&BDtz(#MP#<+TG+2O>16jYA#Bog zh3FL3-#yDefQe$pDOQ?iv>+395+3ulBGK@xP=_3|a z0ib>edRD1)Y#9V0VTgQi8R(loVmRv^;s7Gd9qqn%vs)H}2|TH`FupqRzQ>0jUaWa@ znC2J9ZP%80!iKr??@kz)iq9v-YKigZ?aHm2pSOBU0KnI4*jJx}kxKnv8>yDVbs(Gv zlRgY6ATyuHAR=2j+3#7u^esvSk=`z#J|_Gt4)*o??qjpb#kgJ9iJPQ*hjXTa!|o8z z`ZvV!v-x8g_3tVJAwij?mt4~y#uXZobTx%V-$-0G!1H4QeQ<(b;^8%pl((B<$+Ft3+9=6ihutsk=AGa^-4O8w+ri&~x5)`H$J~ zt35v!1qWydWB7)V`1OArv!^ja9DdZLmoucrNr}%K?D>TG7J*>Fz26;StlRaMcsc+Q z{q2vlOIbS?0@XDk3S7dE7tigh-V@^geL&moM56TZfq*b<)0E~Q2-5ZdBv5HGbN~PA zdBwZwv?-o?`w@w7K%ImjHlC3YW~g3aM7Cj8Lu*OCUXd&2~8`2U5gp6U= znPH}`cDP?>2j9ced#pQXYZH80x+ZInF6w#`D_&E z{<~-T5XtPoxTu*S?|I~-bfjb?5};wc%#fDE{=aAqxg@k)j}9SshCJzgiYDyt z$zn(%;45BOXDXERqOd#QNEFK>;OrA3?BDB=@yFxH^~9_R;Bu7u*l(j#YU^6!^+Y#QPA z41pYQzDc7XgkBGStnd-HvcPQj-x8_RLD`-RQR#Negpve2PeTsfc1rNz>^Ifm^&TTd zEzuz~MwLQzDTXK^yb(=iRH5>(BY==ul$*UmxW)mmx5!dwV#0s!{X?|!WGOJHo^7(r zh%AX>NS%zv9J@Aen$))1@REsydm!m>Sfj*Gs75sKK_G`2C2EK~7zV9QA|Fw_+axL8P#IC@i(tl zGY=T0e0n??44Ld*P}qflhvCt-SmW%#5ex*J4rRmwIf~f6c63LA2NQge8L5aT22>4$pS)zQ93LKA)(~Y-oP$`8*G3Z0?>~W|m zA^Z>+QlLncM<`5z2xGH0Nk9)CQlykXuuLNzL4ZR*Ff5}M?J!Efk<^V?%X_gwe&{`C zfSZa!&iL#*IIobkvyKT2R1YiED_w9{M|MZC-q+gR^sEpmIUM~Kql0%iBjRz8D^S!5 zMdCPQe9)yBbrm6FE3An!7Z$R&Y$5Pp=444mGVHPSAWZZnR497VZos{za$(58fqea_ zgw-N@d?YV0DY#bJZHvkn*o*g~$m8##!ksZ$A5^8g!EG9PU)(Y%r6^1y z?KCG4LY7F@#$Sk82P}bnI>Q_g&1n-o6DBKzg)YQF%s-u15w+N z?I;oQnmi4xC9B-{emqEjVYRLotc$ zV15ULXv@&<%W#$Wfmnm4V=*thXRjmYov-J+=N$qE z8<+V$KLAB+aFfW_*_AGSA8z+8Kq?P3w%H$VHSTLJdyrq{x1?{{GT;SA#+^}yq zBw>aDqUche9zugrdGef)Fb}}l<;FeGfuo0b_wn-ZH3+_)o%_2a;JU#%B4IpkqB8}i z=^P>-24S?MbsgIaTEzYqy%Z=h=iX#V*QMiZ0;s;0gZ&yG-QP3Eon2HBwRCWEa^yGh z38M&Vy4-(e2>x{aMX4JltgW5hjr%AIn!Kd>Zy@xu4`yGx3(uh7Kae&DYzAg=EwD?t zDHP8m@Q^GVL*8Mb8`uVlTuf-|hCwutrWYQZr9j-t7T}!Wfn}{{Mh1orimTuQ@CZ*p z0C+~xpMwa)9bqjIM+=3C)7AGL#-=xj-5Bbu&l7o-SnTE(@8-Yl&Uw#;Zf_>$%zVL`)7|yw-`e8m3GuCW@%Cn29WN^%ZosxQs#_SRCOfHE zy!~%ILTS(zhV@U~>CCnMJ-G;dOrnSABH$vTi!364+g1I{%|IsUJ)BnU{RLi>?yi&W z1%URczexCA0ZsS@Wm`xEO*#k#je8k4$#ff2uPvf*0o?roN$_o`BRB%AHlh%X= zg0#x%3<9?>d@~+yuAwuI$HFv#v&}}Hk$pGa4^86(-CzWRQH(Z(mm%*!c~dBh0N9cX zg(mYP+2q1u=(G3sbhESNqggF1qIqIf4Z#o%P?HaIJYU~C+*9^IqPa1qV2qK~R`|Mp zG?x=2BKY(f8sq#cn>U#K#mCj0FG(sX?kwd93`5VNcN0f!h2k#eQpe)HjGnfa`NCwg zjQ7|=Bd4@qLxo4o1BEcPr#F!t0g!%x_T13#`~3_MX8|P~ia=vj@-!Y-QU>Y2;|0ewR@Z zE4hoOSOA~RX^YOf4A)1OBpcuy0Oa8CRe!ej=hF{seW-2ZjCCK^=X0eJ13=u$@gPRo zIZnQ>r}ydH=ggpMcrzC=k6oyZ#e&pZGyL6f7&pCYiy7an;%sOBp8U8B@wY9r@@zJL z!@H3oV__!zoRGQIwVla;BUI23`oZqC_(N zsunH{%P+(u-w04qDFCwAG~%?akw!YfRaXQD<}@_AE7jf^$<2#LGT;jC>ZLz*LPqT7 zh9F~^O8PLT2n=JL0t|pq?2Q!0f-5CNhYYI?5T2$6CMv^w28yKm`x%HJMvgd)3*_kc zg2~DLV-2`*9sXSK^rcuS-AY!n79>`aSLu+-q&`TAySp``X!x5zmmFpK+1i9k>u`)6 ze3ezugWKz?0jYt>RR4fQzQfDy0Er*JQzPXqwZSG7U`(>J0RVYA^M}7x+AYB#3bB-f zMZvEo7m5c45e25p2k&6-!7m^#MnYPoN;=o=ZDI@fHc%iFFs0z($2tRL-IK70FeV)SCc z%g$Bw8!-v?2gJeSt`Lf8Mxg1S{p-TAexywukVIo#jl!V*rDRd%=x=tbRL;$}qWsTW zF6N1_zonKC!$+t?K9pjtqjq;pLJ1z4j4^~n<8K-QOP-d~58!9`6_s*|bIU&t{BUj=v~?ez z^KjD%e8&*hD0)ifcA9o&9fPf3#M|g`34e4Ifqr2hM=#_zL8@hwz6UizCJ~G+P7myQ-@H`OL-R<@UQR=!ObV@AQK-Lzj)Yws2b~UR@9I&APvHHDlNq%dcyvI`nW@Z%!A|-9D zL>?luQF&0?t$>EEjsgyoPg@|@1-NvBKNevT8m}`~5l!cPLmzX;m z{{n7PXWkTfb>*GYdk{`_^_{Q^ycB_hfZej3X=8N6pTo8Oq z>B1xPwG5!oxAn9+e%4TL7*udN+#X( zlKn4bO5{ha2J3|&DIq@0j<>nuJWcJCTI8yn98_Yprq^gJ%xT0~VJ$gCd zBCKFt%#rq`rx(L5T>XSrYr@Y`r;4B38IguUZYDOu=b!QKn5w+}6Fase)s}w_H%=g0 zP_Wbt;e?-|lHsNiIF+rJfV=I6>0R4`u3_xrXvzVS^EgHxf9Hq<2_@Ib$pB*v5k)Xzo+rAL&{%1*TU?eQWxb z;CQth;apGf*>pv~@v0w{#sQ-rGMV?t-}W!Uz4-SfKb0mcN}j9LC`e#a5RBme3S616 zQnFk2PFgiUrL6#DE+SuQR#Ds0oPseLgrLT~pzqZ^K&aZ|R4Ju$i-d7D(6z1u0xRc{ zRm4OZazp8P=y-;_&HI*P*R+c!Y5!K?{@Fd2UuohnkBZ)zB6LnG-T@MQu>R7R)wNO@ z(V=e;j5%F*(WW&f3UOmYaEtTJj~k{awr#l%wqIAW&m=IN&VrfPBH+)MF+=q$3lBm6 z7S=$ww2tYik}naj_%&So2d_EL>iW~c9#LPr=U54^)G$M8-NSLR%1HrH1W#E~+Fn(c z;YsMwV-(zhgMmTs@C+DV&TO-y&Jgx5>qPV&pPtc2Xb z-Qr5P=S{7_q~sY)vd{eK3YpzE?b^@k8%p5kCQgNkiLTWZE>}I20&F;xmH0(7n)Z`p zLK%Zpgyv!|TP;RW>;0$8`socaVPip*CH3;ON(K9cK*3C+J!35|`GbXkEZH z2kn?sjo7TYP7QlB@c{W`@2~~*O58qhxMIO-uj)}A4#4)=xpr-{Z#b`t=g4qe-Er9P z+b>%);LIR)(*T=GFrnWOSNibT{yBJ>rl%%$_Bw#zs0L_ghn}4-=-wjX{0KfOq$zpf zD&B-oXP7PKvW@RB=Rae4wTu?GwWcgm1B=rmK1yDsIJ%-x2V?G?_;q$9=YmN5)#UD( zF6n4-jhd!O;@fcQ558U(-e6kJZcHy)bXP^!+wJUFM!0{Sq0Az)#hS4KoY?)?L*h=9 z0XGkv#Q@kHvBT6*ET*Wh=SvojP|X;3jvy>WYZ(wUzV*qmJHfAu>eZ_xRe8B%8qJt2 zswjEWKD{HOSO-U{4Cy0D4wRw!>5#Ts!!3h=gLSAL! z%E-mcz{OIp#Z;%oRai_--0G&6;M{^**B6h<1n)yS=CUcFM%u>^kD7o8vL#rKw6Nz>A_@8|cK;<0a&7n3jk zO~6q*J6uZ;&0@x8HL$;EDM}Fle6__eR)L2_+Cbbr3i%qap87|TU}+0WmBGf>Q;8QQ zpgn71rE5a@x|-A?>U8mgZ(7ojd~B!I?1cyk>gla#!|o(QBiHEJAx|t*D$h+u&_&>d zAdzIyqSEhQ0<0O5=MMRMGJ918-YlrZJ|O5S5^;i-JI;eby=qz_t11VJXx}AzC^h?8 zn7?1t|3OKX^vUU*PJ6LsvieSZ(IXt%OODB=vxU0;7z)3kk#dU(&$!%rX{30vwPFcU zo8Vo1ZeP@F7BxYi51P>ld+7yA-7Yl|L-~H6I@;kVJ08oL)A-XzZB{9EEQU!?g`4M`sP_bIw65p(# zJNVlP&ob|NiKl;qVC8uE8pdz_PapfG7Jz!a%ePc>F0qcz3KEouj(xF4m%CA>5*Jf-+Jd#d zllADm>YpArZLz`a-ACnHRTaO7`b--YLV}g6LK7XY;ulDSU;&XJQvZAD<3XO$+wA}I;9n9mwQU=&HXmlRt9X$6>eKy=% zy24-FnlaPX`c<0JzCMC#<;nuYW+hIkqVDak^{WZ1 z>@(a(nQMxCHeMrpSzq(t{g*xLq+)c6AtJ&HX{j@`k@~pyaKWr)>uZ`v{VphvF>ADI zTJ{mXeCORP!(*-4FXSM|6=b!na4`Ox^hqQAvpgYuQ$O`h_;e3l?cHCbN&WUI@qHJG z<70YLSAC@aohmJFY!u@lzwiq3w3C@oN8nf1W4qGIZwAnWhZd0w)7FC>~A%I ziwg90(H}XK&W3=Jt$X2DmAztWo3%T3Y*MX3SAI9qDbE9Dd2bc+9(t+ft56-XLwjyn zyMG^5hW5Y}R7g$<`)Hv;1i8Fq)NePeff2I(6wDh~+&@1F!j0G3&p0W2 zO|*N)991=8%fo8Ka`5g*QWv#!$IwWcWWWScVw8Qpn*?4ok&mCaC7=== z^WlvYKwG_udm0U&yZ7J(kS4s#nn*PA5C+lz0O-Mtowtz;-NIpYzrl(? z2G73`t<d z3sQc$@iJ^4y1JoC(vZ=s9k`C@d5;iy_r70j|IJ3D@;~Lg(#-_Z8#IB>p5B@iM@CQl z5M(5<1kxitV@s#fL7g{y4KBOvM9!?L^?Q=ijl z$T7;Oy-jN4yjdm6%eabAo@jxVhoxmfPv*`Xv{mfqxM)9C!lQ0oAP*T2vf^XOjcTRm z8<0}au{ohN;Hdn+buqIb_T?M^>wchPC#-$}mJpH~fLXF&>?s21AnXj9Vxg;e2X!4=uAWmiiV@`(VBBXIE%TcuI95rc=v$R$;XGbP#Fv^Vk5Oo zn}PH|_P3-NKZ#1@7|nRg(v;ewJ~Q&++aYi=DZvABv(`hK?=Qcpdvc|Dt~Yi&8@V*g z@a#G%KqE1pL-Iof5Q_F1c0fX-tZJJ8%AV{%YzhZ-T_`fKp=M7`SXgGK4B^0!tSL!P z3%w!f#Y~Q+ys1Xq$%!;Dm&T;25vkOYQxKAQ%OM+)AiQt_2RGL3sU68vmO;+5t&)%R!&+X&sh{u(2W*AW%=Gc_ z;uNoEHO-*1Z`0a`PJTH0gq!SKUExXeDId9DhFD9I^t%L>8Ea`}SB%wKa-n{3RqVAe zzz`X44*Rbx@Y~e4GoIbRNOj_LnKb?415$I7tgSQt6sq@p%)Tk?=V~EOEmQ4!zZb;q zKPlAK4+Y}?;p-fmGwq@%o$hqUwr$($bZn#JbZk4hW81cEJ0070p4fKgotmkdnh!I7 z;Cwk%XYaH3TG#6Ii-}G)iA8)A?sK_UOhAh zmaBX#$7PoLwu;hOKhEmy!K#H$$!#Fb@1l@G(zzDPvck_KoH)RyI&36D;-A9k7@S(W z)LKc1B%1$XRES-Zw(OO$P+v@{5T7BwNOiXnf?P6)%tW7cAe*VYx>sa-jHbvV|PuiQ2yTHb}N!ysqB4YLuZlmC|jI(6+Z z*NcP5rn!*wy~Q$G8~Z@G;KQKJ!Y^Z}G92YN--t40C-CB>^+_BGeLE1^`ZB}`a7n1e z{t-k>LjTo9B(?VUnmC@zk7`92Y#9CvyvTa%;EENM31?1d%%mp8{kR)nzNg@Fx3vM` zSGw>lWbafeN#k6AawiLWw@elIZ&BVUM3SD&_s{>rkj*X9Cja)>D(}w-`B_V0+s=JG z9Oe-b;wL@+>p5PUo^s(_!Y2<H^dE@hzT$ z3t?3^X6T9Y*)R!RxW8k&Jg`q|y=dw-na_oPwvbdl`hFuLRoEzA&{3L%WdCO#^FKNzk1#q* z;(D}xJH?&w8Kxh}hiM8zT+?XGubOHfa&(R)u}Tk>4NFfBw9=)SrK{CAo>Cb)$ z#IpZv$|qXoGw^~2%rP*blTo@7YkBT#c)uL6 zo=LwvIIB{NWX2D9h5+MlSn{P$oS zH%-lw!*BWElCtqmFvZ2a*he`c^$J>sy-I zTYc@H+i=_p?l4AM3kH8W@no-EG9zTEzY5C%YaEcp&*&f#+l2TWnvGwPk<2{8`^2dy zNZ*%xBbTQ9C`ei0WM`m_E#E9K`WrkUkvx^JAn?%cMLRIk>EF|m-32pbb(fhijR$hi zi}7YR9~GMh++JrW@NWi}9-o>*#!(7P2Be?Bt~&!tAY0DZ6^6S95&Y zpGpA2$p!59c&mC1hS@}Oyro0B7$f*gTiXx)!|h(e{aLg3Hb4-1?Zx?nFLm#Q+R&39 z?DhIyp<*jBB50#OHbLbp1IzGRaGt<_{&}6f!L4o~G+?&Tz z^ZZ0O7+9=hirpOv?f*-#*wi)Yf~%g)z;&c7LR>Kh76m3DRX-nF+Q}w4T3INOUU)us zb`}Kn{TGWA*mp6o{M2}dO-1<*b@|Ib{HL?t!P!q43$XXJ_n+Ne(_yG!RHK^C6>5J( z-ZQy+-T;6%dOu2%XUb#t88G3CfgCKP6VuF;yNhyS?x8p7I<`ulw%tCQt;nAkJ6=@* zT!x-s^v0}MrYToTQ;o8IG5d5gPmJ}^k%;qNwUe1kn zMjndZuajhKwiFCHrA{@tu%#Nmx1@@m=o6s-hc#rV{Fs--=#rv50c1InX=l418z`gp zit6!;3ao|z+k@_Rt;0JwLC65ZK3L8ML*^u)!8PE&qc2Cdk5*e#O-ow6VvXmIOFAcN zZWRSmbU*9_Crwx&2e}6I*JjToeX>jk%n>rGPg`6E%Tn;9cL6>-7qd=QO0}Fc+6Dqe zkYLNpwwFT#R#83A(=)YqzhJlW^K936b$fl|W(#lDg-ywPT*MrsoTj>IeS~{NG(zPY zD1!wDWLsa#JT~s0C>uOal5!$qd8f%>yY_EimrL!aSIhAa~zzug%yo`Hxs1CVl(Uo|mRJrlo~Y^zL5lvwuZvR)vGN zWKdR-2U|^RQO8=`)u9~JnYB5dmop;axQgl!Uhf2Ow93{T?0T_GY&E^S!X0VKg=;7M z{-04wb+K_#f?kJ>`6alxeN+N(P79r_((XboJX&)Z<{Y8V<|p}))%Yj1piD#lv1Hsq zr{qEP2ro800(qKYGrphB_UnvzDQsxt8>7!g@C~Cx5!H8!6a(vS1lBgXBc$qsyyl&5 zu7rS2RCr&8)pN<@dt!r|gDh+LbZr85nvcw!ZJsM~pUprClF)Pqa8VXa!$~Kang#|UgRp}D!DdGdkOf% zRU`I;d{SI6bhAxB zI(C&d(3dE9xUtU8Q@xY8Z2azqB_QT2*Vx!_h`*i<95<73iWx4K$-glKrnv1)5sZFw z^@1q{X-D4~+&d>`PU%AVjhJArN+2H08nwsH|Jf>@pWvvc{9*j`FghDiFc9#$b+h{d z`swO8jT3pBM^`4}>`+(rUO>xx`U98dREp5KSMbD5FQM!%7-5a!IF*^HSqLI_%BaGG zt5nfpa_Vs_LgaDW(_Q5gpp~&^)N03${F0iz6zZ=m-VAo^RA& z0CRpb_v6;_h=Tp`fjbwKQB#gwGD3>1W5^d7K3XwSa}8JDed6T?!^#d_Lgdn`xdMCLXrrDT=~XwL9?mIX8`->q&I6I|KQGF> zOmh|8jUiEl%8+)aLE;MOqcDdI3HDxKJr&0>eK)C>wFCHLR`g|WVvwoAWjw2T2@3sv zj*$(=VQ=dqDfjk(71hKpB4DSYWWFoh>~FO}9BM{$AhSh#go_K=U`V4Q>#rro-e>%- zIHZjs)$$b4VfY9@kiBdls5!|pi@3748&G;-*^?%AMMaTG&g>1nML`)F=>15InBO1x zJiFT$W3v=i0gC_q1awRlZEC#i_etC7y=$I0?K=RoY*`UKyGDw5Ek#Eqk-IcI zRl2|2QsY{&SyW|V-a8zl?QylnapJ$8bW_llgkalBjPZ*cIgRhHzSh4+GhUa2>?*YX zed`i_6d|7ADIzS7*?JO8bU28UC?P>{pidv5>*zDLLo27R>~JH6L0-<$dnNb!nt`Uj z^+Pe*&AbA>)|~F><|Z}%ZN7M$N;01%Z#r>ILkd^5TmvyZZzdg!d%Fof7zwl9O<5w^ zNz>xZ+@4!FrNxqg;8EX2!WEORwGko-6Dfv%w%fi*f+9am9n2fPB6Ir2jN z_Z8_5jTA^Abz^QbwDL$(R#?idpqnHqg(-=TpwrqG102cM&A`9xWnF8+4H=Bs(Xqvg zi_S-?s9pnRI$xO`uD-$af z7tVl|G~=g}o6r3oPn=G*rNg)Lb|f5fJZFDYGFH*> zl}8Zi)qlXFN?AVI0|HlPy5Nqy_Spzv~{6?l8@;r$* z_|cD0IcVjm2utNRbL#Qo724eKH#T-M8hI5h&yE@nsOC6%8s!LqJ`;T6rC$M|LMbJh zN81N)ujJfZ2};=nDdjf(KE$vv@wi=lorxjE+T_Il@JDL<&n`21?Dks#XJaYuVUp&L zH7Ox05gAMfi0CwVH-K#{F@Xxxpav8xE6Se24hx4x!S{YK`}HPBb#@np_M6r?DCuYI zS60+;>VGX5#5-~Yud*g)1H(dxjn=_;IFWa1le+7_=cwL_-DMCzwoCq98cimrv!NhQ zn0miVxBeqPnM4w!!6P&U#)`}j$}-3P z=NU%tHw_t~W9V4rAI*oQFQ}yE-!KK8zaF0V^s?*~vGxq<$|ZS#jK0olI@QPD_sx-0 za*Pa~Yb`;Y@CfX|!PRie#_Y!V$JW%O{SjEc;d*?(wi;`xr3BO_$btt&zWVP6GFbckp&Sa(9e*7(XH_8&ZHsI2n6kzG}`-DebHq6TQg3#lzotDXhcXXP1bnE8ux z8vk!dx#cecIVOH*+=eab>-5H-VLNy7uH5d>tD?8v%rZyj1y9|~jE5(sv%D|QiW&PY zlhbwG+#T3HAJW-hs6B}J?Yuek^*`377GC;rfoi+Gl`K-=+@-)AsnXrhKK^<1H$%r) z@r?dzR?fSVx~r71DuX8_+oVK-DMFRSxf3Wf7v#l#Tf*bG1nhOS`*a?O=QNFarAc}| z30DjWUsgvv&>w^A@cFhFeZ9*>^_-oP%AQ|duAYrw_U+#6g7R!ixYh>RU$eH@%)jAH zkCBoOUZzDpMLQFI?J zq1jfI@X95vD@7f}eO6F5%Yzwwpv4FR7&>*)Ns*?4BzZ+@U5a!Wg0(OBgsn8l=0DL^ zzWn5OcBX1=lgw%9_d!=_AG*$Wnj~3H z*37(J)5zp&C~#_FI5?Q1c3?(#5j^QREtxhR>&4!)1}$-qHUkW^NpD0- zjTSj%y}!=$8SP8RGOZ+>pc}Dj5ZUusY$1XwjHcIWCshY4z>T}mL@n$pUe!SICn6?r zV5&8o0z`2z7ukH@_$-QMlBhw;;EEkNnb#C`KoRN;jPI>&yR6HnGygmq>f`Vjnh zIZmoA%!${Z$M5ixrSP&d<(S+Ke$@Yw$11y6lMuoyTHJ|m6S9_+ra2_?!=5^uWD4B>ooa`SVVp}| zR_H}Bd>(O)pvE`N5zjDT$Gk2>g>MMTwz$(4G5tgd-v}$OD`PdfAS1(FI6|Fk9e*=# z9{)@{%%fuFVhkuc#aaLhe}E;bPzIWkMk*rg7Yb9A%8#({W&jeu4nwLd_?rNW&_CSA zFXPop>G~ouS!8pyJWX}aU!TCo_Sg2;U61&%IA)4CC1U}&fy-NpI7x3#kAOhuF*myM z;dJL;F5Xltf?G(J0rDr!+!v7+?#3+(zOK?;-VF&Wn;>GihO@*eWMr9%H6ZN(WbcxI zaOqkzub4(2jY`9)c%;C4TcxQrq}tM17pRNUSSr`-$scBMp3&!5sS8+ctRKYW?r0mn zo7^*i97$P~dMW6~*%SYAV5WKdP|lBUl6_<|G}Pfm@<~5iN7PMIqREu~ozBxN zc(`K7Hc8g&NV!Z>Q^Ip2UZ3Ur=}cbnwsBMfb)PKwQb09XRB460tahpUR_@H83xvX? zl%UeOB(8kko!^a=9)GM%W=l20?KC90tJwX+%lRDMlglFh+FG_e06C|u57R0IuCC3^ z@zb5^{3`|c+}c9h_;PB_n=LoIysF5A+e;~~PLt!3)5`r-MN_8^VzP9`XAu;3X)H^g zOJqsZ6nwbG9$Ea(Ii*yLT*tDfc*8d5VHPTw2Xn2z#o`f6M9pt7Zzs38RQK97Z{x0rW@H?;usIpTEZ!WW+)|sHOaQ)!Rp}2uOmbnl7n>WC%7VtPB2n zsO-cpW0AFOgMpw+Tzp@Ig_h=zL)#(Gxt~b*l}(dv81YAf(;0B`ZZO1ddrTS(FDPt! zf2c%8w6WTjsFN4O9z&vT`SyU`IcZpen{kqQ_zC?gBO~%wfld_*mN@ttIa9njlw~wk z?gGZiS?eK0vv(4sz{vnQ`?N=Fuv?yw zm)t={Rw)sKNw+ndrccwfC4#Dblv-Ny=8XTs?7sb6FbzbQ*Os!h@m?lpFoZ$X`Vv85 zUtALZ-StW^1MDZGLUM4*VsMQ^+J28w;>ubnxZj>%b5Vu6>e5h%6m51Hht;e@?HZFF zGg+;V?^smCU2L-*Bn%2~582k~_Q*68BFx7`3hDc6@^m>rgmx;j4b@Y6GN{Axrudh* zxQ!|QR@dZGC-J=nQBoQKKO0(v+O?=|e%0c*=EqQFGyoh#HfJI9l&3EaKE@2smbQke zT86e$q^wON>Y5GYL|L=pvCCeXC)72UPg{L)%&8&j5&HC$_%vcE;SrQYI6D~6$%1;6 z?G#`c8i_EPvfa~=7(+<*zysh2W(}moQL%cCB7g0#5y;A!4p@mnJJ~-Ji1~fo(n_+3 zM1?^k09zvCAc(r$gBbEyM?PuDm2Hin(ll2VVoaaBKT@M3jX>e*C(Y^sovAjLqXgmkxSepTuLEW`!U{Rf(cM>${@> zHil~!@8=y&4&9+bwyX)N&z(=lM`2eNu;|mc_-Rtnb>~*`@f@RdVe8r~;1H3`GY+q9 znpVym3VO6J*>IEHblUcaIIoZVZ2Ec0HE@4eOc$IMg!FH}vSv!G_b=|b^d;kvjhryC z#67`tp+pwO^@REJV9c=nidW(}Zpo%#JCY8x1s^$FW?oy7J5^uDpNUC-&nR;*fJQoM zhiAym&Gb^P%6fRv^W?xMR=B-mskEprb5{G0*ut$TM zKt4jO;>|%)7sHQ~CHN%ES=)Q!Z<-?K)RwIH3sDFS%{ctu`>}XZGisg@2q-HYlY)1c zW#cqYF5+8N4Fpw|-e@|mqlJ`{#xm=77blM?#+td;TFS-srlyeEM}+xp;Gc11y^dw} zcS`V|$P3BM8*|#E&)FOrCC-;7VP`ISt9m z&4D&dhsJ%r!{w&NExpp|T_#-zzFZ6XO@>bv)a%g({9bT>xQv;^0aUfolp?CK-An`S zob->9+h6kV2F?h9L%y~e1^rlZa*Q9f`tFl!7BG!haS!9-oSeqrW_6XuYYdIv9QK0f zu9@=%um_J`QDk6Ab&9x)(o%IzI9B;b>TsYKoVrpcdwRB230O8V&MrO8&UKTeh{V~| z$VY;$=pv3*0bXMG@&N6z?X}liGb(9f^j!uim6kPa2OVF8osghdKUns<4$)C< zxI*#B)!=#^_+i>x~_zLWa?moh|Lg6AvnFdsVXO`F-$qwC8iPZn10h*HN93t(SF2lk8CbASe07XPk?!P?c z!dp8-1AB1t@{@J{v;WY+E~_0XZNY`0f~IDl=eMB(hF%O(YjU)hQA>HDPDtLR)ZJmT|3H(s|4(r& zwd(#o+C!(4q2ddO&$b~=4%`w{5#n;qV*9XO5VluhJ(=YG4}bNd@RKu~;G+#5Ei@@a z^~ltVUc?sQzp1r*sjz{g=#3I|V{&S)9|Q7dvR-WuK%}bgMd;~@$_jIBB-(Hz!K^yE zvdO>X+d$0TvN(U1Ha5ZR*9!Am|C>_36F(s$E=e4skJY&7-L3w zFCp-}t>RcePKi{0tIx41Xi3HGvJ zPF)di=*VoKc3TfCV(qG%quv+2z*Z*vV8b*Eq$BLzqZ%<1BSxYy4sr&ziI0j*wGno( zk~SD@GIlg;p(xwx%cy!3>Q4pjMi8t3pAyh450rt zyZZH)3a6O~p8@}0sv%BHAus8y6@3?-M-F0;%e()z!epM{Z4Yvc7&&$shes%=AI`83 zh-9tX^QWVhCW=Ofvo&`wFyTKdq`=h(MJ~pZ){wK-DetjY{{(Be<9daOUo(#^*J+hS@hj81Yjs`F(g7J0l*Y4pozQ zhL+CWOEkfF#>R%UC#+I!P}r6ru+vwF?QGE?=oK=#B8MlGlMbS$kN1e`N4*Enbm&l{ z7W;vaKV$q`@ww>>b~s@v|^tH)}8Cy z{9PaT>rKG}LB%UJGF9jU>gmDW2SK>iv&;{0IL5^%x}gq-0OCsGNb(&cGaTyu`w7jT ztWH)Y$GJ~%RW%s{t;EZGQWR{=45Je3%*8vQCG4!Mk1NRtvVZX@ZYaCpbUIU!30xqzLAliPz1qQk zi3Z8hoQSaRT?fFV{|~tG8j2V-dliQDmW5P2io4W1woo?IVvcf9&`HZ8pwVjL*yhvz zteA3asA-`egJEK?|J{$Z08VtFHLYmCcsk500m24_84G&nJSv$a=KFT=ou~y;_+3UQ zP4(*cSrd9jCwWP*uj>A|_SwNcX2(r=%4GI-xs+UeKM^5#P}&%RpZ84P9|iFAttq93 zASQHp>Nh50j1jK1;&260fM(q(ahE$|t4aARJ|xmA41qHKrfPg4_Y8zzKLJs&kr)>} z$XBLu1?5GraO3wk#;o1aN|9#>1v5Bhs$2y$#WR3gnOSeEf6@;8S>*!%R2fY<(;<$M z6P3sJmY^A{I*pNJ%|BbiFZgFtWrPB?N5r!dmcM;U+4AYN|L?)Yx|oY4ntuGuZ`ho4!ID z>x{5pJ6Y82;T)mJe{aH0Xt*WuBB2lrP0AAghn*@(4!EEKdTh)=-?EO)Sg`1W5%Cua zi=klrHYq1-y?h%8FBZ~*hrL$4KG|^IvQ=J$F=h{}&5;uhPs8qS58KoT)rh+F}8=8JFPo**_nqwpok$~#2hki$K zm)O0zBg`ze$Vj8zu&=DNU79V@rZl%HGt65qqSg~FPQ#MPcuqJ=_nIN$Fi!R#%A_xW z;2%yJNjn(c3VFd`!~S!L!lz+FkNr0AmmBpOxc;TCs^@95J3s5GZ61h8Z>liTZ3L1Cv{n%jXj$tT={NMnYh3_JqPAQSlNIpdwdup{KF6 z;9Xz>c<@>EMbaaJ>N(6>(jka7pl}KYwMen+D>2-(!p@S08CsY|i!|*HWm^$A)Es$y z#A7R&iWqHrjj)YA`1Ek6{(SYPxWZY_jZNI66U67=o zFRw;ZK?xh($F01`1gJTK@Go?ImNQh#N%Q!DQ!Z#E`vO07){S8XGOJ9I&l(h(B3=_O z4*5h|K4+zxHCdHIV;FDVTiW?(Jbv*%I#l&dQF62jLN~@HzbQHyX+A2x+<)`K6|jINVp|WMp`7<`-8!25`3wh_F5 zsf+3>4E50a$qQfYsBn%$p1BM3C_U32#N+C}3Rp3xV20OGEm$o}E3;L0D+-5oU&w`Q zitnKlLPrq`-$Ylv6fVD5(!N6850jBlbK)O=OKuO{b5jbxNoylnHvU*C_(XvGcX+rv zy7e?1vKdeS`!0>EDQ1)>^O350i?zG~P>u3={~m$>$=>ZyesZOMRBD#F&OChIMD)}2 zV*T0B)T@gbC4BR8EM#1op=dAa3^0!xtMV{$3c=Y~mBSPvj*9ap0w<;}%}!5ljODNc zbE~=JZZJk?!_jwf%n9`07~+a!TVcNH%?8}wGPVX#FaoJBkd63eX{x(GR|kKAxw7ZQ zE7Wr%R{h@Rl~Y&TXlpj29sXKm0iPR8S^gLK=lqM#-lsg|eZDsD_bpkzb{QVsiksxfSB*7)eXV}9xbgg4_Y+CO zMEc2!YziJER`6Nb(-Q%>4qM^A2ext<&5VZdi;!{2E1S`t_h~iaH{zZDu#+)9bbexL z&G#{fhumPqApK5EOO`eyyT|$xnLeo*%d3Ab6elgwCLUWAo2Os8gabp zg6^-mlvmF6+07YnB!?e7DY|=jywar`S!&JZoAj7O@Bf`Ye4&%5$~cGJ$Vr0@Zgy&> zU|i+5Mpsi;W}z~GEOq1|GRE6G7$T=ODW64s+WDRqtU!dLU1x0 zXti+A|3dkTK=s`RNk*|<;}>;1>hFLK2`9T41(ggExVRd?4eM8kDn9DbT0b~YT(U;s z)+#Tb##RPq#f%WwFA#NUnN^kN`~bHRaVr5YuTAV=PNSg!rVvV3?+-&6feXlm#B{#6 z9d%qLxL&P&D^>0A-)xtoWTrzCIek3Vp^s3iG|~kV8B9qT{$}{6ycvn-Qd!@1_(!WT z7Zp3&T>I&wdO2bE?-$0%XjrDq$M>uDmuNEI)MeoJ4?)CJq zhPa(E8ZBC8;o$Ea!~X6iS*=;6h40TKbI$~gx%>n`_yS=TuhIh>k?6z+6WPHZSN^fq z$NGLIJwMKtnV(tD&Y{#4L}X02Swxj$-DbGho~8YSrnM11&s?G{3o4%Vt}m}%SFJ#& z>+S8s*7yJs@o~e>VG;3@$9XBz9-d~E4Ll>lG{Cbacuts|lauW!J-$?sJOn*^dNWvi zj8Mx+ex2NDHH7~e zZ;)K9B)1H<1$1Bs_X7bJ%S!smZ?=kHu#r$&o3DE6`DL&Qw!#Osy%`KAnkf#B>T<;I zqdMRpQBkO*-WLrcmlbFAHVAm|iO7ON&uYMy600X3@56K%mudJ#JuD~MB}tD{ z$l}8F9VwP!0Yt9JW)%#t-j=d7lvnWG(QSg>&lP?>UO_aBulZd+gv*2h^{fHGxr&{@ zz=`R3Mf(6Vnuwo$zr2*2@%z|(q1CoDeFE}9wZcJBghQwo+_?jmYw9|Rs71R!SSbMH zAp*srQlUVHg~&xx!=PkiD)4Y{7}UtHY+nTWODHi7Vqb;_Q}o=Hqg|CSI2osR7%`o@6?X{8{Vt-X0&>`lc_rf&JD6)i98jd%rBzct$3N$_Wj)|7;TujKp~)Y;Z!?p4KY3k=mPF$#+~j3v_btCFHx zW}tjeeMArEZ9lsY36z3(r^E*@`?Mi!mcK zo;;(P4Rx`rdP|7@M|Am_qah1eSNw-TGW>4#!`=t3w)>u6`!cwn;K6y>Tz+gFO?K(r zL-uDTx`%FCT9~(VEtm;!TjZQR<@OJuyWEy>LP6e-m+SZ8<&Y!bB!}>lFbjW869FN2 zsKQ+DoM_&r7c4@9Q-txh_bU(qIhka#r70~!>)%UQv%{c@LT&_Iwb%~z;8;yV-$!p)<}U-r@zY;;r25lrD~ht&&&m;qBCK@Y zbmP3_)T~xYfyz;0FYw~92MSZLW^o>B`dxdOGMZhd*35SLL9zOP6g}o&1vZM-vobue zj$9FMxCVWbDobg#^wMd161;q67itsPX#V$A!KL&Yg!Ww zA@7}6yJ^_&L@5xe1C%yBQG)cMwuED0+Dzx|bmp);h$Vk$*)P^|?Aj6X9uvcL{A}@t ztz&s~EcKTUDV+_lTzxvKFm#W?arB2n&%3_huqutu3>N;PSaR}uBD1R<-{3VvZqHdU zvN)6kZWK9OkxTZQEMd-9DS1<)?ndaVzU!YzF%qruZk#4_r?6`A`X5kGuewkH!jnJJmq&iS_dHd?#Nok znKcG8)z!4@*visf_a@0mr^dr%xa%3u%mHlA@zcs=6wxgh>@?$SRhJZl9(|+r8kS3u zg6wD~W7N?=W&Yn@c5{u58AGRtjJZV@nIMt*UsV+8G!Qkr`&+dMUXe%`0vp^8cDtE% zey0p`J^S}2N{J-UT=|t46 z?M~8cOKarFSQ?sExy%_lNDRd;(a!_#AMdzUy<2L9Xz#M3n#UEP?fv%NzgQq129&AS zL`Scp-fZhVO>$2Dn-GagU@dhiw08n<3cfD3KTc?8sK8Ae!U-&YpH#$xnGV$91`-QBj4ob&X zz{t#;K1G`)fo&RthO_U|vmLl0fsx|mR!Kbujt_1ZmhD(NCe|-<#}Z^ydiLF7jm^C3 zi<5#E`Lu6n13f^vBJsa^f{ZkjtHv6mO>IBZ<^LYzvx2#xGN7Ss213hM7UsrbMMG0r znk`lK3W%B6rq5#?_Lhx|Ff{MOLJ`_+7Eww5%aY)sz5CbpsBDccur}6P+DuH*B%o!PD_>a>rJE<-w5a_uUbKwb`-dkFf|Lz4ejf--x zwNyuHa=1r$p<_U5II#5H6R^j13tvAyejQ149-$>miNB;H>Kf(OjKcHB^a+c;;4u)NcvI!&X$PB#F9tT$R|zeY zYpQMgF54pP*bE`yF8ND@GVq65>%UZE6mT-@vt=a5p2PWElEsWROQLwU+kd?8-2Uyf%P*PKvoZgmLyUTsNWO<*09P}& zROi91!qlZKW8^lc66Wt!*!_J5FkLa?KC0F~gVYTW1gQxUf+GZOci6IiT87Y|kD2x@ zClPzB;_se@6OodPD~gs3;47+W^)ntN_4%|++NgWyS|@4PHT^MHoZ5zp(2VaE`rZ5C zM-#ypQ8xA?kEQKB(i(ya6WyMboF<_v7l#{*9hz60z2#+PLgNq)LLzh&08iI%Gf5zq zr#D4v5;JA{Ry@UZzR_17c%s3qK5_JkP>;!H3#L%@Rwn736ac$AxV(u#kf&h9e8=+8 z&7|n6GudlM5$Gp>~yz^hLW@*9W)rlPgd9O2I;gpnzS3b*L#Jk8i3Hhi6k2?&)9JIaYD@ z#o3Ktwg?_mZV;HE&eAiIibZvl5`6{3vQT;mFFZd#FfP2RdrkZ`!_P+MT@ULhu9y}g zUf?i!3LnwOJEiLSGUdbrwCH-B}AkPM@Y%HMd6*1g!Fv zuNVBNWEWYF{l)*;=d$#k%F?$;is< z?0=}f%6y$>SM?YGE`ILyj(3CKYab>RgKPN${reeJ@x=II0Pck6rtwbjE4MVQGFkwL z=yEP~US;HINJe1b)^@xusrn#1M$LOWce8C4d_S<=1|$ILht2=NRGiT9^BI0a1-Ct{ zRhT6wKu*E=V!WrNq3NM+@vn+$NxI0Szhrz-fACZhy>_Uq>| z5JG!d5&?uVa8tLa`^I*pM_^2LYMQg;ytl76=Yk$YTEk?~+I2$<_v`8vBdO(WI9W#d zo$nRo4W7|Bn~?T9`6NT^N{N|48=)6LUD*-ko)}rGIG^tUxgRkg9^>1;&WwtsGAY~u z1e)H;36(Ai)v9Mu326wfCnKV~2r8GEN?t3JqmGaZkfs$}YZ&s3<5V837>9b{HBAKb zY{ck5qkSK_ReQwXw~cSVc)yhN(GWPVrM|Y&9l*z9Ju5R4Iyi1bZW8-J#NuZkUay}$ zOw?@F71zUdWaQ926jxYerxYhi_=^bwMF@sc9JGa7RNISXbe@@8u~r8rCnEy&`h>+l z){>3`G|13KwEslD+{t@CFt>|L6Sn5@g(ylmVoG(4cvW!3vU5_j($zuJvX-JRj$-6@ zf0C;jJ+rEiT^*h+pbu12&LEAX4zT+BeJPC|o<`vJnSNJ*lCmgaV)dVIN=``NBauSF z-{+Uu9v)DWP)@}HAzQn93QX!d)BLVil=kB50VDE1L-_>wtt2@JUyu~@aGGFdscRA5 zBfc_~(`tS?nE<0;$Ya|whg)}`2E#2%q4jx zO;V2CNILEvsRIO%DU{xW)z!@y#FJZLCIz`UB<>JX?uvgMXICbdH`FX^YW7xK;KJ`` z0m$XIHKpJJ5iL5Wj>3pU!}N z@86n(26n8chRXWzXki(K7>EgfERo4Ba|fNYoB5K1Iw8fHenj@?QxmLEWj$NWNb}Ao zC(?v7nv(KDfUSk{b+sg(&#B6oX697r02cwB-WL>L-tG6NAP-|4_8$^+TCk6;-z|jM zq(ffv+4$`*2i}UBzMbu|plymiJ*W-5`6%~VnpQE{(tH0GWH>@;%Us1NHjo1@hin|C zS=CSD{* zU$F+tD?u2a^}9!Ng<`SFf`^|i&A%>vrxBNbt>?qeBwe*MO55LSm}ca{G~Z;|G)@)F z99+xSjI4(+YR#GiunhU26a~6?cOT1#w;%crjkFM;?UktM6XBk0!JcF$7IJl0dYV{o zh*M)d2F&K6JGvViRphJH#)U|m$;NiGQBm$DlT>CYJo`)!BeB!->aEl*6Cup0@3EJE zlRp(xBCI^~81TT4eE!e&;L&jR*+>D%NZ&7fN!i)uCZ~RHKN>Ee^4l4h`Mu zzB4Qsb?9r}KD28-5!5R$9Us2}Bbw5BH|wnl;Z1y8FHL3_zII~OIQ(jFcfw}jBfkP_ zun$s*z7AqmDqht@u0j=~s7fM_XzRg$Dvs*|PvxtO=3J$0k;Ren9KfiHd6&%s!BjVf z_i21qSoN}P$)iP!hStEX4D8S`7gIai81(Y^n(ODSg$31(1T1Uqw3;v1uC80*iA^>O zu3U(qdzHc;lMW-RX7%dcF9<-3FEo^?y2MsA@WNeWZOpF;RN^j?!ZQO#1GxZy%k@Fg zQyCxPy74q9)uh?CCCrT$#%vo$cU1Vbiwq{ZDiw^|=L5sGO4VV1{O7&MLW4b>uAW4z z>2Rn={s<}LYCU@;q(Vp|K4IX>IKi^-yDqCSn__-p)GoDxxgXxwARSif&S$XHKRF6c zivI*om9K`KhM^KDxQxATo9^s?$69O)?T4fEO=goMv*BAlH)v(bOE8B1=3*~^jda1R z5_&AIb(uty>@wU=#@}^HHJhDfu)p|*PbakSTT*2)v&aantq<8j=d83X6%2xxm5~df zEgkLs-en3Y<56bQbaDPnjCRF7fv6fW3QhzS?pE3@!8?gAUEc{fX!8(%j#T(eteO+_ z>+2EYE)b2ls1nHJBrI;2MdMKFj8QWzRdEL{dDrBH!S_G%`QP8WML4wTa6J`EN#A{^qmugXAu z1!+S2YpAOG0Nz2?4xgugfeIE^WBq2Yl9l$1t~AWK6~@s+8U^Cb!je=3-_bh7rL2wm z9m*Cf{GfPWBBS&q8!e_+VQu)b!%@@#RI> zkSmki6Di|nl$WI%_^Pq6Pf&K1#OY@c1IGdL?Mvhu)#`nlxICx(XUZT3B8_TKBksV`YT)%a+pJ<1TzRMO=udU^gbJ2x<%Ic<2uWq&$4MT zxP4VVhsk>~46nGk;d)Y-Is2`l&_?obwV7TNGc9|6R#tZ{i27()UBUpWCB#MDUezLd zb{)<{KI9Zom#c{5uRq$k&ED}w*ps7mU)TP+ znksxCFAKhF{c=0{=;ZA6WuyJ2J3So5>ZbVpTjL8h$baTG`Cq?T^#49?EdTZK*Huzw z!o%x-swF3axIn`opA`mNnpX@v$Oke9u;hfkr~@a_WkuMe6%y#NRk%#s-^D{=9`oqv z0Q&^==IG!bJaNGbUSH!2JCBi&K6|d-vy~UxUOrTboKDrs_TsSsHVBQyCs(#|L*^hK z?G1;}SM;9D)qm-9I(8pFiFnGJrc#K?Z?_qLBXA&xAUFa3`VVP&%j-?edBZKu z3+R?Wa+nuL`--les~s*JYJ;96EY=F}I<`Bj@<0?dmk(NdylNVIS5|c3jg3d0XjB{IL+zJ~D|)D;89;o0 z9~=i(pbS_CSv72xdEe`HYDf97bWnS}==}A`$V;hgSB| zA3ITCoA^Yl44#qhbt_YZ)lOXuZ$!i8xxP?SRcu?C$65oN8!rIvWF9t6c5uMogC(%+|CQcHLcR(|#qPAUS8 zsEyA8rObzM_G71JDhbW$8j+=ce!3Meo>SE}F06ukU{Iz(WM$S7Iv@(p?W~wUL2sJE zvunVSlfs$7Tb(spaM-aG1vtF9P6MvJ{KYCTbUh<@>ovTdH|lgk1IcdG&`9;elgsnJ z5L%(8>u8j(JoStb$U4FFprobo%;&YY>e^j+ClCS^rq-PUI7)+4qA{+2&UWHpxDow| zXeQnb9KNn-D!Ye{nX{KD$hm?cxNVc>byMLwU&qGANr)1j1nUFrwlM z+$$i6BGzaiv-u|WG$FHySvok?rbq>z|g}JT<^AsEy>GF*K2QSoQd;e zW78rVp5d2&dt8EUA~y+t_@dz(7czV~heEsC#&gU(lpvC2_C}*9{}}}_@z`b$>sU5tX>V8_382e|j6wWm=rD@;rKYnj?g%t`8DXL;a6| zaJaT5&*spQ%MNwcWEUi%z0qE+g{1oYg1rIglEvp~oJSpj3635H3{|%Gklhm+?0#i$ zbG>a-9Ta1rND=>kfXubhS5>sCOc*6#^yGt^o6uT(sR=+dS$a^Z>m zTvd}O+Lx`KT7Y7;;VW9n_(gNRXc=?^vKVd0eyI} zcXW(CB*BhLOYK zN7X;j6ya!kS5bz8;EtxE^J&zIdx>(8?yBV|6IK9Uj)Os`6in4}D$S-G02%tQfQx0$ z+6*Iq(3H*QlN@n52surcw+7SP!x6wGt3@kNc<#PRGhTQ0nzcjP^5<_}mFmHKsXNMRkd7rWkZ)JCfG2v*NpFs` zbi&{ibgWzq2GUF=it;NHT+mlCN!UcA^&*?1NU?(OE(?wT79??wa3a z23lD#dt2>vtbXMK&nW+<(dFfFFDevx-R{_;HN4dg1wBwfBO5B(b4Bs_;G{4afL~yc zrW=?$Uga&p-I*|4!5Jk!L^FwAzdkyDP#Ea|<|_=%l*RIqp2c)ccxTHXrZspoznQq2 zCs$g!C`HP!4@*K<&#KrQN4!JC&>HpjU_hlSjndIbf!zoU^6J9BG(;(5{bo)|gO4J*8Kw(Y6i60dk#<D+>=%)25~?s%V%$H!u%oq z(CnOPq*Wt@b5B$yNMrdsmWoTPRHPd!q~)i zm9u2>K$*V-uR!h88z?JxS{*_&C`kSg>7N6inU_2X(V7}A8X<9jbWC;#u73*bsjWvE zP=t)&1>!RzAc(&$J>Q~B#B*ouKo#&O{TgNOTqPQ0TlH4+$Cz4*FnqOtPt=pOUHmRg zX(|PrO!u)35fzqqL@(zhXw%f>tvxYT@pyp;r)Wtcg+K* zl@ge!uJz*}SbX>tiZQW@9fil>_7ogPQ~z928CDy(G^&tyX#R8s&a`TDUWr?YmPOZ? zzBYaA)dY21`C=StXU`LrUq`0(fFgvbEhE6$V5kk3w<%-#mh7#64`Ie3GS`6-`fQSf zs=hBxdxY>zrpj}@&Kyn@aaK>~uFf+sKiJc~sAf;Nckr)mmv{yXf=d}|1OLyE<`IgB zF(|4*2(hn9H&gF!bnkc8#jn11#tO4lsHwuh(a^P%WxLcZO*WdyLx52|xETUSsA(mE zQ7NjM6$7lLX4V? zLqllQbAuq8{|fjjl(>%?r*Gyd{uTN*&tD=&LFM=Wa!u2x3}emU*Ese{9kFckp}_ zsFXT7+s=j62IV5#n5Q@G$N>zJby$7OLZn@Ac<1Pl&tzOB>Jk9a`mKEE|w?#6)j)<#1)BiK!5Fx)&{{(n$pEz8WnUPOJfCi#to+4lr71f!sSjR;F(Sc7@bv$&)JWkurdS zoQ|{cRW{Sm`K4SL#qWxq{oCFAxe#c8J5CX-?=XuMBGV&yne1Thgn#+@vTX(tY$atQ z3K><)m2vQWLf<{2S(RT(%7&CS;_IJY!V0pKsK45OOuKsa-Eg)RZp)MZhV;0>?C-}! z6&kXLa{U`bwMkV7s!A1+yFCrFzbR%R9!a6s3FW=72$$t&fG{f@=+ld!@FH!iYR0FBR!}~LY`32 zUi9979CtNa@+Ha#Ha@~uL`)WaQJn(#sINVWuP4=c*xgFlgEI=ZGQrzr)O7h|Q;OY> zwo0oj#dD7oT2P5zRH9nY%qM@1nb(4kc{Hxy)Nd~BpIfRtGUB_;kM9O>6{hDrm@5zb zlnEZF<;SZadT??P6Br~$wmJh+o@_mWDdrY`0VxpQql^hV5b)pS4$B}+lXkfg5ZAb2 zK<>(Fu?h6bt=FV&q9jCiIt0CMI~B8~hnXt5$3SqlVgU4M{zx1K)r72Nr|0m!u|`{l zda7YVHub|{#&AUnQg^WCshqB;i$v1W$3!~E$)-`fj+ z)O@b)^&1W_Cj5*$Yh$FkDzdkm2e~%Po`!Fb-SWu_wVigd4&C3In}@ETR+X^jTq;6A zwBp&!G36yOp=(KDbW6|5xd#)-jXrQ4FMl|?a5T-G2^vaBFx1sXC8QHwOf%zw$aU7t z?kW773pG3`RDRp24!cBK--vK9Bi9;#&zKBQxJ4xe$Pbs?wY$o*n}YzV7SEEHu>PVx z@JsK}mT@4@goHCKFHGZiG77oq_PVmUWCBlo?(Ywq#7G5n=8^E#VOG1$XyG z4TY>#k0M`V?sj2)>voQ!5eS>?;ETDIAp=8HD_k1#DqDo8nKaHAzvVFINEhvY8i3~- zfUR`e15dTBKnL*;o16PuqdX*fN%Xc1&P0MuR;P(Z%;tn1q@BB}P$?qlZ0I5;l#83f z3ioJwbAtli3g2DdBJ)B704lo3*pij<(?dO*O|?2AHk z!>_rHnlh5;$+wSR#cE{mp8)_rOSDCQ+xgBqCc3S6B2wcK0j&%`SLJ>zmmKuB79r3o zcsj$M#_I?B4r?BaX1~P%YDWQ|$a96f25G5N0bpYSsOU+YWR;6q*C&mdSlyDsU90E7 zC{#yL&`_Cw&L68Zvb+(0-nd!}-ehJR6V|kR$*KNnM*j?{=f$^IvTbziRoSJP~7H{}1g>CDLDE?yGXN*ra1b z2MRmO)3RlGyB^`l^=*{R9n`cIODBmF(Lj?b9cYhIQcGJ>s~cH=lBQ!DnvhqnX@Ampcsz)$-mUFJ4ot zr3jh5qjyFfW#>Oq&S9936Nvym_Q%o#OJJJuq3RQ)3^Ibeyw&3dbT?Bx6oN6KXk)FH*2H>FnDgx8eB_skla= zyF!h?z$#vlNwyMx;Or2+%OCir|?RI%b43LS-(YjV6WBl$Km*;ldi|b zEFM9!)nn|fT8OZag@SE1Q%V&>u7EiNe{VmD#|YEmXUbZC(PSz?z(3~%n~}l&ZnJm8 zY&1{x&%X*Ca+Zxs!tGoyRNsqRFsad zhG_()rz4E~8sBL){^>9AKaJym8eaa>550eS)%&N5|JrC-s4HDnuF8Nm9(^4(B2Ni+ z13F;m-I)@9CQDgT`hV?z;MuY7dx7&3S>IjN9|JK5Ut z06y5LDPr8;b}(7ycL|A%qt1bFvvOP&R1K3px_8IHfu2EPF){(^a_6z@jD-mBJo`;Q zxPQujK7f?sack4j9Zv2J`MsjEe43NDYRvblXC0v^LwuW2dQSGDhk4?6O%SYRqI zhK%X@S^JJ`cj#vb8X7vu;vr{=?k>i!Y~SLLD5Y^VJXAN?Zoxe5opTz~B}?$^iDs2= zGh7YR_do-z!|@?{62r2f@l00Q*_mAxwS?$@;%E_VNt53Ws}{*`PXBDtw)(h}wM$)! z&x(QHM(?8S;ToYYTHf*Qv&!al%RSW>hq^1#&2Nb~fF1B5stiJI3p8~{+b%O$xYk6yFi+xQg7%jF9DAnVWtQSyaAEU3kO9HC)Dcpa99@)IJh{fuE zaxqX`SN}%KnVFE;@@2}ah+G;+07yc>uCPH%Ao6}jp#`YVr}j|G7E7Ftt@X5rtUjB( z2mfp{j|_G&g81d*baVz{T7FDi(R%lqDu!hz`mgzvLM5}gOLkp8^h-n4X9tNPk2mFV zOH?NLx?fTnP(y7JPG~RvQBH^MooJ+gh-hSPpsJHMeytm%p}(@5^U9l!vPNE*@rKW* zNUc|+7_S%8SbgtItfbteNq_3a*TLz`0hM@`D#!%>D77pdLB)%^*3(Kqn5OxRrcPxD zocTE$`vg`}k|})MCr(uGC7^Pn^>#dX>L31H)Jk zkD2L+B$TtVOO{PgLNXrC^0!QXI`Aw?~j01kW^|b8o4Cc--EZWz6ikpO|aI_iUTW1gFjBCbKnY;I<~JdU(<@BDvq< z42tmqGuYq<>NY_%U+IqB*7kS9tDVP#_>WiL4C8MfKiQ7|_|12J-^N$lS3B8uy7TSU z^>*UZY|Ir(BPpkD9d&huF+(cLN-*H~($^9|!(&EOP`it-?%{wLKsT4h_b-033K`Kn zE#Gux{%HjE)%|+(nA+5@22?x{HqwbswJ?MRC|O;`p;{X1p(*BDZepT^Ucz;nBZ~wl z**U0!`4mF)&0{xzpF3Mmo@{^f_}fR@+fTM1KmOw%zw^^q)S^~gG;CGVS5M^xssKW= zhb~n_%OW+`MYyz=16)8uV1b+VJzb#t?urE-8K3drW=%huB`mQgmX-*DB)|Z(v(&) zP^C|)>VyGK0i-!%y49sb)Z$=mRk&(LR!=k4=%oEcIWNYMpIu${=DL%;yua{dNe9N% z(E1P_6uFYjgInUJGa%asudQoW{AUYox(p4sI-0F8caZSbB;`0wkOUEG=S z{;R?l>Z5aLAZ2(j>CM_KHU?}29 z2I*MTS+3rU8bR)V zDR{1 z(CtGo(3Qxc@!A|jD~ottWUU%Jce4aVW@$5f>r!?0t^NI zwjo1T(cZ>A^oM~w!;j!Gyv;(`c3|Fru~pfQZ zv@|Ff`JxM=CdsI3%9K9}tU%3RXD##?{cNAT$0wtP_6zM>4>?cxjp}xgS@dInmAI1l znW2uuYz!iw>-IQuI%I^*mp8Dn=0ikTSfZPu@@jV6IM?WbF`~ziF2PWyswP6q<)kGp z23`Zu=II-TQC*Lq3K`$(MZW|Q`~Lt-=-$ae{BH%k&8??FCLhrT*y5g31AIa=ns!b0 zqSKi+X;|dYK8Wy3GctYs$$Oc99>6@J)p{4SCR6m${hNe#EfK;ryD?n>_0vu1;ER2U z@EX%&1cK-|#cb({At`_dX_SJMl|=+EEnD*Eus{Hmvurbp9(kZ+$j4X>T3{E`q0?1V zre@1p@jkdpyai|~e|xkQf9Jz3l{M1;D+l!!RiqV>5}J?`$j^3+ss8T2I{*uVHGa^*T19#M3vL+IZBLCJD;;nHeg zE_F#>!BPYthSg0Vlu}jiCi7yRj&ul&zNNP0#4p%?%aB>nV{swfJVmUQ zB5P9!SMSQYc`+n!M&CPc2?Y=+oaN%GbZ6aV?~Q2{L1OxT`S#p@{2?5o&8Q}OSFuo9 zIo$?{+(MnWpM>KehI=oN=21PY{JaWiQHG5RO|4YY+HlAv>&jAv^@2oZdk6}s3a6^< z4nDiU`mMmE|sGC%OQ@l;DRw3Pulwr6`*9+AdR>@QG9zI|75Wc9aJV z_8p@yFI?p%^5-f*(_Z}Ag=27Qey#CZ3_lEl4}B@BunLt!05iFzZv!!MZ7`#jb(t({ z44T`8i&_V|@1d%2;;35p-7#hI>Le%EHj-jxZ4l#1I9Pud7d5KO9=P|hZ!u~O#e2lLAE zUiF!^e4cx)FSeLE(cH1e)R1oMHPv?K^VCY0yQcNv!QTq0GS#D!mbxenXKA#YM-?h> zXs7Zm;9{9o9i+Wtd|y?%rS#dLb<5Eco6!aX=U5?sOZ_yn%-6t$0|S{Mq6o@nyx4B_ zDo2|(@IYEm=%xsqP0;4cRKng`}m+!}Aw=`-j>XMl;eZ*K#5vb07HzYioM< z**lu4DQK}?q{_~S2!PN;|MuS6;-D^v>|cJqL}5_)C98}v?KlKQFV`UyMUj!D_xqXAL#i9q!8poqpdJ z!+TbOgdbA%O=3ziP64VK9MHv;euibz=S8e#LS2zyIz#TTPQ00 zL>5g9XCOYD3<`)qJwB7vqdcO&mUEmbIp*nLkWJ^nPl=-oFk%2TZO8WKGYp9J&cA5m)@}F8||RH?aoJq zO7x}L>;Rj;;O%yGUWBm;4}p?+m5HK|7f2GW(IkR>5col%JrZYNg%28DX2u>i%I&Um z7FR{>5kNzF>ES^9%Zq$S?okm4sFpZ?R;^C-y;XHYWgK~(GE+c;QL4`JRvGGM(vwE_ zJT>bw6sH zh=JZcj(2uiPpziygkf-Lq|wcP#moYj3MT~jG2(uBZdB&8O2|&Gu4HXRSn@Qk;!ref zA*Kl1hGq!aWi59^yzaY`|99{&_>iwu-ivxkyQ%lR9&)&lh60++sM3s#-Hz!dr&`n zZs>^-aDtlCeE3kWME4mjknltIunUE$x@vHdpXusjOyG$=`uVPwvq5(#L@?}y@a~|8 zTyO(ZT>#03OS;ap*0x;+P^13@41hIaf_qS1B66%r)4WuzZ>v*d-G*yN53ISnu`#zTlhOXl-l|bEoEi^+UgN_ICH7E;g?yvGfVSwTmV?qJQX5X>(HC^~c~pNPlEN zJ#z$F(Iz(HR%=80*Oy7|r-TdTpI2rE?~^1)O@wx0Av*ZaL&4>RDZVNn>Jye!P6#GAtF|JKPagWG3-+jFEc&B=4Fdp_Hx`i)Bv1}zslJ0Gu{eJyBP_jifoCRO` zHkH3GuQiDQ&f8Yo-1OFqM^nZmow!6P@o9SM?`gP?igm%y8BkAao3)6DS;4o97 zA>!|DL+6Qp*fVwlDuQE9x1H#$a5W=B5M7#7%jgjj6AFgg$orw35~1i;${@Uh*LZwl-o1pwIcdiqD|CaC7q~@7e$wqZ-9j-z5;cnM=75AzOSh5;^#! z1Cr9nePwrlEO_LsWliTdheZwYAj~8P%tvjrPVk`4o`{y=3=SN@<@-*=W7ctc7sy30 zyg{0ly?4*R;fYV+R}1Kp@<2P&+$9&%nW4ey<8;XBo8O9>b#qI;yssrqSarR2bV?5d z38;>kUJ$m08LVI#O{$(lRRf}jg+S5jT(hngtkP(I_<_65t8D%rGcy_j{%#HLzW@E< z$(v-vb%9a<%2e*$me)G24?ZJK!lwXElcf`{HyTUcN=<%yRSe=0@!WJ_1b3 zEl^^vR>Q-Ox`P8tTsEHOE*-T(-xJv;38d>J6t9`OffVvA&=gj+FG3JKtUJgdTr~%< za!3__=*k06c)ka;3Tfo;(<{t+YzIf0**A|Am7vg||LV1j3;IMSR2={q#@bA%{Ft1h zI?_1%IVHYEV%fR!@unjH&!cUYIe`s|U%pNMDw~exLA3A*YGs5fr0NwKq0>;L4I~q# z^Ei!}-09$PL|*|5@bW7#ITtcEw`*Hq}TU0Vt) zHq~DZ8~VIrorK)TxB3+pe2HYxEUhf8f^F3p5dwyVd!QPLwBz7Bcg*bOaiFGR&^+R0W{`FDOL?jstQR%;W!Ju?|fQ+ zGo=h-jF$aEj+(hqHzIS{F^sLav%Dc~FKp!Nr7g_JPHymYh_2*_OPwr03pyGn*eIOJM?8o1|ahRgN@d1^-|hd&*j`?zM1AI5_aDnM0w z(yY-aot6p%o>nQ4%Okpvng*p)ZC;a2k=l%xv4uEuKEq@_Tey&Kq_YN;yA%$D=t;mo zIqT;}7M69ao;y$0Tc&Y{BBseS3C+NR^-%wpPcuZE0 z<$jnSrSnzRS?|2SXys%eygEkaQ;@47wzo6I(ULj{b<)FtsOn)pWE%|3IBMq zy~7}kWm!vSf-!vvk*-RM`Md-dFoz?M13c<)kG6!BpozCRBGPLfN(E?!u(;ONt7+}h zh$Xel7TJlnceW5PfN*zz9XOR1SB_++AIIai8_QBTW5C-@gb30nX2>;X1{-56sxJL3 z?Vi_rWtvKl8(cl04&D{)(K7_wHp8ekDnnS31027}Pksd95&?b;`$n?i$CohzdpR6JK2On9|5j3(!9O8t3+3Sl@3s=AW6Un+b+8p zaBiAI$B8W%u&-#_F7qes=8ko90~N%pEV)KGF5YCZWu`Qeu-3p`T6#*R;E**b$llRr zTfkkkdbg?YOyXs^ofyYU!V}iItd5Y$*sqW1=r>n$h}#8b@5~KBeyED_B~ac)yPPP83Ru&?FUvVdNBXe?=5&UM=t-~`u%ve)^7 zUR8qDXFK&Mq!xUS4hmsgP7yls&a&9k=E10cHL9cfl*36WnGl{Q>&6S* z{&-2Tw{60hDvN$h(FIi%6_#nZU__&{dX%4_MF@r*DwtUZwI8$Jv+hov8t0RIycoxC z70-!45km;K0MN7W(Jx*%MJ{pc@hD&rE*?3U5qC*_8CB|%MX~Kc2#iMgE@qSAZ6E-?kNh8zuL!NnAL$ zCc*mLOj^BuxJPLd3r8&!e`Bb5eT-EB)jTOw0#nR?twAxq!lzktWnxO`jaHliPN){z z>eVJnC!r4`90X$1Q}p6OW$3Z_z%6u${b$ZC;*?9zuB79vO{PUnW`J!O&?)bd@ccB& z&iEPAeRQFLJy1@tlg$0j^|7dXB$Tp9!$YhC+TqF_h2iY$14Xzxne<@f0?-)+@Q{k(_gvq)zRQ@(>azBK*Rb$hdhZ=k zO69R}VN)rGG`4mWK$?!I@QoY zHTl(ICKF}qyX*T4adrj@&slTP;+(l^Uo*I*Lh&8mfaq&!dS}zbiJJjC+J{3!uhuhv z?t^0-n%kA0Ou#Z~@mwEnymxVNc-cQbI{EY7%R?rdGO+WYg0hvvV?|wD(&PQc#`nvW zE(~7+XjtX#Rgumh)f7R}R~hEnx`GwUpo==@qwr7sbam{t(5_BT>qiQGB6)hgakY zy7)Ro-yUK=4H;J+5zU|%ZU6Dn*5j=w+or7hBt+S=OQ~&!{c0UWR$CmCJt??wNwlU3 zq#JdQh|;KM$@a8XQ*bhc0}Cc3>*HG*tx}cZd=PkAqBY{rtpW^RFaG-1`$q6~DRy-6)nTu4RE=^he8PD^TK^j_D0w7vlOm(_?XoCKO=^%x(u}CXC#wFFXZqmLbdu!FOc{sKB|}A}5KeA{V%z>_) zl@0ljP!NU|yM3a6I93kC>YjeFzdhReC&Rr}l1e)yXSkp&>fyBLpd2i?%ii)V zQX(%~uo zoLT~H5^Pz-&veuWH&yA|UqT$y(j`Q-chxgfO!((K17S=@{9zG&4y`(~x2@n+*I>5c zFY+vymubU)#I9eV0o55un(OF>Jb-tc9RYHqmXi%Em~Go#wA-*Abo4xO;ac+N(OJ^g z*di_Ug2EDvU*R=68Dq5_X?htDn1F$#lTd?BWB%`A4qSV}9Wi?|bY3OuOZRy8GA3C6 z6$COQ^*m3k1v_*xD6ni@$@UzpiZh)m2&g>fWdaIfIK3dIQ}Kc#vJAypvNUa5ZNOjC0SWeSTMS@|N#!M!FKC)y4sP0i}4 zQzKH^wlm9e^se9$1q)eHIXm8|sX4xGc#zoJYEc@9Or~N4`(!<(@S$T20sJfY0Qu~U zyQ~a<*3lJRwmktBR$0)s5`_|aJ$NXEvn9mQZ%WPAtbt|!Zcbkz%O|xvNM0UY8+CH@ zhuh7jMr-<@N)b4UP@QHd2kXpvut#vc1we$IVM1H%i%uk`g+@m+`-P>8ZO5S~lb3%n z(-S7un1*c|@_R>zGY4lb=j(~4boV=tDHI zbp?bj7$?AM9TmZ)O8i&?FJAs1z7y>G57AENJ2XaEV-eNlzmFb0Vm-tFS206axB8Yp z)Tjh;cYn6R6v}Lm0dOd-bhek;-G2N>ye&JE56W{L8qBmg{ugEe*t;NxeDagNxE)7- z@MP&rJCDD`OJ+x$Jk*F4&C~Qsq4>-!D$BJ^YKzoF@Q33YXr?X(DQ~L1zwv?q^w+Y_-fD3SB6>fnYG&8CvWlO|W|K-b-F>o^5C=pE|H#MkNdLh~ zjg1HV+Ou++(&__PV&lfBwXVG|lodgLViz6}`ARA0>O3=Of8+8?!Y;*>{u8JE8)leW zhM+8y+uFN2;Y?~Jr3>iTO*-vS$it+@d3o!p>dfi~xE)a3O-v*hBK~8JWZ}eDAM;tU zi05~yt4dx};pS8?%NMikMk~H*#@5@M2ym)wDkzD}I?IAXa2}`u-XpG?oM5Sc7pCef z86wGcp+tyVR%z`lXgXY6c1Mt)xVP$tLoGG8t`pU?*xl4&y9-ROEl{2|hv6<^&OR!(#!9ejhXA~Jwf714H2L+hujKOhn;YKM3R)Y_0M6;0DB z2*0tb@6qXx>uVUiuU`2WR5I9q0Bik{HaHGgIsIb8Jsma6H~G~1=``@8$= z-v8Kspzo1Ww!YcIFoIA1{%@>lb?1q3-Us=ic|)q?JLj$TRUBP@mz@1{$l~K_x^;*< zYK(L#*UG#nzDx?aDa2$o3+pC~UEMW`f_&|3nc`xcjshSq>9waT_E_J49tyi|4hDH4 zhXfiR9r`}uOojQL)|^H;4WqvTH;YxQmU;j(yLa-J(9$fT8_T{atWIUOi7O%WYm7Ih ztPdwR0pAthJ{=)=;Jyw-K$?`Am|=C|puanC9hQpr+p=qi$Vef=i>+hk?#kzc!ck<4 zeJZEPk_}?n=o7@tDp_@Zpt`UItkH9Duy2c^%qlvbL`~ntp4vORib2pt3RxF5#0@JU zsSW}n-Kt`zU605~pPKzfX>(Tu5l7eh=DZ*!&MgICoj-)>gR{=5MC{0}Ma|t4tE!<; zdsg?L=?K-MEz4=0{?@U24J`{Ba_S1VkwGU%2fjiFcTiO{XKhV?pr^2N1Vt5+&y~_4 z4hXvqJ0LhPfl%4&&c@?T^eUU70GJIUsQA-~ECI8m8^m`UG41p0CWr54S`?5niR59W zMpS9?G3Bh&plfwd{2cRT1>|T}_qp?i>3v*W$9GxwrY-u7kQ{YMBfK*c*K9?@)oma9VJ%fY=K65_v=M~J~G6k9!XGecN>>iw-o&kr4 z!F2}c-}KV}NNr5z?v|Av6T%f&t}c6=lWi7bKZPwqpCZYT{8cXBE`#N*p;2p1eJo$| zXbbmrW+9B+{l3;%0@}6p?eBZHDjWS^XXIzaA)zMZ(@v^?S)jlZR0_11jG@>MJNjGs z%mu+uV7mc4Ic=D#_Y2K=6Hu$DnJo9R|EwG>Zl3oQB8AuzEtl<~Bhz?x;Z9*OG1Sz4 zYGn{vjvf`j42Kpd%9FSGte7YY6IWH?>ov&GjO2L3BmVM& zbQTr^shC@T4CTn(pi713B}=uMU?cPBrix)NcW1s2R78FhX&HS(oQ5!S#LTMRcr@6FAj6ZI7d zkF#cz9Qy2V$gheYh`1M+07HLp9DTneR*3qo&aJ9{kG6MQ2~$Y$M458Q4c?~<8`aN> zDl17akupw+qP{?>||ow zwrzB5o0Cj3(Zsfm2`9E~`<>^Ud+xpUR-LZuFZ*BB{jpc?wfAq$FGknmDQu{HqsC%Y z?d1#a_@R(%iTkcA5)i^IGQ2p0Q5@;E!1z{M5kpOp22=kRy|(~#!HUHy@ORl^|)L9(?fPNg}Bgw1q;(S z7d*#1!w|MGGDHd++!|GpnMV3KX%ZQfE90>)Y^CiGaFIxC1tNF+?)`Xi9pdzcoTmV7 z#gPgU-lkNYyqAZmIrz;TXI?fsc41iKIjK$Lq>9#IRF9Cp7ba`uLCbb2lQN4Gw~X>< z!yL!lyPWT9r))!f-&by(>0v9V0pY_@^J)g&@J=@WNjitg_%Po7wMTu}p~=1tf|N!^o)Sx&h%%K)j&H!+{`DFp+G*HCc} z!Ec1GO4uo&5GA&M^AQcD{_E6?MzQDntm`QzWM-j8BLvfJA9tbO*( zz+E)pF8Ee-PlpfLGZq=VHAfT>1kHyG@6VK3^^4lAUijH5cCY6Ch@aiDF*c~A4haX>+7qTT z+jKDBGQ3ID5{$SMmIe%Tw8TJlg5GZvV6{fh{kcTnElz*qiM~D<<%eMI>Fv|68n_gN zLkulw5PqDatJmAl$Mi`IQ}@{R!r^6Ual?u6Ys>))j77Ewim`8O;@)IKiJO&fl{L4; z`li&?mph44i^I=lKKnr*xgxb-Nvg-X;q_n7ji<3p9qd;)?2y92x)?h6`jdmhKzVwF zM~olFcQbRaOKqd#S);xy!#dHW+FQ)1 zGq;erxIKabl*un6daTOqeE;&!ZN2FrGM1)uk&&vwlFn6{}R z2dnlV)Qf~{L+8JaOVDXj+#abaFk7qM5cOtkKtUPeGJd5W|SyOh3rJ+5$!uhvl9l!(T)xuJe7A zrZICwcfRdW$}KVHg^>d%w5~5c`75o!+~sKHvSsv<_Qj9Sr@5o6sK@gYuhaF+ zp1E)=NhfJVmMByrj(q4K-r(wGN)?UyD`=MYdN%Bfx)niuz$6wP=C|+tCr~(29E`2fevM>Hb}oG zj1lV0+2iMU*)sGInC&U)XOc*ebmUcIeu+n^FfNj}HrTSogg%UuB(>PQcpPV(c_ zhryn$zV9&w%F?RJ735oR1EK`{>YSM{Ge_NyzN9116br66FSnIQ#T<=+dH9jQ$88o)*VP9MeG#DY$TS!bb+(H zXXtj(NJ3}wPPKmT)>bRhqTtc{7=DuaseM7yeTGwwmCwnA?Lkd^k`Z%eyMxrBJV4;w zed_|At4b5i3Mv2wJYvXX5YLcu;1t7TYkAbRo+oIR9GN6rLr>e1rNd~klU!KP9(T*I zX$}$45yOQQ<_OvHYzBpEGLIMhenb%Y&h5f?<)K69@3JSd24V#rWVRyG zf9O43N(Ig{B_|!?oGSCF&=nYO?kGHRhtaw7UB(oKGhN{xAY%aIb%W?c6Ixa1huTWW z?tj+BtZu&e#l;d~;{!u4pwYNOQ(Lx(k1yRr1yAbzTYB_e5KSQwE0t+WiRiML<*9*c zVJ-GAg;xcR(G3k2e?>j}fR`q>B#D@>Wo_ciQAa{c;oAFQGoirN#^xLuE-l=cbB^@^ zM{eLYftQ%a?aN2p{)J2^N zLZ6j%T)lup@GJ~ps|zk22_!eD2Kg@HIE-HK7gm$D@?@3El+Y#dRhJ<5Is4g_`PcSw zC%)ER`vgjp%^wiX%i4b-#2?6~CleP{$7%Ts1xrt(fOT*s{ikQsw%Z`HO`qhET73@H zuzx>PqSc1Ys5{y3)5lw6Y7N_|xs~K8#NUu89bDdc+&$lo$4f=7UmoNr?NI@Py#c+_y()Ws5O4rbq1C2HE7EUl22 zFr4Rp0-9>LVC6j3I#Ym<{$xfDHENw;niHz(>ezrOEhx4Htohp$0HG)Ez@pE;hY_& zE}{BUI8S4q$H^;pEkoTPCgyZNw2RJ&MyQDrh!BVw!dekBEauEOln$Nc>JPFmVwgX{ zV}~*RN7yc6KXa|PK+M%)nAmwc<~uZD>}WKZTetbsy8QiqF9K2)W)9ly^ZxoYB4Z&U@3Td|;osizgbB?h4;xNUJ zDCcRnI(;8U`mMDBXt^8~yvpx!r{yzT?H_P;DEJ!*aFWU@xwapvWr|_Oe0*Y zYVuFdn{~YVEVjW#K5m5kIa4V}aG=O98_K+Pj)aG%d+&ev^*@|Zd7!KdyWAizmaj0J z&4K~Bq47+-Y-5^2gbWH38^+)?PAZVG;xjSe;V8-Iqofmff5~3 z&>w@k2|8FZ;nM~L1S9GX@_74ckyi3FgVYyDt7V}hMGogW5l_7<_$%53d3}p zPXcU*n~WP%J@%XKN5Gfs@54B**J`4T+psuQ#m^o{ zGN#H0Y`;B2Pb;PGjBS$ukLYqpwSuw@zWky-6Bx`%_3jYrQCibFS z!cSB3L}mb&R>-4_xrV71afs|&WspXxhsm+FJfqV)r_!(svmJ)u3DolA4pJt;L06KM z9ctI4y2dz;Jl@FFI99~}bmtY+hT-v%FnHo;h?I+Dqe~a1)EXM|vr?nV7&$!?COI}R zb#s0ZyQfQGChPx1kiwJ=y1zYVtsm$j3u19Vt-+bvc+mX%1v~kLuvGM}nHBp^s(bL} z`;k#{uOCMUWc?vD2JTaOnm4Ki7yPfP2@r)mw#dCeb3S3_2*hsm$%g||?FDCkEpW!Z z%;f7CHvI%&?5S`+-M)UlzIAFtl}ZMF;~X>D_)X?_jC#dcg}aX`>fZGb#y~ zWt6eW!c%F6(0A!3CFw>_7m(~@Ec%<%+MeBg*e{)tUH(X$LL{~;ELfL;F0)PNrYcPj z1o02L)eZl@M@0ggK62k_nA+M*R0Sjg{^XcD3pmbO(tiZEFBEF4UP&4{_4XJ|JVUhQ zRgK(A)9ar=0yB=g7m@-Q-Icsk!OvW;V)UG+TU;zGV)kZpf*9b1+1YKK$&Y1n-qK1G z|4^cuDLiqC4pAZ(rVuo_)MNvQJ0H1Dnl1ZE<~{+OhqH7(e0bYp6V8dbvb z?O>{f!UND37mdxHwia2Rxo z5Y+1@$1Z^xT59rOusDH)-jvIuOvkk0ojOqKR0qhKC&{uUs+<#g8?u6lo2g7bLnk&- zX>}?fExL?NcEf_JF>8nOV)_S5OkOymK-zo}^!( zbxcg{+Y6sriIFA{(DU{(+>PCiRMzx8OC;u#!r1+0ODrWYiXNAT%oq&6-_64iJ#Ha; zK=~Ow#k&iF<=V-T`{Pl^*$v<3Tpk=b`tD5)UxLGRA9;J?;YgreYoBXf&aT%I0TvU} zU1RGG85c9*!VGSkT?mTQ=pjvlZrjN&b4nCTQ~zLE%=B^y{h)E~*Wy_A^9&IXjea7i zuxp;l7HK~>meoeMAI9@5yf0duMN*?o1S2g$@^$yPYFUb_c$6yK z0^zi9y#j4xTF^zjNteD_LGFZ5KqnL*QFHO#Ea%DZYzZZCYE>Je%q#1)F{`w|m(lSy zHle!pc=0gi63WTq_ML?hg^WaIbe#uL_5D{4YGPOpm>k*PV*68hyaq4l0U}Y*2Z1}; zsDxh|A5aKs?As5&d0N&li%RC=&=lVw>9GR9>ewK>8)Pwm=jsQd5C3C61Bjy`zw=(Z zSF~Ws5BK(K+=+dVA7zL{v|`!P9Vqb+DO4+BWl9&gP(+338u`P5(qY2L)bc5_y2sXk ziQ#oARpEmC9XphHQR!LD<)|`t;Dnpl@Fj`Nty?d8=fz(~mdFy9>szulR;i)I5}qSx z!*#3t2M0SyRuJ*jK4-Mj2O3Y~yEQvmOqmUciEV4WZVl@2?h*V#2S$T3sFAV@HB7GR zr1lUsU0>6n$je}%*XFxTfY|qt>VfqziA8s?j6?dxShRZFHY8@YBz=shgakmZUsq38KWv3$jBVUy= zL+eR4JFoBqfo95afI>Wgf`C9^{Ci82)|$&2H=6&F zrW+4(5=K(zc(s%hwqyW0mx$5!iD|BhZw-b43OrHx5Znfu99#YC~7fmbtp zLa(jzb?0|-tb+&ddQ9vV@VdJ~a{1uUv3Ali&FHTyMeh9Lus(J3Sa9v}!3wRB*<5=b z_z*UBwCcCRzba%nGOG^dbM)5zT#r9glPkRK z|1FRwA!ju+K9(i1R4Fa`tAsWBt?9iUQIsI#6+FARh`5r=NCN7B%h0DzFmHI&6O1-I z>?!uCjs&ftP5S8kT^Bf(oQHU^N61~sGw53n?!o?-1)vU{aUyFicDD^D8&Nua=F}MW5+;N+9aC7hgZtupRK@C7Q?qA}9`|0QK|}3~T&_3s z0g>kJ?RUF(urdOiL`)b8ehT0wa&9g(*8QV5Vb`p6RC8CB)5u_1~t`|86h-qjibHOX? zQnO!=U|;;oyZ2F+)ZP3Bsu&?Qt(8<|_S+>5DS}mg3`_u+g-Uy=s2mi}a_ZkA@@wpq z*m+ONoYEXGhIfn-+HBu;!^C9s{BNewgLnINZ)2>M&evwVA)R zdA}xpYEuze`j-T``$W4FoynWWK#`QHK6p)k>Ee-ToR_-bol?IiPL|jb*ry?VU6wKD zrPh>q`=tx8nYmcwG?nt$Te01Ehl!ai+`#chFrUCE3;)YItXGt@1=}qGp_;2NxZB{0 zx>qq9mU6wMQMuBuu}^7FyBVL_U-1*{8b}`Oa?{lJMV^;K_>Rr*Mx4#v)+hiW~itB4pFZv z1|{VR276=Eq8jji$dxeQ+7A((EJhn4xPezJrclPiD+-s17&4Of zfZg6Cx$$?8&bGkMPc&E5WE^2(sV4Juy1=Lr=$yu&JV6g!TFokB#Rs6yeVyT z(d>iN#yKdLZrEQYKjz2z>co_z)Y>?@d}U3!M}tIB@J?Si%wWXyJAVmWEtF1;VPl@E1}+UcTUxk?{F&#op`t>b7y2rE z!KyrRdw|#Vqh5n!$A0*Wgpr$x8&~E>$;3^OaqY%~LW>379h-@mIUIWwju2@tPpUck zydyr8SMui=76_Zhpg}u(9Lzzu*7Pp`E3b()^8G9J_n#s5w(tBw>u>n_w;)-+*x(w^ z7SXS_;Ba|+M9>E*wF$lQ}Z1vll85ux`_FpfbMgL%LpIGOSW*I4}%Yh&m2UZM5 zy{wf6d;URz(fd;hj=a1S!$Q8q1cDc=_nMKHSgOPK{(7t(vD5JO>1wcP#<4HX| zMw*NPGmo8QirCbVSt|h6?3z{Pz#CQxa9KFJS7$yoO9UN z6uZKCMn$0Jz#l}BX1hf0@ib+zk#EL_pzqo{U<%ryWzQ7j+EO41Ho*vbhaF4P4~ut`m@uL>q+#eWuoJ9FA}w2&)N zy|*OQzQ5{YZP~rC*q-sO)nINAq~Xd(Ciazg(of*JnXPTj$y56cPW0lRd1O0Y3~2`~ zCOW`kX(+rn7+Nvl{7!6SxiVQXAeFE2&V6VRk#|Kf zaX@us3KhMnBAKU+Zr!)o245j^*TL40%aeva*Bw#kH1rfw3`Gsf(LZKrnwRbCamRo} zzDF;ajfqippt;zK$;o+4s^~L3fgYtubajas+$T*Qu5{aNvE*GTig9IF zNOd{Kd%9UTDz6{=MS|{C(mp9wXP*1#9i5x-iD);%2XLf7f;6K|zD!O9gU>49kh=dQ_v)bR z0cEodgN@PNME}~K#R6U73q7==%bc^L-!#5eUG~bp|AhaKM*5F*f%$KV#1~1<^FK1E z#W#|CfDrLNI%was^$iOZ1SBRywuGGJf0I9XI{L0_67~KgHOGa-qI4iq<2UYUcBSJ< z2XT&Oy3P9=(1sZ-5aARWBp}lu$+(hlYfo;|AQ0v+4)wI95C~B00w2x_o*~G`??bc# zLcZeo8Q{15HY>~9qW_jxx1F~u*GaY*t1GUmn6t3~ zsw__If1dM>yCpfgjEbM>;hWDrJi=;N&tst7vH4^HKP~ScTUewTS<|vg#F2QQrd8B2 zP&{X=MQ>dzIhWm7MvjN=_DGCK<=suKf5w~+pJb#RVLhBSsimd%VvGb-ILG_uWOq88 z|Fsw@&LLV_GefKOh*vaBvd6Y=TG?I%Hs69L!(o&$Ap1g~?|LaV>Cs17Qsi z;Q0Xo$`_=}rL0^wN{NId;9w>{m!?;Y%QKut%p z8TN!~#7(?-)#&V(2Gpw}6^`N2Np`x97^Op=>mN>}lgjqlLw)!Wn4vDV4I^*C66>8x zR)4S0Y>dfOxjQyf#ev20*D)pi zrL@9qT)jaq782LW`LhhBOQEGb0j3ys1Z3zI8>dEw2-NY$o$cJ(8qaKTwGAb>Jbc+m z+LQ)YF^cn!NzE!}FlJW*I9-gjAn@MA+Kh3lbHmUR)Z9$JDqlsj7v0Fgdcu7F0?~>J z#!#6Ww|^^535-rCf*qn5h9+0Cu(bG&^%O|SjSfOuO>?leh{iM7Xm_M305Y2jL0sjy z)aJm-*kOeVCadgAAX>UZ4uNv=unW(yHJ<&CI0@1rXMSm`@oAKy!#VlHS*61M9zqCc zXl8|}&3po(9&T^cfgx_RFTsdc+=_JyFq{Q-B(6Hf#KI(Q{#-)Ac#DYHcV#)|9S8yp zjm}79eVfGqsxmTOUjHuz07Ol1&i)d`*6sDtu_%-**HgEIw79A+Ey|`$;vIzKBq{QS zG!*7gXC1D)vERi!dh|M;IKuo^Yp$^3F<13 z)PVDmCX&V(>O24PaPMYHkweKR*kGf^w!}z9E4bV13+~6aoTMIKnFI^=K-|1#wFM<8 zj5CZ+z^@4kH&D~p(E_*bDE zFH4)PmoblErXtrJI>&}gi9)QZG>MDdt;ikLE_H^lIjdEo_A8mIo5kWztS?)L0!njb zoxR-rZd^>vrRuW|GBKWE%!NqffvasyY`sKfuzis&+Zi4JBD%h^WPSkTW0ywlL9jHQ zZJpG1pgrXEN&I!F;$f#qYiAMUpFyuY&8m$mSxc5wE2nWDP!A1w5=;0<^LZ^xjq`ra zgVH5+q;<}hdS^OT9+gOmK(O1reFJOKDz|b($3r98#)c_P+p9oYzgg>&SsT~-pv}r> z=v&00`xsdut;DZDGpp>6+M)!%cY7a{_kRA|a#0sw6}TR&Q_EksR+N;RHzxWzTkczB z6bkA77rAQ=5l_>Jnpq!z_G;TtNN3U(?oQT$NOxUT&nyI?Kx5m;{#rxWL4@I#oqVZC2_dhske8m zG2O8-itUKI!8vbj?b#Bx_6YV5$UYET|G=M@#&{l*L@92q4uiAak=b+pm)LZ zr-EOA(;(GTz@KR*M%?5~{`gOfG(?Tfn=Biem*lM0raLcT0_XCb%`MUnF2bf2_XR9D zS%Mh<-BkEVQ>Ug!+;v*?g|}vg6$&y?cGCU5jW#(F1@Y3Q2!Vq`JL&xARv1ucbuLPG z=RsU0hFrQwtlfRRlp^d(@RHo`w!u_Va{9nB7a$nz?#k z1PR+wxss)E#`%{V~UpxR+;W5dUL4ADxvwjHp zbT<$SlY;+FN2k_igS#c=?0dj}uyC8m=J$m*6I~~f_k;_#rPFPq60c{) zsuuVMs)$D3`^t)hcdAE5uH`9wCCF(GGa-T*JJ11U96%2dxdo}>2y7E#4D_6GKW_o~`kxJ+NpfO;0>t^(vpSR}( zEzCXypGNUy2#Rm7ndfoy8JCvHfBcc0t zo||eGy)|8#i!97Tyd_|FP~LiX(tSzn^YvjC3-ZB)8u4~;y24lOo4e=aZU}fRa7E{n z^~_aQNCeu}?p5dP;#51naSuHq{1IG~6@XEkN)T2HuStwCpA3YCPOvbuS>y0jdi~yQ zAIZNdm1AY6jJUPrnd!B~i9)s)+OMA5DdY&U#6aHw>Md3?DGUf_mT{)tlWY0<=LZWc zBq?5h747Md5dIu>%6T+!Y6AhsPKJmDxWgwtQP4gePQh$HSe(~yayB11P`!g)7R-j* zO6gPrIge^Ga;Ix&xrtE&PS}jPc|2hM{!8rOi9p*Px^~s{*IRA;-Sn+6*_Gw#dK2

    wnfzEMD-EFYpLnb{N^F1Ug+JQaVccAGS1tbRnvz#{XibY+Yb;wmN7LptSl>)w{1Nq?eqFY~V=>N;c)`6E z?DDmh`?v+>Enpg01&wr7XLB%e**-m!@Gl>?X}~P!Spo{vl$U4D)nRfIIYQt>E}1)^ za28i;Q1+b-N%hp+@1Zylus_kh^^#bL`K3R@lEMKlHxvgnDHVSx$D?K{IQ{V3kZO&7h4)`JQRduP9Nnuadu#C_^%$s zj&xWyI0Clw-LGyF@VdGqFJ=7tC(~6*OC+5hJnVDmNM?fAMFGnv`N|5;IoQVekj?r| z@}xLmGh#zvDFWG~QJ0Ln42?(lXs5xe;Lt0GNT*Wk0&k<17lh_qRZr=LzZiq(NhpU> z)c$1xv~7mpy=PZ2Ms&00(Ksxm#aV`TCyNc^djVyyab{;I>APlRc{J!tgs=cE|X6$&BkDz0@*l6<5 z&XirJmaP7m9^TUft=*6ro3Bvqk7{E^NgKL{ub-z}a)md_E8r%SK!%kj;8GENT_PoG zv;!8gP&V*><($JaY4Ghq6E-n>Ny-;%Kox_ysk#X5uI(WWdbmUF8<1&}e~R|1J#`G9 zw9Sd4adS&Wp@#XFY2{zdN6ncIPlfdCQ0vZl{z7F6YY46sXvWjzxXup zW)$tf`lf!Hxg?R*J9Y`PJ6d5sU4MstmnXVK)ngo69Qd8h_mriW%M+d(hxycfRsy_9 zu&;n45pRS4y(WM1vg;y%_#CTInBD0D(P|*SQ3go z;i|H=kdG?Cr`0jWqcFb1!6fG!KxD&XOheKXvD26$K8Z(BAr-mEWg0d8Zb3jGlPQjD znRJ%uVOZbWTl^2f$scK5-CFP*!4B}Pm<|#ay7NDUUiNV|={WNxmm*2IB5!n0q~<}x zC~v+XT%`ZF?Yo z-oV!Bl`A>-QKn6CmW}UeUS*;AefqoVfE0<$KP+=fDeb1T_H|67J`pzIXMyb z?vI31&>;J{iJ&Uz8`8*SMrNJONKkM0qidi0(tPBN%%@*){I~EaIK}tlTbleG<{%c? z*;2RUYaSk!$K?ZiFdpV>A>aGGtgmTvANA%hqfJWR%Th{TcrlPr5KcglneOv9+gSl` zp{8uzH{!s089octUH90CcdqleAt4hdq?FyG-c7_8b zEdC$Q;P(oUGFw?FTw>_2ZJRDx7Ka`ZZ_JZ1O?-DmF^9@H3t8`wejP)msbvls@Cv`y zuN<8?xoB)|Vn_4kgA#z^CyB2Z;*uVISEZB_oz*-dcNmou(&%S&CAL?%?=?%krwREE zlF|j0rbD#@KTeSJ+cOC4+dUXeA-_0-Ca62QNA&uxRV{uWu&WXCiW&$m3A@!z<*Cmz z-tkBbE$fRh;pq50lNXh5UHohH##R6F7U2pE5O@!4eG?z*`mv|aJA6gBu*?VZiEI%2 zqhrfd&svG(Yt{UjasDOyO<9`47utPmHFwah^J^z1hQNDMDha|aH9+*2!*ys5(%o?` zG}>;>(kg^t)_EBV(kJ5o)q|O8A(!}ndocK|o}8A(@klmILU`2S*2RcYBf?s1}hUK)xx32EspN2ip;^lLsO%BFBG zxpBocc+&WV_e!M}=@hCZ-3}kU_G}?Yk0oDF7;NA7VHqA~S%wenD5cJArbUL+5xbzG zW*xvQU}Qv>QJ25~hvu15Ot6NxE`T_d&}MQ>2Y#~iL#kxxA8j%trn9u%ViM|1C89QZ z^q&;Q6q60XVbK_J<0+Yxv`OmetRN<3f#@?Q4?a(6I8QMALvTi6i_D7OGC;PvOcsiS z8?iIIC4xz+)zoiENTfCPDa)|QH03DU61#p}yonta24v7{_xz^Vd+=4KOag)!GJRxH zM)0nXvb#2?HJ>yGmk^=dsA#R+x{@dO^<73D;51x*`hZ;i?1cWYUF;$OPNsfR(3mHx z0F!2%g(0J|)TA*=gV_JA&$t59&$pZp>KV?Un{J|$VxJK8CErf2dP>q#z-e(||L$S{ zB2(USCe}+XxE?Lu2$wifs}&edQ(^7BZ|WoZ|8_WypkS15bgXkP$sV`yr!X)m@-VgO4Z(J864s z$XHiwTJ@l%EL_RGDC6VFniVKW!dL4D#gW;8$;5(`m#N_V8e6IC^$vWjtb|vJ+T~t{C0T_G606EN&G{N53nrkMd_Y@ zn+{QBZsS0ps_3`5s7ymf(unbrBet5*xx~)Y;{`0sS~*qF{*7nt?0ZiAN#2c(XI&(z z?9q*x3dZUs?vk@1i*|)Jr}RsUMVFrVGB@NqVQ%8V`z71yJIZ=(#Lc6@`=?ia8L9TRn1)Iu8jI4SOnG?gW9!>vXJ#BqpL~w;T?!g_Nd_# zaJAPSL4@|>@hk`=`y-2I{g(Jg6tcKtbP@Era9eI~dBt--6BrN!tO=|@6WoD^56~%Ti#Hhs($R}ma9jI0P zoc=B=eA_GHiu?2FrBMQhBDs9K_%HkMw~R8OE?~G*R!R+*ImIbInQ)n0JqjfOCO`ZT zW!cmNp?ri+&x!KmPAs*NON1-qt+LrP9p_VYBA;{FR>$?1sY(OI-J8KJMkZ?k& zIHd_#UO~GkFpzzWA?ibfBW}MxB$R=|OmhpCZ9$uS(XkcL~j`h{ROPA(FS>6^@k4 zN!{`w3P+zDsp|H^cobw>9hXvL1<4^GHGrRCaFtdF@CABat4C<_31YfB3S}LXbDYcN zsHn07B-U;NlX<(wc6qa-cJ@mS@#V$xx$f-H^k*w2_!2DgZyVMYh%>}8RrhTNXCO`L zjxF1@N2_kP6Mr`B&M1@6yW%6sZY-)?f=kcoGxD?P9q7J?0Ij|Ac(5IRG!bthngBt! z9Mz>$ZD;WwI-f6p;Lhp6;#sFtwkrpEH59ZwTB?QYhszMDNrA&uU?|1m^WRi{RRZfi zkSng*A0He;!Jr=R*=%{D#}@OFkZfacS|xyjpnoF?=Q}+nPOQb5aE5`({Kg-sH2vX2 zHR6JdUi)!J)|FS-3(^Dzz3tb~N}xA^XHesaH~7W1Pi&|N$P&~Q5^eewW+Nk?ic2{Q z-?va(pVa8*t;ogu$jJf6QDh;>wFGOLuKh#PFJ2peYij20LeEyf79{@BPIjxnS<6WJ zWg^ed!98=?TQwrkY9PB3tJA8zBEVsHXwk z1P{@bma^}@J%T5q4qQc#M4!YoqlVPOx%4Kv@N&2@qae4L&{i@VBvnRskU~U>)YL() zmZ7eOQ#7K&_Bi2Oxc@|IpN#Dycp`R21g{m_Z%rHa81uL?@x{6_T(F^s!A*9DwcZF2 zq$%B+oaD-M@u}|VYIJlg`o^dXL7e4!f^lg%Lk#hZO9s=pO47TggQB(YoRlg=J|NKmlRv8sgG`#~)HDir%`7SuqErr=@^G)X z>!v-ZTGCwVtWcA=OQaY@Ud{cxw*nNogwgzxF3zXcBjzK%Qw2#B&2D(L&nE71hp=bu zE0gW*eUEOS(Z+I46o1KEM!pp$fYbz3S}ors#p--rXbzo27dMTZx<&Us$OBs8Qnh}G zQ~l-N7**06<4fAI|Am&*szfF^@16)D+a|Gf!!NIfC#y`8g;?hM!(eO>9lFnta*@rj z_-8BZE0@AHctH{tg-CGW%onf33$OLTPRHV0@!@+pL|W_M|Ml_iG=^+kvx|{u^4uU9>PNZa>*L~U^#eMs!P_m65)NE*Mu%zy& z`>#K-rnemprv*e*hC5wRF*4JD$@*{TNod+AwAZOrH+ikv(lK~lX)P56N^J;TeMjFi z7AL;JQ=&WZ_P0f$9mINhOz{qN$YbeC*6EEq^OsF zUp#77a1a)xMl@76+5lsApP7h>7uS}Aidhx?1EEf*dVnl)&o8Zb$OSSPurZL*DDESe zmJ}`Kc={FjIeVk{dD3^;jogL8w4W-C@{L~glpvHh^tT1L!S5RxsHH@sY<-cUClaXo zP?D0Jxz^F5MvSbE=yZD6OKA+P8a z(?^wTP%MTIL}r#Q90p&p#(=Y^4Kl@%e>|J;>X3t{zZ&+zZSOM&{drqfYxvkXsIW{y z($E&`Us;tYez(zs5s)411Mwj|-}J;Yt8lYI^TgJqO4rB{1ZG}?01B7JH}kLFExyn9 zn`>&|>)Nd_7Fz~=g`8+fPGwfB0Gv(8$7pO`=KA~9>0Y%|lWSI05yY7sod@n@P2{>E z|BZpZh%PC1$;##0o%0H(v~Im0H%JnB8^WRI3_JsZU(%VtIQCy6e}1oKveX2{pHfow z=S{&)7zz5DwXC~z#nROImZ0`S)Kk;Nfmic zTD@05B`3Ll_FE1&%~@J=R0r$+EowZniH^+YBH7Ku{q=kAOqq18;@@xU@_ir6RX1S! z^d8q4wIWo_VvSSr2}pkDz~{>iGju+^$$sg(5&BCfBb;ZK-jXlX`x0MQ_W2Oe($rMM zqb=6Iv6S34;HIzWic*449BVyxY|qrgDgGDbZtP!lySYcA0Omgve4`eMVzDZxD2pqb zH)BBy2*E0Rf{v39V$ah6M$+bZt!6sfyvn}3i~gYZHw~>)SUC#DWSNTq0d9f!XU~6J z@<}3adThqacYcipoS%9S1;L0_y)sCT2T z%FEg1ipYcoi{3z{9>Z0(pS88Cgrl8*-P@y$nhrsm)XdD^zgWr$S3<4^KX-Ur zAF_JSM=WZHmlTGw>XOBOdAb(sE)5nz~6S$f9sR>tJHrzNG&_2J#BD5ModXUAQ z1tSpIDmTEFjlUz)AeTkqRx*g}_!+X%pU~2>8oYl2wW$qGwn{NS6pUXv2T>-5s4#ou z(Ag2l56Z4}gz1xrI%5FQE}oufP9xw$^XcL7j(ctXgT9xtzuu-GIyRS!BUs1i^<9sB z8#tjn5E0m2$LEI8gsQaa?xA4`y#G*{4TfNfdZOdN$+V2ko_tbE+p&e}xpqb=f+6ad6>6d&?Y@A}~3HxRcn0p<_iG!N(H-;r&S7mK}ohrh1mF z<=}ohxIT`&Mmi6aaPl`0+amTs;H@d<1MW$fZUbL?f>t~fJf;Dvy>b}2P*YG$%j?4L z#DrdVNcfLbmfI4*CIqhc7YEfjVu0W$1dfMKEuaxEZ0B9!hNxhL5K>F<>Tt38?ulQ5 zf?moITYN1q!uHD|KbS}Mnb3RO++??r35lYriz>S@mf7oq_7`jszfq(#yy$W?u#1Qo zk$lb8RRuDkp1e6@;|}8+^09Y!ds1{~&i#1)!Wl$MZma>F3Yh14)k%S)Axxm-Tse6bq zuwztnwkAtMD}6GugeMD$hfF388Fde}Oy9W&Nd%kdP2O)hmhtAU-&{>`3h%0zvvNp% z@IK?gLtxENY&?jP$D_<_i>LqmZV=edH;N+y9u=}pXl`}7EMgpxFPQ%ZTnkfYqBGp& zqiqU$UeR+FL>dT#9_duipT~bqU2|lZnu6WKhz@KH83xhLk*H09TO;)Gd!yoQt^^3Q~{@u*T>8xHjlDpoQL!8h|XHf_bLuvLSo4+=p22G-qhCCGg=W zPPo2J#huMU)1qeF0E;2;p-ge)zrl3D6qY*|rk$itmx{C2v_jT*_k$NkzSp83-S0|Y zh!~sq2AM0)mQTS{+UO&3_6n4uhQoZ6OLXD}Eu8m42(S_TR)X7?5wb##3QU>S()Flu zB$W{V>{~L!;um_SFw%JR20)B?C|RU&~;A1l|JFtkDW|x?`UG%b|$uM8#}hO zW81dPi6*w~{3lM%TzysNt2&qc-gQ-1J>BnG>$l|LzrpXMyb}Uc8GnYboY$!j=k-=C zt2(NKd1$w=?BOBkqGxC%GvvSY;0fVYs0k8k%wqG-N?mSW`jp2JA=#iyMpA+3HvpvI zg&>6u05^LC#P4m#Gj{a)yLyqliy{tV)cBEzOs~f-x=6WDN6onM-FEJ4XjVcG%@bdZ z(@88JzGEm*=LUch+zhn40pJA2%NA&VLAnk2Ojw8|{>PnU+Qf*KRf96_P?gWDL+ zsL}_mw2w?fk*C6M6T6$$LyPJ&n6Ea1{d?~8l={FR#Wy3`SL|}Iayc55x(UG1t9Rz@ zPu^dFHv#c1TWT&hs^bY|ayy8bjZiKq2YU$?FEwj)b%@%ye^7(&a;Mx@<*K2G0LEx& zWqyKde5XC0$r|J7Ziy6Ahsf#!i-S0a07$IbmqiScV%^*k5bPF!Oh(C?84!AOY1B6) z?q%EGW146!)tKdA!qP@GKbB>&XR z9cXImV^&k_cFqGiZvjZ5n`dl!g+S?B0D8iB!=Gumvoe;V-rDpMsa*HSQ9ZF7XSlcV zr4q29oh<;X(%g6z04q5SJbXmHa{tPxN@MAZ&^|+A_3lL=0@l1tV^}6|>zJ2m6Zxm@ zxXh(BTl1Czfi1`R9HHmKu-Gu)aijh3+NU<-4t@&OSb2g;kl{9f9OCr@6tWFq0?!0B zZv$wNRak>PE!dOF+eUJ4z(E)PKGBlM@T%^wMI>P_DbA4rI2?1C9nO_=f9mL0VT^j@ zKZwU}q@Nm<&4vg@fdqE|v@{vD#_|I37y90^D{kE3Y6+X(b<>3m(XwLfg%@5^%_h#Z zF2}E(j69&k9e^mf5NK%!z`%sqb+D&sK^f2evl$d8TDIRZqego_NQ>Ucrs`JrTkN8F z{gUSFBt)`EnF}h6$ri-43&29+CAk@A7yRQc^zxen^lKM@4+Sk8hYxbt1u%mng7SC& z9dC2cz%GChyb*M}`){)viy(|W00*Hlm50(Fk~Uq-HYEJB^EpBmvWuG2$n5}t@4 zvps-3u&&=VoT17cEpI7VxBE0q>K)U(b`twMJn%8=cQ$rvP$`p)O_@qr2#y>dOSSDH zZHc-$ygN@3cN7g^QmTo0VQU1LAQ0BoG6oeCi}^YpL6tq1v9c~sw>_6 zqnAYN7Sm(E9Ay5=zx;Z)e%eBtW{=h0hNxc4qO-)CSiFhiq5bt_SX8jvCiC>S($R@s zUy=tNw|w&fOW=3G+?qrJCkg|O5!${;fD*`PA7Bpd1RC21XhG0#f=CYlJV^icyl^|2C&t*qw&^cEv7aD zy&0iE-t|fS9E_;N4NL(egC`v^b{egG;w z0*L&pWt3IKz2ic8V4e4>i<)q?go;S;0;V`oF2#w7_j0VBdjt?nPN`<%340o>Eo?Cs(Wex7x zgi!Y%mI*g1{Y+fJwc;Fk^k9xe`7<@r1-bwV(wpKcyW@KjM9fNxkS56S7~n$uD1YT< z;GuGV9N_@1!50Y+!@JY?$x>0a=7e|nw;S|*3@9em(>}pB>}&h-Q*B2~_9kqi1*u|w zl;7KLl-!WCogdbNhE4zs;9{V=697KM^Bf52^xyIr#Cr;$)7m|NG8OWH4y0RcZx$_= z6xIb)5$=k@kr}5`#qEaKe3@Vh$>L>X?(%Gij^_}pk6tM5D#-^SJylglW=&PWqurCoStorDlN8GO&qFi!8nR;t%RQ1+YO}Vu2n`0iHm#?{$JdACBIu8`*7G;r*wY zT7KYE_@veBQPI{a>GsPj?z$T?syfC5if~nNcx@?*Rqxlnj;9BRxadBa=|A8H$H&J{ zd)glj@`{0N$#+3VzJ!bRu|aZLa|RXRY!fqSm{ z+L#Om?@wTS>mL<9v$65Fq_2R54!2N3Xrw=%G(SXle?ZRKIe##J#X5U)Gom00tKK$) zuT;7Y&|AXpnmReQ@R@Vtb_f=9W{nu(aY}&7Wm3ndTRQQa={wyi98305vfuuo?r4bc zE3-7T^TA0+(hTL`n`1Kc`ZQ`iTY8HVpWgw}4pE7EBH|`ECn~^CO`p0yDKSi+ z)z8o6{4-vs zK|~Q40WWGrwUSh!T#tTv8Kk%k;$lCBG&E(wcKWz`!VLX0P-Fp~>)vTITdxx4xXM9B z{v_HeQ}HiQIY#e5KfvZX4Q<%dPp#kL@*%-)>7PM=#RLaGue>0h#75VlfXzlP-t}8i zpO-n`n@x3=&|yK9k~V1HE=L#lkOu{=k98Q>`c9B|J@gD66sOc-bC31V^!QI|-=+8S zFDtzc*XaukzpCeY?(DUmvc5pv$jo~Za1hcE|Fac~lRwDOwb|n4xEfr1V$mu7Jau}I zi>0ly8D;<95Ji#tEkjRoI*+>}#p+Ak5y`WKChGE50*L917G$@!QU}}|V{7q@HA4rg zfUx8k;LBs}u_tc81Ysg$0$)yVZP*F1$^e<*T z{EvjVjQlU?g;lA)dGEA5IIMVq(wMHTi;OxSaL-s*&ysnIEn-o*!K)6pfbPJLC?-Sn z7mf$2ZS)LL@$qh9HKgSu9RI{7Y(gKXO?7|gj-EsXKXIt&71K$%v1lqRcb4|_Gk}P; zUO{gC#@ims%SzQ;(#RL?6@WZRO&oJ%EHlNfsa;(t8hy1ZB=Kkk@V{D9w2zBdjIzEdR_fr2Rl$|X(A zQRCsuuNBL}W)UVKYd85k(Ve^kaNS+vBuV6B5>PNq37Tp6jE zzfy-dEM)>47@CS=L*}O;LKVeay080P2D_#z$_Hh9zR?LSxtizhY2nN26It zEo?q$FqwrQ5i0+;QHoo9E_x9gjoTG$s$i$ns!b{33>yIbDD9U9l(=hZ zUI|VGwxU3N(wPq3DoF|Pj}CbtOtOD{1Oz{0KD{Ad%T*EhE$N|x44*%5#FV9nmR5sn zOJSgoMod~Xs<|YpvhXSJr~%DY9bNxk`AGtinFs4SIULTv?Td>jT{*G!j^1#y1OzQ{oo*y*7{roc>*sw_=@Z)C==h>MZk!aa;7cyZua5 zJv+GWMU?B0;m6I=;@X$b*^9xJt4#jEKfcM)7p{XI>@fkg1<(V?4ht7sk)YDlLBv~L zX0NbSYY4m4sSnehUP)>o#LfB#EY%UMfTJ_w;yRlDGeuY2Sy8XOcJ1E$XGN18BxbY* z5B3l1r)II^Ou}wvlL-G`Z0_+Cz6g?D-X(%^MAzZ7=rippwgMOztxvmDclGSoA@(A_ zRGQmDi`^ZtkDH@_>;47wLz&RZ;$i=?Qp)&l#YjnifiAA;l%;~vtfP!lwOTBoO1hA+ zW@@r2a*h<^NoJ0U|K2f*YD7{z1Xz0?0s(225z5VkFs$gREvL>N#5|@Qz-*phMfSlJ zPn`?6I1`q7Y#$_QEU3?K4u!qv2<;&8GC!oTl!uRfiK<_~@<-YRr?e7ODtuX(VR~uD zAquTIl}!0*vfD{`81n0j|03D~&3x?GToBR(N5Qtu)OM=g3skzlVWuZsR-Z;RBlqZL zg0%(G79}iyR~HZGSLxR|vYcidO~YMc=KRM5eOTMA3y(8>`e4;I1+h6Tb{v%GEkW$W zaYfyX8lZv(d@~V}z1=N5(URw}ABSr(cj3}T;PmdSIOR9Qh-Qe`Fal&scOV}I1!*m} zQVF-+{1SxvD!MTrYl{`xR-kD2Xv$blIF@Rq$T9S~nFcBKJ9=>w$2dp#6K6{uhM>l@ zO)7aQ<&#SMBxyq)Hd5{KDkm)8D>!4DNv4m?!W`BF8t$XvJ*KMQ5joc6$%2Bt>bQD8us70wS=yvR&A%U{)C^67)yOTv*asR^S^vSr~q7Wg{jV!rQ zaL)vEM502-=F0@lc?ZvTfrqn{EGhbWE!|8R!>J+SR9PpMYhauGJ zkhYznStD-_s*?|%r;Ym~*~MceR&Y)153v?w)D8SveH|^Q`@-{kT@#8TdBOH?*BQ*} zPahP=fv&<_YKz#Qu2_29RXPyud=a~TTL4mNF%+KsI+Nv*&rY-*X}`>gu}hJtz1yAF z<%ySItyd1vj!8Z$l4S|NzCxR+w;lFv<+@!N?%BwFmdl}8u%Q^A%NCUNEUSf#C`*j? zVn_ED#GEX-o^**#{}q~|^WP1M*E-kjVkWtuiI}O<2c@~Sz7BcW@+&68{rWAn_yMp} zgY%1YY1U=ldkcyvA;df!8vh2~CLN~b@Lkvm2l-SXW^H6*5u8l;`w?$q!*G|wy*j7# z-{D$_LPPpD5+3DCjUoZ|4I=wzlAU=HPC<37Q$Cox@rxqnER@XLon;{Xg00OdE;rb} z!tuh^4enyUq1=Bq3f9hjEk(1eC;+v~fAiTM7Owo}1x(Q?hR5~ffY~V%c-qiZjzO8- zY*mQ7;ZTo*S-vjmoncTjkDB+uWxpPEe{2nmRZk^0~TT4F<|tsFG1x z!H*k71*e6)2vy?6}7 zR|ZC=nfY|i)c2JPO2de-6lN6YavJi?GfOv#mfr<$v_NSU26j9!$}o9%pub^^>_>JiBd~hr49elMvjg zsWPeW_QL)8Jag?nC`)syBN})Potw7S5nWk%>oA7lRB47X~Mz6 z>WR=Lmj`Xnzs7J3mWua%M!h@$pA6iVznoM`F9R{lXc#UO8I4}YoeI3lkK65TZ2~{9H?wJ?v6<`m zO||hpet8jGi)mGo{UFak0C<~)4;+G9!6O^;dn2ha1AhC68OLTcv-@ht^Sjo_Wbjm5 zhSMR&I4#UqIwYethRc)ug;KB9tJ{fTs`c^q_oS}BEKT#QJ2U*7>jL>RK!2uSr->Eb zmp?Zj&PJeEjC*6H7T^IrKisKBj4uYv;seR}aM6h5UyL*yYv&8gJb7 z9sK`9>c__4q*4EX4BRAOU}T`ZIRF{x`ab~N|CLBw*4Fjh9778@tfwkgdKEaBmnGm;^P@hIF5qv8AuyuCukK_FdMJD2#u8I+s*J`>Ok7i{!5 zOB2i3TMaul*b288Vnr`-L#5;Mfx*xDkt)0&UPUeu=$&a{E|MATeBAm9oecP?%=RWc zN=#eT#vdUXTtKmztS)2B;AOrx$-p4Dh9$j7vlbt}Iq=kY0B)m7qx-Pym6 zba#v4r7I1c4jfzWT4N8c2xim5q2yq1-3MpIkf=QhQ)RDv{&lb;y(BYtU7vb1uwEHQ zVDmf(l$hk=5|^eu8g2J|pMLDx=W|>2|A$>M(zKnL_$8W%Awi)&SxzxskxH|t`T|BU zn2pb1mw|BFuo0pr&cPZ;Gh`?_c-+<+bXB8vsBjG%CQGzBFj*$*v~c*^G_;H59SV}0 z`=m=&hAuqd=m~*U;Z%b#gcRXvnK`9Cs`<|WXjzH5o{j&i3r*I5Jy;DTXvjE@)J;bl z{l&nnH(pwiJ|A@v>Q{zWPmrET$nrIUQ%&Woloqb0YPJQ=lOqIHOo&-!L9;(1W}|oBJmMJtyrv2Z zIBOi1gZTH?gy^dApgdNLCCa5itI z^wuIU7}M3bvcD5;cZv5>>e#J2P%b1bTv$@ z#+fEsC3hxH+G%E8E2gPV^D_!_=LC}mjO<2lf!2Ec)tE6u#8_aQV2OA1I)Ei0N}JEG z+iBg5TRV9tCI~&l-&D54CUC?HIMGA9a;A_%&DthoC$pX9ecNsXzNv)oa} z%6nk)jB|A8Xd1&NmzzQf%YOu;d|aFO4y|Nh$F&<2t+A@5VLZQ5TkwobReiNFbWk8h z9~je?5#lZ6RGUcekjsa<73MlqHzG$!pNIE6NL;PAh^W=>z;QzzeEtpl4|1)aSU}`a zyKScgHNBRLau!E=ww7H?wmhC$$~w2rYVPfbmfuCm-=gaJu*TtcwPMp$Xg%uMUhjWJ z!)m~Zl@cX~@HoH8gb@E?cS|=U$Y7BxrU$ohBNAto!FEy5rtwa3Vn{dqp(o#AI)aQr zi$c31oMgK3gx;XUH-QWZ^znnbKRqz|Pc3i`?jcGzAK`ChV4P*67@K96rL=%sP>9HH z_?z?oL#l|nt190YPoia!S!Kg*)9vpqhaWwkgIMw}0A>s8l1popE2Nx*0B@slDd5nP z-@5zdI|;-)?aKlQVekIHt!R5(K3@mXYOKw5fFH}6orn!BK@LGHP?d^Ddq`Jl)tUc@ z*=SC?Qwi-Nk4!ivfN7k9-<x*_o6%CsE>?l{!pDm?=M^?fTQvIqBdO|^enoTZLa_Z{59<+-{j zUQFk;3FLjJfjP{Bnel`1K*pa3iOS=KjGY3_hdJw`G&+dx|>7fG>YX)*PqY;!0-V7a~}m-bN$zMr1_Qt~t1(YH6>@tFQne>jH2 zja4#Y#`-hD;6HB@7`}Yq?`9M)kzs2ueQ=_e>Mqe*fpy)7?(8l>Jo-9P*q_HcOmyvg z4{NVaTgM)+^{JbWWA$7Tt@i|a*@{w5!YgBUN-*z>Tdv^#o&gln#Qx8Ij$>u%g}v3E zfylTCzkmEv9uoDfk5h6c{C1=c%tw+;*(*5w8V?rCK;CR1*_l_8`bun~+w&Oo?}ekx zOM=7S0=EAUxyXtJtPA9#eD^Eo3Em)y#%?5yJ2J_%PQg#mB|2BW)1k1*1Y1_Z@LJlG zz*fOE?mjw^C>0ME&X}W{+)6T6Y^!M`1)pcnz)q_qn4ghw1+Oz+&kNFR9sihMX>W4`q(n zl@?}BWIuUfGdokFOn+5P|E&(n(6o}ux~R9dwsGN7a8EC_Hj=Pvd$U!sa&Z*Q|HSy; z54mbdU#?q9Ffdt=$2S1*|IBs;-vBJ&MC%QZUjnDxCPvLGi9K%;ULdO%YyCG(qxop^ z_~d;axiC5fS_l{nj&kgE|2z0!Kpr*EZo38-m~5&*WptU1{1*Q9WnW(_e#qc}T(CPg z=O{lhl=cy{dZ+ATW9L+{i#tK4rZpP&Nre252wUPWO*AU=)KKTF&|&SauZ3)2#3+42 z6RT`WqqlCTMKeOm9p{WfCxU|d-Z+)?)KF^WX=e66%iQ$*%%T|@LpA>% zsuzt?^|35*U)!xu?w)5VeKq%hUfT(tloy^KoWk?l`g9&ocNcDUkL*mndWKYnYt}7^ zAKGZg#%wU*675@tY-3iLh~PNzmK5a?{d>&%t#IndB-fxZ zZYP6PzM-zLbF%mty?R7|NbmCLm_$)F;3m6WFLB`|ro4VQS?KoUwShK1!k(78V+0F& za>Whh)(}6)wRkw*`~Ae+u!5EyX_gm??KGT_Q9dGc{Q+9L3;wact5^caj5z&P5$jZs z+8~&wW}B0-JU-pv2aZ1_t^UatkMOGR7Jfp{sG`bA@iXK=%=iFq<|0udXgwDqe|wzL z0P$4WdPTSRgSB0GuY&hSGxxShLsrPi+-g0OH@s+6Wtb=w5^k28F}4V%CJ(gO5&Gpw zuI!=fzP$b(Tpvi9+UMCi zlZqPeJQSMSjcU4%NjC{pvmTxy*H*Tar%N%45MtIjW-mO^o zO^%~|@|j^XY!rc83w5Oh@vzL0ZDm%vS#qUS)^*LI3R^~u7KTMF3to1d(w|Mtfp>|` zQ#^*}mjq^w4Zhxz6U|JcBJ@{}s%Gr|AZ&NO%e&tE&wu?wdPc2(8}eL5Lo z+4QOG>l~whC=)&lSCGu^?{k!~D%=XcJUQ5wIrF}w{{DWvo7ban$m7NaTnIIQ_pOOE z%NELNl@S@n`;x!M7j`5YJ><~dEVYMv$L}huh`Z+Ac@wGuU$oEk-q`m&$i_p+Ly>So z{-YnB8P4G!OraFl!G(zmtSisC(4g6;KIeZ58(Ol*#&n}0tX|Wm(M*Y;_&H;g7N@`r zOCYCxC2zqN1bY2dwk}@k@sdEU;8%Ko(<14ZmoMP^pI=AbyFiA;)aq+mwv87kO73z0 zo{F6xgM}jiXgD{}F$wR9#C8zh3C6?qC53Yun%>r5&KmIwnmSVCh)uW5qocf7hvkSJkybK@9;e zec|-nxM&u0rls}Bufoe1-RfO{6dx1f^g8NAom*~@jyI~*H_~Yp)E6M&Pr0-(lukXl zGs+Kw2RL_x31=;rZE7j%eiFi5r1<_2Y!67@cG77R7`#Nqz7K6&i<8re$TDU5kjn(l zeKjgSpf4*w@vNg%!@buM&HHlwu3VT9KSk*zoGn2Z9&?^Hl4!Juoz_yQ1jiB!nIJtc ztmunoeZAuhoM<%8>d~;cKMuOpfD2fF1A5JC;r?i(XrBYO9!i`N5Ahn!sUVrJQe{B~ zB9es+4qX{x@&@NYfvIAl)5C^W@J%sc(MlOQa7LdeAZ3jibDCePe!q64i{0Y}g%0WPDLWE?c&Er6s+KNJ5`hW$lU@89NYNtCN{G}P^+p}h6a+RyBYHbq9r`YqyjE=0@RNwc)2W4i27gURF_Jqi~iZNbV7KkN~C`f888ItqyPKW(0EQ0$WeMNz*8%={!%&1K22G8icg5EwUI!?lNQUm zXIO3ZchITm+yuM{mRSrdpOaciqil1HoDsRrxgRflx8PU#D=dHPE`utiqb)6zN-D0ZXXnVV{g_tVna};TEu1Gh*2*BOtN#n>E(DMe;oCjfC0L} zvm2H}gk=|ObE?`X8J|B8CLpS&u96xNM^ni-9Wiy{1?Hap<4^scVoUTe%*-*4L~>hW}@${p0q5MK@kbmr}a$rhW&nm;Pq5o_1_O4=*4bB*ZC2{g&QK08Qcv&_Uye5 zMo06hZg=#y`13!GUw2;z7Tz31fcKxv&4=H<-AA)KmcLc}ZLl?e8CpHNYhm8Ku2L$T zBBYkR%D}?KS;o4kQ-?{e^kbEBG-WYhzWME9TAT8*D^HMWLo>Lh{oE$?Pb`xlWY8?t z(g0;a&m_``k9Q#OHK_O~l0g!GTe4R&NiMN7SVN-u1SO23f?{9CNVW7Vf!06Qg;9(r zFl@tc=P0rWl^fk(=g^Rn{L8k;A*;|~+8RQT?kpF`v+(ZQVssX}e?9Scv8mo!n;vp^ z4=JDm=QUf=QBVYQ$>xjBZ*1GXj?TQEj?Q$o9$)PP^-4U}WV}|*atZ}&s8q*MyI>*} z7tMHRGMdi?NGVIgTe1N=KqBGYPN*zEqXTe|A%BLh8$!RB)^D?}^{b-9z0I3*7%4`_ zuCTBF<{z$3E@K%Xbp-ut(sWzSPH?XLf?}t<_6G-H&;s-tLnd5<%cp3g%tC-r2(Lj_xVprn9xwBI^;g`wISxK)139A@8d{Pl5D zHh!Kn+DLTasbRB~p(J7FzX5^d<^T0|(dkGo?TiIlC>V&A9JEWgbpYkjKirdyIZNoGEqGv$2;{7PfI+&#-OA8Zh3-1w9asbdoiYK&-5W_2m zH`JMjPuBN_dMtD^Mp7|(cAnM|49*BEqT(@q6ziwVb`ZKOacSJl{I169NaTS~NTou7 z45y8HL2XBZoNYTOZwpzVmp7IUAln~1c#lnHC4z30L$(?MCeNI2|9#=Sx4;j$cDKx` z?i~(;P91#QVace5#cqgwq*Hlt#mTaPo^Mzg7wb5olSD_}8n1Zt!#c<@G-V#0kcDwQ z@VVw83dU!8gg8a{@oeNI@BQJSu{9OBDFTJQs9|JskK-?vS$6LzBHNdI-zBrLc6rwj z^-Y4DxJa=B)LA=4ykAl6EQNvC3@RI#D4Ko*gO>u2K;W|Iop4m-qv2=V20MLwSG_gj z5?W-xLX=7N6#d)Z%KmFt`sO`Y7`3wDi#0e~@-8r_wsRjcO7i&t88XZ6QtGz+Z;GL3 zj-ul&InSoDbut z?d|Oe917bKtvM_F8NtA9>~3eWXsGUJtRJ(K2cSmR7KHm2O?wSxYtt-z!oY^*`5>*C zYXF)Tz!QZlN28&%x+VHFSxQ079U2k(;3RFx<-)p&2GNxH-`!|8c@8rml(5=uj7+Q4 zX;DcHm|-`ES>UdmjTLCz#vw%G2xPwv@zee|pc{?atplLfSji<1uY4tB(?&4W0$*#hg6KU5v0JMb!j z812*vZ!AY|?bHR~s5+N!3s;Gwrn)fkYJ?WX!r?ruRsXBkju1kR8HhMzvRXvz?TD<9 zv2FrJo^Y6Qd;CQ`E@_~4H;OlSv&p;z{5uvAk;la>$m3FrSbWSUkf=%YV(Jtpwq}_W zb0i*fvTrZGLm7IfvTyzT-|K&fXNbf(Y71L_zHU!YOXSj_1XP5}Iawi=iWDeDhZzKC z6AfIvC(K$ZNOVXd4r?iXUG5p!!wLM$?M+*jUr(LxAt(=MfIb17Hb5LM2Kd{ z;)OWiMt5_z^?Lep{nZv*-jb4%#c*4)8`$Z4T^EB|3&VT6t3rNJo zvD3P?^`pVTLfAx3B&LiE0(d@tln}ruQ~u+^jn1h?;?)R^(Da0OhO$?PqSWG^Er=_W zGwNvfAcS=2A)_q?I?r08kt~&RtpPOQF#bmQ=@zR!5R?Y(eYa5ltY+0m1PVx9!ce1J zrA%CCWkJtTiiiG+-3?{0?)VP>DTuju^>K1=8k616_Q-vAOBY07EgCh3V0Sm)PTFCT zB#j9t{=I*6_KfRnYHAUayJ!X1q`0#(%;P`x0LN&@XYEd1F)ExK<7m6GC z>rZ`_n)gR%-+l1_1i8=y05~RY@~)d_J0jacmNnfxfqfQA6|{Cvo82C-S9WH=@I&io zn&o->jcnS41Xc|Hj;XpB`Ef$J_bT3^ECmEZW{+CW2C`}$H%qe#X2^6MJ9rT~sf}F= zq8u(`u(rhYM)cTaq;QM)Z@jT3$oKi6k%YmArvl;^YBUFfiepoJQs9ap&JjA0Y=kC}B~%3h z9QotTZQs;@jl4i>Itb}XCO}J58}-IHZbrhqH{Ix8)0o`=Ml-4923a+q?Epjc#8;RO zZkg49AWf}%1A45lVirDop(F)AiKK_9g*=>oLv&%%?v5+EPOB0tQ7$P_E}Y*r#_AoE z&2ETZjn3K<3b5fCF;x^zM&*_)flFpm5n~O)lRcJ0UU*phk8WE^+dL+f z&!e-=#)XxZv-~zG`3+m{a2kKx*bGzlqyOw7r)orbGifwV7mYyb(XO7HYSD6sL|~b1 zBO((!j-iPPT$r|6I2D^2MV!{7x=cUFH9omez&C2Vlz?#(VV>1slQ1b&t5FL&kqW8y zN9s=kXNUBJGY8D`;SsCqj+7t1!gXdShEGas zl=_vq;R&>{5L2FEbdd;6FOT`{&*$fJr!4jEH-A2iu&ppcouBvA3dL4vEp(m3ukG%` zT8B%EN8pIdINY?^Sk5c(mh;>{VV@Kjb>onW{(ZJoT!L^6WsfD*6qCIM?_mk|$7 ze&->V_RMR%i139vw3y}`TDEO4_eg(Paj>|E>jFeJKrk2Nh(Y<9rH#Q^L!&0y)))K2 zO+V*f^Y9(6kQVWqsoQ*~$1Xm+{}u}d*MGOm&#+k>t?*x3ck_{VwKi8&^3j3g<@cj9 z7doFRjA5`doHr#Bk>7->|3$yNGpgo>HN+%uPZ{N8sIE9z+xaqNdrsujgE-Pf=~(Vr z!2$evnUm9*?6=#-!O<&!@yfl+f+$>X%l(?NPNZo9&j97`qqX^E=C{S3dBy)PPlQPc z!8drx5&AmiKNS}BIH2>n&hUAI8Mf)ZCuQMW|Kno8cjIiw^!cji_oJ59!WbH>*n}c) zNWej1=#BzG+7lws$=r1MsEqoCMZ*^fhX#1v{ZKktYOf;BO@ESIrvq;6zWV=X>7@)*7=(F0F`+$Qgyb{716Ee?d-ZNubKf-yBZGZP#jiT*RwReAG4gAFkog9%I0Nv&wUxy$yrE{Y>AG zCu7mt$lwi7NdjrwTl-1yY0-oK<+5V`3HHR|Rf4DgI%S4-zjqZ*e z`+^&~NvIZ3qcICs9ZPVS?5E}?=O$b(55C{(^VSA^^uCd5jojU4AOn{BrL!+B0{HSn zK&eD%$)^cE8}dmD?qQxa8Yt+Ao@Qu}SM(29SN0x~$TW(m#(-n4Y85DdnRH6OXy z4tM4>BO}%1RKoia0LVd)x)IhE_ zp!W}i^B4dP6kMGZ874r8zobl?Evuo2vg{|eS?ZmLa@i&LY?oUDR%*{G1WT?yQXNxX ze^c)=N-cejI~vSb8@;o?>t9JdNY76wXNkQ1R!H^Bc?V$ZrK0MMM$`yCo5R73O|5JC zumdYQ8mY-=4K?#we!XWaDp)fU72~2n)B;=~XsTo2rM* zqG#JI)-#Y{NDW@lP)m${);M~!LlU*}{j*^+?D6mn{EK79TJU0}R^MGNsap89rBD!S zhArWHQVur9=sk?zGu}*pD>oF>~H%6Cj1zd?|Rb%k2 zYl;g8RhX>yK75#067tzvdVkv7pDu;DW{eFNIYfj1#*h1_{K4ZSSRFIG$V#m7DJU%3 z6Hkm-3i($Uu-_21ESEbEC;I0)X%he3ZN{hoxqF<>@T9RH%U1rhF?P6@;IxE+0P$xl zo9;c(n4v5LTb@r-B%IwbGrd{;*VBb0@|c(5)}dy5{Z>9c*$O;ymNfE^Vv^s2!B!t6 z;`NDSBl)L~u4%r22T5Cq^(gapj$v=wEC`aps-|$f(Z$_19qv1_3_U&?>en2C`c8Y; zWyG&a>+)>{h+d}UD=ln~0I{Z5(oJ!Ti2yy|;OXe#BOEnBHjm^BL<|f-Zk5An83o29 zZx~y*R!m>y?CA8|U|(5=MJO+eTH28qr?gMhpW*7>D=bAoUeWNq(e#!u1S+j35I4vu zvY?dP!XT6jRNII?c<>^i_z}$ZBvzQyVEOVrR{}?_%JG-kNkmZB8+k>BuskNCsAd&t zi?$qZHkPa3^7PW(3avWbf^?ut;U-Y{s*r`u825YNaHo$(RkqD%whMhU#{+d(&n&mk znQ4Q}=#-4VJ7kA=@=|Y#l~v&}>wLql;WX{-<~`0{f799P%|PqEv6v0jN3M8Xsq)5< zv2%8gQ21@lkX%{#|^PjzUmR~ zI;!8LeVUD^kK1$!*KR^xXs*2n|fi@udokH#yw>7_Ho{WcV1Xt^Ibej!KM`5R( zM^h_g3)sbDSZp~w+VG%qzQR8`Zz+GYsqW|P9gk=uGUKM+6ya^dUBdhBOTfq%$OyiO zF@4s@*s!)_7sYIJCfF)J_uD)d;04QRzG`0;sKDOFFhgidDV2Vc9!1tW#kWmp(PI{d z^O@UFZ)x1FaR@*S`6~XFraJ-F*>a{eFND?7i$s;QlryId7!l+w%h%Nzyfsl#H zB`x;D9$)9xiu9a3^(IppF5*MnzH-IWaJeR=-bkOteWw}s#Dv)aeVoD;nx6u?B2{$y zwFA^~1`Fig;@Mto+X5$G8SFyf?oGqXM(@RK{QIUoc!k#Zs1`oP?|%T>+>gfN|N1@t ziV6AjZQmfc!t1qcXTb3$ryE{bdhZ@pfi9x3Hnvru80@%eB1C8LcX6`|g1P>^OeQ7c zvy5p?rW3R+Skef6R;++qd9`jaz*{5Kw5KERBs%T#G#cEQTz0(#nuD5AjbqwjK3=>V z!^*PWw2#xmxg?+4mKXxQ*|5AF{qTR>-p-}c%1It=AG2_LZalXEkJ3J-mq?~u6G3Lq z8^HN1QUj%31*YkUONRU#+li$pf&1qHsXwkdC+f2a3;OIy*)n07JO(TLU@Y=rq7Mtg zQatsf7WCA;rS^a60zX%M_Nn}F#7miSo0GYryQCSy>9MnVp=u0(RGU8R)(x_m!oyLc z=P;swmNl%6B@%FXEnBE~X^mBNupBIK|3TeqP+vX$WC{DnQ`kWr3ut=x@j$&WwseSlM2n0>B#$^C9y)gP{=a4z}z-l1E)XGKXdAt9|m!I&dm4XI_Aig=imFoHo_YV3%#Fi>%Ss{Ff~Bw`mSvLuee7u z)mtzhY%&NOD_Pry7LE)6*Er~(w&z0l%=CdNN-C;j&iLd?lawyL&dR6$(1s`V8HBVW z3889rH7T>Ao7}pWCRcBq%(|x#;X7;!Q{b@>YCsF*to==Xz>B-VxN*Zz2d^8Ec#79N z!Z8t{j=opWkyn1n0aKcUFCDMKrHO4504!?9TwOVeYH4!(9=%0>>c2A%uD{g)sd)QN zzcuvs(^&H57O;fM0N-J8ZLW|chjtb0eVdrZ?Eh}Jvq%c%7x3w~jMud;Q#N#)TsdI3 z|C|O!i#G>J#=T?3`s#3QZ2F~3arRy%>>HBqjniYn(u7bR%bB!%D*uN#`9p_OqM?+C zlE3!~zA@XM7oX&MVa0s(2lR|xou3lVK3Dgf&NAEI*|u`>d|v0u)X*rSWnnf>x|vwN z9Rno0V2&&J%-BOAZtbaG<-0cd{AYB^*Y!kM`?%NIPs-E%C-&X3q2Y^-YyRWFS`es}} z{h)IWMx#qR!{YZmjiP=lh7GXw;S+LQ!#^vyRbIUWMGe-Gy;QpI?ze_E9s|1fbP|up z^<4{vQS!v>a^8HiDn%HZ^-p&#yybsA{j4`$mN^01%-i(vCjG6$-s z^e*2G4L{iTKx6jL+|Ea9l7JuOT8?BuZ@Z3nWTT?;E)sCa8$Tk;Q-JEb;Ma*a=qG?V zKuk_gmo!qjdP%15X~-&Wu>8o4-dSs<8;0S2NV!l^t43_8G1jaO;c{-o?#zV}mja*J z(m|v*O~F88$>^mh)2(M(DSaEh%k3w^0u?*>5;fRkOo4bkNh91dGj|8GUvg^9YCn}q0 z&4|gL-`afX!SyS(tRhcZCtH$MN%2TrZ9FFid%yF4_&TTH%%X6?#&*Z<*mlQuI{0JT zw*J_*J007$ZQHhu>A83A)SdeW$Vd!S$mwW#oRSJX;yR{q%nn zsjteKV%&ydkSk(S!MeL51(woUEPT51;8XV?r`vLk20UJL;$>(Wy6>M{FTV?#7;Tlf z2rt$>W{Z)d?jsI|Q{D{}-u1V9N{@AbJQ6RDekWv6f)lQH_v^_U2+V(-kRtabm~;z$&suUg08bAEA=IeJX-xy zS7S$i{x+T`O5&k$0m{g2R^zNxpNt{VHQLYhy`e{4IY4&%XR(BIvB9yjpSr^{i%&h7H(H7lDDj4N|kHdfsKFo%v#!F?SAjACc58(c%;cq%LjZMi&i&MvsaL!(=X4XK3Yn1%5$#m3Z--J&)*D$E)1lSXw6u z_OG3I)jWlDbn>cjB&Wo!m7brOC%-j4;U<@p+5EJj+N8eH>nF0rGLT+SXUZ#|5t&SH znVCTpt4kC!%sP+W%}!3Fy@p2sOg`}Nu$d2ca7o6%I-(iHJD(t-j?&s!$iY~WlT|99 z*jf#rMB*PZjk1e$99(q4S*}<%2~I9Pa<`cDNYP5&-=d4R`+6A@UElOf2WeCwWTM% ziJ8iRNMiSNhdSgNVk0vWSZ2LcaJp1BdQL|o#1;NW(H-Y;3-QaZ)b7$H*+2-P;$!); zm*{rS+y+Y{0ndMHQZ~ENZ_&6B3L1m}+k=(a{U8B8a#TK4f``{qLc+lQVAvM9tM6=@ zwONwJex7CYJiPQ`jpD^Qb@i=A!{8t6O~*8AV!{k6=AQ{rO_U!78khv|Hjf|B&}P!` zOeew%e%Yt4I8{L~u^)lqMb?#B=PWFto1l`PR*!;>Q+2~BdF9uFr0WYzqfv56J>cbB z!*=%kPJ{iOWcq@0I(^wo96@qefryEVu*dbah{%r+wR7`aSHsHs@%p0A)tetvzH^kdPKtWqWcDSHzO>*(DV0s0rXc#Lc

    &7)RV znQdX&L?bIS*>L>_HFj1?>|n`&MNAXpv_yW zIyKD6v% zTvc?;mH_D-g5?Z_>QS(>WuQ5`BKTZQ4n# zF?VRQm&_^8(=o_fY4PQl`Ku$9=keiP%=rt8FX?;5beUyPnd$cs*29!4CNqfu(r%T) z*JXbo9-n2dSJ2M35zua>2DlM_6N08`-ouC(cT6 zm|oF=St8)0N%s|wzAiProPO_IFzS%+h&9B(m#Kj*gn{|nl@4?n`k_1tio}9aO_v#J zX#erCSv1 zeh#(t@e|mc146m62<(#XPKH?UUL!b=Cq?x=eRd;3cY|&48W(WIA~z?ar|qs2I}~Uj z06P%b2JZ3aaN+nur+>}xF`%_i{P&HF^*)RFm}+!J88z=#xDIbdM(XiVk+rNr>4dZh z-fTR9b+Y?7NnO2eAo{`$2Q*8BSh^-0u!v@Me)zX9SBHZ(%@#_(x&}2hW}IpE;1%nrVVyJ^2fdSkGEnLcK&0xa_P zA5a8j(#2J=N%l zhn#S~x+;4E`Eq`9Xr&k?P_^4`s@$k$L2n~`AB-hq6rbYdHr8BQ8KB47&SoJ2-cwMz40M?s;eDaaBqeuzxhNH=LGp`xciy{&0`nNyeM5_i(k4`?wm&#?R)@T@Ykt zymRD-jx8;`r6B>h)vyvAkY=GUc*(fL{WZ&8m_!}`gH^#=dCm=lf7sgb#a%|WN7DDs zt>Jb6OWN2%nnJ%K>eN;w)8v{oe2@>&O@3oI|u z*q#L^F+s;-B)rpFLXm-2)*?r1g#=nNt*{~Qt#Bg`I^#F50ki%MMp?xeIf&&p# zE;4aS@)-#Rjx@uV>{x0xYRvSR^6f<&b((I{R;fTQ&J0%*Y%3(z zaCISdlG{24-s?(nh$Ezd<8vzgg9Ap=8xk+UtM822Sos*J!{(gjo%X-oaO{-JFAT#8 zq*LP~!^0o1M6v+vS~DQeidhUdAL8^y+(RHsh#yYxwvM-q3MN&NTl0g>U+2%wwyXYJegnz9=kygnvS2NR`d24 zjE!4%_v7rfmk$z)``C11$%86))=8Jis4v+#7!2^1i~Ma3=n}hecRf?E9kZ2*tC0Mg zb}O+!*;rH|!#0^XXri;LAb5~mVgi|8&?yJ@f{F^A*_KkHFJBT|D}uC-yVcD^xWmf! zrJM6`!IxMh=nKj~1p$PxlZSuHq>*OUNVAUJwy}+`Lt$(N3cd zxW))DlnnlPLd8pt6jPQukl-Eg#cjQFFHMo{b6MHr5SOV0j?>IC{!4Xrhv1#GPPha# z(&*Sr_JzD-8Al;9UCFz z?+qjLA}?bCm&;q?^Koa7jn{*^459`*k~iy=U&3zN8C{9^JfBZa&xjSWeg$D9K)34& zyji;7X8N2YgLJItG(bN;s0`v2OcCM3FV-c#)c7%7k;y9b8DR7cUe`UdRybI^hs_wH z3rk%5%Zmu_>Ht=0Xi-p@i7(?%tzcEBz0H>V;JvWg9XI5pRP83BvIb zDp<;Z{K-iT+HCx@@ag?!CXM11h^4W&;J>SdT(LXz*qX}H!p=O>EAeo>!^p7y8aWD5 z6{fGA(2UlrSg&neZOxlMOFi7o768#9(c$R~D2e!dgm1oYZ^}2jOG0-J2kSQj+e6|K zcQSb0IyZPASfIpzKM zzK$@elAHtQCdItK1E-H8UrC62)miVn+QNC1Yp<1wxteZpuS|oJ_&M0DlVw# zz!FqCK!`sj>nNUi2QUTNmU-SwRh{PdN>V7&;@;D_OTOI)8Z+m7o{jBccB|Mc$j?E4 z3{u@-47o!wV!xjI?;uH5UEU|Us$!N#_Y${1 z9Yn!4_{((9OOFX&z%YNKiD>Sw=A2pZwH3{uR%UU~2Ff`YktPo7}EiLud?>m zLHb6oFwE8Jpdm$+GNtU+(IV)EFm>K;X2eAkkCAKSNc@>}Ci@ga|%Uw7L}l;Ibn zV+c4=ikg{=xVa*4;kI6J)Qkig(sNm?!SNK7Q7Kja$SXq{qPLyjszuJrS-*#%XpKhp zwW>Q)3K&x#G;&@R!ubb-Lp&%F`t7=RPt}Vp(I=ecRZh>;8vZgKr~GmH$eeqW@Ix+B z(6x6b0R=t9d0jSt0~x6Xv=TyHKdh$fT)qE3-oQ`;p&r?j&!yIw3VslnZ_JhvyZ6Lf znhX|;(M(S}&?Yo*;6WK^6b_g0M2Di;2$N?yn8!4J#{97q&|I~~8-f0#KoWH>ub#ta zKk*%5ZNi^o^_b5Wy;<8?{C5hAtTD9wRa1937#GGn#G+e z?eC`Hp=pN(7Jg*f@ZS+2)-;)1>8ju6$*DkQz9VL$&b_v>!wRnQ!CjwlP9d2 z2$|H4+Go!n*0c^DV{vPDjMEv@>{O{Ut1iO#ydh5twcp>$FiH~47$aedHsf4u1|B&o zVb2==bl6d_F9w+R)lAEMb$LKppeNaMb9&$(na4~4Eod5k2jo5Am*HiHMtOrdjYzsX z6Bqh@(FcYjmTYx|KZ^2{D7O!?zSH0cG5VQsbU`_ev`|8$$k%fs6;bSt1?>lv^-&0n!5Xe z_#=p6zn90_Syn(v`ZG#Rx!Qhtez_#n<`)%7}_?R5YzkKPD%sz2!o1VOl1H-7-2|4jQ8w z2-3N%1LjN~G?3+^D$^qfGwsc&^|Md+@Jycv=3k=#`6#A>BYyBnUf)Vxurj~j2Us23 zKVl+Aucg|!Y)W5|ra(^Nrer+3x)BY*9Y?%kBUcuPc=i)sUR|Bm6o3{)%{6SD4>xnj z4ooF_kQ~WvBsn&c^m>ucwHe`!iUk%jaSdqr7(Rf+Gx;;n${$7+^*Wv___q@XT?bKw zjXf{}C#9tC-R47$XepHOljRy~lv7w4nfw?OlUcwpsKY|1j2x*B>um$9YhEQ+1 z5MK<>*8NuWYw7UZ<$QJ(wZ#Ci&nJZP^I0!#CbOk=ARVV~rk6ejIeSQ|9EwcwkbPN* zNj7~8+r^Zanf8s&uXHC}=2$D9CO83Rw&V!F1)~)w_uvKE3T2S#XQx*2hi*Y-CcQV| zjn-j>XTr?yujy}=cf1WQ=GgC==5j_%c=xJC?w%>E31M$(Bqj*;pKjzj@<1weW}yJj z=+6Y(x#XrI`08JULyJS?^4K6qw&bwb(wZJR*w8+WhM$_Qk37Z0b2b8b@TTreC=eyU zODy!dxs9%n?uUpR#RM^iM2;jLgHM(QQBA!r4Jm3dFVLQ!{jTFb5&DcqKAE6&yXXy^ zwUu?^zs_2kK7|cL&aV4(W%xbjc;J;7S{g9@r}0FY7WMFO;kUJNEAcDDn%6VTj%v;E zAcABp+WbIQ+&{^;fjI9_!_%CQbDmPb(@AUBehXP4sKhbNy~T8#X?nlL{Ut(xoDf+T zC$gIxWqW)3#aA!k1j(mnM1NrsL)zLe0yF#56Yq@ZF4iOEyr)?ISN65*!2=$65L_I@ za7oB~yfOv4$glb<_HQCppU)I#PNla??l3YVwi(qkJxpIK_HTd_E#8GiAgjEJ&jcp z!}Ji2VA~Aj8LiJ}@;^>-Q&bD+U2hoANv(?8OrAYWw?$IYq%<4d9m8qJag7?{tJXr* z<>gK%l@`+(Cb)TPiA2r^E zGLnh-oVa23b;Hf&D0-OWf{|^n7q#6`Qdp=%IL7b-BpVnCV1T6rp@^KFO7*t4SQjzH!ZoyPwKV_Q0a&V#Mb(nL0z!~N!ciFOCP9OGh-!&X>XW}?7 zJtx0-uupm!sp6Cr+l#}uMB>n?2r!~#hF2vu9$a?_6>fBzo-oDnGoP~Rcfzc4#?_42 z96#A29e+_-?j_J0-9DLIC-Y~El#hSaBRhIiV5A57l~Nifuuz7!mS$%x6Y!VMst%;v z-~T|QXOEM+rdm=8M`2-O>bWUsozAf)kT{KSJjQNhn;T8fJQS^A-gP(gz6hl#w8*=6 z$&lwWykz1D(Jz70ER24z9Z6uyUR^z1Y?F`tX^L#gjtIDD^4@cP#A-KvKv{Z2_O3rc_0lE3 z9K_q`s_4eYgy#3Jt2({>nI3>a1~QSin`QF_=h3^`a3%8F{jHD|?GlU((kg|u#}I=F zEj8qtvIS6EQQ*;kG_iG(T&9Q)B=`Xh=GEMHFS2XVldH zH3fbTmu!`UJ&!1$fH9WLA6(ig8GfIEhb*~z)57V~&HGnEQ0nUT(7HDf(7TQc!gA$? zNMNW*vA`}y#~6Nn3)=I`W)q6Z5r+qArdaOCqKR zMezG|gR}{G0xJQ z`{%kVisKE#%!bJO=*oDFVvcHh$;<-PiY9zBpnCNh+eU_9_sCCA6G?Sd(lRNc!!|Vz z5|$56N1&_W$ek5enChoMbl5cEfq zAL=rNxc=L)0F&-jq1cE(-Sy{kdt0xYevN(fu@%$D5B#a|$=1LfR6-RiR2FI@U_PoJhbeSbEDt=O+220GS& z`|Lxv)D{8{tS{X=2W2#cA|!=(>Ofyt%{#uirX@i$F?)I+x&HT@u;>%&N86=G27zd< zhV9Tj@K#kt*{je>z(+?5);#ecj`tkiE|hMGFd82^i%)dd5*6EGtKz3s+)p|{l; zG-6TW)g5)T`i7=>fP?Uveo!BL6qaS_{#nlI{t{&!N~ei@ts8$ZSGEi%*7oEj z|3`;C;G;7ZT&<&!)a=|d(QEa|3w!8KH;`R8mNc)m59-gg4!XENLpl)KHkJxCM-T*J zhRiRd@k%)(KDB!|O>*TIV(M9QL$SYsX5EM*&wj-)x&=m9db9PUNs|agL#h-dajmw< zy1O$}j_AkzX{qi{y8Y1w%g1XeWGI0YS!JN37!OmyhX9Cdi>#bppy9ENkGbEH>jLzp zojs?G?`g?vuY3wK>Q7)gHkSm`q+y6Rz7<=lv;GjIT!!?kNwlC z+gIZ2w-b8Q;S_s%MOWNhKoMBsgW`v&IN?HS>DkMcjXg~;Ppf{&X;X_`awn!fE^M5$V1P`@xBym7Mi1|Q3*#6s1Cf_3s#{Z|h z*{OBux-OpZSzUb6|570pTwqO^m|kdPW-KG0G*U-0mY(j?04B*MCQ96s3n~>=*?kZ4 zj`mLYPW4XaWe3;~OuCr7$g1aWA`jSH+*|}S+X6WGS$p42(tf>LbK!46nQF^J-2u5d zy&P5OnNwsEHZM; z&8D~vku1&et#FBRPm{rNHiVcCo(6qX5s_Rn{i0$#^%IwLT|)ckEom}tF!dI@p|btK z1R2d!h9L%u2f*~mcsmkezXfSaH)1>ByU* z72fH)c#lloqE#2o(n4jID+m#%2n?vjz#duY2`7|gn@dE@-8XmLG;AP25-_7e_Owqb zAUb#Lo{knOyt6JGmT7Y)+cf_Py9h5Yk$}u0g3x*=_?gKw1T}&;3se35EZrKVE858n zDP{=T>wV*#Zde>o?O>&rKcuOSzEwwabAT(NJ{Xp#{}TFmTA#=QRiyYe(Cp>KDjnlV zj$b!K`5nY5UI($^dIX(&3AhoutIqnhyK`gT;#YUc=E@W<6u)0fdolOX8)RV&=JkUi zCEVp#Y!|kE6L|XN4OVKQZfrOrsXUAq+HU~7GkheS9$&Hp>*7z!>t*z!d5@6By=9Z5 z0klcd#L0rmJ{~Mxb)5Cg8deL{32q47kkhd+`AF_JiFB7!kuvHDc%Y7{IR#r;uHq=G z{6dj|Cc;470K^|&&%4E)St2NfuDk^`4c&q5J@|c9hEax)1~F?rcG@W9`jUx(-j_BZ zu581q&{arh9NEN*C{vFV%n!1)-f1dYrln`AKTiZHi@Xh^#<>YEu=&QRhajweV|Fj1 zvUC~$jx%VVt?nvc6oGd}7WaVnSFX{jb>zPrdthhxME;Prgww_WSCRKp+?@@B9;{7T zri0v=YWlzn?gsR+d5kCnAyhsG)h0b9f2I=`mGaL;96V(`pEBD=lx)qZJo#Lt!l(SL ztq^{*!DG?el|ZV@6nJY2sBHC$S?BE>{9G+UBbnX8?bvPnf8{|A1~IBWvc2HV^a{B4 zd@n7zzsJmG7rkLr5~Sc+y0gyun49FTJ{@l6zU~HuxBvVGA9s;kFzeg;8t@}9iRz=v z5!ux*gQ$dj-)|-@QSfy4oOqo9saT_9|k3Q_mIUXEdU zwR09t>V}cZ6QEP|C6yqZwt>3zyMPo(mbL0Evce$qU%>tOt4-g!tfO8A5@iIk<`}&~ ziWevXi~34X-6W*6y$y$)pT?_RP?^>ZaaGm)MSdfg23aloD&KAGL1Pe*5BHHMexk_r zgU&6F_aK?Dy5+YM6?IA- zP;5m7FMQ-x96EFcVud-AUEzg4co*t8> zb#U0c1TGtBQN+7G_&i=MVKqD@(XhP8&VR0SHim@cgaG0Q)Zcd{wg0{}%kjDwGu-gl zW>(wdkdg1=;Y$T`;$paka`gp&J;Ir0`eX&q$cG@*(oBy9$-M|DMv4EDE9N`-IiV?F zX9JBL!*U)`Vs^;JW$IUikWYjIC-3bKQRF$Xjj>Qa`!Fe0{bwF+PkG&NC!K!dy2VY^ zE$`k1QX&r%gI~;emHn2E4mJ5%u)oi9pIyov>yL@4D5p81=59l06qs&2JBGLB&>@Q8 zMCfE7E$RWww}aLvG5BYhlF-^NP$vM8b`GTLu9(>6ktYeB+;6Ix-E$qRV1 zY8K+`Hw$ZELJUQ-ON6r+O3}?iGy(q$8J4m2wdT=)3427KA>KatdiaK}Mmb#GAtD-? z&5=G4Z3m4c&_WDCCJSV3h{@U%=d4(#S%{)f%GE^ZwcJ5B71lIg16sVmgk>~L+LQgU zR0QM#e~%H}R_uItClz4@)8ij?01Je_vGv4;8mYc-L4he9vXIT(|IPec4KqGRo4@@H z>jS=nF8G)&(T|sHdnsP%L61IE%TMYNFDAcbqliP;;EbB=TzMrK9cF$rZPQ2Dme#^d zWT_1-Q-K|{K+r{&T!_$1%Ez2bKOvrkT@@s9{0u&Q(9Kyn%h%P71CDw~3& zMlmB;%i`r{?S$Qj*wAciZ|gtz0KNiNQti=iKm59pntbdEIx6CntC$g^0Z#mOT@vs4 z4vMb=8I1W&HmNm)IkIWj1OkL_iz${o>D9Q@to%#h^7hu)LToO=E5#L+c|_;!E|GW< z>(t)hy1Fcjfg9)m74h1|9*u3N`rw&SG1>adPB%sm2azeux2A_-wo*U(y*q`CissJ@ z{t?c~-3V7N)NTd-cw(AY9v5gY1uH}YwDl){GuG45YCG_ID9gw9eFu1K*X40jUQU!z zf4S}@cL7>QuXc)NL_!TtEV*kCi2Fk2Jh!C_kXTQ%*gIcBbTdB$#L>|%+{K*=N=tAG zhJ0&dRd^O@p2%=FM`neSx$o6MurBYm_jXXFd^Doq{XIh)=i8#?M-IR*{z2dmhYBydm z(kxl3ftg2pFavO7KcTZOYhqzyhyL&$wrEq>F)`V8ZiBZ+I{<(sE<4e(Lv!^w+s5}Q zrE0hJsA`%YBraeXlXc-;>I(JGU>|p)UKQ~8V=~g#O`~kW{sQJdXG@tqykM4pUw3~) zQ;i?2?!*1jN=A6tNK_y?=dgZkA88!^do$F89>NER(V>f6>@iD6d#wr|Vo#w#DOjs2 z6UUSkBWzL`pO0Bd|8bFyy7p?@AF_iL=Dw{8(!$&&m zU^Pkg!T=d9{Zr5`1^_Nok_XjYdB6d22Zg{8Qy@wC2T-+085E?_4sp`$rEL!|Zl7%Y zFVkrjTH{wEDhcsVM=bg$fE{w`;^cBScZ`8VF?pt)Eg`RHU@Ymt*s$}gps4^WaCH zwt*GMY!I&Na<7*X*&PR(|BWy?hjv^ORozwEwJLGAWIYRn$SzpzLiQD7$KJJ(f6ep& zG0cy^42qh%&PEIf!7_TpD%qK)e~4E6lH{*mXJ7%>kVRch^g$m>3S<%OBJ4K|H`Mq> zMp*6CCiiSt)jXc3zchG2Uv}UY1b<|zViMsVZ3P6Xdo4m)5`}2FvwrHT^VNPAT)wqm zRcNMaccb3{E=d?d=HXCBTpY#So{9;3#ej41s*;i-Do)R(Ve02;xkRi1L)8gj5q;NU z49F<XL3u%WN=O>*}WaAWmO}YgHS}3LUq2 zER&NbJPpZtdYYkh)>%MuwMbUb=3W~ljnu{G=~UNE`30(7lZB602Rrv@u5K4YSya}| z+m)6$7<$9#IM#x~a&kWO!f^ze8dbzW1N@qm&O*so%kilv;YoxT{}H=Ed%g2`o0&Mj znXe33+lg?gYT+;{tLH3>wJHPuX_xCiw~+X`*;xwz4i5}$`*&cTwV<=8gt)hM zx-F}U*;8J&QrMS-inyEw2H#bqNs>=K|G`&|rK?TAw*;V1$yUM5p{ol3nRgw21A@dS zC)U^`8z$*ck3N@0B>aJFeBPopG3G%&YxHP20%=C(IdVO(=mtpPr$3)SA>I>P8WTR> zmcCvQbh8x*#2b&Hj0aZ8>k-x$?Ktx~KiT&Rs4v&*snvqA#d9LTGV1(oRQLxa%$XOC zZ;gz5Gs+M-1fxWUFN~L8wg*1M0igpdThvQhFPA&n6k&yMYO%VCrJn`5Pu3p zOeh4i1l|*8f2wX6ObM?i2<@iGPem`ME{?#kC3`_ORuIhLvqd%7kqOi$z+%Z&U6|2$ zXlz4dzHem|9}6oM6*?A{1JV6metx$$pHB;@Wotyq7996c&bdXR4VqfpS^nTX%&{7U ztb&cD|7aR#gL-l4u}F(V(_vpvy&f;5#Kao{Cog8DW*-2@(h|j+JSv>e_L%V>WHFX` z+Pa9<;4J27*w}d1y1zQ1!yf4I)%Afne^7{~7|kk=z>o0?H2osW27b|HcEY5@aw8U8-xh)2gv=$r;jwTZwjl_E~4 zO%+Pc<(${#r<9Ch@D+ypKH?VUQlhE5W}t3z7sBS97SgLwE(G+PN{+0k4i93T3eg-M zD97~SbLwDapx`DG#FlR)eEnuY`11C|Ho3wcsx~dJ zcYq+_2_vm|hO*Kl79sf|5I-EBrkxP+bsh;c(?J z5Wf8}AJHoDu<3GVVU>>0{q~L5szm8E@BIsa-9YwJ#$`*)-GUs#`ku^5D|WJ@Uw3|= zFP*T|Zpp-5KkvEI_NKNJkw|D$sJiPtDMcy|9fd)Kgl$F_^r-62^cmKm&4X^-hfUGz zZopY9RBFJ<30PxxGS$KI*gAbw@68?;gr+}mgW(@Zi8t)s;dtwqWAeqKoJ@ui$xz3H zV}lqqd_gd8Z|p}qp%CsToFYfIdQV9<`Ex=7M5nq6wolq5ymgM9cHgl?UQ6OCdcoc*0x@;qXLL_BTP&>^vDAi7~s&nVYMzK#CiUoW*4CaKZfG6 zGpQJK8q;?fdbWnD9IcTgigH&2(zvhVsDtB*GZ!z<8G41<$(M`tR#m#jJga-5!XAnv z1GAxdCRnGRh;3GZ)_0MI8otWX1^fqw7;Al7`sng`a@~!3a){zs+C-Bu?c#9w)7Y)s z_yk{aB*3;4{TTj=K;I4+(Fh4L`u zIy|Q_@?JRCrKgjb0dF2yS+xd9$tWCgcwX3$gh2Yc4|-5O(Al#@GvBi_{=#*>)oQrD z$=0AL+Z?mQU`O%rR#WT#4t@a*LtBn&&a>iS7aU4;rP#YuZRzPXy@I?qPh~&t?gg^ZZTT@OQ_N%d?n7T6MQWMn+=|Q0n8+RZaOlWo;=K+0BoQ$s`0##+{9*#S^fysVa9+x zD&$f3SE49rU^BM2ix1e<`4Mps0XMrM0t6_U-QB4u@P6&^57cFW%kLFP8HO*oqVB-K zyX}Z%X-jByFOKm8^RUOp+qNGW4CQ11Cg7bp>HUv(3;W{cMwcLmPGl=`pjl;5_fY9| z!1(Y<<7pk0qS^l0cc}{DK|@x066C;FwR+{DK@-(OkD&K2#(56Rl9w{)^MjU-;Le0F zo$304rQvKqxMYZpW|a`zH2GnS2z)X5-8Yitk!X4S$&smDZiM*Nxf@)C*KfW`TVSLu zRC2CGokMlQX5A-X-e7-6KYx0tS+2Q#7!;51n&Y>K5s!iYCv4(CI)TQtV7Y2RZ?ffGDpo-}}s==*C6pWwx&HtQ1f@flsqwl{u2++Sg zNW#A~erMahd;N$GZO|e0HwtrWbOO2}ADm-=CXBf0zG*<;0O~omBF&02G`GZ(UIbw; zR_|X+2)WL)#~aal^7W&M;B?^+=+!*y|MJi+pC`KU3|sCwBITF{T5EWPX4Ninf@L{| z*aFy6EB&FzMGvJqvsMDH)@o${M)%O>doXgr4hhEdCQj1JttD7n>8 z>W-u|eG=urbkE0O5UCJC`#I#oMU|sw<_v#*Fw5q=d0NZKR`1z&eqANit3b18Ha^{@-p*~2c6HegT|+N!{=!}o z63s8{(!J_tal*!9yf4k+x0)PVZ#AQQCY)-GH!6B}Tmtdi&M;Sqm z;dl*VgqbR+PlgWE)xJ@ZP$cLU`O=&5R-pQh-6O=?cK{|Ws#y2mV*J^yAtm2G%EpW< zG5Yo#7G#i$5U}>x8`ZiZ@&Xims)nubZI?Jmx$>3Rxvbj%&1HUKls#}5DmPiN^$Ffv z5rFv!XHu-5o2c!`{9CQZ6vY3vH!j%vlkr?N9bV7}Q+^*9B>ZA4?apT!P)#(57jC@M zTjj~iR-GQ0+Sa$UPI<0uS#<@WXGAj{*fzE^J#cvV(?d^kxh3>-HGW^*<5mRe4+s4b z@!{+`^u74>j;5({I@0V5y715)N6yO{_1(`DqnG57?;T|K$7nvYC7!M?XCiD>wC(lV zlX(JE#=1tJZ1UfoTLY~+UTT-F< zADqC;Gft0q#Vu5p)j1=m*uW@SGw;FQc&c9(joy>%cypG{!)oPr131O2Vl>O;RtC@3 z!B&_6Mtp@scIr<7%&E3Gtg3_LC_%uyDocActOh?(av-->37dSBR@G6o5@7ntC$2vaSzGw}$)BV~o6bf7q&ID) zRE-8W(s1U+f8CL=tM?W$h+O$roVCJSe~@k8sy*Cc4rH!HwHucFB7dG@BU(~Z_w0!8 z79S~ZRvTD4KodE~jOboMkp?+ay_O6 zZfj4vN;e)N)FCcA81V=N_$t>}Wns}Mqo#KAFQ&)uH#7%@h*u44*83S9(hC8!bq9wm z(?a6_pbiKK?SEymoEV*qt?8{(cgV@${$mmi)5gHw-o(*~ z!NwS%^4|v1JdDW5fqBcNO4i)x6*eB^+@0??jvDb%i; z8CS3ThjP(Ib@Xi~kPXmiw2m<_-{F^)^r7>xwh|KHdzZg`mNx?4Qj=T5S?5-4?r6Fe z)4)qJ>m99tiG}&TdOo3`i)$&%V@D{ODG!2$_t>~G3tEXYkduk77(RhZY0RY%Qnk&q zKaw?**QMzvFHd%~sF;IrXAvtbt@%|c<9U>j#;WRC@YnLTiC%<4W@ZZ<{@v$jCQ&HI z#t`ulmL&Hh&m)%OcJg($@V2LEXLtI(pFNz>8QRzb6^C567~F|-hABe1Pf8J3ZXHIg z%ANTs?@Q{rG)l^%oFpPq)n?>zit}QDb%SKFsc-AGZ(RQ(4jh}_Z|J>XaaL#vVmzfM zr}JT|IMX}bk0ezKLsd!rZ^orG(tQ2;4I8bx(4SCa7L{Muz+c<(-Md>YGi6>*EH}?a zLAqu@=V8-f<9ZUUWCxC{R9C=B!#2@!iiYOI)g45Pj_!HHW;KW8^Fy(W%Pqd{BZBMb zgty|Zk*V4#!qYPNV_yo!h2o?58UB&MuQ0C>zZdl(ybqG53hTct?lwgivKB0Vkx5n> zX*i8AdTsQ1IaRL>I*`HLy$qVV3^hgyKN#PE2$9j4mRwO zaz{ySe%pLm)g8$!_zxnFGTd(oSKKW0Q4H@2^!EVogu~`+&+&~T*Cab z#&Gl7)S-9@fxm#H^srA8-i$?>sk-QZ(c`=+#+P1|Fb9rSdV|kDn7E2bLt=;hJXL!@ z1bcE?*nWDpLHrz~vxXFi$llx9Ky!S;e|pXP^qaTw!@9W^O1! zB!oywmLwjz{P))^~Y&{LK*fOkJ6yM!ML5=ZnzcO9e?T7sNWzL;vR0_ z6BB*@epHGEn3d9EcST6hnJ28Mlou-i7k3924+hKc|4^iwrKU1YZ_DQBWPv&({Q_4t zFqIa^z{aRbYNy2C$mUGJZzbVP!@YyBiIjC)P%(48gx(Ix*5nju_KG{rwLiB~ z4p~Hq9`igVsHHHZjEWvx7|7{H%g+83gQEA4x+tsto(R0;7dfY7DVGzX^(VTPl#(%T zCnaB;U;MaoC)66@74*X(^L6r;^~KGRsat6s9V^hgvxfFd6Y0FM&r&&pQXC(;M7X+L zZ88!v=l5Tc{y4omh#P)X@ZISKK3w+qQbsfe27XSl@^j?|-2~v@Bv5xd?{E9SZ{T2(}?r|1=Q} z76^qpQ<8iH(49t2y1Z3`NKH1u2KG6CgvS1C3f^E^QY?Fi9;#qu;GaB7G-c5R>C9<~ zGXn09VG#F$`>_34%vg7(?|1xmtO_GgLFSqbA98aP!6#ZjsPYRlqixx9$qMlP2NQIi6gx%ggW z^Q!1XeC>-CCVI$V_+H-ht=_-|qy$Le__WDvEO{g;oF?i4oQ?J%e8$Ued;;sm|BJDA zimQa}+x~M+w(Xj1b852fnrypPwzaa2$+lgSZF{oo?Yi#gdEfiL_un}8*4A3<{2a&k z_~Fd=(I|mJrh|ps-RJ2ppr}5aci{O|U4x5n*BzrjY<$V8<+$E%-R9xClHsoU@?D@74%pvivJvF`NczX+aQlrJNQD4gy^Ui;D>sQ zBwlYnvC2F?)yp&&>!Aw}+efvG#m_5=g5a9ziR(Hw z!o-ZCjNWONI1->6jSX{%Gmm!`xaT7GoLSEmiQ~r8gjEz(9ftxK<1i%@;#TLQy+WB! zMp8@#G_4Vu#)Y8uOW6uZ@FOH^Dd=4m2y9=t8`tiwtxAOi14%CJCF}}cmq|x4l}U;~fnkEx>_$1l{VsrJrvM`b z$vONhiTg}wP!b9S@+6+_ik#rEFT0vi);2|eF?K#?84YzD2QA#ELX2}ka>DpxDvCOd ztE^CCXAJjan)IjWHk;4 zI$VRc?32p_5^8U*%`UWiQ|IG8xuFf}18#}cfdimm*Nb>4q{Y<4tw?f-9U+;fpYBY@ zuY+wnj#BDKDwYGKDC4k z)(5ar+=?9iv3!N8>hATK@Gek=7`JpuA^a*a?n+c;lUNeU2Fp3#lu*cX+N?{dvLJUK zJ0BXC`7mMwKQDpE2mPt>`>~zmUN(?(gVA+dW9`&75`pt_#M-PC*t3>cyp7oVbB#t$ zgtu);X&oIffW>)3WAFQ+0J}PY}w`rUp^oc{WF)7H7PhF{_{y#{N3=;OzE%kk9L4D zy(AR;(@>#A8R~Xd-VO%PdnvkWGcQvACx1HIJQ&+6@lQ&@mbdZtS{~?m!N4?-7!@IY zlwVtZUW27Sz6t9c-|gPrYjcE5nTo35uYdOkok)m8*4H1&_m)p_S)hbVrsiBt!;V+X zcW0w;3=}MY;QLWoetu^rmC8~P-+cvmAB8re{gIe7b(f%qCh_h2@!Cr^$=3XpGUk-B zF)!`dN&HKUb}J}aK%5HU)ng8|M*ymGzE75%mwD0F@9hvpg>3#r^5Cp79w;5t3eVCm zcrmZ&Qg&s*h%2#0BT2EXyF|_K11&t|4PLL{gf!0tbUfT6t1S&WthkO7hpjEZPFHgy zeY{?C*h6!$0+}7gXWds5Fj`PvLGkIczGvTr^<;g=1qdEoThQ(zk_bP}sqv|{QNcw6 z1)etV8U!yrvOGqRYg8H+WTao%*hjdX2;znHQ}NPr_@zzdU00&9cqs1pT2z83W-Le1BsdHZ$ggXHN7KuF8l2yh!(<1bQ$Y0lFg-!0ac1KcpCXk0NKtm$qNHpDD zde8F@=WGmo{k9%k#aQC9>daQ>PbZ7K8JRpsHLEE2o4$3_IK_VDQiE|+xhh!iS!R~m zB#t{}%X@dy)MdK4{lK4qYBlD`aS&qPA|GXoo9C$($X^&vPCL?HB~U@znkLyTTWmR# ztAIy!?l^-dUF3YVr@v3ve`m-Rd~6bC9d%uxNbxFw(?m5+@^3e~bNH8}(ObwUW(1z6 zL+k`owq?L3ALfO$G*qrrYf<0lN`~k+^g@h`+iO%oBE}s5W;Q24gz~({ymh1+w_Sd5 zfiHO_x2|G%|6AK8LVOj*rL)~AwF^dIL!lvD>q2UyK#cj5pE(YJ293r0sbRq%lKXAl zibR72!^5MeEsUbYo#yh*dW1cB>JxEogf0c!_;0p!CfH@H#&@`C`;=HvRx9Un1{8TrlS-n^4P0DPa4GG_(l zv~jHOj~(ZC)5`@vJvww^(h4daMF&;PPPA|uTm>y&dYs70VZ&7V29Kxd>X`w^ zKTLjC0R311iEPvBf_N$9>f9Pl4CbHDV_oYgLhAkGt%*Ogdt!Si$S$9r7)C|grG=Wm zPf3n=NL)-VqK|IoYqDT7)_| zu=&&kOsrb%k6Eq$MwI%y*|g***bH4D5c{(K8m^T2WHYBG&&*~*lUnNPO8tbt)Hu&# zP}frda6zANAD}_%_G?x!9vSI{Zp5xFH9nN+qtc})AWU>iIUm2OsyS*^#GYZsvFvp%Sj>ihyl>Vi zxxAaBWn~9Bo2o8rvzv^vgjR`@m7#y*hCwm}lu3r)()Dye&C5BON=0qBrKf!xw%SVZ zS0PctPf2~#lKzS3KZaSTg>Uu7fYrQB{}^jC@HD?ko|nkgs^40CeGVtLMR$UlSlsWl z_I*APA)`1SI6CiFQy-YUd@$=-E{Tk9j$Ut7J`&!J${w6CaA0f5Fx>G#aBV4!y}>37 zK*-g;aoi%~PVf!WmOTlv`Fglfn`Z)Hzeo$le+Cz_Od@>VDBC_|gk6e5k;b^WoZ0d{)lYdsOvPZjHOztGHbvt` zO`yS&bjDiPk0MiZq z($$AENXNKIi`C4ECu07qjfp~O#Gpm{YQyqK%Neg47@J2Qk(Q^!>8!t{R~9Ha!7++R zi<31MWK?t5q-ID} zRpQ$3ols!jiPhN)6np55^6ThR0Psr%i3~-#-uY4#LV_~o>N+Z-i~zh31?ukh6 zw>}ONiAzVqTRFcpk&~&5FLjYs5y0NG9IymX%$`PnaQ9wKhR*ynqSNfi!<_3eJ&7HN zglg5hh0evOL}?WNNH7yWZ9UM-fa<_VNGdV;+BrCez(pXj_iJo3bF>1>4I-g}8mSSb*v~b^jBlNZB`(hbP8>AhC1I zF#MM}Yx;{qqqb$a6eKn`!MXP=q1vAS?~cKkJ?kj~*Vfsm0UBRuLv1=?e=;3@L+7LR z8m=RqOGSHQ*DC2a!Ya%cHFJiAz~N>T&g==BK#YbW{+(1qkcqk$dq7)Ef$LF-rNmKx zWXuW)`S+M0@d34W!s*fe>e`xy_!0RzHy(I zg?vn)7~s3k$DO1~U=@B=fv?cO;C!gdF!_0Ih10s31F>5v@K&+1qn8KJtaP@W#`GO| zGveu)wDnJ}9pz5RNrf$u0oAvFynxm|a3cX9L z0u8=v4o_PH3%+Z5zmDBip!*d6_Pvm|Fh*k-zSCp@1BN`^2FvX8Af|ZH0-(Ju&%;?* zS7;uH8J89fZ~(IGLKbEfu*k*d)T+o>T$T?F2m4x;zAbzJG8Z4anhLlq&3;|{NMzaJ zN9eVTquPd>gmQUa+#(V|R$kc}rf}Ha=`{lH7K_N%zoVoijCIq!NrQcuTghLO{F3-H#z<6RR2e_{X~ABs$N!VHQGPkuB(-N1_#Bj zpoMN?mcu}HjfYUvl=$)8@Yn8Vwr{nUsacVj*2oSLRQSqfT6RV3Uz(OKNG zR%*CsMka=QUwh=XA+XBy`}vp#Xg! z=~EB(Q5A(irx`J4xHru0T0R&deUH@0)_gDgiq=KUwWmg2QxNMlk%Fi|MoO4Z^|!S_ zwpA9P91A>Wl&pJ(aGXe&-#<9Csq5z;r-H%LPiRdJC16cFailUYPb&u;JJB8PTj#e= zAh6hW0++Is-d(wCJwbDfg-@eLcK~9$q3?RH#kSv?!LCRfc}FpfZP$pevOLCro1=r)hQ9nXZYB508$L2<<|%lIutO(5hi3V?sU zR$(p^l!X-QN>OAD(FMJd30X4qnDV#>K)v-XXd+IZxGwUO`7uDH!htQO)F~mEyu?q# zH%;tx;TDHb5#!OS!oN+mi>mxVIau&dZ9g~kAJxmy0fVLaj_?QkXEfj&SS#Bf@c6i2 zQ0`Q*dOt5&JxXdrZGToVI}Cv^G+?^7+u55VSQ@_k>>%u*z2{d}A$)aWjU)O+PiVjS ziaJPaHxM7mnhTNOqTG6M>dRC@SlD4cNpIAi!m*Z=^+K!--zliYy_3g1?`$o)KJ~lO zVfRT&rzNf?9hh4)oiGisHJ#pE`&;05l;-EPW{h6bjN+rJ@ zQ)@#ye&E>{6(vC z)a&lgBmhVM(X7GzedVTZ4Ffjc`3d>z2LoT?+($2b@-Li!9<)wXR(-apF6hR7hpco`mSaw5D_>G4`|wEKfdg5(3H#`Ipc!-w2(w;DOlvE6AsXf%R3FYxjsX}^*TlnW^l-f?_4r#G9MLNV6LTBB(t zY3{tO6-xP*zA$^YNdG5+ji#h%V`5H86~kq$a6?|%&0;)gLtC3-9}|U!Duq5i&a>i3sTVqU495Un-ahi4 z84QCB9Z2z&cH=WktVkpW#ml3~1#0O*_WaWmU?57H#Z(TLAf%CT^h^Zw=2 zehuUprja=>PP;~Snu1oRa;rbFzg26#G}EA2JjjhXZV1PQM%*yS$@lEj+iQnKtBT70 z{L~04!xhk^{`Nn)uNdWcMMUx7ndSB?Lcd8(^9tqxFQR`mEis~pbX!f(qAA8x)Qxsk zuBXbOa&2HTS9#)T2ulo5^sw_=;2Lew#uu@nzxfc6FKO)2QJR{-UA5|7>RlS}n_mzY z^?tAZzSnyiOu&onGR5iYTf>qHZUQiVVV5m zuu;STxXJp@X<{k=l@&ySzq~&xlt$(40m?M~#Q4>rTY~dmrA3CGA@QUN3-s3 z1R5xZ6UEi}c_BcJ;Rsu~gBJO`J;x((5z!uug!lB>m%tuiTg zp*htS*9rp;S1b83=H^I64Ix31dQLnDSG`dTQ2JT5fRQ_av4{_nW}yK(XC|4#WiU8= zh=NK`A&^cNhWNF#t=2@tLLo|U1S2e~?WYQ2%LZ%+6e8HhA`FSoY_ypbp6v4#4Xfmu zO&xLp0i;Q7@8PPH@`o2g&ui@bScY8@LV< zpfvzAKJ?a3?Ckq@EB03r{wyiqfnXH6mUyiGnds3{6aCbv6cq4+t6U;?nr`yI{eZFx zk#Nw2jC)BZ30o9uG!}gKrSg@iQot%xb(6N>)rGiE!*ay(A3;L;YPEXd3`%N>nN&eP>_2@RWP34x_yl0MDV0+tV;2NLF*LU<2r<~Fq)P{G$>}JysssYNhXkobq%ZgnTDmb zW$^qWCACX#m*-a1<@G7HTTA1AwLgwS!e@#VqQvh>2Xz>&7PJI`M`T6AFf?6QE}_XU zhYkJ4I)Uzqf}x1^F&znbzhwmIzSX__;bX)CtW?WQPhPeF_-r5A)vG@)uY6Z>R#k7i zKR34MeI<$PTqhs&-6nUZOTIp1yE>TjI6Ymmark6%z2){Qzh?U0rTMmGvP6gZ?X{XH z<6*D(xk008c+%3#^x2+|uV`9xs4Pk%09o&N5xO@r(P}>+w9hLXO5Q!**_llnU1^m&l{JhZgQaqD#Sd z?U!#@pEo%nwsZ7^84E1zl9q>utJ%6QyUu{|GJ1hb*R%PllcpSo=!Go1^ZR^2(;59E z{Mvholi;x(DSLnN>(#W)GtuXVJOE%@@&QNrZhAdCnZ5e%R0rsMI(z=9c_Duide+_i zoC)8gkGa+5k+^Ezc|!Ct!G1S*cD3mi-GB3L+RXR3dO>-g2cgd}d-Ws`T|6GU!44Sy z+>5fE3oOpzXTQAfeUWp%v;>Ce5F(yXUGfgJ8ouZse{$br71KX)>VEzz+58-L$$gvs zT-9w`?DV{!+`am^TzY4I=d0gpA+i+Q#98-^%bV5_-;)5^1^?7UaUe6|apFUAP$2(l8Xa;=!I$Qc(&clZu*G_Grv1R(7pC5;UZb$N6ntFoI zYwA}CEBdb-o1Is)_a$e7pAQSoCw+pyUzwAj20l}`)MQUpK0DUww>aOcDEB7s9rMo^ zeQ&+npPH+?r2hgeVveqTAK%-@f4Xu0^$=(6*3`GWZzm6+37R!NR{(Mwtn8QP zW7R~n%Y;Z%Y#=}jd+*nqe&1F6xv2QIhudH2k&BTzO0mArwZnp!tK7nLG@D){jaB+HRbUtK8*(&R(#e! zH!FznAOnwN>6 z3*`FtX$)Sjq3biyYkZc0cNUgw^*`&@0RkY4bI&VHr@BKI{f?a+ zJnPFhCk-0{#9y;2w(X-*yBQ+Qp6ryiy;?FlAUCgivi|x8?RtcSvzYa3SF<%IF-R4g z-(m4QA)G>$37c)3q65565DgQf4MQ(Jr00m=ZwMa+Cc}73l{X3mtXD&P>$V$`}INmLfJTr z*=-v2t$c29B?>4P@mgdBMze8+fzj+|w(juf5L|;~NaJcj&^j2g0hv$GTt~ASKuH=3 z5&(ExfR(9I_+|QFQJXy`@OW`WCB4GT!QwJ!ki0brGk%{^>&HvE!e|!Ti8~gnbbo6W zW%PbTx=gv(X(A1SRS$J*EhyE+YMb|IzREbH>$7t+S8kDx2{6(*$A@9I$aVAw=h_jv zjvY|JZTM%-#nO?AM)Ii1=Usy)J5oP=3g4_tiJI=U%6gZNe$YnFzSs*aR#q?}y~vvE z<7Uc5LUwFVBA{o=uf z2ymF5J7g^YWKA%*=w@Gl<0Tbdi) z@_M2ute17E8#s}$9oOu!QnnmkYu*l52M1rxi7xHZbSv9=o8nY{!;%n}@Q^A8_x%FK z1X2irkCDj(X9Fn`0d4m;E#4XwTP@NAHh)8YUroZsy&+^!Q}aU-w^p-nF^DNHz7~@& zMluAMn-vBvGu0upaJ_R39JZH(H*VU9)oLkAHgkKCxx!C8rW`ui8b9a(<~$gi(@mfA z>>DRK7Ckv6t9)q0;#xm4Q}UookciI~7NFoSrz*3ETukw{05rG-S!s`*LG`=;q9NFa*(0|eLy#3&z}uA zqs&CgthonzDB=u3XE!~&9v2czFapEod!829ZRw7pB z9IWX03ohY=FQ<)q!O?&G_5_yxfHo4x#Xr)y49@8ktYq8sOw%Pb1~zJOw4&eHcWk;y z(LvaeY2XD%6oP>V&ewJ(ION+;WctgZ|;WpTOFAnqQ2(< zcLz4a1nC3hrHMr9D2^G^Pv2Bf^d0F0ke`}~m>XT6H~T_==jpu49QJ|S017w zznI@ml<+kvz0+b2V)py$9ukgnjl7`IwcdH-&iffqSA~KAY%3k;twO;9c5)A_QK6s) zWdW|JP>=$WJE+7x46n*aDsK_MCZTR?)BF=4pYyjtCqBM`#a+ll5G#}O_6T*`_3N z))HRg!kg5~QACK7XMPyH+j&28+;dOWT`Cr5Cq>uDPpzGr1T*fb|o(Y*1@cXHKWQ4Y{1KKII3#ZuC{4fuj@Mxo8&6FqpEK3ZFvtYMfFvhKUBSN zX%*+x%X7P81MIGZ`{6gFo0j7jODl~EM}Nivnvt%Y=bHB{yHf4M_k3PejHR{Ovr`>Q zdDRW8fTAq58Odj@Eu}iLJ^4BHe1^5wFRS?7N9-977F@ffreA`_YpjhukV8r!2M9%TOe<>!_AlTRJ2TaXOv+#(?o_eSsF8v-bj}p=cQ<93Fck*9b_NnDCGYJ*)`> zLyUd;4;dy_X}=+QSumC#7LI>sByvLF_@H!*qnHiI`obB|y3v!Mzv)s^5Mm<-H zV{V@5?1iR_@_xAq;9(Rym8FJdmaysURxWY}``29m7Hee1hB2HW)pi8y-&5uTjNl$I z@-fV${dRl-BdM4-t|QaCK86(1G*ely->t}O_Y1G!dUcW0&7Dx?fOMJC$(>;5K*EsI z$!);kz$rSSx1W;Ah~J&VM7J0%E*jE=OKqMyEIyQk^Y8AXEZyXWOYfYj`*7hT(G!2rwDcahVlQl>I6r z=ENy9`AIphA{Gk!`)Fl|-%HPZSpmLLDRpq@ZHpiK9zv zNvZt(iwdWcprWePImBuLmz>6DPh=|)h^E}FYrB3E3}`5u$RV&&kBPu_s7&5&DswGDWt=DlD0XDX60Xxcc8-_qKMIk-mK^bp85O3q zlR>nIV2~SMmXSfEoc5#Cv4&!4H%k0lmgE;Yp7F!jIDtH$jD=Jnxke=Eh{v0jq85cY zKodR(N=_4k&EB`~C@&EObR*7#3yVni?Xh@+eQi+CTY#h8SKht?!2NQ%P))?Kk-Md9?x~sqgY^|INKcA*G7D%zwf2|{v zS?h4`nfUVT{H1I@^{%QhwrY7Xcatm$(Oo!0v@@*A$7;V2j>{~ltJxrlyX~ltt-AsU z&N$alKu;$q88ClM^@v=UpkYbTXOv24u0V*1jJY~UnN#L9og%U|b0QIIq8Q_$ zS`faf@(_f}?15lYI&Sy_c zo?Hx*?_~NLJ7MIU@gDr4Ch;4Rrx^JDUoK*0$y$PPfnQa>C?1D`Q_V|Pd|w%>NQ=RK zMw*G`%SPNXww3A>N>_DHw+C52orekq$N8@RL-;JZ~tz7Vlh0iaF-X79*%w&oun7Wku{pzDJ|? z+Wv{KN98Ozzz2JEVGI)V+wnNJuLeqcmSbj}9uG<;fge)%(v+<6kh=9=&`p zVeqAp5GeM5hOH$jh#>`oAykfYG1X7xkadpC>NDt`n+&T?M|d4nmw^@-{on&E+$z{>h_0|A!b}{1KG0uGGQ6-1OY)4DQf{6nacQ-|qlq&1 zJqpsO^Eg1`1-3sV9%==(|Ha%^aN|`WuUq z8Cr?${BxT!^{FF)M)kImLQ~^yLBL@4%~wUYe~dd?mTE@5%)N)V*}cbYa1gxfRca8t zE_zoE;HyAVUTcE>eMm}nrT9q{48Qkt{oIRm1ip#^FFsTbQ;TFeo z#DMD>+OWK!`WB9cO2(A8@33&KHq@}w}s(acu zz}MD8)3WJlNl;vnU*M8(#*~%w=wzXy6GsAH>${5VA2}6}W8j=;xQOy2@-?4H@Ff3# z?n-^mZ3D2Qk(`9@_tv*8eS=SnP$_t0|S%l-;CX&wq{MJmrICh-R&M%|9)fvHyJ4iK<$8Uj1;V3KfHjj z(F!`+9_NuUU!nX>1D}^Cghm6rP5y$IenNnbJWzqfl_e1vu?L4jwF-hr=2lwETQa zrCy38!a93Dy<0!RTmtgIMc!Sx0_L2nv+_|Gw@y^Tp1N8@1|HRd!-%32kd881W2&~M zo4FXM9N(>vQI-TleZAgqjXr9$Y@6M35N{7Ra*#yDq6Y;zr+vuC1bf?esE$p$dy(um z?YsN-twI9`>^5@tLU+GTwMxyNN#l9e&RST@ry?Ub`2{o8YuHEP47L^^JBDah<#l+a z_EP?PCCA=^yODu7l{KE#yDL3aMXMRF2kr2z)(QXXb=%cfWOjUhYa_ky@5h+Qt(S~YOuoPI|+Z)s7z$StPtD4K$+4^K3xMXXw@jc^z2kZ6f5J34)OGP4*s|( z*NTa(k!FfAL!ul*vLr+NkCcO0>B5-rBe)f)L*+WPbh0|MqB`UNZXIF0R42{>AS`hQ zEuwTA?dlpNL#C6(u^YV3Kj3VK+hWisrnJQ=1OsbF_f!=A_YN;%xC^)_mLGrt zyPI?W$SD1;dwK}y5o?IiFycIU*W#{kq5Y_PhfxN3AF= z$8=96-MZ%P)cF5g||cSqCGPqd9A&<^qglOM$yjf@?@r&DsZ(-FJNd zrFf<>kIk;e9tC$FA>9x@?h;1BC?cauVy`HdatmC0B^QL~4R|;O618u(wqFol=0&_)8z82e~kLM*^c@VMM^`x zJta#)8E1eg`wayHej6%UiS(qSR!|0&S)f>o*lVEyF@p>JB`U*}A@jwU%~hW?(L7Qh zvM8=i^-5cXl2(xH4oNbX>nJPfBB_DjD1i}VKp2wo{9y{PVT^$&)g2?%LJdrE1`Hww zRNUXhv=h%tM#cDj6$v$kM8y>2x?D;0Za7R^!ehX8^JN0SEXyIXj<0iHGOc7f8M)=w z!a5VZU5xTqJekTJ+WMneZX&B+C;hd=c-oM3RJQQ;2qN-a?gr;Sp$z_iLK)5fgfchB z{~O9E|0k3gb^bS$nLGJ6l==1*%0z@ON|t?vGEM)6GI~q{Brl^P|E4lpU#U#1_`j)4 z<$t9z#s5iV0KQc4_k+1YQ_JXw@WI_R*b~bfs9^uff>0Rl{PNIUgW`p?4i(eesq~?t)I? zIGq)fmFIX}lVe#-U11vC37M7Fh*;Zj+mJ(9HuJaI!^pG@Y`Sj?KnHCK5ipTQ;A02{ zP=WE@qIoc+qy3d| zpUf0jAooo_d@jsZECknBdc*O<`y(ZEK*?b~H4<<$l!Ae*?dF~Ck1gU)>BC#2R*&xX z2FttEa>KNoeZ44kS+5Rf(o$TY;5j)4A}27gcad^}p_zDN7{NB2bz)PAH*+f;q!8RsSV3^Z!?7zUb*X_=}!g`Uf3r zR|N$rr|x${Iqfk2Rhkm4C7==<;2){^QkqFil)Y+#aN%_Eo(hn3{FV%U%@p57tKvxYoOq3o zaO5g=wCC`TFz`@RGfCN6_iB1%%j+gtw)Px^9%5*Xsba=X!F|z?uDhS!_E$aO9h+Z< z%4+#6^u&-y;Vhd^>1sDXxu0ZFP$sHJ%&b??^IW7KZIoDR9V_?q6u3y^E;FIo9kt4=+}#tvm%?6(|mg8Q9) z5GAiSA;Bi3A;OT`RK*hqsA)=`?C@-?MvDU!OCgVAZ~djXs*%LJNFFKXVI&!$5l^5- z9%8|5sLQjAL}!eWL|#MwSt0d~Ir@Sr^@KTcUq0IbNyO4|kkFpr@teA+V(bu8YCmOU zCq;ToNiQh1Tx2^x04VNAA%ey}zi`qW0~{$Sq{bY}NJ3R=Py=Q-QZRzf0>>RGQ~^wh zYH^Z`11c(hlHWU2li%81ZSqL17n_k^> zI-q2fY5G#@(09I&`mCfeZq$zYtT<_f5E}Io%2a=Y{mT4N;>n4vtyaNMMID45OnJh) zP$|GSTPeVOX&G?-&Z*Pl#M!{g_yVxiHA66xzug;4(WEJe6=TGGYy2g6x0s ztg5P$YOszbLbJ+qlf*$&KtBDEbau3oj}+Ygr;f!SU-Z2pse+Dj4)Uvr#UN7x_m35!nm6Rp z?AMe3(u~|i{xlUg2MXaY)%gD}8iQ5;BO0nD|B8lEUcf&rAq0to?mje-skmdRQ;36M zd^iA9%rg;I(L_=BS2W0@D#M7S1BL@ym>G>HA~6%e2FtN){}m0={(#&XNM;%l!6W#Na9k%p6#d7uw~Lh64*f8Z;C;_Hpe+q1)==vAa;z$!tC zg|b^s*Tv~J5@40|AL1zfB94@&{~`|l|0a&ue~BXw^NTp7{vi&&FXC_+`67;#H=O~) zYw4F&U-Bxf&z$$YD$oB%9&3inLJYGYtN#XS2!N0;O}HQWA5A#@FHJDRSpr78P~g+_*vSF3nhEzw@%YzgXKwFG_oOf zprMb6h;-VlEP#?N!Ghmd;1mh-g`G zASu+otvh|Fy7EZ7ctg8VY{09}3WdF3fJz4XTyu*s66%Y9xqa*Xy$^6Bl7HRyJi0~HJwVrBevrtmAj-NXE8b&atiz>>7NbfqT!@47h&R8U}vMP+u zJS$MRh+G6Mzm4a8=^FJp34Kt+BT-2tLhUz@`8PQu=sM8wH@ONR$zpbl^~5ACVvO0s zBvopRF*#Y6mZn)n&$O(tLrGY(D8W%m3x}f2J3)tI^n`x$Xno|o^MjJXf|Y$7DY&9Y z-KLOHHqm|K1Zv2lZ-Bw^3r*Q8^8artkM39ZFwvatF;>f1VSM1c~_!T=j_N?uW zf!cK|9r#&C8l(dTTJBir>SZKom2XCaR9NUEWh98L9EbB8n33by9mKn0*jqJ*|J<& z?Qe70F=V^Kav$Mp#s|`sno5#sy?8=Q80G0|qTdm(%BoHjcA4VQn);lIST%%4avt$; zjyA(ki%3)DR@|_kT&yoWk%3IHh6z~op419F81&*#pss0&V z-Tn9ID)H~=N>l(>n1>_+{^F2wQ5XFE;;@3fI4FG&j=&ekn^BzByi5^&K|Ix%F%;f3 zoTQ^EEYA%UtD{T>g7z)a`t+{n@YV7rxLU@jhv=))Q~r6)ATUFUROy)!xZ$hiQrK$Q z61G}C_}6Or+rL-K4Di)52e?{BY6DlxfG|c^*Lw?^K*7_>xTb|!wo!Xm3jNx%!=_9f zZs-Db(}?5yklsQapYjTIgH__R7h<|BBzc$nCbW9&Gj-nk=EXB$)YCV>(U-Xl`1I+~(bMWblJA2Hy>1JO>$L z>~I{$7~~*hOoNP3Kn*em&u_+f7y&Yd`we6G{$Y%k|745;XOJ;EE!mY$5APWGXA`07 z82{u!){*$Cc3Yd_qbrT}ot*^glwa>FeMJ*M##sEr7@Kg$NW^85Yq1pL66|}M$(1uJ z|B^>M3&t3@oQ36>)(;5;J7dfreTtH|rXi?mOKdI9w!qwI1sOwy#R@;~tSNEi>z9Wt zfaRTiuLk6aA6Fe9V+>vlANZQF&OVx+c@Z&#FQTvIT`pl!9*|j>o0ey_+*wtTL0%#0 zRZjH%hB1af#xR31hGO{*WAwopL$T_HG5Y>8M#EpmK%}~13`#g-SpH@VuD^`Y1ZNEC zB{*X+!5PExFJnOAjG@#AXN(XyW6*(&kvF~$g)zoqs<0Z!7=bXxP=YgtFUT0;aK@01 z|K~d%CH-F+Bj7h<#99VmS2v+fppC;B11al1!oN2X!U5B zq83%vK$*N+)fdh=`6Dl6A~N04EX>%QVs18wOBM{Gg;Pz=Tez! z@6cLI6s9#*AE7*jF$NRy@N2bYBLy?f7ld&`fu0$2h-!vnbs%F{)hB){%3sjQ9Mj3| z)k$xDn70+jw4wfdP%YM3Eml_xuUz%A?AcmbKrSm({!I?Z7*-!XKz2y!Um(>;iL65; z$>>?QwA%FhU_mL>=%U(f5B1iE{rL5+N71_c&IN8m+F-W3mTXOHg z&-+iC0?RGgI|DN}mGvMca z+5d9hZ~J@R_xk6&AMpFUFL86;PjG=aQ_zdtCXs&)RzRf zvN9}b$D0_GR0nmd7}=7m)K7nj=54eLT9m4l38s`^Vf%~C>q+QYW<5?rWH&AR_SsM= zj0A6V%=2AVN4Q5GYq^2N=+l%Z?0^O9#PnC_P}l2+n*l>58>Mw0TkT|ow)I2n2CS}Q z-LxgMmaKi{IwIeS$r!w;vVmr%l@%QjEei>+N%-M;JD69z782IdZB7*dJfgQjXoTo-(O(!1e>NqX3ysZH36qfITOP@!lc{l1 zA}7L=CB)E_Rka~iX0c#aZfKHYv6FeBW_d{77sL9(eD8;E#VMwu{G}VHu_U2o^2j%M zrO8~tm0l!&0-ky2QbZU@mJzng1FW5+AywS;LI}B#BW`*-AU@#BY$dWxJv-a8v&-vs zWSRXsd7M4K40IIWcudsm+t`}rYqvlgm?l%YGrzUrP) zFP42M8`ZP+M`mY-1ZYuJG$v5h1n8tWG{)J7`590NM#nVN_?b}m)phLZdsFjI@+sT2 zzq{u-YGX4N0^i&6JoOb%1IWD_yckzJ&Sdj0H72Ch#kjM4qg%12RSVTc9 z{{9*s|7wrwQMEkE;TwEe5_SvE0>jt*odp5}SB4%Bo!rc$zT&m&Lxed9(mq`_q6J2I z;XWNMfk3~i<^2qIgJ0%$BZ+X=2nB@$8MUHm{C> zao)J7$bm+`7Ju7N%5!L+`D$XB(%hC}UsSL}RvQ>C{BQ`)m;wLt)lD|2D$EqYl+^?D_`(nUT)nm!KOAQ8&(U61PjgRO=lz&J@D4=`wNF6|o%Ovg{QASl_(T>N zyHAZgbXee2*I-~2h}>6e3N5F%I+^2*!leG*b0nOHP3^+lKV>5&!iP||QMPr$Fc_Mm zlkznDoORof=iF<(D|6^rqHWRX@Lb&8D(%d7Xn5zsXjD3$DzfKSlU=l5AEcF|$Zhl2 z{E*!~N*3pF@is~x+1jB=;HH*2@yNGw*HP}g@3We&K;Hhr&{p{|^|a3B;6jDg zmO7Nv<%Bg7&+8_W0Fmd&Sf<>S%!D|Of> zd1}!x{2QoPo}%h}y|cCb>jMEV zfc|H?Nons^*n&8(2BA^Q?3Wo8bZ7Fi;?BkPq|kCe&6%mn#V9GavbH`eaWYydawB_% z>7}??!`wS1E;_3O*!TwR>-8zN4!@xnChi)Pbg^&erlPt-+zj)&rlx#+XgsP+M=jWncTT^? zU;$!)?Zj5Rn?#SDxtA!qv3^3WjfifATfzLho}JxysG`)5R`s(sW!y#VlZt;wBscGJw=4h1|n7k@n(DV?RJE|jLCDoeUD1=!^81=@pNxOrl> zpUffeo**=_+I)1z{B#@q8_}Q4b~H$d#xv0X+MEsMa`EvzQnMe`3;*W{0=-S$PcgV( zzYNiOjesy6O7{4?`uXiJj;#D!d-zVbXxxoZaXC-yKMI`Qai_UM>4+unf6F{5q6zQb zLa((ruDWJGgXE_-+PV_=-_eA1#>CpW;OAyb@L_8V(bopEjLO+aftjpDn`MNJ!WAS)`t~RJ;ycv9wf^jTpK{;e#n3Tv>m>vA@mD3&>SLVCd$sl4)zf}gl)HM{ zj{82E`sfItHPGRDS8jFjSiz|YY{1DLob3Qc;|XbcpZdBsv&^n@uU>XOBdNX^?gule zSOCuLg`;D=j-L6F^}&r7>&Mq(HHF1Bexet(UixAO_IIO1q}sn zFMe`k61<5`fvwAWKDM&OsNRp?tiD!ZGFM>>CFF@{{RiK%H4=rRq9$n1d9fZ>LrOR* zi^gR=*1_~}?O|k|J)f<^q}5Jg2s2}xk8Ch+hRg(OS z&|yS?PGXJ0FY*Xq?a`rY*VgUG30|Q0JpIIqKn#V-r@&Ww&pihIll{r%2X* zsgp@)cVNyOTq8-079%Dg<+_D7R1+YAEc))X^{^+3V*#VmV}{rTvZWMp*&q5qZgtzo znzzJJEm~}qjA5v1BViTh{I^ntqv!HKFhbG#_D^2kWpw}~-W-cZ(j z4hd%@a(<6}_rY7$_GWhE<=%VDj)1EC9l?m#KFZ7(8@i7MBr(LPG$at-a^RQdLf4w(r@{-K4*)pH8!Eyx96|THU!jW=EwIcid0ytiJ`+jbYg) z_wE+z@NI1w_mV7rX&dUU8-4SByf;qys4y_7&5!^I3#Fuc#j|1~2oWXvq7eAH!+WAa zaqU)Pd*0kS{z-{tI<0x!9fx6+c=EgS8BL92*{vC>@iO8(xHPZ&;6G^@|hfB+Fa{}lUK zUH?**eT0$BZb^@GcIx;^tIF)|!p=tjem^91C9dcB;KdQvoD^%v4s(eL&0quIYnijM zA5QSeEuXj4k8|D8PjGDfsecrUdB53yB7LlkKOt>oa?X#s*7feaZ%n{G;8{^2+IdgD zD&q>DU?^+nqk&||ff4$|HU8~0L?URG%)C$H>(u>l->@ z?Q4_Y&f`tFJd3q7bREm<*#Py}Ep-o?AzNeJIcb9~mxfnvS8x4l$pMsK=58xdoF#i( zOp)b1m<0w0=7bUhc5Vs99@SgT?RLDU{$oAO;eI`D19bKlv{mj~>?kQ*8nmG)P22p` zjKSJLRAOk1c$9F5{Ywl2|L%Q)d8Bapb05=o?!M4h^7}6@9wAUs#JpKqiir3bVVfK^ zICf)T~MahY>qYwY3AtviF6`Fv%;xGhX31#kqvpHd8c4%jow z1cMgnBx^rq(703AY6x{*+zs@zw~3X`-FC$kC-nx|sQD&)90y%eF}Ek5gt%umo*ywj z4dUCct>inI^*cVQ{>FFWjk1n)RW7D5+fiSi!yZ1lyKqHv653}OH_KYSHq#5FQml?z zD_ud>xevE{GAQ>J05LXoU^9=L{py4H%J43J>KQfESoyO4YV*bI+-oTNd6tPm8T4v4 z{CXGvNtN%>x@$r;7x}6k^`+~+XHab(*vT1L*ZG&S_6qB6oB3I)U(L<40AnUEYo7eDhOYJZ3JPlv5 zb+y6Cvj=zA(*_tD}*5YrgUMII+oMW6oOq}`MJAe&hNECJXsB|6s`QiFkl&mysm;LJ*mg=tk zFVYJ8`eF%Fz~!MCC-?kj;5Da&ICw{MxIHg>8fLjDp`5`*sRFNWMpg$D@MGTaJ6`L0 zR(i z8BQPfnJ3>yVzIx?P?jPbYa%e?*>=>VE(DYvO!Rk8d*0NDJs^E>O@U?R|;iKdQG#3UZ9a5I?dOw_c zt2rr_W-F9xYpmn!GPa^ju~G22*g_;F%{I@GW2}TS7!YZa`9Z=NZ0CwUge+gs(hN2W zw)s`pwFDcqNLR44gzd=vB^{&RJ;bI!)l#0~&kswNdZkLpjh>PYHha+;KXV+=-;)LV zyrzT)LCS+1i~vpzjt%;%GLy=W*#HPP*eOW2;fY9r<|Bs%234;Vc}{`%DBNbOw4nkZ z{h1Byp06p0K@Cj!`xAYMz zo$zjgHDn(|*yq7u&An)SDKJ>$s9qZc=4zTS0dF*TuqH6sn-dJyw4NT*g29>==iOLR zdOqTwE{*w{tro{=nKeBatdW}WEocG*m)%KUUHOqmDSX(=g6xirpP?n}5*wmTPh$kI zM1)lX1j?r5a^7OU&1%VET^{K_1W05o-|=#)G8-@iNhuykFl*g1rI;T67Xn!Iff3 zQOMaD`1#WB)^XVp8)1BL5SI6INy4!tRLn}-3Ikp4>cu0Y)1FcTL+&Z*a|fVn!+3g{ z^F?EHD*kI#B5glN5%|xe$Yx9lH=05WoamW|8@p1&27$Zm@0DbfSz`E@>A#%heolsb z(xhjBSR2vf5n~S-v5H$`zoNEklPw{BRT`m4`Z-D#qB~2+4yeV_gSmf{huv0S?!Tv8 zPC4eVj`_`DI)=lg7BYnt@tpQ|blzFD`Ks@f>edg|crEOkBVV1)I2CAH>lRy$B7$99 zjsg?w__w*^m0ye(JeK3|M4aRAeTs>_D;(Mc~rhTsmt}fTm=~Glurqd{U8@l2YKF+icuQfrD^K^ zLFwbe;h6B3bQ-EXpGZbD3Y)>IIkKfo@q!cUqXuNQzArZkot1%`gid$nO#pxwI%p*L zfKHq7Gxp$VhbTm<1=+FzcO8m;6BX8yBq7fvfAYP89Xu<4kl=OG8RvTWdO@tL|-Tx`p^8CA4yZ-)9v33ITY?1EabA!n4R6h!ro?k=Z z@nZQ!=)G~B&=#kCKX=RF)dIDqM`9hdq(xqqd(MmjVR(~2R`!jY@${g@N;%_6ybAZK zO)jk1#2Z8}U$=N?jD{SupFuV;z}UVuWPTAGc4dI>2TU-wUkv#a4F)Plc2Y@~>1(q> zzBcmR;il+rGe?mnUg~;<%5lzk=W&@Bp1-{3#;x0zWv{+@%n0L>_aXXD@3OG4i>C&g zs&$my@&477cr4ag`LPLn8SRSK?^g477U^G}84a=~I{StiX;eM?>@><+r=yF(=@PD# z6V47Fl=T;o*w5B_0wtQ;8d*?L_sY5@8)xXg#sOcg{*~6JTc#l zPCQG+)b96|5boWeb0w)-!-T|p3dBIN&d0v;BHqPAQ)9!eB3lY;WG7a}_4mKi_IbkR zyPeB7X?xY*Y5U6C|B<%01TuWMNA$g4brrol!Ivt~8lw#^lpT8%R3P;8>FolR{ucp7 zcUO&H_!T=rF{@S`wK(<aymI3Q?pakBM5PrV4W$A@GL&&`961;<4J8 z*g2S0#bc9MggN^F_5-cePkOE#-1mk@9EE04^d>w#q}V&fJb!Ax)QRra_uA(^M>*dV27V}9*l3b955GY!8*4AJ*nDsK9^ zx~~{lD};UMQgPn~r^~CDJO)+QceOH$CsZi$$XS@zES_zX#<@r>CpqSrOU02v49%D0 z94*acq_m>tiI?9?GMg$KX~yu!ExjdLGnUMZkE0t|4!!*Gl=w*px*UFEuCBv-Zii2p z4zHGq9&GE}qh8iwn|vsH5av{qdtmpe+wRR5yGkFnWy#k$50Kb$KSBuV>7EjX>ZM$* zdw`9wFyl`(GR!oR>(kK?frs=#z*ASog4}5Ro}BEkX!Y8hFIFmArI{ZdC@c>r$mTvG zQZ;#y)A&Wr;6pB3$8cQo%z#gCMEA_P{empNO3B6Z3T-b**|P~AgDR8g^Ka1am?F)& zV)3g4gi|S6_hscCkBxjsb_rYX-{>I>tDDK^Oqi{%c%W}Jm!e@c*T$ETfdcsX?8nMt znd%^@n=uf^Gnbk@)k;uTW+05_aWz#&BfHa_$gei9smi4u8_pAJEc0IT1@%g72!?9# z<*GSVV-B))=Z|mb4hakPpw9Zuhobxmo%EkNPa-tbX4KT&%p|8@98S?@OrhsiBtN8Q z=!AddjI;}<;7@9I;Js1Rlw{M^yEu-}xxLQ>g{m^Wlr+lcg)1Roi7Q#wWwg0jpqswR z)fl{3YG6u?-V>WZ#*Q{clo9^0cIHl=WX|~M8R0!5!YZ5o@a+c*op(~u(;>;6I1JrX z8I70B8d}{MH~aN?1rqS2q0^Vun1_t zXeRkg3txd4>4PVyss2ekp@2Ga#7%+*_W`lQ8ynH5-C z=I%df8LWS&WxW2TWq5DWGBPeVF-vgkD)oEo`T(|d_3}L!fo)x<|88C1{x7$#iGQ}P zYv9&3{6Dv@%)hs;Eby%>4{Yly1KYap{A=s#^zW@J6@2T;0&ZP{U|UyrSX$CdY16MJ`YMl*i!Bh-upo*d2 zOnfurP6(}YHW0x8Q!#9VDu(4LWKRnrP{r^KR53sWZ&VBkpo+m$_(sKG2~#mF|4}h4 zf+_|Tn2I3;R52(zfGUPlEKtQz3s*5X!Bh;Bpo&2SreZJ$RSZftpo(Fi98@uA!&D5z za1}#V1E3KTeRSZ!u6$2@#V(23RRSZhhH!223n2N#kw~9dsR539ARxu1t{9DBk z23IivNtXYwRSYzLR17Zv4HbhIT*Uwwvj1;UF|hq#s2Bhh;s0M%44{kQe}{@;nCV8v zFcEX3VgO54_(fwkDh8lsFZM>o5UzEjVvy7MqhgSY`41IC;~y2nGf>5_j_9gVGk4Q&Vkx= z<{8xh6}3%y%4W?K?U>{+XEb_}s@6(=i2Ss&ssI^k@vs%IFW-w@2g*h*OMkWT4pjl_ zP_EJO-5~)QRF%i)=>Wo&Bn{b$yj?O{rtj`@;8<>VI24hynE zHHlfvF`#pWz&PJsKQik^x}s-#c;C6RJZ6J;oidRiyUQ)ZHL3^AK)KGlz|8^MoW0}N zC-$>5hmh-Pi&=q0)7>bvoNO+xJ34nmBL(#q9~Dd6J^m(0;eF%~DW`7fuEuVo3`PBd zeK7{9jHSDeo}(Oc93K9-6n_fh+DVs#Xh&OquM4)tKf-QAx+Z2zco80YFW)KJ#g@wd zZ9#va3Vy##{C7oamfY#v1dIFV@@RecZ{61!ME#h5wm#&eo;w1u?52~(%|9`{HQ%y? zTx~V6Xr{?T3;EGaN5sbVriFvJZ0dCkQ-)c|A#z#b=Abx0loISLKaJ*kWfM|pd5*NT zb#S5i%*E@X0CKyBjtc>`oUezD0Rb3e&Jw;Yno-3V*UN*{r*?Z#aX-p@x2uKSO%J{p^MBEFc)=Y!fFe@ddDG^g%Cd9m{AlD{M2ZOD_})sZgSz)u8| z8c@brC%4{c#Yh*kw_Ckt&Lz+oTb zRd*RGO}4ouGTEUb5H}LnS3vCY4V#v3$0cD(jZY@x=Qb+Oz6 zI@SBuLq&P5b!F@%&hQ2)e^w{z^U_&ZwyH6-CSbOO53dMBoNTCDTUppsXQ{gl_*l8> zlA~?syr0hI`@HJ+;r1?kA*nYRMpUD@1@0p=h05f(8ZM39$BL*ozRra!B&~2dKRh-z zw(!u07b+;mp0OpqvXswswgRA!Y|T%%Y>pf$2g=F-(aDiWmSx+XexoF5+pkggBTUwH z{q1a)B}v-i6m=bKR;37SK|9GbQ@Z7^790i8ALzx|R7_9F>SDO%(7AYV$A}8riXswE zLe#xj<6%g(EP=Rxj}avv)rbp?=-ByVO@Hk*PDgQ+O~tOsBXy6^U7xsZT6H;FfWNJZQy5& z8DnUBWBIs1)rQU{XGB<6{c@yHiG6hw7=>@IyQC7YEhnBM0|zgAGhtEve>8sHiQ}&z zy#e%00Q0tU!BJl*c!Bh>N^mSX%m28w??0t|^8aJjz8Iiz!|hJT>{r!i6p~H`>v64- z&-Hmkan~hDnsY};dEc_UcFpCqsmlwC&AOjIqB>w}ZY`kifBF|Mrx43CZ>oA+MWv|< zXAesL0Ze}1TUtehyoL_$=9?GUT$3k?{iK`S!n1OAnbE5c)r96!bcE)B^Mwh7Ss-Ns z;k4C(u{KGKl($YxigO{!h!Qt7;b}Q}s8?3z{Du(ny=lI;V>2w3JNa1QCdCZccWM$V zz(Vk=U>Y?7l2#=JRYDe?C(5QnNJa$o)cfB*+4*zfbVza8J|nF9uKYOp(JhoG9e3_Z z-n(BzVs}v7F2R6=@5@5S1H5H&qIpUUi9$uG@Y(4@ZGB&NYdiGN=PN}M*C*9nN@GLD z$Fy45iwH{ca*%2VCWEa1A)8xBWQesSC-A}WYh4PCqNNt64$5YTP-`fxD#X7JIRj)7GY zanmLBlp!e)Y(b_FC{DQ4g;=4{(~GZOAd)<>XL`rQ8!V6#5>K(BV`7tJ{~`P?tj$ry z85Ax<%2*jMiSRyLjq;RqvZb7)?U9t5(NAO3yH`F&qzlHaE#;kP^hyYT8rRuPfxB#G zdih1QL7IBoXrB1urEy@w4#R!K9=`YCAu~2~q~9lB&$=M}oTrH54{)hW-_f33RqUvv2;Z*>N z(VjC|XbbS=&}MgEt9`!kU+ul=zwJHH8-f)AdPB&5zuV(S!?ywL{Np?orFU0?qdI@) zjYJXczU3+$3!z}iLQE6+e%*Bk6T*9jrpYDlRPxEpNzl1{7Pfiy-ETGgnN7&!{w|=D zTYWHHcq7q1Ey`l2qfOjB$tU^rZ1;=s>B+=HyR(x z>fl80ynZ@6mRX5WGF@0>s%A&sQ)dfwxLscqqKN!nWEbiUe9gp3_=v2r$X4`}1Md>L?U zAUAleop?1ma8MtYd0oo=N^TIAoh+gV2P!v)2e6kO@fZ*noMxR$u1^~E|1!@TQ39nZ zT_dm@q?i5l;kr`G`Y70(N2rCYs!=D`Z9d;7Y3K@Z_2iddIJ;#0EV8-x+e>_V+E+u* zwza<)ya0styDgCKk!UUOrqHu2I?IWrpgqY#EV9WHW*+n8`)wX;==l%xnEB<-O9}i< z2R%{IP}HUDJCwvu;wCnl&#}VOpBQm5DH0>M?mQzUKYMDdw?7wWVvM@?yD6EZD5D?r z%97Sd?fEAXuVr)di1r0UfPE;w%s<=aqN=-x&`W5=d^5GXLMwQ?Zi?lzhMrx>ZW1fZ zIJS7Ko|!rS{vGqJQ{N`YbNO-TNeTf4u?3?7<&M;wH{k~NI({@BOUmn>c)flTHiN?X zq`!-r;ZBmwiH49(_Bn$z)dye4rVxp3%Q2?8(zmxrYl87UeTJ~n0yW2x!BL=5X&wum z8l#p2PkCu3YRB<(lm=1vY7>>3w0;A3?$VvY=j-`{K(vgRonX>2w09nTB(1j#!;Z>| zFrd2RXDJ3Zv*M(Bws?p4L&pGKK;vZF^utX_!{7D$6Df{vQ0+V6-GCIk@=L}Z^+su0 zb03ocSj&4#@BRVMiodB^#v0u`F!d?b!8Kvo+@aB*{{1%I&8DSJfd$rnn-^-i5op*G zH@UQTMRJfGVbjS&>&e#!vMc5!J8{?R4c@>S_yEOVa0t8Q&HS!z;2*=%byYT&8mdLZ zV6|sqtsldid11MSFGG-~`zKTo}HreX5+9!}+lmqdAggP_vFV^8c~4xA@DK z#s3>?@89>o^8c*0Hx^JYQ2(r6q@bf3t)3^T^CGY;|HwwBXM9h)gr3J7!>TK8C}!BI zLzc&Md7}7V4Sl`7-wpi_;lA{}|7z%CsmM1H-!$~6HE-H8xp}`E`oG&Veh6)oe@GA?*R#jkWC z#o;&BE}IG#Uvq*W?BD$oR2d#JO~Y!2-LNdpsGIX4U*Ku_kzNnhAU>2IJh;BeagGO# zdd*7$-5HgD>=`A)hbalcSBhW3b8FgD=u7@`71{Jf&`YfyBc%cR1mAn#3zmhIU~OSx zNa0V=ECi07E1p5BIMUc0z;kP=a_Cz2$CoL|g7VO;b6s*G5;_#|{4`dHx%84bD3RXF zcpIetg*qmAxvH1L%xq)rZ+bSe1R;?PbPT`_3Hs7l>4A9D^EV{n4e_x@C2r4E&9r^R ztnpiA-iBRh^lE7X0$ggT>)ENJR zlF;r7`tBt}Oj=^{Q~)s^=>)6lm9zT-+4)A?-00uUHpn0ZEC}S=y4USrokz!O}~X zp+3aT6^HLGqU>==$JKIqQriXOai=m{Egr+)+vFGnI^i4A!PIJ+sDF+ekUvKbIoOe7 z7=oh*Zb)??ta|iZ2n7%$J+KW5n#lD)_z631W@7&(!V|<(_vGWap(roc^KbVIaE1NH z#h%>ycKPO(DY_{t>1sLF_m=&YS3@4es}G|rj67-fSWJJ?TjcWltgAVm3?>aczy`eb z5A*m+3sfqvxftf{1vh+8W6m#q8Ny9Xfded0&ES~zzwBiJdd*rhlK6C?p! z?(wSglb}$HUe;B%cA@Ec#FUb|Y`r4m2%wbIMalKvvp(pPou`Zkz0MVnPq#cl8QKHYsosz)K(bD^u-D# zA#i)a)|F`UZa$ECnOM;7Y_2FbDDf>+AvHU*(nU#^-?d;5?6ZuAXZ2a- z*|-YYU*5e1G*-W^8c=*CimczRYbM>0O2|%ISiFBvDVk*Wrp{6rEC>YZ_iBHyHtNfP z;Au=C=U9we`#y=7{@^xKi|v~+eD!eidzfO!=vmx{yJWzJI(*mhUIj5*gSCg9?j8eg zE@+SDx*hP`J-$`E7V*A{H!qNg7VBbBHd7J?e+bH|jWx@}4j~i0$Lba)+bN@&9S=4O ze+9Gty6_)&UgB5D7|())V$*YB+(o;E#79A$Otw@4VG0LZMSFn|1RStc6b$JPr@t`H zlkRx*1LvVy7U7#PyUqeNnGYVzsoW1}W0;7)#$=Ciq-*xRNDl~wXik0jk~{E=CzV;} zOZU>NbBBGhhhYDrK$z9;)+i&mr-<$d)}|LrH3i9S@z)%Q|d||q|}}FXX|;@CFOmd z1O~+?HH0=X%*wZ`$3vlFqTF2v(KQvSfM@t5gSp+_6s6b(basMQNnujoZ>K*v+A%!K zO$f<@x97rqo9$TXC56wkyCXjDt`?rNdiWX5QuSc08LV~bH=~%N*bZ(gZT>Pt$Z z9@n^<_$G#klgCH5RqHF1sFmpWa|5-}IUs>{?%9EeaWW zc4Ul_JQB7D+NZ~>SFjZOwhpcPZMVHvs3P;4nhHF#NQyR-UWx*hlNTj{XH%BQmEibwxtK}nRC$xlY)|HS z+Dr`%^!%LtZs%ydtHqUlIQXaj#pxMj?yPG{Ku@%{?id^Z1_^=c!zVGz%$2U2D^dGn zYbL(n5YR)6lcPklEF$&`nCIw!+UK^X8ks?ab+FOaFV;6;4M;QAn&{BtAoQv?z%hG%73oEX7yi%AF4Cg)8M6y;3t zn5w($WXVxKj4{f|Nzn6MbaO}G*MuP1LH?h*`V9V>Z%9!WO!X;a(yX5NpH86%xqV>9 z6^#}__}VVfx-5OmCI>t5)-q_hSTi$=WaC%udmn6%<>WH%j%q?q1OcLOo6Kh! zg67jp-uaergm`U}JOWJ@OSRUd|5%6bN}xj0-qFzjC@DXg@A~oXSO*&@xLrNWjZ?dt z_xGjM-k#(>N=3?DP2s^xwTzMo`bj%|--K`MRm?mUnN&YT_RliQH&f=6el%7VI`CxR zs?(S!;ml;mtvh=26HmZvILbm?i3yP(wm%rw!sIsF=|{=k`5pz{z%e#3;E9V%_B>qr z{v7bKz9=>{5`O(g_yf`VU@(y1V35pznQzo<*!&iF^+rZjw-#M&-oQilCI>^K0RlBA z&ShK$&j&7XvIS9;0m|&sa>_(8!cx0t$JpKq+Fr7(I-q4lgpHF=EeoGhGQ-o_*f>|p z(J1WM?muGUr~H}{q>$P8>CdSKT&)xbYfVx6iIV( zHHg!z?t}$ta7*3VP;7>s@LkWs!TZpNM?a7#MNXc*l1Ao5oSW%Au&E%qEkeAW0_+B! z)kfwOkw4wzV^Mo9`F?7&is!}s7!5+AX0Lwa;tl2ytosL)|JN}O7&?hAby6;AW!He`WO^@e(t+wJzHHC{Hotz_Sn`MDvgZcyJEX<8ydSu znFP8e9U4HlWP|^97zT>ZaV$CtU`o-Lvh%U=vq=||=-XK0QiV@C5luDnrOyfcU8Xs- zyGU-i8ah&{Gwmj{wcx3LdTl{P(yBQAD8=(RAyEdpqt_j}nU2^A%zNX{81&=^pCE9` zR_ZbYMW#m?Kasx`E^qo2w>ZC*UgA9l4!Rl(p04PQ#`7%vhI1N`Y0LQnL8{qJS14lO;IJV%x;SC24u^Zs%{0IjQaX4^< z!+_(4H{Qc}Ll(vxqE#FTaNtk`f#dbdlpqi|pl2}PFhvG|TA==~Z$ubN3o|^AyJ{xyhtYwC={o?9P^<2pV1aM*fZ#7WCJ;pdh?$ zjIFMgKaTSoMj-KT_8{S6`|qHK@IUPF-$akt7f(0f*irfqcHAZ3hFxS*{wHs#4$oW0 zfqBbWw}0}MtpCniPX5hXj==Jk%n&~jdJ^)bzmCd*|8!Im-#999xc)dQ`$0$Lu@7Xl ziS903Qpttz+fk_wcT~#39F<`(N9EkV9F@cWc2o+&9hI7(qjL2v=&0NP9hDj|N2Rh; zMNm_@9a`vixE#OF^`RWUDMeH2Fvtr)pdX1l4af@vn>V}=-aSC#2IGY%ATMCCQCJm8 zfV}Y3mK%Waf(OV81uGygOn|%)2;+s38(xTV0eNBmh8M75ya3k6;JiQz@&eTY$P4#j zyxK|Sh`-c}I+kf-I+uyuk^_v$QVZ87I#tZo{UO0jC zLOaL{Q9^KD=!fxwA)FWPj{KV!#NoU!BM*6l4SEQW{}4maZ(?ZtO$@d$Vz@Mtx&emR z%o|`}RRw{e6b=mPMQ~u~f&;_&Utsw3AHXoe`WqMoVZadge+GukbvQ84{|gxM-m_g@ zva>HsgBLWy#Y6*N#D5s}-;Jxb+jVnfrL8)NsX2jr?lNgA^lN<2r{RlmA~)Y0(kj>@ zyu-U(HZ`(-fZ63t-0{;Ob^g<=wUCI34CrK~U{&6-(P_oFU1X9RNqye&<<~O@*V>Vu zww_#1pjPUryLDJtdYDQ#wqYV%U}$mIkNZk3l5 zQYzv^C7Eo!pyuc{5Ykh}Sk!iZndrJQ0endakz3O^xvWsKwoa@q>tfG2w>{o$suIwZ zeSkU=iepeUlvIX8o!E1ZGh%CoXGxIab;J+yJZG^BWEy~O`+ndS4DYOYzOJX5f5JI$Vk9!031X( zOR4#$vl}vpYow`_LWU~Hk5`+l4;T9_7HJZ-U7fF?Y^*}n!!D10J*+QR^5r~QbDw3C zzZH5eRuy{1TDxg3K>jodMC0=BRDg$;eca@3R@>3gUFl2<>G8xh^R0!AeeYv?KgXrs z9`@O(lC_MEpP}Zn^FQRUdF#GnlE%DnbKhaaq(1q3Vw91kd zmnN%&bBfV6cN5ZP14n{8J3RyKifKm$*WXV!k`!BAS{ICl`msLmKC4jLoc48rl!Lz; zX(iD$eX&&D$qwm#{c(WbU~3?&$BQfBaxgTo@n;v~V6_~pXZ-ZuY18flpeC(!amK3r zU|vu7>})=NFw!}+1g9-#F@N^3sjE-y+;E^fS}1jP%kpgWT~xK-9w*OS(Eg$kkB^g# z+98!IdDr31nd0l0T5a6mP zV={94y4hB!)nLs=$d6^l?c$}KP~El4_sy}RdY7~10rs*g%=0T9NVQzKe7K9ZW^FHU zz`=cVSvtwi>GM^Lj%4L3@L(3QwteVy=)IujHtM)B=90CJ`^Xjrh`>DmbvfneIdzo= z?OAuqeeZC*=9h|9T!c;V^y*h>k8NPIt7B>csR1zF6(L3qC21X%Vh-BP=@aef~J(qOyTed6UW=}M5DR+uwA3ILIlu?MRMxJvrQvJT* z`Y2AXfz_&hTq$bu@XT3X?sbt&jj&-U~S$7yRSt&hd9 z8NRQ_lMhryy6VeA{tw>XGA`=sB$vT@~@C zc%|R_m|XqX-nhn|wq!=-)l}vygABHjN98xEs{_L3i#2FxzO9HGT~Q9BPf#sf?d;GA z&Y$h9X8LRs%AJ=AUR2l{UpZf_!rqmg_}G^h*p->a7+>j|eq3VVUB7cK#j?Ivu$a}G zS(??WGV!ukpl7V$l(_?@%>rUY`%w!EU;%ML30m%66ZlpyUH$Zc;dJ%JhpHt}6}XYR@R=g&{Xr&fXnfCHNbXG@%lRscbW8$DfWUO##C-Ih;m zQS1)Sm!pa&rP{&CbP ztpj@)U8DK%BR{D1j-{jKz|D!Bo~|YacZY}3_r|~UVAiVzKao-QF3a9d{x~omkl>a@ zyPbJnHOJkTaqJ9ZnP0~<(uuy_jR=@%WJ+LMH;)1gk9+vAv$$Qp;*1 zX#}1x4~nJff`*wU2l4RvPmZNfDvh+A=tnNF@duy`sHm%7B>YE5*sl|c9YmwT3rco4 z(NJ!-2%@M_e#b@;I_O5hux`ahL79L36HCmSX8IP&nl08!_G4_F^nh0=mAvINbWV`_ zI4+A1B47{LKupkf%{ajAewtH=IHrSDgy9W75os=f$Dogt$5I!_CV|z#qfQPi`k@IH z>hl`49}9is1!5unSFL!0ry-=pVz(vlgnVsH1xTds9I% zQP|*9D~gx)rtx~GtTlr^klglyoRUz&eKO$v?%%3I`kP7E4>l095?Y!yy0O}UEw6VB zL*0NlO@&H&D{Nth#ijfKO8yAu9}dGgEadaWCSmrT!C9KIm5n_uZRgm%-Su@`MT{HukFNRfeeijpuYCUcq;PACMxo>eR^U%L- zbiFG3SRF$;R(Mh_9{T2O%=>2z3!hwe0-FK7W>k3Q>*6O@T0(VCr4yy=frt0$Fu2{M zzVnCR2EBJ#;24^WFW7tU+{VAdh9B4saNs6901g~6oCEhY{j2_*c*H zGI~W{F^pQix7symjHluu@$%DU<}gsG;2V*3Ykr`V`8Dq zu3)|oVB>k~#1@b9+`0h-gA8?d?QKLM`!?x1-$L*ZnqSw*|#^36TGOL^9)~l#kEXROn&6FDVYB@s;#&EZv0WndZf=AN4A;Ry|s0A zHQ4s2!|LP2)*PP@mRG&pW(1G$D4avq!XrLb7sS{A5VEuQA!5jJbM=5$Z}woutNfH^ zl4(o}cfsS&HcwJZ$9Ia2KIV)NB#X*M^FdO5HvyE#Y$>Be*Njvq)v~U{&At6~E~@_h zLNd8RLF%&?%W^Xa>_~;(yIJvDNpHDjpg3P%qDVMZ@3p5$iYSKJt5nLoR(k32tm>t~ z!B#NqA&Ms22znBB96sQ?yT8yEx(Do3of=uYp>BQ8&@5iRB@y~^@GKuDR9IXML+v6RG&N|nPeeEK+7 zr4y45or|}JvV!QV3@pqTXW)4dS3CfK!D=7P97KC?=0h%&wKhIlc`q{xXQEM4NoGWY zg3DR!TY87YM~@FVvs8FN6^~;%g#*6svC%;-q7EqNVCzcS!oC47A-23TMCBfbXj!Fv z#kN9wkP*YSE=c+hkpeE&Rd8CMh&Awc>a-9X7B1CUoV3XC19Bnjyy1s?Hn`z678B}A zrI$p-nqO@n-4aHlNGh3y-5bHTj zPAs*Rg4et)%xbST@@FR*m2cmdN~2pYlAt{vC)5scZ6Ae%u!%F}eSL73L7=q3Hh}~E zvO@idLTurB{wIY*rZDX-`PYn6VP+#kSBwT{% zDTbBurqvtFs@$Lt^x9$3o+}QdC}{TqHj5MmFFi`mi_TW0i6-kEh$bB)BC`B062r4v?Z?g;_v(X> zF70nW5P71?5@GeT|1p~pyx^p6Bj$kMgLh=fum`Tt9UiDTLtPZvrV}TNSOGGPyU!+i zQAw}?Pvc@>+atTLwioVxvoSx)j7%1M8*}j`zVq~PDeKdjEuUBR%{+n-?3?VqQPWL5 z;rixNrP=#asx6y^5&}lC)SQx0lj#{0DNmKQ1_mXIR`L#IfQRLy z*9H06{1c@9m#x{9HD|=nN`KgQnk5pFTxY$P)}YfTjE?J`rfk4EVV}bYu_7T2{FH^m<-botIKNfJ*UW1;x}28F+(wD=$6Dpkvw5EEMI_ z7hc7wA5{;*+Ib(oKmXd+k;_uN9OuK3y05v;k*H_Mjq%zjIw=RtnjW$^xI=rKT6377 zcgckT^ENPZD1Ib*FI?eZx~oewirAerc5#DEw`jcBl__i!w9i(wDCI&Ev1n#md{&rR z`&Cn_`yS^*ISBY9-+3?Ni6?XMBh0%|;RoSU{F?JQ_KcwKYTtwl72Ky;xj1$W4dgj3 zh)gBB47j3SLcgA8bCX{P{Q2ZGO$htkOx{8!!_opq7SKJC8kR z*-@vsGZ?;%vprqTXuT@$ zvMfeybV_zjxFAX$;+-<9!HlxeVLF+_&9c(A=uxW51CEKf z{YFZ@@IF^$c9m@Aeio~ULZUmckAI41|3oTLMWo!sAO9T9EYW2T1en4Zy7v`O01!%$ ziJ5LUQz#<^GpQ{jLxT@WMb;)!;EA-is^M)kg}gyvA%~(d5wG&l?e^3p01LSblI;)F zwZj+k&%YP)qTdU-B@*p_fLzF_kZ6AzB-)=GiS~~{F68pag&c-l$OZo_q5COd=+^(s(0$`? zL$~4|LwCmi8$-9+e=u~1{bT4h`nRF`|61l=b+5;9otJcLB1WhAuJ;pB-N)W4%R;gh?154Z4MefHAVKZZ z?8oOBb-alcxi*a6vd1wByY;?f-*#EIkN%M#*Gk1{h}bhhuKC?ReaO!!pT6uUXZ71Zc7l)2BBmMeTHclC$PQ*t(8)otvKj~5I=xY1K zI43yGxTyCii4^&gQv1o{c&WR$8Xy|Y*v}$}Mnd{y{~C7_W+#t1pqaD2JHPf&7ULOsu zi^Nlp1R3$UF>P5zg%K^K4py}CX6GqwFq2UC*U<51`<8CdM5Ok#C4K5D((BIQsw|c) z-MFDR+Ytwi<|(H#$RgOfWjr7)G;gfDq&IoOtw1vF0iJ`ere8Q?XH5 zX_S8PbNyUTeaSCLK-FXXHlY!O1!PFJ9r_kwDb9Ku(PemRrQt1{J9IR9PfFF}qQN`w zmEVH}v+|;a)Ue(KQ?9At3H(kHc+(?oSV#&KAh!rp5|AJr#o`R_;dL5rkLaw`=O=O| z_7Mq;^pxK)06z~Sc%8-`Rtuu&@%jcLf)O*(=~k7~;#WwQfAAh10iO^B;1kl_hz!Q< zJ^((Ef`m^*&-??Qh^&FTiD8b|Ai6(R;@ic)02D>c>s|MJieJ6-Ljow=kN^q?B!Gg* z`e7p_xwTwyvh$dwoCy_$h85s_inWj@)Flxo4~~{qGgofYA!Sbr3L_&jlXXfarN-VPS?cl(pf~<;nnLni$;bP z(7TbMDmJYdEh}qIPi?oTnP;Y!r~{#&o_qnaG?kZ4*2d#fy?!j6?uk`!Ucz=cVB2ar z(2@sk0fjeLojZh$J77W#A(GmV!Nf#oMTk=bsUv&goXb^0GH1wcu^`(AGkNdur8&UPkltfQ@?8WE-In=p%Z;Q!1z4$g9%r63#bb zyVhjP#<2D{GuRV%pqZ_(p-g#Qz(+)ENy>?^H8a7E;RqJh!4yIed=K%_M++@4ANNIb zf!*$85=R?fh3$T0;wE$Yj5NCD0!G)nWasNskk0W5SYaoV(yyvS7)uvZ1VPnHKt5&& zxfOvce0h3=TR)2j%D{jcmAt&_efM+X4c5jVt6;tx*3Dm5LC&%~nYY~q%R|55JW*YL zwOn!6d{g{73ja*XKk{k4+W2voU`6Fi(~8PZO@pgL72~4IjltE@aw4d{`uq2SF4+^) zZdC@rcar=o{5$z1`AX;~)S{)lVK(wElmwj*$81hV690qC;u9}KdV|w(y!w`ROh(>^ z=tmxHbux5VryVn&eg9Q`*ccwuqi3c)JOb%^RlG|^C<(5&Npo( z)5;xt$KMNbkYnF*_OGZ8i*Qfpt5B_*=?Vr9GlPjO1tnvzRU3XJPL(fw(uzL3{SE!0 zmN<0gg^WwTU$DvpT49uHW_?5=<6_af8IzT8>$?N=h6%&`Vkjev#@5n)aTh8Vx6~H8 z`S4ei?}~UACfaHr-|%)c-lT)4Gr1+4J=!39tbJj(eBZEH0bO>uKwB0$P>#*P^OeyP z(PlRgu(XpXjWEE!HU=>k$vlgKLJdQgfI_>gMEYpp;j!<7pAb-jYGJf(3V)LJ@_hi$ zZXT1-#sRsvsSi#TK%?E1Q7zFg0?Q#cE0V{P(r=8(_c_Pq4 zGf&Eqn&SIRl6B7Jq{Bp^P`Qq>^b}_=v-&<=ZN~FrP1C5w4zw@b0+UkYMC39O~%o0c+fa zUVV>N(0;gWfDU&PebR78g{g%kM8DHvo8@DCDT zzQdTB=_(R-Z`~nHX)?Gz&E6210Dq%5$u4Yu(z;!tu4+CZf0$T8y*u)TdRN1F${$E| zP5Il~HB>|CG+S)#sW8JT&o%4d5t33Eo3JI?%d49&?9agJz$1MRj(g62gU}FIGjL$3 z0|l)Ajg25&>b0f-3qb&eXrq@hD$~u8Ty|bzR(e&o4+epwYFO%}#TbZJdZr{Yg+Nx9 zJ5t%C#DRkke&U4FGI)rWT~Fj=%+f4_M?|3#jQT)ER9k5fo)I-gW<+@r8Bx&i?~Lf( z-x<+OWJc5znGqF3WJKk&5E;<|WJWX|nGv-?W<-fM5DQA~pNOb6G9r3_jEGuIVhY1E zqOS0aDEXUs2#^sCLS#fIfsE(@G9x+!WJD*B8PTx6GNKlLGNKnM_xS(&8Bq<$@BuO- zy6{g%)Gc#_TQC{BoR@LbhotfG`jlLtvr{*mQdUo6Zu>rW^Q+O{W<67n?2&$);<9v*~UEY`SeY zn@%<(7;j*?+{pJ}_^$7rkZxl^8;T5vlflNC&P8sxA4T_asf>H)rC{`ivC74thq8sv ziadi{hFV0eLowbwbWvk7Gh)T87V4*DTxWE-yE=@t!!$3Qt3Nl5y_$DO-KmAhcUCX!zg08TzpUnl#f-`EDN$g^I+Z zjRff+Zw5A^rNF_82403-r7&g^wEh}OUIrg%X&6mJAo6IC>ds-U1WS~L-B9f4hzsT6 zrZk|(N8Su$#>xxYy&Xs>VpIInLP9*KmEQL z5}E&(ZU*T8?a}am>Sjns+zjZJ-}_%5ad8R#m!pCFKVJ?1M%KM9{B<$B`gJjk`XVm| zXXM537p7sqO#&PX^V)BdaL3qtD%tjc{}Tnu89U*)*q6;LfJ$ z6TDVhuJo8qqp3egj`vN7(&JlpBE32JcL-yE@<*-8Ld8;BLOZX{xVnnm+e3EODAv(0 zB!TkBi62w^ewLzNc(*^Rzxqt9Y@`dVm$9o4EGsL{F45=Cp&y19HTG< z1Iiy?B^)9ih}N0~MQnB$JE5gWFR$ZoFYn|ZFE27Yc!u=y;)x)_gZQ+F@L&Ye%liQ7 z<;^{?Jt_s#gNjHqZ`vO-Z#L4*tBwp079qX7T8O4m(Mo_bDl86T0YIZO0BE!T4*?qO z2SB4%GzieBYy3Z;(X&VJo>3+!PeM~5ny|S>GT&rYhZ&Fg+{1XB@L~fcRAmd*9jf@J za+c}N{Z^V8De-1pcML&14FOZj2QC5PX+}vj45bEz{qm z>A&@E711E<^!oY#ltb|6)k;KBI{lD``REnIDKQ$3&Ut4nHISQey*Pk_q^*gN6Jsd_Nlqm}l2buwm}Np_ zHgb1T)k2sPv#_VE*G=H$RQ{gCG}A;Ysn`^CW9Eb;8;GTpq^^b{d17opR0}{(jgfUX zhxF@ca6*$v!$AUOMxG54mLJ725<{Fe+f&smN^uPGQ4ETY^>en^OHPwmkF`|SAc-E3 zDMMY;dQIi}hr;!N3UG4j+7f`VbVl?Jdm?*>k>u2DBsq2L4>?u(H#wDH0$Dp;gdnFv zMRbtl)aF0r)RAAk!$@+f^$wDp>iLJ9iq(qj9ri)?4lg0dska6Ia;j?wKu+}m$f+u1 zh{vnvz~j|xBsul@5b${Q1^IYI{TDeEE%(2oQ-^=ep>~$_PxpNUGYDTI=TH-J4xJ~9HsbCgXD=_CGOL;BbcvbS1I9VGDyndL zr&mIe=u|w#xQ=2Ur&vv=Y!0UYj0*4x@N%`S&$Yy^a2&qhTukbiz2y+r<> zT^#C{=Y>9#?=O&wEo!CUoieJMFOZ1+!$O%|cT)CR4p0j@b&tF@3PNkHT&*+Cl2jAw z2}EwAOvSr^TFBY<)JGMi*arDO^^1@6bH1_LohGdxX^pNz+&v(}hPuY}nu_%g@74#( zajmI@%>cEK;PklGWZet*LLi{mq!Zr?mNd-7?%H#DI8_xgd8}50undaEKp?HtO zZ^!UFqM-TI(_M*gXm7A_wR7>O10BWB&u$kQX;?dDzo^)3p{C!P9-2S9j`+B*P{YQp zKrGOnpdZ`PDPi>vDPiJdu$0pYZ7|J)`J(SI=X*Mu zram0S((GAWE}$y1k<&^|c*(q+lg(#y*G>tS3g+`-(r7kXyz=uq~8#bm9b)EFwMo7tuV;eqKT~={oxH?T9<8(w$P=oQjm3!k8*J ze(EzG=}S&)C+IGKXHM>xdM)`K1Gn@@Aq@VX%K!HxALW< zDLXAb_M0bztUAb^Bzu(o4#dJe*fK3U!#B{;5SuPnDXp%;Sn&{#=Hy z7CJYnrviEeGO2v64F*%Dp7aQ$f< y>%yb$psPxepsln>yFE6@xLT%G1r^Z`EchL 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%0Dmug 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

    J;624@NOH2i&F>rHi0IHgo!t&dn)!;% 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

      gqppC;h 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 +G|gS_cEFn zi{JTTxW){m#qts$JQI^GV9cmJIdu%JZ{>FSZ8+zc?g8D2>)u;m`j%85_0Z3#C0{fc zw0W91q{sb3{AD5E+^N{b5|Gw^FQYHb&PZ_A?@dsLVG= z34;Jd>6sRzw~z$&&1ro{lZv0)5@T(n^P;A45O4X^_YaeslBg%QiUKE#)r+o%N7&}v zUsr&~(+E^MQ`lh$kNR?@%WM^6+Vfcu}CRL$68npeUpvQ9H$gZtu5+b)Se;1 z3VWUY{prv*qx_(xJrt7r08X!Wup)8GKXY^5i2&d7i#Qm!={3$xmX<}bSuZyGX6w)~ zyS+1ReDzLvvY?PZShV+SX$EKL%ul1auu{ViJj%d+ow=iP(}}fzmo#-X=|>7PAZ%?p z8Nm4yoj8A`yxerv3KH(R<`@3g7VBqN4;#AW-UqM0Iz%@eWGJ^Hg2OVxEe<$K-pyQP zoUhd3;s(UBk6~p%l2J>(L?035ZR;0Raj~PjGjD+%4PX~I(?RE6SluL`neY)chbC{7 zW%XxvuL&wVgR*dcFOeN-Bk&%ba0FzND-i7yCD!j-Es$B)5?4K9k1z%yAW-KYMA73a z+1|PWs)4tjZ9Z4qyM{Un;w8kpz(KOm*d5NiYo);>+uW@vh!OGT$qF5}a^I7cp%nAkM7Tcs#xNY9F;daz>j$O>&l-p*4gACfzy(ZjC zPARg*HM9Bdogua3ZfLF^um-^;SfFJvGc-ZV#JsA1m@|uQ`kK|FG2hN3i-PwkbhSn( z5MR!Iuc%_Njkb2=eozt}1W|YMII-c-0>|CA5Y|PSj7M%jZ4%Pc~=DgRF?giPcVOo``<>^csM_(L$ zhYdG>7G9gHSFeNE#3XG>BNHVJCd@pwf zHOJfvHtx-9`1X)#m;>(dU6X%8JG4gBj8fkGV&>u8RG2R2EDoHor8j-t2%^8|kPr0t}3Sp$v#dKvOZhx|F@Pv#ZgYx3YU?e_lk{MO6R?FMzL zSE_J636E0J*-9rF%gT&rc-p|N6IE~$d08ZMk@4)j`pmKjc__Osv&Rr75&#f?`*pgS zl`>MOMx1fz!S6SZSKKHP0#R}HdmPd5ab}Z$VNzH>SgP5=$S-&lJS$VY6cA4F(+<@{ z=sSzoLRxRbS8+A9v>iMtMo#J#+zA=Zyq{wrfAhBSK&{32)&17F$;O!n6ZtC-Z3tlg zU_IU!drsC?DAi^w-HQJEoH7o7Qyi?S$RN4Xw`!A|2HuKo9L~an?ros780~ym9I@yi zux(d}*kzJ|F7Ou6#$1d}R6@Ia^5fsbumPQ6Zu_ZFAm0aMx7-P>LgVeLxO%j>^-TL80 z5rB5B~r5&gRiHEA| zJ2;8WRyQ$j(?CbJceM=G>$bM~!D2ClhmAT}nJM5=G4s#6@T2jKGbz=8k5ekrhEi|J z%B&gD;!}2%`{5jow1(4eTBW0f>8HV8xZ*OZal|U<%K+Yg5+B`65lW?bR4x$Xilj;e?Zx%u%%w~! zpKhM7q<(<8WUfV|81~v*lhw*TVy8Q#%?r3>`)vNiXq12j>2`)Kmn7TszR|@aN#1se z)^T#fj$J_c>b0g4bf#{YHG^1?puW!e+P~ct$e~ex#(OV!cr%)#^%FM#S$>8H^$lxv zgh!d)T#?-&qr}-ai|;*j-C*6;GB;cehj!x(ufkGo&Z zx~fiI*0p7|YCAlrQr54j@GcO@Ze=dx`&ui1VNsU1t-V8%8$A}z=GD6 zo&$4(r%dh2JS`Tf9VgvxsD9q~csBEXbSN+=Ex53VGo}@S38@MY-slRvLd%B$d_%NH zgVFM%-st-(K`BIFst5@Kz8kqC;xW?-k!W}CMd*6Du$5SVW6EGe9`*e4Nj|{q)mGua)JUkz4b9Oq&Flte*EUzw40-@NnWS@tYa{ERubm;yOK) zx6h#a&+C&to6Vv`&hYw5B4{p*@!azh_BwiIp(%~UJ0Vd%{Dv{Xe&P9=d7Vr}`l)+G zncp^-vr$lkhtH{%kHsm*ob&X^NkKJ#DP8%mgCn{d0jtk&t>WRIv!&m2-q|=`+I$AO`vD5`V71jHN3rqoNZYd> zIkZCSMv$sfB?laod|te`!P|B|NSm`@+t6Q3s)P77kX_flAYTGC*&VSzII}y!&QE-7S@2J)MleFqla>D=HlpDPyL)fG-9 zP-J}5(AbM_BgJpnGjzCXREt+KuG;SBzAXa$F>YT|e3BD=DG!OTxLcWGe8 ztG_nez6O8F;AwDpv>ig@80P@w&7brd}vJ+XkOlC(wDzY=|>>d3c zNL2&uTdK4+h|dboc;~r;%33gs$odO4lT6Q<>Zun|o6D zb++M1SzzZB1m`quFr7hvpD=2BxY$(QnSZb43Wb#G^%H9g79I_wf7&tRaI*R1xVd=p z45WQKVSp|PM9*1|4mbaa;)EF6JKWTsr-&#A4f;(gJ@E5dmd`vVJjZNp{b`SkkLfL& ze+$1U^GJm}7j#Ic`pvJ^HiI%g9xWKwnuF#|V(^7-Wy%8k4D9%SsBH?qm(3^K;QZi? z7P#r|J27Q1+4`XWKo0d~5_rZ%A2djD1I*zX9zB%{jw+qchile22{m>WvlkKuHO4iQ z#rn0Jvs&Ufd9=_Bl2O}-8q+q$VSlYtMa=qVESxl+;0hH)jtaH-ExPva@l}8`&#q?D zPxE~YV*_O*DnEaJgio!c_#Q7fM1?}|Am23(ax8`B%=Al?P5LqROc#CDe^- zX^W&R=4GfXT{sPZMT44i1-fcgb2Y!@Kru3(&%W#P5OxV09tg%c|XS**K9Lin= zT)cC514Xc+1Ev5kr8%DzBVdvSY6VBs8RLUVA1eT7;*kM=qIIUN3<>F!E=g-NQ5l4d zakl~+(VkHQ>DR-`O$GE`V69fOi7Yo-JKekr(GO=q6Z;u9!w+iD5mh%b;6tyiPi0b< z$Pif1Z*gHZ!arvVePW>R+K{WJm07NW6TF9RKnftA=>wWnZ%<#BD#Ch3LX#6SmzxD= zHpHf?zv)eX1>K@;lug!s>``ZGCzcltksaCzSx5685%sJUAV|uj9g_L?k&D?@0G0bY2lnC`64F>Py%hH&+BbtHpg*@Z_(f@PY;L*$i4nc%p7HY$q5C>*|9u z@aOD*rmG`V+{3R(>i9?Vg9Vj+jjOEI9+zb1c3NNXn85Uq2KV_yhBK~H?&jX;sq-qY zP$_z|Mbx97Erkk1)!CGFaZ|oszjGO#Uh9?4A5dxqV3s}OjUfAHhUCxI)E@O29$mFZh1+Mxf@O?iQr45~C zi}y-~I$J81aMnYPM_R;>$FInTzjlq7AfYwMGrM)pXNG+Xaxhw zRmTOuZt9;f>xGfUhmlE(eC7X|ZD~iZko{_c#VWK~rW#Q#{c4U`?{-T7#Di>c-&%C? z-fM+zoiut|j|jP2Z;Bv>(%dsnM5C;`tye#HB0iNYeH&KAO#sY8PO|1I=ok#mXwoI# z{LDKv`<;+L%P1{XZp8L~cKRiKMY9)x?yn1JDmO7L?OqP@nxvg2PGrN$3RL}ukV&FZAr^P&AV{0yPQ1PhS!(xS7)#=_wp4v`Wovo=;r!E@;6n*DWR zJqh_V&lHiTz3=fbf?g;cNa@K5#)Px9spw6;j`P(vs|(S3B6zfaXuy21l^N)*XP4Cc zo^5SIxVnS6^(XeaPq*w0XOX+jWh<5Lw-tr5&8vn$GMQls+wbE zS8JnhB%0h@n}vhx=CG;CGnWTg^+y1=*B05$y?|Fo$wopT&7szmC4_$BM^}!9Y#JsG zM^F7iM-3x&h6{LqzajcYop{n8Ygtv|de^3=$C<!A6W|H}>c1c>GC7eKJpq?+Gv%Ux)`fYU6zk84w zTAOKjAYC@5K247Nd1Y*vI~B{_B;5+cAdjfVZrzo4(hEi z!+;G>y;uZHu*d#gUo|v|T*rWir992qhjY&ndBai0l|h@x7|4^II7``lL_cD*hdggO zHC8%D_71Fn!z|k1jx*Ew4Ye!79lvw8!TwY^?`Qv9VD&`x#SuHL$v4f1rJk6)H6Z92 zc`C;YKR0Er&&jm(CTYoYzg~C1ukct_46Ip5)`zL#=+6K^K)=5gvI#`$+tgkjbz{Y{ zo_(aI4CzshBh%%vHFs%+P%y03bfsANel&e}S;=b??9=DYHf39F#W|?UBaYpv+f21bj~GXXd>7M# zRK~Yx z4UoDJi4hFB2Z-U)-Up2lryB&L1I`HaF}x}hQ6Xzn;cQ#B>3_L}Xu*9Om}*c_AEX6J z9Y5|x5aYZC)j^VqUe5=58q;K>-a}8D5A=lee-~1xt9TVwdtLxO3K zjp%%63dkOyOQHe&^plz9bU{1;MJ=6N#Q|kP7rY0610#?LcH&DoP?SD+0Ncq`Cy0@I zPN4i}jrjSAWw76As84y=Xic2u);uhs#xdYvf5X4KEKuVHBp-)m)m`X~-0tA%3PiUs z!rr7N@2WmJjnY|~QM^J^^)`R2dqe9rNoSU57^d*_x)iCRme0T;5*kPt=KHgknz1RK zXe^XuW89U#;E9LT>MCJVOSbV6cd^lSnBIV+UbMZE!)mgSnS}9Z8^ig}%z(1-XUUxY ze^ddKrGIWM`@tA35k{4%%7O{O!?0(Pt2)i0ZqV5Z7%UUOU-e>=`D(beqss9m*Iy&c zvdy9(rQa=toceUua`Ly-QylZ~GJe;R4)q%MoChoeKSq9|P!*qfPKa2J`LhY$SV@zz zkL#%|!EsAcBgjbGCZ7%)Sc}Nrxuriwe?EKS33z@8IKojvdw}3DSXY?=HQH+doi64H zE&`O17^k7?S!s0p?D!oSvIWJ!nx`Z|flY1Y%Y$mJTg1xV(A4`sI)}$iasOQEJB<6@ zB5ucEwVC^;NasE?C(vtVoz-GjUpj#yK+xy15!uzDl$0-}$jBO~s=3;Dy6uK0f0!9m zSgFs4CFpxb;gUKDlQ$~fbn91LhOtUu9}+&Lk3N?_qdtMgv+OBq>XD{1Z6qm!$`R{j z7V|)3Y8iSlS^|EP#q*In`+qX%fTLw^9_dcV4sxm%S7dOTVf^}ob7!^n(h4;10Ra=!qdQp`!wIsA&e<+qC{rLbEXcQA|+;NVRT^$+`k)~3=#Bl4YT|Tsr zOfMffj^`YGJ}$3IxQOylz)Tg)hn2dwk!cMK7}?3onaxi*One(XOL-&o zl!QXw7dwU_$4}H2-lG>iWPuoXXxqEFNKh5`E^=Y8tbANOPVgF+_WMUJe_^d7DX-3A zjfNc{ql1+mX+K>AaqHTGw*zXx04K4ddeik)#S5l|=MlfH zP?X9GZ>t);f$rj#k&Eo3f9f?=u|8gj5|i1UG56EN^ac+4y#F1OAGp~e7Z!1N!LR6E zbW4W2JLBz5vSs@fZ1sk^QMgs*P`HFRf1IVqQV?Wb;0F;1nq2G22VQ|pZnvF#?rhVG zT?RxH3CBkwmRhRRGKz#ks?QA_nI=JcW`VT>;ndzskcRuQWuQS?f3^?lvYC~cLN1=q z6Sui)TU*nI!$~;rH(vgHEZLy9cnpJY^+&92^2-=-$6$RXZcG#H?a89x`zRBgE7k7m zEw)k}Vg(o_uzM>r^o^wdrcti3rA{E3p=4N9;%eTuz6|KoWH)qAd+@PM&s0WcZsb#p zzwU>VekU0+4R**=e{#@b%Oj&6eFWR0^mslWq+XbuYGc&Z+UTODn;tK~F%m_T6DLHn z$I9Y1li>79-XoI_UEU{bKxRUj9A_)jLgEDOGSc{qILh?ETdFu@#QF(>haIZv#91hSE`bWe_2!RaETw@+iHHOZoE>R z!sM;p3Q3u7xM6fj5svjf*%OL!gY~m4VCBPb&$b;xUKX;Nc`;XYyYFR0u{m*&_{(=g zUuwUk?|*}NA#tANY|KV79=?B_ukK&;xyV<>s8kw8U!ovG>Y||0?8^#GR62*Mr8wsO zH>U=YvRER2e@gEupZ~mr#loSy&{=01Xb6L9Z89@{c{j#W&5#zl(Yzr7v1%diUSh$U z10QSS;t4QM`G=~=BuqyRTm(?)37}p%Q{PxhBhwEDE1i_=T7u$Slc1IbE*dE~hQf|V zn5SO#K~QA`vvb0p$|@V;f?rse?XPCJATg0K#9~N$Z%H?A z_Mv{^f5`2)bRkUaXradE#rFt!~UGup&sP$tb^?IpgJqXD!Tyj=h z6Zw$TX+CJ+i%s3b_oIDM-w`YPlN?6-k~)WVf0wi=8h}rJjGV&(GlozfkIJHvVvNPX zS8qe&Zhqbp1D*@tdZ&_u4l-Zxzf1%~GARBFy~{-u_;{M}LmRptl3GqFhHN}_4kRH5 zF|H?{uhyLg$zd!?JL-a$h@iUurMmJKK8N{G^Fk}uao@V2dRPJvV1Y>>y4c~IopQw9 zf5q^vQlWy^YB*=f%?0ZPSmODOBdD=QRDN#=|QVxfhzYBB<&(hK9K}DBn}{jy-|r@i zC4wbcB3>pO!KCAQNAWX+>RfY>-1fn_V7;4@nNf0C6|5;4vS(Ocurm%M>bNWl?muN?on%~bB*R|6@A z+|oSE$RcpiXE&+xxWqtD?PapJJhpsmsBw8tY*)E!MUUY8yfQ-*%5Kt=969MPe?cMEqKzL} z6sXK?GLX;4rW~!=v(`B#FXwbJ44wK$19{&-B@ zRQ)Z7aoN&t%}klIMoO*qIO@RT1^QUY8jtoK?mjVgM0}5T3P+9q)}~Vk9A0z!l+aMTeAH8 zEFi8st9hvrGEo83LVn!}YN1|6xI^hzywu9rK)uuLhhearhx0__nUfM7!XLsO)*0~a z>^~}bhCc10$HjXrfAHewYVb0wIH0uPd-dxPK$Zxj-UMTubP3}7pm%x0Vtw1fAae@v$a{NdVr!1_rs@?nCL zuL`+7eYJUG<7}8yo1VrdRB9I;vUTK*aq;$7`p%OGkqhkv4A^_Gwz_wwlYZAw7&k%|I&O;Azj+yXW?aHPx6UU6li0FXZ;O#f ziV-V4xt_d%e=|h-2$!m|PQM~^!A;rtn8Ul&R^;OFd22cFk|x|x&*wO_$;fDui$=%0 zUQqy&jXrJGkPx>&TWT7dyR$=LHssTdOSO&J<>*B?(HD6=$6gPTkQv&o{&U0Z4L+G) zM|7b*%u|qyrO1SS{jtpJtm}qzI+#q1)QdY?lFM*se@pmi-DX~4L>Nr-jt&K~o4t8k zewOCf+MuZRpc8b_cwOwSoD}~38vy|``{|a!Xru4cM~C_RMChZ1-LF($(qST(?d9fW z0Sl$}5^ZnxA~=f7a$8&oUQQbzzQC(O4p0WU{h=9DN5r!R}n^! zb*53Ge||sN_Ulegp8B0TSRu~&NWU~KCkn=C2FX~EsTKA9Bs8X<-+FT_i(B)C@8MH{ zkJ`N>>romF(}nIIS34#hnV(#)czsfca0|tz-e}TFOdpq06eIj@VD;;Ln}EqmesH-r z>{_(4-hZyC?Rev~CQ4>*^TA)vXFKJS=t0?_e|qpdC+cGyceYlh;ocbLSKvIRo8G#0 zg+u$(An!q|Dp9If8Hmg+ ze^F}1FS(=Q)_D@HH|72#udSn<3K*9IlD-=*GY=upEtB z0;I_C19r1*yKLN4r1fN+g86<;>b)t7nrqO8wX1(nK+Tw3GMQy(GMwd|d|Qn-5FYJ{ zR5|G32Rg*~shv4*e3i*|2Ta<2a3m!M4Q37%de;W2c*DfIwmDTSrz1#Sf0#hPe?Hqp zC%eT0ntwAdOksz{@lmXWmT<=L!kSDr@=l|g`ljDUMv76AG$e{Rr=<43{OoNggGKlC zTK-*3=@;cjC&+JilMDVUUfu6^WEY**-qc^y7u-HCElFJ=4zd>S(hVU&e+Q{F$Pv6D z09RqcsQ8Fd4j3+`@~DBsC6#z4KXfPktn&(y(S_4Y$UQzJh}t#&lH5946o zfa7slcYFaXb5-vmr0}ZMWU)ftly4JJ;pv%{UY9bc(QXB+`>Lo4+8@gae?0U<4oU|( z59|q)dI~zI@_eqS8U4<=yRGmN9^XAM`NC;UyWq0>ug={I=6mtRZ(tDDZ_rl}FW2%_ zl1$(=cS1PCHD60pI!`YgpTZ4w)r~jS6}tL@w(w4XwqPr(D%cJdWf>ORL7F9! zOFin;_~LHRptdpV7lDS)lCD@2m1hh+f_kay zh?e+wQ$*;C$*|gvom#H>?L=d_Fc8z}dkPQktCcC#3fHp-#|GZ!hm>>0Y>Q1JPUIX& zsTdu&dx&*R80=7Uf1!)u7F5sHjdcS@o;JUQ?)=e|uxv8Q=3D{A_63Leci2*Zx~9xm zXN&lU&_B_tRopC>@U6GI`U;W}d$OBLra1H}D!y2|rX^AV=;*{>%&jK6JT%{-9ofVx zVza7`A$)S0Gff**VjGmi1WlzFfKq776?uC6o8;VpDJDvPe-l}%J5RTA#IvkKo^kK} zXK;a=``wGRusK!wA-%FYe(X;ry9ePqAhxEnvsQ;eIk|>8OVY=FxuN8bTn7uis<;q_ z6p1^ynuWBMxAROm}>u6;t5 z22pk`8;>Vde=6wPOX=8h*@|BSBhZxbxC;K=N54a{?GxHiOP3FBI44r^`OitV zOTlsPT05wIJ_5kr>2Nq`r>>afFiKe7uVX7i`XkU_6b38PDg4k;hCL`Vtcttv{wnm! zdVoa{FMlZ{6?i^FlJ;bmg%TKJY~?PQ+AWvk}_{QVJNG8EhLyXv;O=?87mjR6CWxq#3mk#1U#SA&9e!_h+z zhiaU30)!TuQWyK&ROxqviX!&I%@q_*p|pa>+>;}|U&pe1HFG~Ty8h0?g}Z1mOrON- z$gWy`@l;x^AFzbx8&C54FZpcTMx7I{W;Ehye>Y|*tq#Zz4q#QHMU-yDgJ2!aJ*3RhWC1tXGY4K{N6u}acVnEP=P{?y=+(DQ`#ISSo9b*m=)hC) z8H8e0Va!Jidh|_%MEGw_y?Kr=Qe?-X81JzSpuyX1LBF3wOVu`@s5FKpdO8h1*75|`11kY_VwGL?FRCMRrZnMMj zXNeRD?7MT0YKZ3_5cK1gS_GWmB#8o_Ka6J!rZ>5^%vZ^@OyvXA_uxQO4QgmNFr=#P zvuG_%XwC#Y=6^W{I&WdY3>;Y#rgcRneCO?^W-5l6svS)X zozsUW;ozA!eqdpzPcVPLjyjh;Ihc`1WiQkEBD~EZqg3oL?Ou6Wf(YrT29!3Je=1q$ z7ZgW{K9tPzCuRyq>>LNk9#W~vo?SEI1we>wC&x0z+@#%XC-^L=LN-r)j4E zSVECxSfyZarMCWvf?V7L_oX$Xe@MZq0=Z6ifjc+6${1_Gsj;P#W18^7aeU&_D2Lav zL3M|J+s!%oB8~oI`+E}8mf}He+ro$vrWih$cBzD(F~Bqd3DsE=?%?w?JlM%7Xb1>n zDJ!jA;c2BIAM9@xU^%GNTCV2+f=j^7A8E$PIwt-g;=G2QA{MOEfad+8Re_&tXM&zJk-P8-E{Hpuvciyb(K%J$wO40eEM@@wJgXR4B z?=2H_FLd;;SOMer60rGClOnc#qVv*jp8P@IlRhI1cNzm*YthrUAA_qMsoqor8pLci zJ6()ezXDhjPQ9hc`001-mEsE3^e?0@NI$3Nxddf6*FY*{n;F;I~O@ zR*s?3;_6%#)p#xPgJJ*DNmzBHU7c6YD3@I9KC@i4T5PUgM%c}x69+a{z{NF>LMuae zD#O%HMdfO2-DjA*>!F#3(x5GYto>@66U(nm^p~UoCW`tM})GxonHt7P0T3Iqo3?_WlFKfaMWlY=Lzu?cmfB&BU&y%9=;Rz68m;CR~ z{Uo{au#afFU9R-a@UFHa$MDbdjTVM!{0-^$ijcE~7l&=TsP9}R68_#*m)otJiU*zR z-)=m;rp1KqdXKRIO#PPVIufJi-ccD`+IAK%RkL;4R~I-EcE^hI!$(#7o# zL|sQH|EK53DJ~zMvri`e`iti3V(w_A?x=j@P-sT185}baLFoJ#w$2@BS6#g>pxfh2 zRDg5$GzW~9g2A(ct<{&6+E14Q>a-U*RLC&CzG`Tiep?js53eG;ec!KC?@ zfB*1%m~LrzUH?x*|I^U_7aAHI)@>kG_bzMw;WY};wi%}?F}nLn%e&Z|f59cB^qhI1 zGjsj~-J5~*f;w5$FSv!rYjNHjv!2Y^f0!gYx1mR_tLziz0zgK?8GdkUuUWAA0J@J& z2;T?%o+Dm4BH9Pr0OU-W3Aeg7^`q<%v_QGpl)gK2C1Atxqob}!d_PMrE2@}VgD-_}d zlxwV}!G1ck-z!uZ)@V;!(}8`2f1q6CTomX}JO?|0jC@CKq)y=mEf=gOs4!CNtzwas zVSeb;=wnF0`A(qsyp;d*g0mTu(fw-o=`0%L$b_E;VpQ`ODRGO5U`q&Hs;K~9&6i%U zMJ=O&e@*YItjKzOvsc8LnH46v+kTbWbDCW?+~HHfIHE^P{e)XzbwF7g^woBolV7+qu9c znsZc=U8eY?yT+~cAlhxcD1j%mSd|6AhL;AKBQr9DJg zfEANa%q2?bxUZ{vzTnMQKFQnV-~IW}1ZpC$3bh)i$^fmI$o%0va>n(>h@wdvo;3zh zOEM1sE_!-4fjLX!$+Ix8&1{BVoQAh9Y)H|AtoT3uzxw~1nnJFu5o@~mjITRt$mL0iaTE67eWZ+P=_ z@BFITJnVWLxo9=}qdCNadD6()u|saP+GP$Lya88BB)P^@4Ka=72)>RcKN~v>NDd+W zb2_GFbe#HdYn*dyUS^TEO8Oh*@nfT51Lsz%M_J-res0M$Mk%+)C7Yjn*t^y_(m4eV zIGwfF+C~pwe=LQO*cz2@n{AHxEu9{?N7&iJYWmlUgxrVE1Rg1Tw9Y$qTH5c7N70u= zdHfZC5($QWU$B#j084CGO_ghPEr>2Rec`73Nb8RH$n&wU?+XI@>-%%dCeMQ>{#!&| zx~)fWKiXufD+2B-FTwHOsl=*+kkj3{X-CqO1<1xge}?tIl&sNs?V!!ph?2JdCAWU8QZ=NAMOno z=ko;If9~@`Rm0=5eIcv63)#++Z_Q$fUX$b8*Go-@ zW)(I1jE#K>_GA8ey7fLxkoor%mzKqBzt7etfAdJKSU`_sQkt8PJ0#95u|6wqH&5T^cQWifL}A0n8zph%(P^5? zf6X_>v@tJB8$<-5+c2o0G3q*qOt0V%s;FPUC)TMbbSiM144g4s6w-e^3wOj}iJN}f z{4Oz6%?iq=X#;HUfGSiLyi2C6;oHH7Ctkr81zao(3NK5*x~`(S2#JWlx{@6_MW_iF1iL)nm# zcN9Sa0IsJ4EA#}aSWnPR#vRb)m!KD`+?On?-^7qUjOV_uXCqLLMio{o7n}|8e~hNM z?+Nf7gRAqow;{iRtJ$^0q|Zw8gt2}8GVm$)$ebGey$6r#rc39~Kx7m%ohLEz-y=z8V0SqrVMzKF+naKi~Dq zLkH|rH9SsmkRc!&u0dXJU~;LHZAEhG)5K%1>Q8( z$l+TDXMQZrOsKs1t>LcBg90ius413MZp4cp=7X)<(8YNyMC*X+qn-|Rf2Z8tOz(OM zKiGr&nOGIzM2~OHB_6w{DNfUA-tf5<-=>7ZYIgf{e*5+1c53rt-+Uz>-dZmboy9o8 z6cNN%j0a)Fw5jHgMNQipR;5z0uZ2zK=&sZId`t7whnr(O+k~cB0?W7OS(&`QYW)~a zK9|&0J+UTF_8A2~(Z%0wf8`z0f9JJ3#xOJ!w!{kHXnUnZC2nb|PHtTNJYLHNo zEL}&WRe#oaz8l{rMh#*L%5)>}TReL(RJ&6%VH|5%+J~o-ZF6280|MInAt)MfTPK#n z$xVE_AGKM;3vDLTg-hE3&oP<*Xs0ZahjOmxO`e2|MXm~-4z59lfBSm-=FmE@?Xr>a z%h&VH%b&o(R;geEc75-M-~e_5Z(cAKnl`8uk3r0qw$2CsOuR46<@)w>sBNmh$Gcl8 zspf5as28P(^_MWLiHlC`^H%?#P_{~c&y~FuZ%N3Sh#vXO!#n@Y1C!TvuUyR{B=lR# zl(6Nt(aL*GpYJi`fA<@^;yR6pGjmN5zFN-iVRhK^zI$b{+CrAIMw{v0Fx6C5Y)pla zc0h>impJK->6{IE^0{at(xK8hRV=(!XUB&ade*8L9wxt35sh0W+{m94nO?Vdgf>C* z<6jar{*Od$t=d3Wd(HleoeOIFtWa9rlUG6gJ~FOf!}`lWfBl2fYH5xelHLLGZvT?N zRafiHpP~6>)GvZ=zFu1Qvj2pBKzn&J`J6CAx(( zk7q4n?j375(FDko>zH?Zo_T8pJa68D|B|=xk#A%em&_>bhf|BZbirjo)*KhnGO9|P zIBri=%OY8c4EZt)5NszC*H|6<#sshBr1n-Z2R2Hve>oh|v;{sK6V#W3d0*@p8nKWq zBrN(uKL-08t>^YBdY6Hg#5?=0Twnnwi#k2&?)-MbxA+J9R*VAYdw>z=_$4D3HMBTw z4O!-5Ib1{X>Fx+))0CLI+f4c$De?nYofd8V5K$GzA|J~U&9_n{PLD|x??nCmpgSQ4A1O7%h%+SWBPE;%A1#? zJ-R%_K05=sNr<(G4+AgHba*Vc`%F9g!xC7#>Jz}hSK-9Uk`#fx+bS;pPg>2BXYVGaS#)-hQJK$3;<$|ge^%s-`oxc$4Wb@7O{6U0+NA5T)(_m# zfYX8>L;bzbCrnrvZuC1OW;Rpe>>VY&b2ihD&1;d{p6{{@AvGGwRUFDp`z^k)rp1bE z#Ww8ITzw(`qIt;h8UFg!i)i*>lfcVq+s#p35y9dPq>!qFLn50Vr9lKX5gGX0dhAdw ze;BkB$oZo?Hz4r(XzK-nl}beZxY^Snr~1mB!*1#0$$_Z>8IcO_c0i4%#OC{uB{eJH z;H0_&b$5-+EBq|Mm~aeg)$&o^?JOxw0yb1HB+yN<$o+acG07i*vtLI&Lot!{^_W5Q zP5;jZcaN;snum6;{r>dHFsn~NMtnYJe}KPDn^}v~Ve*w+EPg^k=~+q~&t4i_`$4y6 z!_yk>X_oS|Gy{YZD78{E$0U0$rypM7-_b0{q)tQnz0hK1HFo&pscR0!LI3*PmN6dA z6^9`Jom5(?7{vmm33O4qZv|upIu`l4x(=S3otK3;$?1R35VPrKX}iWn4mV{he=~$# zGQ@Q6(GOFRGeL^2Y9xK;M|yN26c2f`lsLJ>_{H;4Y~`cqMjWbjJg zZf^%@p2H|6D1W@VqrT3g?|t?F|B+&WBkKUHfPvj`3GC39>sexLr)uCNMxXjzt!&;H zcSGRLEtHfh|IL``%TVd7$kdMgeS3)~q_N)@ zn5Mv+BGEddX|GtO8x76t;C@1hA&ClGp&)|?KqriWv5p5nZx>Gns~+EfXsIgc8n}T0 zIpfTebRTu8p67Ly&&G8XAZ+2#tZzK_94Vxz4YIn-KX*#IzS?s(Q`)w~e`{<&%Y{g~ z5+~mdbRIr&&CokVd1VVCzQ(}C%JCTr3MJC*x$V_N9li=lod1b^MJr+^=O-z8$2sWH zVNfOqZm%%snV~MFV98Ch-7H(c zQXu0<&en1(%vmhuJ4BTFY#wGN7h2;d^iH*8Ii$ZTwB&8&Byu* zPp673fEW+x11TWHxI@RQg+|k57M%#TD$5(~oNu1P*{b4vveZ5ee?q&3U0sg|@QT#L zPpTL{UuaOa7i-!<-@wZH@P@hx;}q!|^MA(8*QpT1*9^o>v=1{O2M4r%z3&xY`EvV} zOY@prx@zgS{>oWxl~L|~h6v&^muHhUC5^Ui<@AyDG-`m~D8zc)!IYCK2IFd?-sr7W z#1cidrV>MSpW7=3e=Ta&5CZl2h(_<0@w%pz=JGTW;E3{pkWHqUWgQvmbPmN$|9dh! zWlDiZs}Ht~=&;&Kahz+9244F@&cqezS#E~~1~JGJDcNEi`X3)~D%UB_w-i03ZVjHJ#kvW-ZGZ2{pQK5M!ue z&>?6nnvgBx&)H^_nwz$!xZLRID8#JOgxXxgC4)&9e|4ZEUo!_qmiXhRn2v3J+ZzN? zIaY#MwM}#*$eX@^$6sAI8nJ$MceXc5*>la*aqRAOs=zY)lE{%qvms*bMEF z8hk&O?;CcEEDF}8_S-zg(P(1x+(NJ=*R{5KT0Lh>s2|LM@v>< zFs`+$EXv=LN}+s=6nO=9C4NwW>6=*ye=EXOFKRIx_MW>`1H9)$ya^* z^DOtq96@a)%+ID%vMFA)4C;ZmnR^m$fHyGD|W38E6-dDEN+&8YP)*kjQ zHoer|F8yDP6{J|Czpy=_4g6@I^)o_y(@=LexggEooL9umz)8n)XL~{6YKsZUrqZER zprU*-z*<4SPX%&C7NWSTPh+OzX$O^RP?mi8k82Ds?cOM-dztt;ULYJ>3^&jtZSh@CI6IpugAa%EWXp8y^t^024>DFxsCnWD4q%Z_&f9# zbvD?WK>x4M#FLK)XQ0oDG4y94#3y2}nbcqs-HPdF7aCHfngy7s=^lOe>J73TSkVZ& z5!%acHJ)FO>ip{5klX&?%R+5I9OKpyK6}zez^nNlIgrHVU6sBVe+JI235|We27Q`S zy&lF|+GSUhytY%K+XYSNGnE+NxqOrozImps#S_;2s?`$(VJ}-^CHp*OvgKtHikF9z zqY^ka)nx~5jKsHoxm?9c405}3JJrHYz)o?)i5B_l-H=nh0EoJ_3d3K-`2OBk1EHq5 zjUDy8XYNiju|^>Gf0e@Pov0DK@c!RR%+UD4XQJpkuVQo5xhdqH3p;KeihI_Sy%jMokyl>Gp&I_MPIvA_hseKAnvHFx4mHW} zSOouoWnHe+V}kl16d>@qkdE_$I^>O$OW+|u;EqNU5H@affg`-M4)zXCPJutf4NW?JUH;^GOA zCa4b$e+anle=ktZ!M=p}4`kXVtPwGf5(>MtnTo+POSN;dQ4C4psbavQzE=C7y)a0B zvf4Wfqs0b)_6Vcd5t_SJ(lq(TqhL(TI?a^8*KR)6~@O9Q@t~55ydTm zzHooyryc@Smw{_q$xhbvCai$RNxN%Z2NXAUj6Q&zf6{HM;-TgnyDsJQe9>awYq72ebqL1LiSC7weJEf$mA*6qGQc)r)Q8A@t*i_KVC(PqQ##~lNU1&ZQT;x zqskrP3}k%XeL!7wMUi2_lnA2t0ysfEBN0`r)FNs>R|Us^Q!xfzS51^Luvr;xu|ne; zN5%c}e@@@5uzYOqq4%1o49u8rgj(O#8UOhHjOxUA1;X3ig(&s4=g3^$uyFk-YI~@6 z_%l`omO?{hdIgupKIR*NBV{u>US=hu-DfviTVe^UN|<*~vYEPYx}HkO;x{kj?y&)6Tw z->xd+e>Qh}P#|?xs9CBzUR%pG;%fqxuq|cvig8}aId*%gH}c8QlXm@z7jTD-Pe^RasMCo1?sX&@m0Sw^;JUbAUefEmIh ze=OULtLR0Y^4uA~PA9%s0WzMLjJm-#>ac`JwN>caH5pGsNm(o7>EkP0H10F2=DNfc z((U%nrt+bRUKri(W_o)yWH?GcFjQwzoMVuVrtKYOF5S@PRndEY<%d)E@n_ zU;yCQBeITq#?N$4O+;47nySVct|!kEYJp(fN5$%3uU#9uuyW$F6D>i#lGQnBKLr@Qf&ZNzy6aZ6&&lzO$rAzr9xe-Y&f z%IT2%5gw?^OZ9WR_GxqvsVbZa1r%RjetIq7_ z&#o^kQc=CCj~0fNGr6EYn;a^~f4{^DUYZ{z{R;OaSZ8#1pa5~&{aLSjI`&@5XzrW;qU!fVveHI)oFl#{$oz5y@^=@ zUzGTHgU?nva#)r&$b88U(KV*PUJ~YLcEA}^ZBb$W9cQoTCZNvJ?lY-jadl%na(%y_ zVQzna+jBs*+5Prn7&MqYf7juKRU$d8o$HZEq_;zPKjOd70;rm&sf4G^gB++?ev?eT z&z}1=U3`$BHf^KlU8LSnbOiprG{d6BLdEQ~VXv-^I;EtT&UtHpYE!Hfs?B0`EUiq5 z?PSUa)N;}_!ZDw(?d@Du7cC%Wp6!JN>13U{;W44>E1L478Z9o^e_vKK_-dCL+8I@Q zJnSj?lh+#M2C9t7$+8FkY|5{w(sNvH+u(MbL zEP}lm72fyUn_yL0VaS77C6U(#Y831XqJaH9ovLtU?1hhjXCO5vMVdOUF>X?3D8sB@ z7A{8W^B3o__2<{ze_H;<{%SYkS|$vu=Ceinc%$51uo+d@!V>L&0d5vN;U)ER&T@ts z)DtGQ@N05f>Zyry^Zk*es_@Ro$!slD)&Wbn zM*woo@;F|$YrTiu8V=`J2qnD}Yq}2|>oyY2TI~hSw*#dMe;qZxm3lRK9+)y1B%P#6 zGB{J+jd2vL;+DMw9Dp*ki1mrWWwpV=$a`;!Qb^d3f$;@Oyzym`xLpsrT`g;06!(2B z>!4&qBxF-ipz~fg5F|;Z*sND}+y38LFbOR8KP;L`Ggs+7wV^5i!RsRgy&zb>FyY zo8oC^6s7GqCd3G3$qThjE*n}5e{8jAyw323&)Kn0d4LIjHjC80 ziTj$sw)NVrzwl#3|9dCVW&`OI4akgOUenI3IFC*k{J9qBT*r~>cGM{9*b|oFcOzYf zoh_xr*gG#6;JRvebpa80jREdYr8Rkhdt*SfB+C=yMn!pe4 z!v-8<07-K7F!5Wetu~PWn!qMR^$aJmkwmx3hnNKL`$Ueg0Af-fOBYx`on55p>X_}* z`j_{D)n6^Ex(M$wL4y_rVMZVkdSwsM(`eDre}@R@dEL4%mEvN*xq~a~1`wt3T%J** zVC2yRf+iqS(Hu9Jh`zGxT)iRX&CvUWj-VTQla<7gkg?<{!Y=`>1f^$bsKw@uJ3&hG z{Oy`D2Vi4B;ubk99Vs&s_rpx=H{Qj2!$3;ZGrrB64qu1`Y8r^MRX-8t6^>Yf1X!E?O0Q_J5gBQy$2FCx76c(63Wb#$c(GY zHHP>bjpCt911{F-H|^Il7+_tA;LE zELj`r*GX$()<@q{dTJT5D(Hb#l^*L>#_98vwAn_2^%85zeH~ zb&TzNGcQ8Q750MOah~jU3Vik}g3Ui56ent6&@g6UzQYiIM)yj!)u4qcqIu&ImQbwa z{geIOt3SfS@Ku&Pb86o0os0%re{w9Lb!)3f5*@d?+0gLjjUEEYE5~bZ04Y_8W;TC| zD9g1?S#F&2%^a*LB|ZUcIp+-{6|A`PqL>}u)!MqMeTWRYqpGR zf=~w_m&r4|E=*_XUX3>GiF!cz3l2lG4895l?Y|OY+KD7rdPeVIBz`g%>pR{n1Ht$x z@BProkoVchjkU2_od~n{84E^XJ-DcT9hVor>d@G6?ijUF8eI!RTgd9u&yC}1ZR>B) zd^nyl38G)8ht4`wh+%vMe_B6QNFkef=8sB8VsyVH-J{Wf@Vi>YPMa7{?oAa@^gP*f zUeif8CoOY*pgec1_NexR3WC4tqwH(hv@^G+aB`SyC&d?rOep(mkuF?-gD0TZ*Ka=3 z{k{-D>PpYKD(Wh1%&h(R^wDOvMo@rXRBlP|wXpp}^mz&#^_yy@_Ct-l2T z({WuTl%et3?!cA)-QVaq)ks*cz=!lVcD69v4pgu!iq!KgSugQcN&kY@0IWAA?pqis zdOZyD1ZVpdugag0KoN<+3V(rN&PGutI#y8Ey!G7ynejmZK!4}-eIoLft5gF% zMjeTlhIgjs2@@6O`GN(=RDBj$Pk1~kaoeN9;{J<}1fl1)UnNT+VHgrbzl$14NBT$S zdQX+}`@dKF`r|OFOBj>;Wo7u*hTNL^t;lBImqn7tk^yh~W4;%F+Lxe_bAp5LFJaow z4Y*9zG+IHfi=H!FRDX_@fzbxZHtg_cxqlL$m_{)n?4#tPb?@4r3hw@B>F{av_Ve`= zWl1W?GyEDsnJ#c5OYOgPGs+p~*!s2`PYQyRxK1vW3qIYuS|`*5?YShx81z}bA{RtP z0BskSl~_KkcM(cFo_t(?6qCK$T#lOYGW0Jp#fhcA*=GXK+JEDK=_%ub#`H7ZOT(XV z+Aa(*MQY^W8$3&=jm`KJ??5fG-uQY-=>Q*Ci?>MHb5QoFM?hDAc_h!wkRpiz8Adei zhnU5cveAO7Z(6f5YDsV`NORS{4r{I3#=mj>(YY|4WKiq1e~6T%qH&m zc<#73_d&eE0=3%3A+C6vgplO^idGNF(`oy7C6IQJ#6fBGZ6MT zya%EX?fR2Ov@l{RP1XoUCdyx0S`}x0OtXWWety$jR)04&eOVAUaS_1p>}BSnzxzDM zX_53YyCW@>P#HItmuedH;qOIYdY?!Wh)%} zA#I9ijwF@3t7>|}$Kh%Ccdh<$*)4+dLDHiZ8$suy2xAh zk7sA58h=}Bs!m6Pm3NPbrwO)J9wmHSelzq12mjnJ)9)tFG&>cK+H1B$N>ACTd2a-2 zetXSdQL3+{LQMShVLbNzJB8E+$;{dr>82$tHb(0vrFr-`wbqyiA>lqBZjIbJk8be? z7KK(JE}!kpGU{>}-~KC9`^WVYYCSUadKIkA4uAYckap)<;;stVZKl0HDo^EY<^AcG z{{k`BCsXnOT;l!$X{#QctMRs~oi`MB`V{y)=9!2?s46)RB-3#H)JqPaaUd z^})$dU4YZ0QPqe7&zWJ3u$Aj$SZegCxGvGC?j{2KR4uRSOLpRae&Ow=w zCx0B^Z}Iok$>i4ERF61#U0#jXc{cCP9~zSAjPN}V!MIkGmqae;S<8=WpoYF}W?KV> z#>~7a7QYL?{270!L2A4u-2KmZFiQAzen~WJOf0B#yeFIuf|+WF&(o*&`}B4AxIX^; z<M7gW!>wj~|f88Nv;wB5!~WBPM>=y*!yxKFZR zjf$6Oe|)^wBSE77>#Dq*!)}hlrL7P--3CcW%;+`iLOed#Fyu4oxbv%mS0ulf=YRE! z*=q6vtB3Q*zxSs%pUR=Yc=#2@J61TX*Sb{W*Giy@-FdFcb1fe+Lg8BvbkKUsb zDqUnATx_P)$KYhAAQNZqYEgmtAR}(D3`q8ucK3Oa#UIL0C=YM)b9}=!R99m4b+Jjg z;7yP1RwRJfyu4ojU_>pk3&7F*%6~DlSZry3b?~h}c}2#4))yZ8nMacq`w)>s{S~5h z&tE&;fW`csF|cO?T>BL55!TXxYhV6c@lIc#KI~Hl*CZYQP+95<4d4S-2L2KS=A%34bBZQ=%8B zO{gd+t|%%|ILYSEChQJe@?=`G{J*RsYmOf{Z2 ziHBihm$*@$8=%2dNWXXseA-r(*N-O0to~1^|Qz#J8`gGBO43 z-R|^O;M9D^A!yt{MtsO+YW9TXeB02 zelna0N|*XkbL(en@O0CH4YmI)F4j`fpR@z71y>xcr$0*fzb^#F{mE2p@hXYv-em~9 zIJh`J(C=-syX~(JN-so*OWwn#KAn!;`r>l?2`-RBME%<>whCK%0AFc16dSwEOn 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 len3(xii)572b&mYq<*emV*6Qh7$>9=Lsq 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 z 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

      rCmW9 z=tP?C#?!_IjE}Ah5DAL0Fs<%ro&k-6M%``PFFeIVXJ1P?b^hAOrn({h!n|ZzEkL5W z75UZ%^m&Jf9d3F0CoI%Hu|EtvsGA!`_>hg~#xuecn_yHqA~=3sAFGh(Wn09Mw9r$H zWM(Fusy#8D!sel;LJX{XD35!vCu(c*D27h4I_Vbp#wV~!X7J9%@D;?!MgbPio}Pzp ztNY&^#I^(=5z-h0g)kH+4G|Gh6EGPu_+RyoAd8Se2jLAo0_*4Pj-3wJ4@|AeT4Gpg z3g#Hqc#oc1C(hvD_()MAup2|T#+7L051MGw{Aru!aOlEL41Eh?$A(zTL)ABpVHgq_ zki;>`AUZN5D;85YT-CqL+5-mTFR;Sl|3r}e21hmHrKR~3>o{b#G zu2w0-^BWzdasp&%bKf$B6L1?IwR5CtdP<__wj2$m)J_8IH0f`K!b_-E_);N9aKet{ z26qHt<;(45$xHEmWN5B}buldN>If|=rQ0;rwhLVdQUQpm)@1XbtziIG2-A3iiUZ6e z$Kfm#+>AM$W?>yR#~YrE)a07xHUm2g!he-ymuN9{?xMV)e#t%w(o?O*+ zrB=Z-@HRO~pU@x6jmM5zzeByL{LX#*$kUVx^nc;Jh(lamqvrG@rD#5z(FMw+!265^ zYCxCBxlmJ%37m?Zi2nc_HqoZ%a@)50ITsnueecN1bTQkkt=aCD>lDNO+6E}rRNVjL z6u(iDw}T3$4r#!!vGt$D9tqd*|xAo3S#9abo;a zE>TbhNQg~A*yI{XGp`?6m4KgV0Z?>q7z+w3AZhgHu!ALLt&C>?3g(^bSHrK=y2Y?A z!VC~#MwQF#TF4}~uY0N2b$kfh;W5q(R0*dYCQ6R|eixLf?@Z*~@vAl%kss1LS=)O$ zW1L+;I`CH>#bEb>b$YGa8*n5}l)J%Bm^zmODxu|!JxcD8cKL|QU~&77nNeg`H^zHj zzWiMpP$u6U^0E;CWtzU=bTWUi`fxj;npE~QX+#h)F5n0RIUrX1SC%%3WaM>i>>6&+ z_z&D%w1zy43oo#ur>(8ND0z=3Hpd##p`ORoi(f)V9B8{MIea`+3&r@Uf=fSp(sn^u z@;3#w*;sUVklssumXR452W z*>tStpAw$V7P}V?lyY2c8H4W+j{BNJdKg%D?Rbw?u9iqA36)F(xx4LPBB*oXj~w<* zvgfZemB3y~7Ib61eK&xOj+3R5bO&Bd;=)z-HFe*1i`i$~3eXrylb3)=9Ayc}iLdJxd!K<(z7UZF;+-m3ky2j&(>& z5Nz8C=$Q%gQ*xy0<%GlloaHJh!n88C*BKs}Z=W^|szIIQSH!sG=P5`8{pTV&laQ^LK}4_T*DNAn7emk2kRq1Sf6fX(JaW>V7mZl;)`hYscnoQ>tI4FBM$U=WFjww%e-$RSwpR^2RbCDMt z=~A%3l^J;cP#x;!U)k?CtCym;w*y_sfgZvngLw*b^}BqXF;U^Wm2P90DR?RHk~NoX zq#it!Zp!0|Sj?-I2f@MKWbkKtl-@SvuR^x-@-#xSp30ls6}YWT|#rKha{3K(AD zlzqU!8jRSxl`)~s&>ZJGIp6*mOc(-}tjZuBmcnZ;jC!B+DE2CrJ0=G)VttTZuASbW zsf|#+a;|MIGj^88GYgqLt+8Kp@oy&n2$JrVTvUGB9(p=cNx>L7z=Exo`~8~Q{fEq) z^YiHA<-AAzrbWHF&wce(2LbjJfT%|r;;nw=Q=v_t&pM~l`qJc;NUWn3h_7w8uRURY zYX3Em_M=T^mX2SBHRR*2J{a?GzTY5wcqKY$x8e&ACZV><#gzld7Pk}MJ+gjq@Zi8T z{?KSdCH->@@Au1=w!~G``{i1csd_#E#!lb^7NChvz)hn-rX9Jp`=byM&|qZ4AR|U` zL>k=g-+V-+S5widcnHhbL5d(OuW}Ywzs=`Bg3Q8BN{}4tqfn2APDXO%FFNKDEX5qB zj53Vj#W07ux5Fr6-K#|vKMvhx7U%wMqh$b&qhx%_09ec_Ulv& z$JDp5TR+8W_l)m%qG{g&hVH6%I087qh{J>}%x-o#eR{h_IKh8D8Q}@1euOZ??MeEx z%@a)hP#sQ%D7Gu&&oI-qc>mjD>m)Il3h}oK(FCgnB=v9ae_Wy`qm^OyX=j2RB_)qd&4SGDRzI{&`i=2IYhhy%#M{kZY36SLaIyklSYPb82g4N-vJ zQ}p{Pu8a(pg4t2^iXr7@r-Um&7o{#P9N1CuXZ%9^k*K>`0?wWabhSQ%6f8q-I-7<9 z^Rn`oF27TJ|B>*5|L=x2sg>J}lZq*A~jB{G7bJFvd z#4$Kdn*>tUy@MvR5;)QsFv)Pmq1o5NfWzJ`7HQ~X$Px} z!ii$(L&|y80$XtNyrLMXKAJ?c|%pUsCK6PQ-iEcvnar?1QTfa zvN=_(BVqSR>%7TLG({saWO)3wB$#q0b#Ig(*_q8!Lw*@MmzpaJ%aQP*m8Tc|INXRNZcm{BsQWlA*ecDtG$=z;?q49OB7 z?V&g=>t}pJ)Lo2m>-?ey_8#D_5yPq8ZH>di>$S-H;jkUu`(F8ea8_-XKkVEqL#vi9rGjjuUWG0CIvY38SHsADtw4GZ#o`G-n_b zXXf7@E4xs#e6~whAD;8}LMaV-YD~fNelzLBn)>GH@i^n{@$41aUv9i=8gi4`M|Mv; ztQ)y1Z|a|GiQS^bp4=y*6t*g2H0~l0KfJ;y*W-+Y3V=#_o))nSzxkeKK}2`t(K<&h#xQ=Vje+peuNoEZSq{kw#U7~LjI$*s!%x@L>y%jC(EC}kh_sm%clIe57uf~O` z8w&eqbf51mAuuh`Mr_K}(zG~J4EloAhZ9T=mO#odOz^_gr;>VZq!{>)N=k$YD|Rx~ zK!S(73ve{@J^t!XOb6cRaAG%j(KLQXBUCX{{I^v<9os(RD27Y)I8RLlqbA76{TfgB z@3qzoCfH=IHsy|O@M3VO-GUB1(bm5Cj>H$Z&@6EJdP-pwmX34&8WZhW&hJ_$*`t&ZVjgB)vSa-x5^CiILz(&_q| zagc!#ASNb;`l%_B!?Q5YSCf^Id*c6r^SrNnQs<{;Jc-4f=bsSt{e^=})Y+(RHE1M} zEn!M=kwL;8yAo)6-XS5-H=Yk2mTLP+I@L~`$SL3YPxJgqlt?P!s?u>xoeW{h*Xa5( zUdXu5KnkZS31u(gd>B>sk*;`8|L^}fZG!eQeqY)$Zbl#=p=5qkh@Z(BHw-9%|Jo{N z?&SIn2pH@h7zhXq6$l9E;xCz*2;x`F8DfMK$&y;!<7TqPK+tptA}JG<0>n%>s>G^9 z%h-idlpo$JghwyCpuRmpNS;JkoEw}A8r8%k==O2)OJQHp`CVFMZkezv#2ojIiX%445eUjEs0F)3rzJQ?60WS^Hemb^*q7XWV9B%tu(qpWt8O zGE{d^iNC~UWMASkQE=wJ#AQ44IDcu&0Dp_im{}cmh{WMA-i&)bhTr%REqzUT;3$5S zB4bt19a$Lh70U&zc}FIT6TR~@ZGw7Bwe}$%`+wK8kPyOu8=mZ6diyRBHGRj9pF+g{ zU_kG2#K1^1*S%}b1z*4r@r~P;x4WoB*`y~yzkK@7)%Iskr2v-;)|a@<5!?}g+_eLv zefmSZfC&rT%#!V2)nzSzsmnxP@~F?yYX%-_9OfGLf*@%QgBnmZ7qZ}*0t|7Dfz%iv zhe3-lB#_L`+P~u4H@@>x;g}FhMa2D*W$DirqM$S)ueJ7vnmemUZpP^ErdG0(;ZQWW zw+SIt2XTEr$^f~fNSL_bvE&;qUs@99u>D~#dCG{y@MeM}Gt3QNqLGx}FM;8j9t(^wIbTrh5^ohGl(%+?X7XOCZ#o{raS^~HIFMqYgHaI` zJ{t;em!SbfM>L~ae~ZhA^k@|$WkteB9k8|U;4!%X3PaW4l?IyYDh$bMx~e0U>ROb6 zA$;Ex?78rnlKN{J376G-{umG2=R1~BawF@&B0NS;WmfNHy9J$|`_k=B$r94J`5>4| zDAt>JwNZ+y)nJ*qPQr>Po}8kvWoAKQ%2f$i!Zy<)NA7y5n|=oY?Y6TrU#T$YpZ`JH z&*)YIpsa>e>{^RUe$=5}whC`=G}PUq#fUz0`co1!>qksCvi-j}d*>ia-fjJ}Y};M7 zZQFL2?Jj$ltGaBX%eHOXwyiE}>U+-I-^{%c=f=cDWM-^? z?uu)I@CP492Vv=Y@$R}lEbJxVc*l>MB~r1{rNE7FZg4^TFM!rsrQ~!60<$gBn}QWh zew)u$Yzxb_#=tldroc|NyKz&S)Q70j@#pw&_y|~)s_qTt3z$z8wI-M2QbHB}c8yl|lMluwxW&~o7t zou>W_7Zm*%e!v>#U{>UTZEOQH9ijwE6BUxYKX_x{(_4N$^Lkh-PxtS2$x+r-jod3* zB_E$Mo5kpl5tvMFu)Oe*8N6*aBqf+9{1K}N^~akO@4`}>27O|+WtoyL<}9IzkOKdb zmBbXN(Ds6&!EQKe;}qaZ2 z{pVVocAQJ~T?#26i^461`sugWdNXne!!IA>jd^OGwR9chS~qgA?UW~yyi!@O;j1i7 zN3ubX;L=6NW>$jBrm<%@5|oPRY*JTxPD;?;}GI zx#g@vN&M~bS&>7wj@sH^tZa9P$d~7y*)i4;=UN*n#Sn{yWo$PXtgG`!>FSR@w79Cp z;bT(s5?Tq-ylU%OT3Z_ugqEe2Hke#4&1u?z2Eai)#~kz{6+FSCZk~?9k8l#{fJ%re zEfUR4V*;kW4Y8Dczd^2nzV@!9vMpR@dCXP9H;<|R+gw&J3oTUK(rJuhD0h;X3aDhr zfUi_u?_$4|sGRm(Xe3p(SV*~fe6S90^b?LtkI+9gq?F{`3{}pM_SF$|!5=-@4F-TS z2^Nkx5XJvp!Tps?-5j`++>h&yLd)h<`s`MR?^FTJbyA;NM7R@IqiB?n2v?y#Osl_< zu-Ue8gjXE1(e_NyZPzNI0tK;I$6e)nlf`47dSpIr zx)nN^bAIXFlJq~lW&LNu@c$^kwWxuBr2nn_#=U1G{a?4U&F|@?7+p^)c%&Sbgro5! zJWX+Qu`8? zC6}Y}<@L6cC5d+HV||+4SuLZBOY_Cm0=M(j;Lfxi?yt`0V`y_Q)sg&C)d;6$h~Pey zClae4l0W0O6QShfJ#oq=WX_*)!Qy9E6DuYTL@j=_ zXgf0jlHCts^0UBV2iUV5qba= zkGN40&xZQ?b-ojRz!JZE)Apc#`}*_6qL4Y@NhzX{`|yxDiEoBCu`7hh2uyDr(qV=A(rzOIY=olokSvrRJ%QA+Se`++D z$2BjZLe@Vtd`m3kN%M>6fP3y4Yt$D=)b9@u6~!$NsyR9Gs#I-e14XdhkScdauAmfv z!h8aJM!J02q~bS?UZWA63YXGv(%4O>k37HjlpRj$of>+p6RC(68-1L&*_T+!CY{Qq zW8#$cE<)xCRr>f8%kawUIsAKd8^W6{I(>%|B)2IbjM6Qqmz% zE*Om}2$c_kNOaqg`(4euSGO#$c)KkCZiwxWp*&udS)0f0JnaHv9QG$4Mt_s3*pq|4 z>wozVn;0TnmxzU~KGpeKq0XL!A8fuGhTp^3v~ndft&pz4RkC-OFh67U;3`MoSa`Z@ zyKc;OYlXt+!&OjUCi9}QHszmoUOqpC+V5?uwfHVC_e$|?CkEOaOvXZm_w$wj=;Mwu zml_P?x-Zm}Q!W5D6wIWm%UjT0hbph1SjuC12W7?drs4&`d- zsG4QF=*m0`B)WvKg^o6v$91i|h!~Q8H155P|pPXpO(ykeR6JZA9`m%Y=BHFDj3gJ^@9PRvp&&KbnjNGRZz8+$q zK>be+cCr>mIywq>rB@uA?H=(YtS5PV%tC8aq?cyHNLLZM1UW-c_R`t8Hh|&qp51_N zQy5R$gR{gt2l$zwEltBBt-5r@<#l5ABu)2jDhvWlZTxBf$u#wAsvH;qbw45BF4xH{ z^yvtHwzn%P5+^-N*+*I!F_-`CdKo3M&HbH7S~<8SN5(s@JHpvNXJj0hPUg(m^?NQR zO07Fr3qy#N4H^TMpmjk~#HJ@LX-i%M{!i*T?}Zz$Z&zG-XuqCV_t3jmL{-tWTD(M< ze}oPhDPj_pz+naXO_3;oGa-I>uz?y<(;GiHH!U;WG5K1X#>WB6;^%=>Bsc~4c4&o5 z^8u5+L;&mdytnw${11ngZSgLE%bsN!@<90d!ap0)`^R${bc9OxgU#Vo2za>+DMKk~DixGMW$ z?bZ@FoLk3VD&ZW`-cNAMX%PuyQ!m&;iwG}erABYW_C4W+v5wrh(p@>K7?q{dn;UsT zPF8(YHOIR`J2L<%Y*ebAYiEAKBR}f-RdPA_&=% zA~qIl`ml%>(g5NLijPTTbLO;v0)-8&;sZNAHoF)2hr8-TkvBI=nXCH<7|;Y$D346T zP^M_=7*v{^LyE(Y9bJoqP&CY|h^@&|OimSON83LZYeoz(qZ=GeX$=@iMcsyIlxSAV z(wY)-b_^_b?Yc|tO3<1ubCs`h7Crv$`-8~M&=W3!{3jMpAhR|-^49m?-StuG8G=s) zTh+QR#CxkFr|R#$Lp><9eR~z)Y5oc&V1a?C2Msi#XXpaFsD8rU8(j^l2tC7ipargS zGEGwYc_Mp2(vo9~HTnbTH#O1B^A2fYq_JsCttF-OuKAY$BNd1Ed$mySSC@=|zr#oU zoWzozJF?OXqUdavPvUXIdgO~ir#v<385rtgby37v6$#Z=_pUxSd;SRxdorv3*PUcmY(= zI|!z{6XeHamdDvik4}DEBZ@1=13G|C4e$z8Wk^mEQ`TB4cx%#1iQ|jGFSM>)E0R$s zJaZ!eis?oSOCkj%%op16wNGTlo>(zcI}idpLfA;pwYgGx2AZKAycQRPK{Im_5slXQl#1ALY&f zA-bm{#i$T6DwctuqRNVy@8s(7@)ORbY$2GZsqn($F&qH3?AzDU3njNGbRO z|5*rb8(S;i&xjP_CNRk05|Lg|nabU_09;D!EKKRTFJm0H(rb>H^gDD1+5;t1)zs*2 zvwC|Q;0F7*h-iF3xI#!hW@@D;7%2k$;PWQ(E-<1B>0R)S3v>usZY?c8uVkqMcNLNoK}G7g-$(f*YN zWL~z!qD63O;@GDt5f#NE^M+Epe1&ncCsECP12wp;`y-aid^1+ZNIt4;dWSk_SW}lh z2msZ<|EPw%)qY^^!T|vVg#rP|rx+fC@uplNGNGhw41z=bM-BeZe{1mH{-wdcQ{ZI_ zE!}AN9JQdRZA{MEEUTo#CMJS5hS>osK$E*P{9%;ikYmyg91B9KoOrn~MH-x7TQ>`Y z6ZQFKu!nvc0gf81O5->gUZ@O6L^kHw3fY$c59>HxR_H6)%S!wlx<;&guq=k4h3 zASsq%=P%?E_~{LBbbaMgD^|5uKT)w=&w?4RHG6h&a9?2|4Go1vWHt}S&<*!}y@}?H z^jn8&iSnBrVaDMS&zBR=r=lT1K-j7exbb{FaV`S3#fA~>zn}e&oZuT;HP@brMO{nK95sL}6&LAG-bSKS>BIioaE;1Z+ ze|;jhDo5gDUN{Mn^9DAVbP&(P^VXqzRF3nel+BpvnSoEUh-0wQr1=KEPa;jDGq?-0 z=m|;$L=5p?nMIOX3oB1p2w};Yxu%;;FjEz!qXFVOFi=cQxEb%!=baMavg*{AqN7Qp zV`U2h_%o3v73(jir1w#yyW{3NLq=8N;z<)s!RT zSWZN);w{}L&n8CK)O}v2$ z(*c<7!41HkKz=fZ&*v&tm1oTfa}Pf3qss|CJ=hhB2s76vmcTRbHuz0891Pl25>3)j zJZf>*qYq} z7lp`ekszPyr}AktR4G+*U9?!&@J!FbV})5NfH5+n&<=yZTQ;Y2OXnk~`ek0bQX!rN z>%f#U2Vw?S;`=jmMOAXtY@w?ErR+(sdMz^uvwnht>#6G}lk`8e3 zPW6!|+22+CXGo^)?D(yshy-Ha_>vHv%x+zosZpnd|1d=8FXaA))f2v4VeiN>>u=1ks2O~%@cD#?Z!SaR`mMDwC^ zt^rhc>@r;BI#1qoWT&7OejF)7j3i*Fh*j%B1xk|;2x}ygg654|gAt&0hU?Qj7TBGY zYUrS1;R>!agW^1o@S}~leOiU}sB#xe< z&0qfR1k559`}sZD5QE2G2#*|3iB$6S*87stf`JYVw4KV1(X46$AjwSQJ8Fsz7==|fC!7y|)Ee8#8@FebhvL-A#3>a0>GmY7pRsTO?kdyeuRW(To7 zM|BCzk)em0BJNyf93Wh2>?uaQNoXZN)>&&t%rCn$xk|kWF zPjh3V^q4k3Xto*%<{+C4vfwbx%;x3kY9Ohy*+mZ~$TZ~p+&s$=LqO4x%m z5w8-KMu3jAJ6U5OW6^rkmqpxSy#8RgIU{8CjJNfQJH+&raTH`+`(e}@U~EN?>z=PkQZ9b}&Zz!nlXHN=}k$bl>ReP6Nz(jfH)ToP^lsMJgS`%%K z(c;b*U=UeU(W>p8FZlpQ=aWra-ZP!vcA}@F5GatUv-V$&ZaB1bkgTf%P8V4M40rf( zVA9Xil0*ZQgiy?{BP+&kTbt=b*vhoF)5D5!{2o}E;SvTf#a-!q#vkGoE-$Q-6l-EF zECs91dl3_9`_er1%qEf5%T-&7GnYOqgG|s_MQaRdaworj&sG3Z!7Hl9XhGFH@yJze zEaWUQJS)Y&r}_$}O+k1{2Vxtox4T_LtOMD{rwex#)%ZP>;0acTqS89VhSV)uir0|kuJg@M4&)x$lL@v4o9SNDuaiQdNC@nv# zvDoMqy#O_~G&a9Q05f@ZDUo^@`Vo~8c%eiW*1!tT#|?QwofS)`n9X&@*vu(<0ZMBwBw@u+w z+y3^Ih=I@J7}|aoXvpX2(_ny-U=a_t-GD?cK@moSX03Sy*RF`V+l)8IE`b~YcWsrj zad;Z314?LPzcm2)Q;GKlgE~VlTm#;5`C{CCe1!j9k_2wW> z=Me}%KZE7tm7Iv(7Dv)tz->;uI78+Rl$f7Yl>H=O;^8q^8Wq@bDiJU5ym>e zEp3Ig!o+zoQjQrlIalmqH6V3Rc-S2*_hVBE?3#;=rvQMDWhdp zdc7IPsF;heL%EQz2>Y-%_IFW1M^FU!O|6dihi_kREuF~j@g##nnj6LVy3+D|o?Z$d z_Dy`9hQL}q`rVYa)| zoR5d8ZKL76iVcIEj{o*&#XiB#Xvi0U^bm<HVnZ2rat1A`F%Y~+NXag)*ApjQCoqYGb|4l3J zsMff*(Pvjh6rX>t%)8ts>hK<7D6|f$*nKst*dh1FVEGQ*kc9kTdJo%`fCIqxf1v<* zi{_KybVi9w$Z{I>A)`j8It&1UNXYS+b_L*2qYdo9oJdmNgc&ihVobv`FaUUQgHQSO z39lrC6l&sLdoT<6Yuni;CPPQ6F;yHr)7fdyepSp;^SMNI{clBn`{0ovDhtN2XJ;xE z=6LIctlOrgP|IcOfZ_K)=mWY+}|s7c;r{jH<+PN^wYOD1c39ug!Lhe z-_CE2UJKo8F9$a-epzocAasF+3#SGI1%+Y(c&OCO~ zok1x}#J*-gmgYEaO1QlBJ{F>ReJdgy!Nu0WVLlhpwrmNv_|WMzXq|lp1l~1$j~|H7 ztr<4x;HF#odb|CJpBH@Zn_n}of5xtBz}svWAbI}*yoE&FdzbWE(U_U>_U{7BIKYP)sb_?-!o|uAud?DK3ShSSy;&ww3W{-sxGw+o~ zx>J+a6bkCmx_^P)bRS3kjAZxtuuA5^>Rbshe>-H3?^C4zOY(A@ zgRKI1gB4E7dlMM>$MWKskJa8l;~Gv}&Ic@imvlJ_n`PUqj4d}u%Y>(%QGR5eXy3@E zv2hbdzR?p3h8eZ(?guXhDZE0+7Bp)iQUOI^_s0L-?A=x{qgtUBJOm~d+M zvNng5&Zt}MU8n85=aVKm^h#DM3{o;-YeM(i5mn|R!83hHk`H8fGjdZdz?i&0gJ1#4B!G85}WvD=HP6TLP zW_zHmOM(F1Xlr58G$|#&ygj}fpRBdl&A^Zv{KSiD><&X!Y`T>wEAwh_oXq$%4of>M)_A`&#%Uv#!x$iA(3?-gI z;y19WIG$@f#nzDl!}=s;DDoep&gGE8+{Na>Wn&`=WTT%eJ5&e2m_@_u)Y$;6yLE@C zxg}|{_4O950UkvryK_2}-eX%|x5Kn7MTquzv9Kk6;1HXfU0*VMvH1LQ$9`%DeJ6z`mx))w&r){N1B?C)9?7dS` zf9t)|UBGWzpPxmQifMir#$SLGDB7cdg_@r)B`8pau-1aV?`3h*m|bxD5fOHj7bUkw zNA}LJkMNMe_A`xct<0c>z;l|IICDPXG*LCJ5|gVg4~uCxGTyisYe0H>Zz~0R_EAOG zC%&NVx#X_uoYCXSY~=Dg*K=3fkz6!pbpqdh#%dPb#C(~+XLuF8J+T7j;A8BYdsQgi zQ&Ct;dF3rxX;9Pz^%Pt&O-LGhSr7=u$Umf`#_ipeoXi@CiX*f(-q9YLcLUhEE3$>7 zE^+o?Q(cB0LI&ByG)lKwco{l(*B__h6T=GR_I#&A5Y!a4TE<{EYB0ukue%BH@KDE_ zquF8(5eyzo=wwhKGLZoH&G#HYUl>BhCV%9Gx#Y|?+j29p98#-{^0F^kf%5TOULMlQ zH`lxM8}QexB{N<$+~u8QJ2qia*dq?BC69q*viWou2PCHOD0%E5@L1 z=zqVt$w5;Q-X&|;N2RfSudz{HVysj;tc?hQBs*u5Lf7U_mx;{GIBpQz9v}wTwbMN; zW2e?3(N^0=Kia%R$g)1FlYv4i{-C^CBk(L}&^$cQwQ@!+VCMS-G+Iv=*7g+bAeUW^C4i0zLbJMarMfMoVsJ%yU0DIEAUC_kEnKpqW+ zSLdg#mLm>B2EbfgOIH^0tfE#Mx4-U4Y%t%ol;U882a2ft2#JKTNd_h9Hk|vVHoL?M zZBGxxo*GH+Ho+_N;G)PwWlq$0i{=K>st<>v#2vT4xKYy;ZwAad`SGPezcs)DRY;?W zYP^*Oz(9AsHMN-)c9{gLWg453xoOx{UZ2jVNP?2%th!FV4fSs=D@8bab1zDnhcvpw zu+Io;57BwHZjw77;9zA8#={C=-4iMEH!U|!2!{u+mn;t?9FefjI0 zQ@3cEsNxA+#afM_>&1DDEV02@?l_Pt{Xu^QXtAbrvvM$c6>kC!kR;bipT_00Z?R2X zAK4*(sGo?(N=#Is6|#j4^5=uIE!WP6g5>=>H5vIrgvX$?B>NI9n49&o$3h>y*r!1t zhDkeCvu}LO6?!mD{Cbudw_?4p6v=yJHcOBf&W`s(#QF3T!ZUG`?{}RPBc&F*3mSJI zpmtbyfo0MX;62nlm3w{2Z7o!*&pt7=0zR*fryE3R0wNjZ(Y*IA&~rV${%mNuyw%>G zx$eNQya<48v(qbfS4`jxqBEX>ab(w}Y4U9>5E}|A-e_-j11bAzKz=SqnFT=FCPq-H}`ZcMDWV>}gq^3QjVjHk248~S)!-X;v* z{?>WQzG++Xhmtxem2=jhtU|;e`>nlMlQC_~L$eN@!GZ&S0oHft z4BfF}7-F*Luy=0Hzi4(Cb2p|G=k2KR$8aD@n0$Y;;TcK`8AV~ID()%ns1(@{98vC~ zzmQs(u`AzRBdwOA!v~|LLNC?`bzx{q?Vb_7mw()Xez9}z6nsU63Oq<9e5#A`?|mhw z0j-`{7Wm?n=7^sa$Gut>eEK~X0peZ}{%d!&`PZZNv4rnW-AI104)DO=60j+-z~6p; z!QILyw9J!UvHs?f+xrf)y0raoDTtrFX}%XV4|bjs6|5=VYAn(RvdDiGOKn)9xcxuj zljFZ)o^kbYcDcPrf?xgUPsq*d4;YWXbT_Ttto~oWD;H5I3n=i#Bahp>k#5fq-7)Q)W$}2vP)} z7;#ekw!l&TV`5?m zOoq_dbi`z`k%d#z6QyGq*U-yv9enCntO?1D!nFZKmCay0t+-+2G4KjFvt3 z%e$B9SMy}%3P9hqpr8NHg1nrC3E;9$b5^W)qYD`m0sr8F9(AS`$|SyNK@YGm%L1QL z^ytPEAwKLTV=8`R3FyF*cO&WtJXz*x-?SjHY@F=ENLtHumJhzYW>N$+4&EXvj+(fg zJeQbuE|ObMA|@v*sQlXv`~+D|>Oomll2NyRXhEBP5mXUzZgIKf%j>t+?IAOXM4gT> z88rZq&KT4*KKAm+Q+)5*Is?pjNBq8Z9;AAI-M-E#O$x3-Za){;QPnawsbn8Z&ttn2 z)Vl`s?}i0zE-}$B>U*&3K@`I;xBP>63fYH!&7(f=pz`fspcoSBe#mD#VL&}N5!9`x zq7Zw)u+H#fM%|{`N7QEdCXjB+e@j4uB0~VU5)pU5AzDW>KQE%{xbq%&VBZ&aSIn#A zAdBw2?cf7WQ?JN^0}VwnSbg$fNKp)=YyWZ;uE3p~itg&|3zHi))(vd?(Rr_qQ{B4uu5M+2uMSn>U4Uql`V zV9>IhX@-s0SvOqZ_>j%)gXITr4$X*h5xTVNR)M6Al#G}^DQX&YYQW0Hw=!N{NK?B6 zj4YMx(rp=aCp2J1^r3h>J68#IYc+>S*!3pQfXp_Ti5dt_@Jw%5<@*KckGR1_za*bHmB(0scp5~2L9)PH zGk|3k(4NL=o*-VG;;SL`sxv5aWxT*H^Ot!ROkdZ7+5Xzr6wNV7XISwvC#A0tYn-+h z3IrEMIEBf1POgIErd6#?7p4Tn7yc25^I^-31alBFFbQxk%A`Vk%c1h~BO5dp+i83l z47fwvq6#e#ubU5tfM2!}2mdnC&`vb)O%+rvl(j2%} z<~luw1{*bUB{9@E=f;~=CoE6Oxl{GCk>wnkOSQC!3L`N?a)mW~a*zTfb5gKgNlb=R zz{GcW{qC8JEX&zA?0?O{D5=ZeTPtpuP@pfwsYA1a*6Z<^B85T0(uYFExCo30^DF8@ zz$&swLsMk9BSW4xk;93ljJ5Jl$v~pFiI#)1P zbWY))XMVk}4g%X5wIRl-$0|ktx6l>vL>*NjL>(tlQbza+&OvROb-&ut9h3vRSQ0y( z+F>e1kAjr#_TbanHA>;27~w@&kN#S~gAJX2+UmUKs6^1X!=gBjrfKfgMgtA9==yS% zx^=$>tTZ9>GOP$NRCIb)O0v}i39%UibJ)vgU5t05IiR68BGae+;YX#yKaNfyuZfaw z={b0TYjrf@ZxLK<3M!#uGQHFi=t->3lYESu>BvTQVvQjG3xVr|Ss$S)Oi_MY@Z1*B6#~Ug$&vpn1EgW+{v$x-DhKy1cMYIM1 z$)WYnKdgu74aVX4)f`fjq!9LuxnxLH#-^^hc3{@8r^m+Y5OsdTuq7{aWKjuSX(@_W ze=20UmJtvIi_&z!)NZO7ZG~>FU(oAHJSdmqm-*AA)$oT&ACBv7Hbn+5kCx@HJ@mc_ zM^noEja2~vgWcIGDZY)`i#}rldGV=)S$2WvM$M;uHtf?bi)-skNh!%lE;v|rSNLBi z5&;JyHUB&Q465{owICV=kEO-1>t!Nlad{9_a=2rg0?0dvXl0Qz=d;jvo_V2~6hU!z zi9q0MEHVYBqI7WFsOk}2D@Gjl{aZVL1coVzqNxU8DdEcQsaxOkn6N2nBwGbv2a|{I zYu!gw=bda&+X$1xkXj90m_7BWD^4MW{u(;iH?wcA)cbb^Ji9RHmo_z9B zlbghuIQR*;bUYnv@~N!a<9dm@t%IjNxm(euU>~gGwF`Q+l9Q)lYbkd*W~MFGwVJgq zO#2kzKz9@Rej0V|i;EaQ@xie3wY&Wki2I&Xt_4SwCl;Q#QzstX5fdp?G|!)g=dza|{m}uB&t`=QkZ_kf)g4lbesS>!a7t(U|*za zAC4cJg#~WXAw_o4A6o+_xhk+Ba*N+4c2MZnUns^qDrc{yfbPw+&SkP@Yd4O$#_(kT z;jB-C(_iD={J|^YMm8I^lrH&5y_L3aT+NnLd?2VP4QN_p|0(sEK>qx2g6HaWoH;z^ z4868a0nDu2%xLki?7Rff)qs{?^3Fq=c~aT_j3TO6HVg&r#kgt*bRS7o(vJC?MoyKN zvq(qAmASDRet0nyNRKS!>~uz>ns9vpDKHsELGxr*-UTzK<>p-mn5eb9pr2Vi+jOcc z3*A?h0_^J}UH2O-UCvBmNv2mNR>uhmbqgn@rh}ayAu!oY3Of^yEFbn_tT)NFkLlUV zW@Q}#U5RBGwe0u{7z>srM2}NwyraBw-Z_4-bY`6$4X_eY60q~Z5@Zq(vlIh>iO2H= z{J8>aw<;bd;d8z-MxHt0uYxz6xsZZS1mQJg89Z0T7$-gUE)8P6=JC)};~?3WfD8ox z);_oFw-V8+6R({1E;pwMqvH9C)JDqux2zjFP>M#a^y8+<@#j2sZ7VU9R`e*dEg~OY zu+0*_OU$y$-mx|S3uU+0Bajw=?{qc$D)pnSXA+|6hX^l8kY*_2Pw8e7LEFWSHqeHA z?91MPo-UHKpdIjDnk>o?@)}hHL}29%6<)Bl90ni@Hi#_yGI32#?hEG zvjp7ncP|C64tua0=q-F;KgcguX(#=N#s3yT8t6u|GF)paev^=EK*UM_-zPa`&34D8M(Ft34Rqqwc;bRk0&jP%0p2gUSo{BXoD4(Hk!$rvK*l%lnxV4mgx(hY<`f#19c41Yw@YkegICH0U&z z5g(;Uq|ag)VBA0wso}l2k8U_Z1jiLb6v}vj6oS{4{2gQ=6#-DY(ocf~Hd1?F+j@O8 zkn(8W$rh?hNG^QS*i0#^+{&kG#2xnRdgaLzVZ)EESU&d_h6s%9W9ou!z6jNvs&AT0 zg}pc%LPh?6UI738-m}0w0lin>$LYeSo%QPFEa2JoCOZe6+xRhN#b|x`gKK@S*=_dp z4=9M$C(2I%ZwKhb4Mq+@TVs{t@~1Z?fir}z;Mq6>8Twkl@U7c$BdnFMHD^PJ$iFYo zY>grP<`Kd&+zkaHGOvvd1>biT&o)ZWHh}N*za2U_$ox8J-v>Ej|AApDFI+;X;oZ%H z0zt?$MrZi$;LU0tBPaIvb8+_m5i_jS_b=R4XA-s)R}3>1nwS_hB_Do%`aq07-4ecw z$}N8iQ*Wq>EWce|=hz_dKZIfG3k;K4y`fIgzt8RO91ZiG}Hwdr3RSIz&!alH_^K)w1G$CXs< zUmVv=6sb-4KeOFG3_6JUn2h@**(f&ufs$4(=|iLLsyZ4v7cY8#OUAqbukI34*(*1Z z@-M3wKabxpxKzzmtt=QAS1Ef4q4HVF%$6Ee7D>NLxzq_U$GlYY0irWZ?~2vD!`Ji6RQHER9G# z=n9B*SAZ`(2Tz2j1pP_WX}EJqgoGst3Imu@6YPp{#N6ZoxcUyCN%2=~wAtaYU~!Qm z3;yEjZ>Qp;*obM;7kexvt%i;2L#&1*qn{|ik-=nUUaB;3O(0Ot{^Qc$$<`3HL1&F& zDCWHqH0-I5rna^Kfz>y|m1Ut(?3>}r^(pGx#Q8YUSQ?jDH9bq1VMG$E#8dUgMX_yn zilA;M*VYSIx-`1R;h<50m7i>#xihO?2vh@F)@QH;s;bn82@X1#Rm!U!_fr9_-TR$! z+Xrj~XO|@>G&DGLQtjRLCp2|LT$U@E{~fGM4abHz8&0VAF3zE!+@Qr?VS2mk+ea*N zMd}M)8;kt+ABL+T?Y|hV8UHX`Rgh@t78SAp+?X3fqACo|OQRG>)R`3acHD#;cRDfR zmLz2RmJAgbzrb-sgS~}`v9`q9WYggl{dZZC#oHF!uPm(dej3)x7*^}qh+WV?Ir1+X zL?#!Ry~~A&cbA5_omUq0funv+jn3DCR2x2o%)5boSJ}mUwfRaHrOHa!-;3-^e&fCa z^mT9=Dy)QdgpQ7NJ7&du(R|6Ou{lq@@}?_=@(>%O2>&*A#gouqslw$vyfk7-mkDDW z)#+uRWg>rmM1k)_-te_NNUkYOT^AD#xqZZscK6Q5zp|-j3)zQ3a!jHj78Y;!%OF)I+ukMtj z-G*=$$FFg!40D0jQO8>-SJ((?^E4$)jD%Dp%T5{T4h^O4wxtX)xOgRAWUS*^=t@A} zL2lg)(k;(R>RRfcxNJ09R`hK44u|;Yd}^tqT=6Xhb25%M#NcsdD^bo$OD^r9<4UDN zrES@kSbuDN(5uJl)o;><0RT!0GptGxVmqj>x{9Kqw=7g0)Nft-P4eVgZhg1<07EWg zhQorWxi}WTU?vVyR_cP9b$i?}Rwt9g4q)hUY|`pemn2{z^MzaZmO7SM0s=J{~-May$*kaUgIAw=1?B{a3V)dzd^5<9}JXf zYM5p+z!vu_DuA^Oz6@OG{_l-nH+905wD)of-!5f|FG{Kq zM3sK$aJ|nZ*rYKVGjXyTYWqqvsXFOmlI{gK8&k7k6TkumnygCkb4bccgHo^~tT7jP+;U~FK ze=ia3O1^%+apy02%}&^*ek(@@eCl(fxQZqgVDkQu5vPmogmb>hRZJQ7+A6=ZgK35M zd<9--XGSX;}G4inmCZGC3+5nH>0_w zWi7iyL57`;ykgrecpjbvE|6Apnkqcj9BbMg7!F|e>5G+ye{23Y2pIe{xZ%^s-h6d- zU;uE)A^MKAOm!xIWh9LJa0DC!h2pOht^aHv=5QvE!s$YD@PY`OGaQh|N2#2yx!`h1 zwu({z2ECST{Y7m4?hYS7NX|OEx&1u!kA79?;GMgSvx{-|Dp)7kBshJPY?f%_`(Kvc zMgVbFaJ#0y0Vgegv2JPcMCy$?JCOoJb+p4`_i0MYtn(t+Y_PaZp%k-FN#t9HPz6Jah`Q2n%#^zo|{t0qX{TRP9v!*f=7* zw3ZZWM(8f5XX%WHe;HH}s!ZkYmiQ14mCCiG9_QIJK;oDw1J}7LB^T+Z0S5!N=`@6CUwe}k372h1Ti#6W*Qw_4~?{)(KJ;S!8 z;tdcX#W<19xWctawjfx#EGawCcn#W{^40g|?X%WD+)k=zZ=br(*xDie=Z$~SRx&C` zJw}*z%eYh(OlHq{Ut@gGi+zTzwBue)QIXDKo=Ng;nLH;hy+B3ksAB-M>NL;rN3byk z_Mt4PYf{^ja!%4`4J(ZF^%+1fQh0HK9S0)2pcYhVJDd{M%(;#SI6uAbnz>8BvfD&`o`rmScG9u1rdePIa@v`wu( z(f>Snj=c~C;iHXXji@`))cU(!t7@-;y5QW;czxomNU%i~tjXeTdzC&dACCZB-7vYK zQ)XzX(k}(4PTS~(Jxm(~yNS-`3G*p-N>`ZY$zstM;M#sEkz5Rr+9jz+?tF(;?LIk3 zR+$~2tkWUll?^FI$2X`} zvu5?GG#0ROZYKjhe!Ux%2+9sflbbi9*uZ=2aAFp2%)`&UCG84065^jYiG;u?_{Q2= z^o$HKS+&{YzcL!31?@m<%I)bY!dona$5ol4%s2=6NzaPO#yUzySlXK<{gMdg5k@5s z(5jCOPZtyBSj)|YI0&{Zz+lF-BXqK)WVJ$d|DP7Ev~`x(3>Y9FNQ!@0P5+uPHuK1c z_P;sJwJ+^(q%c0Ni(8C*D{QeN`F@l)x~e+@QCL73^rZb3|K>HpmdMR7mYxkgipD(> zJwiW8J#LhR*uiDHQ?RrrsC{Ccl(o5>Z#Z?AeSotS%AO?ES(OndZT-M|4>rLg*B&gb z1mNT0{m>Uj?wl-WWynqlr}{}LQ<|E<7%!ZLg&n3ELb?}ggQ1faAAQ>4`+02j(c$^% za`~KUS24gXg^xdN89P|pcifoZvx2SrgUf@usT6G&T<*1VH%#6ZE34}NqU;`nBmeq! z;m5XZ+cqb*ZCev|Y}>Z&i6^!>vF&7{lmC71{hYneseP)Rs_w4pRsFu#Z>{V5xuzAw z3+1)o$uEQL)jIPd7OY+KMjdE#{@jlTBZOJ3^T{239J#zFeuk5bOr|Qx+xC4~b!R9BJEtrVSMd^K4R9cb%ow-JyW9hk6!y zH9ArNR1Jj>iN`eb8Yc{8=I#L>JyJug8W9N#61g0`piMhZ&KR4fss&AAU$9{QjvbyA zGC_l1xAusV(K)?J8EnEG-Et2Tx8~h%OdFf6@rprbH+|myk9=vOqDl=^+rJHKXNcM{ z6G~ODsO+0N9H_Bzh!i{t62;OZmyRF=(ZsF*xPpC0c7_RD%JtHupdh14R20OFY*ZVs z>$MF88@7SdQl9Q(*6ym8k*RU<-=(3q!_Uv`UI<4laF-OP8E;RD_0JH7ms}~=tgK#A z=;&38v>LbOHEhvfKVHdN_wnxPeo3UP8Y3 zJ6be0!13UGgXUrBIV~xPZ8ft%2|Y~45h26+c&b(d7P+%=?@l0tW2W8f7wX2SB6Ye}%OdNpCr9sMUw=mgBh>C0fPAOV-Eho>iE8)@>TZhg>%@vh#_9T$ zoxa;GWfACEJ;QU8yQynEZ8~nd4i~Np&_Qh0EfZ+KOt20L? zm4}x{(FpcmPq4n?W1Ybv8+pY{v)VRiAy1B1;*3P|C#%3VuL?fi$!4IG>aSa-S6Q(k zuayJz8FDOa0uA;}p|VwGa#7#I5AEdHW&KHA_`qp2FF98W&+3W@nZJ-GG|^`O&5Dp~ zDDzvd3i&Hump256*FIeF4|>%Oq}bEs{3f_~>vU4hQZ^+oszI`tQJ#LF2eVKdjHbyx za7oC=C`{ZVP`6UkCAVaF#^L7UtI2z|+~D3jJv1pYGGUKrTEFxKMZjj?N14dHLa1fz zR|$z5^3z+$te2CT!l@Oz0H&6(z15W2Gwsu$O9p4b)jDZ^9hv z;C^584s?vq;Mee3DU1LEI)Udrz0;8q&wMx~?HhIO8Yu;2DJ<;odjMpvUk9~6w4%x6 z%tolP_Ab}9wqCck(*6*^4L3>3AAyDrPUskwnxdte+0D`hKf-Zrr+85Hr+w$sc7W`H zii{!KfY0kZt+e>eHLL-E(bcYAj2okKHqR~{sA?(Y>2kUUPvn|hjEtleaK~^z@+P`!=x*DO}yi!xn?)1TRapvK_ z-H8W_zC8b28GI2I+t!zktFIQwZ+E$8a9OuDY>F5@<{6q$>kWwke0viWN)tDj6`o!N zdizR0s;O-D!W$wsdISuKl1+59(16gPTAfSSG{>yll@oBwb?Jk_!4yZvbVWL&hNPj( zX7=;#VSEi>oArDVb&A;f!(D$%)kE(FC`o0u0sASOdWVMjWjP<1vD*berqSzC6;(H^ z5`_{r+=K+b-4-VTU~B1HglEK^Wjj4COJ$Hd271Ii!t0OLa8P$OOU*5VjIY#5`aO9{ zO4?^icp&Ci9vS;Bo0J1g=WB&5nPU!0EB0%Joknmgi3DqJ)K;`Pm#LP6GcBgy?8$;N zTp`i8NTzE+%r{2R1mnyHobT=xDZB5I?r%M=T(S%80AH{Gb{_sNO8d*aqhYgxk^$eg z)4OF?eJ#gjEpO^swqw~m(EL@6ogo&Rhw*+WCS((QSpmDIP|Vui^S46i44o1kME$c_ z}@6>qaU~x04B_ z2p_@hQSgzcIRZmq0Mu^{?BC0Jf89b}x^>lr0^SSV)*kk^h?9kQK^4~c+9Tv%=YFhm zrn6bV$=)7N2)EEiZP!Xr`^83Q&P?2Iovth!8yOyWKn3>bulwo`n4iCzIBR?8-d_t4 zf~XAY&k5PE&CE2j7ya7QdyUj1YP%m~_p{CW<5yg~%Nn6u0caMMwtXwFig6=F$`SYR zr5cEXDiY@tB9jyAdMald6R=#)Lx>$mlVMAzeE zkN46I*fPfWJs^Pyv%TA+ZyS)t^N!&@x7E2;kWOJi3URNQDs5=--52tOPdvC ziaI55zj6%MnZIQ#DYp)l z!n$7`2c=->L)Yx=WP;n4aa2vp%Uc=o%-A6_2z@4SYpr(@k6eCXyzdo3@u`y%3D61`PPteY=d`p<2hGM|i1&)Z-Um(K>qNP*tQ z*AE-h=WS#KE?cdrmF=)OHiF5a=ap?&$@`5o0040BQn&VZ`TPlbrBW2Ne#VyO?Mr>^ zuOuw}Rk9j@y_2&s8P*>WEVZ#(S=VVw-tTq1!3+RVH~0LCf8oW@IHT6JLC|B#u5cp2 zXtA7N?&36Y`tw|xuT)xT2wnK7eD;Nh=Mi(!`s`!j$3_ zDdzPbbHiwkqp@k9k(`tM8v+Di`LGynGtWQ;{$2&Q7b=iSnKgWN?p%jEape%TYq_zR zPs~k_b&E1ksbvCFW;@c>AyIy4o7iZ{n8Cm!l*+*^wIr^(=$fY9#N}A%-Esam1n7&{ z3y@Qy@A`%SCm3&@^8msI#JQdL-w>cF^bj;+dvF?$9Ljh9E>{cyu58P^)YI&c_f4P5 z{%0SFy(MwK_#qCdGLVIJakLOCc+d za|q>R%t>)qjl|rj&VJGspo9zt;; zs=ucICKNfk3*iy~hExM7fWe9Tw5{B%5(F=pm#_Oz+_ z{rs37Y0AJZ7#}(k+PhZfy)GL?)HJewdIe;?PPDl12D~=EW^F3B72=QdpOU%(UB!ra z3N?xDA6+5tQx$;*01lty)b- zfjX_fd|BBhi+Ss1d2zDNmjaojuEav;u>M3q5)tnA-Ca{tbmAsL0!_9$EJb>{x78!?bK3#AbJYEJ#5{BO$H3 zJluhD>Idx>-ypdX!nSZeq-q=NDFpSBzi+z2tvLj_7cl3m+}4=6q%H!N>`quKpG2aD z$%>Z(Sb%vtYB3-VXu;bs2>j~Sw@b^Tm*s*&@S#ILS0>G8A`XcnTam0yWO(i-hTa&{ zXnyFC_;Vr>Yb$hD(~SvRTO3Z!X(PUuIV|~%gWy9cGTu-9Ab_~b`_NO8%(cCHwl^&B z%Ht_DX5(@2PU@ETo39cv_5w`GvNSCjz+7PhIMry_yDtl0o)TDxUn56cJ1P>^E>IxE zU%5yfU)QI1aO+j=QX>>k{n^A`XT#j)JsxL04EA+|@Zb@cHK-$_6)zM%Be#z;GB#s# zJ+ed&7G+yf6$WIGa**kx7i}w{alOYAH05le-6er-wi0$lig?t~$Zzx#{<|3TFq-iK z!24h}B%F}eU>eeM%6A(b#Ey8*+Y=fjueYKh@N8-Cs1bvOB4-xh$njGASQA|c4NLIE zvR1Z>q&lp~lZ6{HpMx6jf>lmvKUf02!^wjH0^{IAmQGMJOB ztyj>w9yB0^oU^o^Kiy%}A{V*nn=8R%0P*F>%M<&Bu~R=eoesWm>P`Y*$wkwtCL7yv z{)Z>6d(RPB3$iThPDZs~A*RX0YxGB??7!~S7+&anlc{t3Dbu%tl#7Id1s`iB2 zQ>Vb!VAUFMYE`?i{2CJ*I`KCGlLzNa2Rj7&>awO@^nHI~Pap&^O<>=qXW@AJ0qVDf zif@P1TTa(WgH0OrTPS#|MzvNcg^vUyX)Vbf~esZ9&`WTfBIk zoq^J9xgMWZ4GgH*VYFK;wz=7D2&Mm;K0#+v0T>qN0cK%lIw)oNs^A-^>CePqV*cWH z`+j7uU-)Y~ZH45W7!i$PE&>;;19Suf3o`w|%y%>B{r#npi9&uIqCm< zb?nQ=cz&91JwuZB-ZI^D(+BU0^V zU@D1rhoD8(V;Wl16?kzy%vc@N$pj^ZVg1((sMjx_PzpuKWA}QV{>D4X{UbCg?=%Ij;T*AAH~%b955j9v zfsuV>ZU6f~Pc_Z;DXu!mkj(5L7do(ORzZBHq(+W;$iGl@!(ee>yoH6z$%WKycRce4 zlaaVjDJMtXkMSyztY!!1zA_?d(RXZYGwCsX)OBhWCBW-S*Klfgg0$Z0gjhS-Qwipg zye>j_Pvz6)_L)YfX^Wk-YNOI_3f#w^l4>k zyD%lcP(eK&&&6a2I%IAZ3!=`@PN{u9iXuO zjUlbULty<+2kTRsm(DnxXdg2wn@*oxaE5(5byB?htFd9&l ziWf4z57z4y=1HwE>zFxOMb|$K4Yf`;UEF4tmX=_7B8wW*6`vDjsC{asOE_*v6^xOs z)M!)myYqK%$JPK+U%{=lFP2f{#^;S%HnyJb#_ZD+2r`Fv%!utr9z+v|^Gx#XrrJYF zBZLIAjzHzW`4F&FpxYvFG9_@dfP#}maOyfG!BXgz;<9YAuSA$J-!r@_m@&4(81Qy@ zt{VYDaEJm$7(6tr?2&*QbC<-Hj$IcDt?)c${NzeDyx)LN+aJA|buip7{n?9s9hpH~ z)BFzOqEEOVAIAo!--js}+_tS}8;cRDJOr=`H$O13)ylQ%R2U!mYHwx-L@5I&2Fg^O zq)4Qd;p6xj7&;7!2#&#u8p!f&C_uzb-U-T3V1wo$3WPC{Wggj5_h>gQFfuEX!Lq64 zrDaL_P@(`nJJ#G2fxcez2Kc8c!8Z#&}=yZceMSiKDt8n&fBM(+DIesrBy z1eN}Tn|I~vzlkhy2qjbQQ{rcJ_(dH>5g$E+`a=u(D4n>Yx?&?sAqYLiC{q%ddMXfT z!fe;ZwEzyZK!_ObvN#>hV0iotb+JrVCk+pJdpHEZ>Trg%^%idxE~b^-07cX~0{f_Z zQ`Nm>VaQuda?@yvYa6W8E<-& z&6x!Nz6rOS(cQ169cj5|7hp(%rMu6UDf_T&Qf(QuK%Cabp##uF*P1dwtGIVsV=QOb|;)5@QndAJNDP!0Nc zG?$IoZ|c_~LoEieN2*DM!OWF}Y0}^*Fm(RUMBH{!Q>)CE*BPkB8Y1=-N^xT*=9R&o zfJdc|j8}6CC4u&#>I3Zcso~Dz2?)3MwB@OusbL~`(yYAvRCK5m2yJ1g- z#$TU^Y8J}$J3JMO5(`J);&O{}G-BpiBjY6Yxs#VOh-9fTb597NNX-vX&Pg-|(N#NO zShlPwcbndpF1_vTKQ_B64r&;m>kiGV3P@9G6y8`(4Bn{NWn(l!W#+S;bk+n7Z{h^6 z13}$r%+8=Wg?GiAK*r!Y-3E{|vMIEHLI>FXOm*{I(;(se>op=w7`NQ?(Z3BFuZr8U z#zjvdWAp@%!}=|MsyRH~9+!n}zVbU%Y+5}wrk)sOs_&08M*d7aWd4xN?F6&6RR`z| z=XHWi|K-6n9C}1Qo^vJ`DczHDp=&5Z;icbRv_b{!>N*S64YMFXx=;wJ8=STSZY(1^ zF^gf2XE#bZw=6HOuP!fFa5s3DF09I8%Bn-NVhCA~^RBf@+Kv=WCqT(%tpi+EqdC-g zoP+dnqD9s;;nlEw1Pf_-CQw^V@E(yV@vvI3)gCxa^{ZjD^3bc%f4E!fFWB$0+gxfF zEw9>}PqTYqc!xH=SbZ{68k6l6

      y>c)0N8p{aPB{*B!I$og?>`7kBMODp{^$Qn|Ur>vg9dOD5=*MtP9%v#i zbC>AmFL27xu5~N&r!qKK5cMm4+IUky_{+(R zyu6wqQzp2BoI5o6j+6Dw-ax$&3DfbW0;9EE^uIb0rWw^QxIDxijc`jJBY?Prxahj3 z9G}syScb~`ZDpLAAKdr5phMn7zARX@It+5k{?27Bv8t-S8Ek%hfd2Qto*Rdm`?l}& zUYS*z02+k&|MXXL`F{oX{wZKzrM~28m}qR$X<;W9B_lHu0mcDJu35zU=St^TsuY)q zTA4)rg93+9o#GrL=_HW7mo2pi1jA)iR~ zG-7+!?2n1j6peAk!sUrY%UYqaen6aVQ2+CwDnx2;NYpQWiuFt?5$GvuEb&hRdx8$d zY15C$g6{_QmH%vDhhscITjexODNb@H`+<`fpvnZ{vUsUlbOQL}v=2Mon>-&B`dbA# zktoqAoNsn@NnneH`;b`W@?Q}(YOyMa9;nkFKEDnEeXp>gp#J+%Qwld?MD z#z%nWRD_2xHFY`W4abzt$-0wc%r=5&MX(@`K9=9bj)tn_+{Law%UCpDiM#eKyU0Pj zGYF8XlTth9*0uVkZDjUc2+WPDjqxNcpb6pl@fZnVxbF3+xf&0rE2HX;?P%Sn!RN%9 zi7ON`P(zA#!G#(9IZk>1w1c=7PrXtEo9Evm9TYpVFTkXU0L5tw7y0(|@P4_`=AeC` zzejr$9Gzd1*q{pM8$h($$L@fFVk6-PV+<%M`CFl87PwJvX&oZZ`--I-(sVGT1{uEb zxm=jAt~mB{9(qDb7Zfsqn6LpE&VgS~Vv47{?}l22f6Ka}s}=oEEzt#dn}%HL&@(y| zcUF~>#73#{Kk2f3+PdqZHTZ_{(%>AfnWrN{+0cy+MK#Fu6-<*Fdn1iSAcN}KWs zn+t;tj&iNT;J(1gZI@38TyT|_kZyCs;_C>3Hkb$wpzUb~F#~1vMkdU|%wj{In`aFS z|J#0Vru~9u)fqwx;=ehqR;6rqQU7XShbLn1G*`h8cKIDY%KzQK{)YLl2KJ1_`TuNS zm-Fnq!unSOJEj+4vz!?HJxgxI(O*H;zj=6aN^jK&lQoa!Dy8NjH50jKiXTnn6_n9^ zJih;Iyvla6+KBkx;2IJayD!w<;GCXywQnGCj3AIc}^0Is>{rG)OB5|oJs zA8KtowDN3_$&?O?MJ3`8^j>=U`Se8czYtV(BdL64D`s~h#+@eenR4V7Ln&ly-7!(4 z_m;ds>r_#1x zc~oh`Sj}s<$S7r5=R_v)bLdw$R9b`Q9N}>8K&qK_3cL9uYeG(Ay3f6Zs543Nx3N6g z=3Y(Ufun#%q?lYtY$r;@Ig%D;ubj$YGt=NjAhhG4i$W#LLOhJ*FEOCWe24gie)svy zRRh36d75#taepKnPt!0lKcx6h{%(fHw){9m{mO3FR5Cc-!HFX9%-y>PKd+|QZ|zh1 zsX6IV@VC1U(JkAc-}U=cA`A!IDVP9O6EVO|>>;>85tV9ll@->wN)94%aalQ}sj#rN z(isEBHcO;BmM`5rIW$KX=g;{gF|w&F-3GvTeANc#pmR3ZkdT*Mcag<4^_hS-q<|%@ zSNp~L;SJoaVOW{};aEJL;ktDt`jBDTlwDR18}nIV!I{QF6#KbSM4nltrV7O_QiTp9 zEg|euC~WfWl(wRh+Z5Hnu8U_u`e9}5At}0u>H4j{prpD?qt%GAS}0F9ST4}V0$u2Fh4hQEfpS5G3YacZ^Terr1%Q z04#<$LFFBnDMfo8sZ&Ul>PGp#pieV&4|KXpt8wP1_ktdv2$>@6h2&|?at45G8k-gC zUj1YT3C;`V-sZ9GzbQ)pOGToYlwv!L*h}qwfo#F!*FDAzhODOpUW+S}u}P)(<#gFO zV_zVGwZuw~YtXw|%UQH`l=xw%84Lsg>a#iNl(QZSI4x2jNw_6O!0qlN=Nx+&DyP(~ z9aJ;i+h^7eFZv4Pwy8-U~UJ~7sMzJ`-{Nv{sR*pGPtRg z@0U}2O@Oa$sJ({4rHhI2hO*ryC^MtcbrHdsPsNCzAD@VKHDnw@7#^WxnVm!ZQY_L0 zEHAZNGS$3a8*r>u+!N99ynE#tV70Yj+d#_&aA4)Vdtdc%nB0ne*I3ZJu1 zddTNQuKOl83kNDWJZ;pF-~GaSMFVRSywt`!DhC`M0^1`xdi!sHZW8P~0kuK4^Y>l; z_a(r8Uz0>|w3vM|G@QXJn~fFlvh4b7Y+!wgu9kp$oBvG1E0_2^QjAM+7k4#v95ZVx z$Cg0ez&1FQ?J(ABd4_ zzKu!!m%jE!wRppOZvmOJI?4N$qSy1e_eaaHb?gt+|Gxd>WhQA5__nOl1c89~{yBM| zOa-G#izk4k)u4_E%a|G508H)8DYbZjU4LbquSLGE?BdgbbhiiScKa4BXxEV`_G zGg8ag*4k#Ea0|}eI5U>vE8k93*Z5-X?R~CX`p+~6S1beK*dbCnLcrrhm6Uhi!0*ry8aIxV~3q;AxsspwL9SITru67U~{QPuvJcr!E&nq^* z`$&fzWpUK+ZDN=Xy)!o;aqd0w9rX*OaFAN2oFFv|?xM+HED!J=md}?H2n8YHm4kq7 zYBbu6@Pp7k_ILC!A4!He3|)dbgcmZ4fQeET92Ti8b%l_JsAu&UR_#be;4}!k^GRY{ zpt(5>`WL>J7`@FriPdDex!8S#5U2_=utCvL$BY1n)7o@zdpa|~s5leR^WmBY@y~|K zgl*XD>Bh%P{U2IbNXF7d+5RXAC+61_TL;=1fcHk{HCGwMh@{=!5vyEZbJ&4WUE7A> z$u<8u9^c0GVBG>>u?Lbvp7kDnaDRl8{YH^4W&9%8E7b7kJ@&P_1+=pmyq!PHh#k~s zC~7EHxfvF)s4*D;c%I``+?*^}xF&>aF52cm5V-k?^)1m8%V1ma5gkTkHEL1aT)OlfjZ?r-by4mkaJ)ONQI! zI)N*dI3{kvdLFolCVRj?m~u!tabLw29LZRk%{CqNt#tsnr-xQ1hTmFrI5qU_GmAwwPijSouloJh%lOOX*b zo5VFiIwm$orw8XQ){ozvFxd%+_-@;SSqQVN#kmg4>@9GZRkSMLMDoEW)P8b zxI3YS)w;wR3H6~k^K5;nm#v&#=6L)K`v@BRbMNlp;n3Fh76;SOW?U-GRBg1#7ylx4 zZ@<7SpN&Y~>RFew8Fuji6%UEYj$oelrYw^+$Ru3Lcnay8bA`(EWcf1{y|wSpgo}>EAs#jYc2v_9}dwTP;vFu z04wq_e{t%-QKJQJZ{9OeRG5rN1>Y|vonFoPDqwnH**a`Oz=ip=h= z19lcsG?1zxq94_UXL5|D%H$aG7AOq?5Ys)Ae3g(wab(|uvq))fNny+DMtt5#Im0mM2`fW{(V5 z-8PeDG%Q-Q#P3oOsq#LkAj`h-{_hrCi( z0DYl3tcAD1HGbv)fstPzkF`ajE^qZyyz_TEBT{Fm#NiQq%TM~G_P3G%^%O|F zpOFw_zq2zG=xgsXg#=r4KrT?GOm50zK6j)J_Dybz4GRMPU`rjb&=wZEhq&_;i||$| z(m0YrbjVJ&CzAAsqx`&qVtDy!U$Yn3mWag2L1YU-%&mzrNmWc-kvOabq}c~gKz`-t zj|U#509G|WE^{!O)vcjQ*n?F8AZ#t5?!#(t9>qm&p+gYSRAT8x54W;5#nFu5$Uu#^ zu`dlyHA_sxqHn_=j1x)IS{FfHcP+R{t~|-4X*}3p{*_%ZFk<%+)sU@$By}ev?iXuCzsE>E91ms8;#)$05g-e);_{i zal{h>@<-eyB{~g^`k`+_X~4UsUJRigOxeHr6fO)%7f<%D2MaT~0E!nRX%`-!E6<@< zWI#o;^AB1|G$w-&aBGfaDU*?AzbdTeC3@@@loaiwp>pN00qN!V8G1!{5zN zww%wl%Eb^x3j;qM!kKRA6d%>IbdM^qP;4edd$Lju5uA!P(a;I}61Y*uCB@Dj(S8kx zv`*USs0CKX==O;RB)@Gm_ zE)Mb7l7&`;uG`~ojno^aEkR|l_4qM~YJU}~`UqB0_p?GGY>grR(T(HhA?qHAj0A%W zM3Xwm+pK)m#;Ge2f?(RqD1?V)&^$9Lnd1Sl@KC%YQ(&_yATCuU*^>v4SE*=}*GFR> zxITdz_~T*R)x}KOhhK-X(M#oKy(h>Fq12|?q~D#*0~Y(p=oSp@XPumY2%>DzbZX1X zAxWg}T>x za>EZ%Fp*UYD1;g(W}Qni(U+S_6gH()KPd7`A>EecE!rU^GgA$-|;u9)%j013gBS#niSgF`r?&J};0$JkiS z_vRl}BE{+C0~pH8ea;p>Y_^V%F+l#3aWGLi<>fSSmoXA<;XEg^QrJY>Q05?A5eDOM zr?VEHoRsVw|9@WqO7@Q_GV%K4O^JY26r(?G1R0g$(Q?c!4&-mAyI zDYFA&oMZ1I=cPZO&~=;Y@6mfNy1_xeAQ7*a-i%C7vnIl9ZputL-%m^Ara(7%M!u!k zD`x_XQHq|#pFU_iV+f7Pzk**;Ax7vQC(3$0gK;+%DIx^-1EOIMA?#s3TX*NLAI2b| zZNewTnpwQJ3HkrejQ!Fng!IvOAF?#&e`M_G)3|9M(Eq(uzE`KkTi|Ui$sy@o$ZMkNbM&nvGnPe3JUk+lf`NQatx6mH zNl~+Ip+ADT$P{f#n?K7KTG}!jO-cvk?}uv>25V0#XW4A@sUY$sY3s8nIDozowNC zhJtVvwj(x2U_g;0I2|rDS)#?um{YI(va&tg8ms9g9hQ}@b2joF^#YxE)cVEu)4wId zPmW*%LGHzSo&cTVrrv%7z&o_>dLZ-4aG>ic6nimPJS8*8b2hS?z24=kOA6dZxNFG^=|oKTJN%|)({<+w+yUM5HcN_x~>^PLw#Nrc;H^p9ZhhmgJ6@1Wa(<8=6GP&C3pWC5J zG%vPQLyLpBDWZa^e+|(IXDr+5AD|V$1_!;PJ@9;+7O;_(I%FOm+s)f8+gB}rE`7I4 zd)2#$yfq%+KvxE%ZK0ke+mmtV4lP;QJATnah(l^_^CmA_9W;FOtfxybx9ug#p z#TiNFK3>1ee43+SQN@$gN(NVy4D{qiqewE7-f@0s#?jm8 zPMXMXRp>6A*ULPXUhiSS`!=5zQ8H%iMAS8B`owb^bQvF{rL&cH5$7+9ncTW7SY5FF z%9QsG#^*|#RJxpfXH75##%T?pVxjR3RVcpZm!;@gJ@K4FQ&9MO?)H0d=R$eg%h;fp za_w9H{sUgJgi*aNf_k zAoY%`KT+E!Kb5ZZA*B+#p7I`RjMv*^j_}9ERW^HB+|f*~gBB#amKZ#o43>tI3#Im7 zEjLaHJRrAPmhAk-0AhTvTeMrk0h|!hqaTe0d*rU#_p@YbMx;Ib2*BKv`~un41)qQx zHJE_twbMq+Me9zWx~02mzcBH-drRz1Itq@d<@?8^$JXrQ0@^<*E(>rB=TgXWxr}tl zLvS>iUxCpI)u?6D7=PXb(ZU%&Nnr?SqXtonPB0Ec(RZs-0&yww&?INd5#IlgXlBOT zx|#NOECPoD2#D!lqelQ$BNrPN20K$V)&ECvv!;OxE+-P;xonk~ai<}Mc$UreZ#+^a ziwaDCschK-_XJN)jhIL03F5HlS=b5X1?6e2D~G!+4BS|=)O7%}hxTQyyGHNFC4YcG z)3t5UEu2_Fsy4>7J5CIMQo-=%Z#m)yD)Xj!$!5>`<%KOTik*v|sq+E6i!x@AMANHw zdpB{cy|CRFj`-M*cHtu7&P`1qslG&@6F4l*Sf06lm)k!w zq{>3D9nBcvblUAylA$Fa)6I!K>m7;4fzmVSMjeg=t3eXD5KlP(I>?(1Z^p@H@Sn!a zC`TSI=W&7sVKVVjCirLqgfOD&C8!-CQ}*6v8<+NO`E{r0UgSas1wU%xdHBr1ybtey1Du}{d5BN&=k^mfe=3novNbp1}qv$X4nB+cdo&uw!yw>X*%{3C70 z=2^7DLmH)|>W#Gw$X`?sO`l#uC?mdz+#Q1-R@Yn!faMG58ZpBB_43G~Hn_)UlIGC! z+98;k-R=9l`>-_koZ_&KdDX1AfcqS(P1_%Nvh4&h{c{c^hQ)G&xg{|?LKP;|_{tl0 zyS?EFL6e!BnFnfrdS9R4hn7ptHRVaP5s-EXVA8RaEag@KY|=(UV-v~r?xmTmQ`V|p;;afEk7_<78YJB$hZdJ3a=ZqW27W-%eMta`SM|}j30v^ zhAf5-;u!sM#z<;Uht9B{tjWt%t)`9`2R8SFRW|Z$o+tf9{f9w*L{l{)P>FJ%IBBHf zm(qB&(Sp_^z!=-;KwpfR%g=0VSC)pZByMwaYirxP=lR0w`E|kJ`KGRGmYI9_yMgR40v2UWSWCHu-$X$4c$ zS~jI08PYW>p;8li9%}bda2fQ7jzD4CpHnjQlKJ9T0IpW2ss5p6)jUNi>$}5HeK;#v z_<*!MYPBl5O?jpMfNR(^ead1YEH3c6U4$hA(#&(G!tLU+MaBWjA;w%!NR{^lJ*Dmp z94*4us<`8s=X3~sqTZs*?_}9QUy*8heqemeJLzKl6KLQ8tl(i)E{c>A6QLt`ea2)8 zcwR>(fFarN`Y0k)I$e1v#||^rUU5nh$Px)eNwBQBw%c4&l(+lbpyQ!vJi$88E#2xN z4Y;k`b+^YLT7_#Byi2)?2;<)fA~W99IPqy)=OcX2P1v{wSq+w-JiIVJaFvIW=TQfy z8A*bk_k=h0I)|X7S6cnB>`QW#iUu20sUHU90KR;3+AS`OM?*oVPJ`8wu}se5K4BN6 zS=SOi{R9db@!#QXVD=hpjj49)VKvs;Oef!vXjnvKJ_AHUhm$2~g)XY!-1zq7K#`75i~_sB66!8x7E~J1aiOe5(XNGX z4ws<1IsqhKK`z}vQt&H_(J6XFNeXpEv1pH_rIuE&pJ(v{(pbKDk@1py@ItBPsGu(i~G#=WX^(r>foBUl1#Yw3r^g z9Ah6ZOf?!EzI=%(3b}v_mC*uW_yWd)CT3p*)_lEc5|Y88a#Fo1Iz#}0s5lMy?`-Tz zMD4E2EJ&7&%gwThK<#3a6F=_CzdknaCk}JJ>N-3E&RR&9njQ*p9ZVAy!U14-A&^{J z`N3&Q2;l?|ex6jcnkLK{I@PPfW@v-Gu~F8s^pHuhPEd2k!J)c)-HJ;Vu5dx;GV?(~ zB?*6Mn2mj4vW5^<;)>HdAJxM*vR~~P5EpgYRE%sz(%9@Em(UNz=!Rw1Vf-{CgQCOb zkw_#+VQYP)wZy7k&Let}?f~vP=q-GroI6CZkIJi~6X0W^-r+5{I;12(e?I%dEDyWl z+|j&xPR$WRtO-j4GsbDp(<9y-1gMxI@%kgfGfDpLFA+U!&%)~bUA5G948}O=MZg$o zne>f4#GE&8kViE9Ixzd_FM#;?5;(agmB z^bdpdUlb&0?qjd`?;M4l)qkOCXAziT(hUAGf&agzWxtaZxE;tn_tc8#Q8k5B6Dhx5 zhDTE)BTOp9#-!A&qd+W(P|k__z?qUy)2*t@uZ&RTdqoy>*O)YSW2p zYyLrzet)A#KzZLN5|`D^eH~)kYd0_JbZ-9th#~<%U!NVA{{uy0Jc#>xPt&CtmWTJ| zI7pD3{Rc(zO02V$*FXQslQM3}51COfiu{7)~W<%3EJV|qF0)Hnf691j7`0;}PpPc4<8i0L=Hn$!77(%hg z@!S^1eUeiGaJZ07z(GqAZCg740JUy-Q4B<)a+z26ps zSfc1RGm!(c(L|!o$fT7h>?Hmim=${Dn)tfd&s?@QU93Ahr%G@l272!#;+dTAXR55C zTObl!Lph&pLyKZ>9W(91G;F`~3x?!SD=7;FGcG@#>Cu$|+sz6v9uZ4lZ7rqxOmn7# z>zTxhiv1fk00FmV3)$BqTs z$arQeYFLjTq&05#rDY_vQC#PFWUzYu4IW8{e}hLTjKNT)vV`uC)fE)1B9duHrnLy( z9qk#G!)JXPQzU>d=My~`2HfB1Wk4M)oMIIJ0*`0|*uYFZJAe@;3i7E=-9ozKC9l#& z%vGqdoakjz7uta`At}>j2KGj&Pd}R!{3yS{Bg?nzgR?yd!H&fvP}Od(B2Q+`x>Q@2 zA%?LO(ZB71It2oq8#SX;X6!a8IA(U%t~B=72|pXi0F^SAZkaf`L4>L;Yrspu5VH7O z2CI_S|A0s1bty`w_ZPYtT=7_%|A0rIsq9|g;1PQFzriEThrXq9ERk?9oLRyk^)AH? zzFR5~bWl)^1{Amf==GRrc+=*NCKy>b-$Nu7N;^>qZNTG@ASHu38zx2jaHHfjYa%|t zC|yl$1*0Akal(okEedmWmh2T>MABW8 zf)1UG7G|fj(6oS{m3ruGG{{QAY?az{DyTm`gK~JNk-jwWLo7g#@CVdWgUX;dJ*l4f zb%P34rSoeQCm_zRx0qpB^DOMMJG=sbzV(#Zu=zWq`oOZhb8pv5`vc9EDoI~&l-iX}o2NMX?@VBHmNbms;&tu7d^?X+@N>Ph>$QIe??qm;X_AK7f zXyaQvf*Jt&7LNkuB(NCJf^yeg9qHI=B`#W2c1xE*@@ah3d_OXbeq_ z;{QR9f~Dzgp!D*I(MLE_Og5{i@^RC z3T%7pM7?NPpCF4pj`V(5v%?SGm_03An$-v2<41Rp;@=1&SbAMBEFuL0Ui)8#E@ zi|x3jh7ZtA+qSj#wFaebQFei%J9Mk|@5XQltuY@Q0mgoMNLB!q6 z6$rT4Yo>rwj;ZJ;&#zVWEHZ*sX~<*kRzEG$_RCm+u!br)t~|?^_`XYUxb}wkS0O2rrWk{+xE0= z+qU(!ZQGp2v~71!+qP|E=iVE;H+Ca-_g`gJRYd*BjL0}|o#z3_=T5Anrl%0~SGT@; zEze^G4`5NV#Px1F^QPNDje8}K6G(jFG9pI!2yKGy6Ck|=v_TH>6I}y4{lBIJorU)=kp>aYmML-^u6M=uJbWRpX0OMB&I%#%^?E-ap=Bx|8w}Q#QIZ_30RyI zv_2+efB4Vo9?5%^xy&`JyMS?HYFuZ;E00! zd;<8d*6}~uFqjP}o`Qk%FTT)=g2~7EQV%mFZx-_iZY6J&|NBXg$aCm3jQ|L!J~oXO ziaK5BiwOo`AZ+4lPL$X>u$Ta24_T|{cI3L8Z(eYoJN}NA#*eF- zL<2m}6`$~AE z@Sy8+#ev=cyZI%bCxcgj-!Luy`km|ys?YGk5xiiz13>BLW9O&XQM5Bam<{d$us`nN zX606C9;v2fbTLkbYvHLpXX}W6doq;bqU{XLy4(^(P3iY^IgaY4A3wUjE)d{TBp~K-mnFl$yjCOcmF}vQrCiz}-LOd$@SDO7+Od#b#Pc^pbV;pw+2nWFFCyc%5FxMRdEQMHdrgd6qds^I zkf+$=V49FMy)>+Hss|fLTREUP)w6G%BCxzUDdq?^_tkarfDm~ROPa_Ez)9ZO_4=mwVO+l_rQX7O{76Zs=yvwRnz+X59km9sH z+!98-<6+r9XbrBkz(LsFj+vjym~JV(HeB9%&^|MJ0ir9d{r zR%dGsOlsLi=?cacNxEB8z)+!OmY@DXQ^+t~qxJG9{Kx)3ls_ksmOHRTY)QqaTc#Q< z;&iSUo4;>FSBGhqDR|ALF+_PV?I3a*c9Zj8EufO>jM{w4;vb1WDR#9G1n2iEuliCg z|Ico@RPI8VCvX%mvh~b4cLUO8deI)Xge`PpJA1Ah@)_dFkw-cE0|sJof#5=k^x{C_wdB+7FNepMyrzp- zZvc=qonG&a_YaXH;LbGyUf<^FaTt|754f6HIWQ=8Aln_+d0-)Num_RcE5?h6T0uEr z5VV5=qBJiX#WizQxvFrB-=-IJvka7oe&3ca?F+V`UXs|az<&hTSx;C8NY^%g{C9Mg-p;WSSVr8 zg@l^~P1>4}0ba-t)tNS+E}_KDNjfjLk0tRx6eOH~MT}YbWS%RU|k7238#04P5~Ds^r8RkMlXxbBV|`8e36 zlTNfstz>$`dCdb);3=UVbTasG|16&hVMbV=ao8q7ALKy4MML3bqsIea8f}<1Yq;~N zVfZPO_9K2GvF?Lw)5^NmLg$<;{)l)x5on1pPF1rRniUzoc0*K&JWAa!?Pv;wcUQBU zEaJT`0N9Az@y{0ARoJAj{ehu`A=a*!dn00r{EQL150np(0{IX-8yc@Yswa{ zNJ-&PDmA>-Wn=Z@tV{*1ZKFrqM0TR29NP%gAi&g=d$Yty*eedb>q8|_g7_e}c#P`M}t;?~q8Y|WH zfSL@nJwftM&Q7sLDNH}M2v|>`?@RRqsG`=hxSJ=V5?rqQj>UdcRFk<;(cBPM+oW2{ z^4%;Et4=3rYXve^qzM|NiMp5ZVF9TON?C77^u9uz@VT2=b*Y>%idP?HY>|@q1#*Ss z1SLz0j+AEKB&w%qk~Yb#bt1k?aS!@R!0+f&mOi7BknY}PXlwWa<12~%xL!3;ob%#k zR9vJh2$XIpOgZJDbU93V?&c}lEcv7hj2-==Zuh`4#5OsJb9OxB{jnN{0W>4bTSy|8 z2F(EfPKr1$ViwpQW<`WdI!ypnI_^a zigWG0N)wRP&rgbabr36cyl9zdk8X`ev^RriP8(*^bS1jrxxrbkWPV&h#;paB_ zBKCK~vQ7hL=8a9pHRaei;>!;YfY(@!TleQrl+V^Tb4KSYQmYG#P)8`zt>cmV9N5i) zpM$Qz;h)2STuY&Vf@C3vp;vd+S8|=kTBbNFX^^ts#_Im@5629l&qS3Zgy=Q4JQag0;G)7tY5zZV@HHC0k2hd(%*hq-<+dF~$uGMvRaVI%A7V4*8;!jY%|%=f`;gH6)MAFk@=HLGgd*#G5k~<~15^|JtBw|B z^I+J+8(azJa3-}RCJMfw+v3K)C9uves9Jvzxf>?>1uAjqGKi6#h` zO-{*#`qHvU)#)HDo8CZencss&D$>SF{mqR&M?Np%N`W(z8WDC0ar^yz) ztgZg-3hIZxH06iifWGCnU-P7}1E6%M;@wX9`bB(3sBrTAZbUz_hDOn;8^iy;8}6Yd zXSl8m%dEG__3MK8XH%Bc3Z(7y`Y?_NFA?ykii-u3;s`;?h_z=?kbw=dImeqAC&*m8 z7NaB|joOI+k`-J`5=d1_hRJ;8mPF`dMK#}Fp(@~hLJ{Q#Z|52x*cX1 zS4X3u;a3<>CbkzCS=X-n$=@CtESIA*+nyb46qGhFIvQt803I%({^t7%A1X)I#4Q)E zqQVB*CT8!6``QvVHDKjvii3S|K(Qx8B45zc%SSvn+y^tN)>L}a^~bj)PFygT#e*Nh z{2|$7LU7I!FrSfgN}3=8i)5j^Z@y@$d&K2hd3Nczry`8=8l_qAwO6vf-IvG}aTpU% zM35oow%eB_La1voENp`Xq`#Z#P+EzK+(jJKmX8(aN0{=^XPo1n$a`ihXSbGm&_p!i zYa!Q_B81$o=*%kb9B<;+3+Kh@TU9qbWg!&*VVBay}PiPSbS2C-oh-+PGnut76cQA3fnS9_V zV}UxFY1KpJL7gUzz4f7}qS1VIE`6)HJC%dp*ND5<#%Y4YffVGn!1DY|LhDi6cH(zr z{NV$yxFh>)nsnG461jXW{agp`yiW3#dK!HI)mjWGcG3ig?l|f9_Ew&Hd;Z94X;bHH z>O%unVq1|{>7jnvc{5+>_?i4Q=BjewQwANH@VT0k7vCI-mUr0zD*7>wBRo5#mKIni z1G0g<_x|806O|C(FeA8gj$gef`KcP4G^YL2OTs?36RHC@#tI`+V(nra9r_6(se1hY zwJC24n=*kuIEHWVC=IJjCtp!zueW$b6S%RsM<_mxt2LZp@R}D_$3K3D+c0(J_jtPV$-prWek=rZQMk}Mdag=N<>@<92%ZbNjX0v^GU z8J^03EIbgtxbjHHN8RM-@UXS+E@P$vL)M=I0cR!{Z2e3;!*y-IkC6Njb9%Nh&~_DW zmyjudA~>a?J5Jk7^nmZV8%{l{i}|iaV2Kqb60+ckS?2kpu#0Q$r0KIiS|mdQVGt}oCWMvk8q_7ojP%e1Vk%2#)ry zUnh3#wxY&(FE7_~6?e=imNnJ~L4{Z!xI5^sgyMC2Fp~?(gK%nHYG|c^BiyHeh=Z_! z$dS-A#BlHAydH~gkuV;MZbCkQSI(#ZFmUizjXl(l+R}D3w#XKBw?73ktys?l+*h?& zw{3>6YqT+@aD><&*|33@tsg>>A)w;~0~geF$JPe{$`kS5lA)}_n)Wa5eq+MHlgM82 zN-eBG-hi*e{|b2lzE{Kw=+2~lD;YmbzIGT?@*3RQ!5puJ2yV6c0-ysb^tXY+aa7F% zG%$;K!^{fSHvP7st8j0PCn-?9ROTFyS+Hs_d7ikchK{Tv?XpF*qEm+|6z$W*f8m>( z#0Ya!vzjC(NBN_^QFk?k+?6hXxDAmJWP#x(Cg~@;ia*=mrw$umDXSbqW=RTH=y)Ru z_=f%Y31m;Uj(l)7c7Xv<#vlA~CFki#a8&0|R&oNFK83_zl;>#+sGbv8q4C*9cYee zYy)CbF1u-7d4? zXGZB*Xqn?&Ea!>~1ZT4tgo3HG_ah}Zx>W6eMtqZWrH}+BuAH=C2T}(B;Y(hk9?B4# z%2h8JPd7}$j@tmJ#x=oDGjk}ADxC?Tr*3vBD*`(F8tIqe4=<{1X2KOL%?}?>Wq9;2 zNY|Qn52A0Cir9vNkXU|JSj^M#$7ELT@qRT5mp7GIk7(Nn^E3dh4^GuYCpnS8Ln%#| zN6`pcP{8^`b_dQ~B{x`9nI1Lk?7}X_V+x)@&b7wWWqfW3F7*K zn$VQ;TWdSUG~t4y2HH%GM8s9%yZUepLv1?~fM_f}4bL)v^@wxhg*9KDdW}X> z+vP~6nB4&+Oj|K;Q%B$k!xhhpo7Z>27U_y+7I7s8F8c$)Wagt@s?W>(he64`2l3Xm8v@D#jGQx`*K-t&NM;jFf>D3IEAq zuy344BV#PG2TJ1Qs|kKO*WGZczItG z(FJjWL+&;SN7TaiIrX7(l`?ysy9Cd=4U#g3N(l53pa--P{lf!;b7*YWc zCbhkV9I$=vUZH}BK(N(y0G&Yx!*GpNZ*9vm8I#RZ!l=LvWR79my9L7P=OL$k_omyw z4l_fJG*Atmu+~9@opBAWNG^GlaJePTY~7Cy%Zn0bGOQjiC^nl-Un~$s;)I;Y>mTw# z2&n(A=PKtY$dDiWGZ+D)IBStpXblGNfg=+mKEpWjP?kU4%<4bgIN|3<`WlVU|AB+r ztVZ<`-w^@t)jRD5pHB3}J&Y3r&OTBtDXaeTQ$7urv8bh0<5 ze*cqHU=2?p!>|ER?d$p3-ehn1X zRmH|BUg@e~VIW)ez&3U4Tc8#rbg?ZQXYPR*os{j^q2dGE;Tp!%04WN|&?c>tFsa9K zA0u0_J2X_lz_rYk8vHP7;k4Q<%M*v}Qlfbzh0>05u zpo6)rxr++qe&4o#&Q9?Rh^L@RC^^5Kz^fh_6XO?#9NO}@oNr5MmATqD zE{1r-O(%yAL*ZwYYv?8PrWHV+k$)_lTgODk?1zCDO*oZo<20@-f4*-HAuI0L6rj++ zz;g0e=w46sDRe3c!yN*q1DvUYw$-B73@DYEEowu8Lj8t3EkPaHj z?tv`kC{vVi@Q&yk)b69@#P;DSDk3Y^L9i~F)rtVvR5}oiQ{7zWLU_u} zmo3QFN&jll2v5?9kTy0_W}jEqZqS7Gy3iHkH8*&sVNc_4d?D>7O5r^`JVesqt8vSm zbVbizxz&*`ASb)(W;l%utdI0|;_!8`%)0P$N+akbC$mnFF zp+seqIEU8X7*c>waLHzbQw~*z$giE5oiC*2@Mv-@ISGJLwAgIiZ2*8~66G4Z4Ne~< z9H&xCjsEgMwsrETSuOMIdXc8U#!WzvuTxnW0GT~I%phxU-o|L-=1}9t^)9CeA~$3U=%miU}dgw zwY)k+qF?~vn!F%6Eg<#-{sf5J?kxudnoFuIqC@U2Snd%{a=TZNmL@m9gOc6T`--}QjHuOL!0ey6dneY9h))mialq(^6Fkp5X%ItqWydS z{Wc1z?nwM_SK&K6sxHegXBFK)Dc56QjN%iXLr-H5;5_bs-6%Mc_=r?CGbroyrt&&? zDA)jAvnB$tYl&H1RPei%i|bsJ@GAQ0TyDLWBGGag9@IP4Q!K(XJ0_jJ*NyIs21YBX zh1B&qJ9w2unHWsaH22br`t3vt*dvPn%tE8-&j!_C7B60s^zs@(E*BDl@`Fk@vchbr zh`Y3RG#|k`gdSlC4|9Cpdkz~<@>g$VcomYBev%x&a1c))w zXQg3P0uv^@iwWBZ+UzVY`xah9k3w^(A%vo&k3(zY;NaQj-j#p91i}pp2%QI6`62*b ze-IB&StqhxZt%u?m?`4q&J8%L(vIDnLkPPVR(D#oSerf%Yz;R&{C%x1#p*FOEoGAi0=|^ktetqxaD|74n}+wHc&#fe6s*T$iKRD@&XdCDdj(5w_fl&pJv*xr}k|+uiDAr z&6QdmK4D+}`Z;{r&(>u39;glaf6^GK!Z+MZPD*(?Gf8JT+Gbz!An@q4i^_yA|$WgD$lUz|@M!J-5B;~8?E zE;{df54`-9`B&7~i)I|(=GXR>qw7I7_R6PhTM44+%&o_#kT2eSh-hy-sP$w; zlR`e{mny(pGATXmN;KxQ8cYIKtPHUBMB0!M;ddH?7(bE`{Qfo^Iu#l<-+~p9eooE( zTdt?r2z@CJ1|QmuD|Lp?O_UAz4IJ(nWZxy9P`q5Zh!?H0gyS$0#hJub5=ZAoxHDWT zu1)>OH{WUO2&0O$0agQ>{i0A^)W+W8Y!=J2?BfNKF+<*VCv zhmJ;IAiUU&1hXm>0`Fc)wENTt@w=py0E1d$=H-2)_GwpP)pK08WMvev_8ov@v^niJ zlx7c4>6~!1JJ`CTEA>-#GE>`le*QeX#Hpc>ugC9m=UO3nsxPsgSe4kEhfPFx<4vyB z<0*3T>j`vw7>{+^xi{|ce&)EXu*B$t2o0NTH$NnW?Xp>f@bs`yIpk5D`z3|UK71RD z3+N$oXaRPpLdc`#r%Z(_&p( z1;LcJnQdEC=}0?CgRzpRK=0h>%n02EQ`-gB;NQo9d8S^^E(iI^o5AR+0F)%w5T-G19;tvBfZsGnrPp-Rg-O+M^ zvF^JoakCPctd5kc>Su@$&VgS9Dsmp9D zd&X&>z;2scW~%JrKs3jn^n=9=d(GW1`3eb_koIF)h!^s4R)1;mGzW&zbIsh*3A1?E zuCHhoBt!aFmy!TNd~H(p_9Wru4M!~($#=7TSP-T1f~3cc&0Ztjqq?a^StnaVB0KgU zv3_Ssu@herzlFCLEif~L2k{Qt4sUbL2oO;b`7xL7^9iR5cl~u64*iby_Luu1qFlH3 zw{zyzb%Bk#=;!zqe-196C@{TZ-d>&cEtS<2&GQvf z<6plVr&R@Y1l32*ltTWN=yV?2kIv^=3;Wv3fxcPc&M(H^^^dUeizI!G_WoSmI*unq z4L4DDb>>t3^BMbbx#nQ-`8|A-C;0aD;9$@PP|$x2>*SkhoNDA_G&LPshj#w_{`1TI zTkt=#@qgGtp#PFVCV+BPG5(_|hy1rKME-*b4d%c9)=%$0hd>3`<8tEkyr>{e%NdU) zRjLhPJj-V)I+c|=x3ssu971<`KRNelvoc%X$+p<@Ockfy zWh3IZt~^`c?Ct_m9ce>W1C|jGo@-qx;5?M8^nKk%YQu=wzzX+BV)sPbs=E0}4$6Yw zEM7GhtNSEPI)pH&W337?x3BdOKrRd>}lwuU9&J?|{4r{&ntQ-jj$_eS+jf(1^I%SmXPyz(QoGaE&_7(fh-F1D9uSELvRp}epLGE~>(-5#EZc&!#FxyT{xntGd6o?9Eb1$7i}hw-@MZAj?WX;3InsxCltXhXE}=c9nU`1w^v@6X)@XYlyt z)67b*zN^7^ae~~*gkFWIKkc^Ug{UL?;YDmFYr7>=EdTD6XTxy>Hn0sD%^I%fei@HP zj8LRq2~v93NCEcY$@i3PShrr0OK5dMt_6fr7&Pq2Zh}<8y%Q8H~C=U;KZO=q4)h53vhKX zGEuxxoZJ^LL7@9m|H)yyfv$n=fY7Ax%h^wYC;bnrf>calI!F-K5y&s2x*@TH*TNf~ zdlLM7w{~}?b#h^Ta`+~7a%f<4NU4*M&zHbws@)4Bosq7f2qxoB@FD9}Lh1JdohC0$G zUhk+&krsRBmxH^*Ct2h;v`w8?tdI3Z+rOP`9u7z1oWe^>8MO|7E~jWX*=32z$oT&9 z6iuAO(Hx`W5mWJZkp&~ga|u+9pTxlGCqq^RS%pzz`vIRk3V~WkO3*dNGY-H4kxFy( zZQwo9;m+NpqN=u*vXcNqYHxN6XCXb=m8QetN?csi>Pm{QLN+T=d>IqISAw~Z5_a|L zBL&iy!RWHhZ}MBJ;QkvL2xMIV_q4kc)~jac)P(9_2Rits;Z=oMa}HNTShIsj%2T^P zPr_o(LCz37w5S8u65hTXWCl>OVi)2R5mI0TY8W*eEDvO#T%~kN+EI)3-E&-Sx1&}3gwn_1e5RjfgIx&*v7Gf(ZomaE(XTeFEG z59506s@?+#s{yOd)?W+#xe}vuZl=cbQ#U(<;Da_%2sGO{QdxUZ1_w~Mj&*u+EFD?a z71$QDfe?fU6&AB~^G{F5H$Gr8^P*D0Iqw|+eQ^m1BFqBDf%L)*W8UqbnLeT397tF=9 zX*c`d>7W1hJ@?scW=av-pV}{A*9I05J!c3=+l&}HghgEH>ih^SJa$Cnz5}98hs8H4 zWEtaIWO#+Vb^wZf+0@gqBuUpt`W{d-mJAMVl}u#+{aicvqpvlmB6@&p?rJy@T0)0TfNk3gqnct^+Wp>76L3-Ll5v zH?q&hjcTKd@cCk~&)cr_(G_MirnINAiLlX@icR!IMkzMGs=`j(9+6}CoA%rK388y? zZX6ruUB{kp%TDRq_y6G_43Yng?fT~@dt*+&>mw#eCwc})PM`T;g8P5XULV(ASO~yCLi*4xV~%} z5_Q%~z3$x?EVoOZ4fd9u&nmk>39^Juy+GaS1s8n&aNUi~OdT zIXb?Qx9~~+IMblT#k~8JB?MhEv%2Ye3 zI@t8uo}%sg@3-)G#C`zXfp(oFtbRns(`ZcNOXT@Oh#uA$jhqR8B03A|xD~`6DZ*60 zW=TWP-^sc>I#Dyuee7gx+rL3hCSY2De_nyvf3cPxWZ{;v2)8JMTX+lVV)ee((?|v4 zng3fhsmln@Lc*8obpmN)2$E57col34qI(wo;4u)aHIZ`CGAaNzwgjo6_vDR&4C0{5 z5WQ4vQ6^ip6ZI%$5|0sf1tan7?o^IW7EYF4W58QGn)hbVoCsX#H|@uY;P<$R&mtLM+}ovWLtKcW+iWQUe8gh z8XsFX9}k=6U;Y3xmegSo34z(hFhp&%(&;+on@M-avci=rHwv5XvRSAi6(7U=dR=TO zXoD)T`B`^LJlgUm)Us1WaV0E5UE76dLcvif!4J0G{GZpW(TBa$!}4qcdBk}C8^7YV z9P{xu_dkDBNj#4~c?s%7(u+brrFRo)5>^%hvBt@a{Qg12A-?Cl78>WgtfuwKsP@ zeiYC$!2M8Z#1!|J4_jiK=5i4)V22nxF9oF+#iFV27%?`fB`8Ktj zALYgbixU#KP(k2v*H_fR4cJk#ab!8$8%5>Vj3;C899y3_po@Gk-rj^VgR~ufyIi0n0C z8HvtAZ!|_AEWfM7K}W#=f#118pbXt&B0K~zq3N!UgNAA_h6jC^+w=MRc#8BiW-Gl& zYnhZxS#}7|$>x``)~$G8jy$2*%)=rz4+>VW_~K(cb1yZ0A~xXj|Ux1VO*(Fwp~u zY?|C^hdPnXTo=sA^pFRSkmk#LhiA5kLAtqTVcLJ&s0_8#fg?~QK9*zCd+4<6Q%n{a zKi+sZcK2{q)QWQBJy z>p?VDMHuEZWw2J~TcRf1yqgry2DGSRG4hnfW$h}~b=7}Kp9#(-t)dVta}XN9OO`6H zvcUEm5t=387n%eWO6#7XZ=xvIuW%QXeS;-jH#II(J)aWX`6Xc1sn zq+Fd>b7f2JtGqybf7$npLaaXlA!F6bz|C*;${8=H_2=&lB>lVOoMZFKymBqGNVP1< z6^i$RBOQs*h#o=q+>PCa2E(Ggr@c`o*>S+M((Ubhzuvvk`FRf&jea-vYIZa99It+6 z|F}^f^eSw5A%)=+GN|>)(Z}i}6hzqbuL@P6S&6*hXay5&aA1>6#qbIMY}c}M;UU!X zHwRbZh`qTPYcEWUO$JS*y6TyoI+9fcm8}O$3wtNI1zceZcAD7q(H#O}J}kQ*dJ|!` zvTPPIV-4=$x&+a47}F4*L(LT8LCzy3NdeGJbBBm};OjzF6y9_qH|HF`A6u1TZ#Rgu zx(UlQiKs$vJ>cZjLfV=EW-FK~`$%nCXEy9b5+**#7&0(Ey(NE{@@R5C5Tt6bckbsM z1|%M3RHI9t@y~OyaaX6`*|?^7HO^t#bC_jJYa-0<&@HZl$4+YUQ(u60Sk}JTlQJWN z)?6pMax0OS;_OhxNbLv>1eyo>0OlzynPrm5s#Yx5tI-&pyifFi@;@ZKnzm9%O{9%{ z|FSlv^b=Kig%Z~p)*lEpn(~R;xANDdN*oate*CXztZrx)k=Q~rGF;sJ-@SQxF3sZc z+wi5UYCC=cINg3_lcnoF4hfn!r-LbuMjfGhJoxm42niJghH1 z56Mu2j$_evtc>@sFxl)r*pHCfC?vXa%}@K5tmxod^dT{IeF~sz>+|ft4i2Hz%ce12 zSk|^lJa5*a2XfeA)RP{waP^AEP6Z72^^@#XKOV(XSZ_0NnWapt3&{B_(D&8|XWep3 zIZ}yr((K&;7_P8(4+-Bq5mL#Tc|Fvo*Yjai;MuAZ!&MV#q$SC z&yv!a9t?r@4i~kQpO1}5L-!hELeUO0Sx_uYe{!USaM z0CBZq{|qJN4-sUaAQF+V0T!kq2EB7@dzT@}2eUo=4+h$N0q23Z!`EVIK6hauPAOyh z$n7_IpE5T2rchMR?Yo>o0^m;7mHoeILd%thLk?`LlocPgLSt)Bj}X_ZU0VdcH-S9nqHk*U;PEfY}e6 z{-qcAfA3K7+~uSRgZRf2Vq{LAApzq`zjB5^|G$#mwWjPh#Q(!-1~EpCY)dQUb3avQ zGH7`Yk(P@_1!5%@S7A4%=k7r*A&lS`Az+kW(%6|Is!S#}&JWIqjbUM7esYtY>jm6u z962D_92Bkd`oypMuv#!5+^-NoB1?`bo(~VfsNV;8Jl+D0$#di|rY5A{$?L}UgI|iU ziWQH?5|rDY+sr4ZpBxjSu!{ND7O;04^d0{9GknjHDV6#^+-9wNk9cLM#=OKWsQX-Z zc$9GmWG7tI&N-r%Wx@T$;!Lo$f&K~^P=Thin3@e-zu;Xeg|fhDGF)PQ`9b7kP#Kc5 z&RPO0qb2g&w16mVK%Y5}5rYh&^ME)DW=*9n>pF63Q-O2Ekga_%8IwidgH2m} zK4}kNeid9$=-SALu6%u+``f%Wl8;h$OhcAQCUjrE?V^>1iM?a$%2E8o$2%34-;Nq! z|6YP-DqTHi{rq?lbgV&A$Q{{MWYPi74PgYd1*P-IsQmMr{X+^;+PN%rHGHC5XI26c zs#9Mh-wSbe)X4+O*dp>`>e2jDo*COq%JhpJtQpEkE*n84fWtcS8HUxPCAReVP?r!B za$U7$m>Amea7>zZOqirquhQ!VNbtyWr9m+7sfeh3~p4%sM z4ujKSx;DVA8oX(^7OZk-iSNpuZ4Rz`zW6_ztg2>+uFxJ~Fizv3T@pG)>--lBa@-S1 zOOk^!=1fJ>D>;2@muzE^FzCi6ZFY&4@HZ!+?$k`Tv@2zSQ#>4eayl${$&i5TdvBp5 z8#*tsA2;W%mNp$3h-1A0&&}#!iO?JjJSVB|mTxyYKa94=77(`cOF3)^>gWZa%CFQao)Uh5^#A?I%i(Z7tGz2a_nXQbCl`b5tQSx z5qMU#p9!rXMTukI<*nZqp55;bVg$2*C7GX3ssT0XMf#16DmN5^I6=TV)o^aip8y?aH!m^8p2AQ`}SeXW{6ptX$xw*ET<4bF8}FsI;^WX*Vo#;`;ZU^=;zHuWP@ zY@-!9jM3@KcyobXn^fJSO+KGUB}EfERn|% z1~Y%;7N4QV>@npXfis=(67Wrc-aExriN(mkzm4>=FJXx$&IWy+ya0x1e8iL7%Dk$;xOb@wuum= zgW#~MR5wXivcEItK3Pw3SYX2}C)`JBR5(OIjjdUOV9>?Ixfc7^t>5mwA~u>g>yNhm zYzm0*OI56Yv(uw>@s7gdN2I^t+zsXX*AQZ3{wXKiS6JZ=(<5$}|Da;4(W%AMS9NMVsPvi7e?6D~9VuD6dBOq#gFOKQ0sSYD<4W(s8Mig*`%k$Lx1e#S zWMm0Ln(EpmP1-EJEj zm-dxAqZCrDESL9Y2TvEM?^9&@z1y$GBQ%MX9Cuc)M~c4fVbd$KZ&@FDD!mtl(!I8} zDIHOYWy&Sul6TMdE;4Yk17u>}q$!5ay~R zE`InKT&X;@Cx@hKh|OpwnI+odbD~{MTKN)wsi+-_EPT<$Qo>~pvL&XIA+TAfJlTU0~qg))!XifI^khe-mNe9@|ElE_VY`;YdpN?XAYlE2X~*&pMIF=Ly-o;!|sY8P^BM) zTA9!%)A+sa*I1ltQICuaTU%VR_m_j@2S9XktAqySXz%epJ$IQmaJk2EE?=aXAPuXY z+7dn&7_@yRj#0T&kpxSouF+0BO*ga4vCs6C=meVhA{*z!49y%UzsD+Us<{*$+@$7a zN12Y+Ps; zvc_>$)QRP1P0a8tJ9?eLAYCEzd|TpkV~p#n&@SVAl#Z>&Rc!PZR4Y~#bnTzwCjWt^ zxlLgB%Uup~O$I|&m}ftDO~PSW&L_(o8j}kjcFQNAfyV3Y^~U}2c0lCAJA|HI~==W zIM6&eGq<~WM_Ap9!*Hy1M~8~Yv9~^#p4Oiw+ZGn-^KT|N-hM#1C?L}@@$5Kyr&%xf zNL}3So?B&5KvSo*A9t&U@T1>d8{2ga`_DL^jEUf6yLS)43Jq~!s|i#rx@d5>yo9bf z@L^&Lx%=*@)np;qUCDtHAPq)R0X+t&|D#k{gdF;ofJQQlI&@Vya{@XGLZE$?>~RtP7*G*jNz-@8$`wflC@+`iL3a>;RQayY zHe&0mIM+aaOqycR65FniZBs3>ie%Nkt300%PB>418_-7hZrA_>pumj@%hG-!3V3I5 zU)%J_RO3~Mw$2VY1I#D`%0SQ+pN_>! z9DyxJBd7op*`ip$dn6Eu6}O*b&B}u}7lA92HaMP2gE=833i(DgVbBoNej8=1&=c7- zl6^e-w}tbEaft*EAa`&K(pO`jxG)E+>@4HV+g#f9%U$Nza_3I#qkIf}HDiLRFoqvk zn-Pp%ZmeCAUqLCSe9PqUjz4s7)&V8Zki#~3L?K#MZ zKZc~3DB3YUsNccWk@Qltau&uB@!SL5luUQC1Wz`zL~scR9RY1gh+G3!fso~wr$&XI=1a}?2ePpj&0kvZJQn2wtaK&sk&9? zRGqK(pH=(sn(M`w&m4n0lRU4SS)LNc5){HjpBoPIgoO(Zq)Mos9R&BSJuu9yyFNH2lJF~p2rB*hxq zlUidufJXm1vNW&YjMd3&P8G^4j($~`^K$!FNqypV`Q};m`h{fIvMm)TJBaKMG5Sj= z&_bNTl?7F!H6K;IqA1AK^CC_HWp08jVh9%JdI(T46~!v;XR2xqO!Mzl`fbFn#3;f#}mrEnw9_tQ3XCru0A_{c6;}VSeIXw09bt6QvU-Caa$4*m0PS>BLyWmP0e6 zwhqvqiOU#-F84Dxi6{A>j~?D94}_%OJzklpJlIbZq#JHP<8$tulUfm1bOLGnZVf7i zn5p9Wat=0{@-hjo4VFfe?GL)o!;vs!@h_?N-g=elXR*pUx3coBwwEi#D9_`oD`_WE z44_eNX?*9U&%U`PXFv5kwu=Jz-w7ccZ~zE$Cz71^#JdlSFs+8!|ISN~k%Zy24Q^59 z2+-Ay)bix!EDuSfd6P^00TESkcoc?&86=7h4pVOB8I&pfgn9J!26^Y=j|anlTwkS0 z!fw!i{=goAP^o*GCL;##dyvfRkeI4Z&5wf|mZgk|{djk|uHuU}ck3hQ81NJZ0{{%` zQxDqUF)SPUgdlO)RgFWRbrqICzZ4e2MIGSEtVDN2>zF^a8PsV!kK!D+csXZ=%VGa% zMKCJbj#II?&Aw+zO*;(daJ6X*=S}u43RP>RaFJ)%K*5={C@j%(R~>kqDrh~ZaSgF; zc~?+1$CvZKNS zDYJY^xtNs>^!A`XwWrB3_+gWj>@k>~HpbQPzj+0iNc%rQ^&HNB@Q8{p}DR8a(}?ntLVAd=YR(!mKI zk(}N`JalXRZV;Qf{Qj`Lb2+Uzk3c~h1yY{~29=eQEM4^i*f}o0v{V!6^3+Gd+7^jr zBhFYYV~1mpx2UeD>u$brCIChCL^RODg6T;zmzcs>pU|Hv;kmJ}Iacn;wJ_qt3%P_T zqY3HSm5(DYE{{;Y7(pKK^VzR)YCIVj$>@Z7cU6i-{DR9EQ zm;UlQa14jhHpJBvo*D#741)QfqSTC2MKdA6SxO<+{uR2AgzWAK!UecSX+Ve=wXHrw zpiORxgl??Ummk6IBevh%rW5vL?2jZ#vw(cAW zpcs7e3um}vCk&#Czdg>@^ z2LCif=~YISfhw~Rd?evn*?QR9Z5xQ@`WN_(t4l?3g_{=GDGG2(s+?_9M4~szo5IAT zCS>QIt!qZduj!oc8e`PG_`N)V!V_iv7%jd~9zKO%6JM#Qwsk~^Uq#_z^GLZ!6@?9K z-X)Sa+}$HP#<+r*xScESU3oO8@N}*b3qlQ@ox{L1DzJq~Wg0-UVI3nx#A!D)TY$^t z%mzys1aztdivj3B;k4vw4$;wJa9qzUH{NQ8COY=@_JW=8>`T8~deSdhSUn}UAh5Zv z?1ukf(;|_+n0_&;2V29|d@a;P+C#FBAB^#yDw%z+oYq+6JWpo?;Z{rV39|%r*h&{$ zHr3B9%XIo&%9Hgk*F@~Wn^TAti2{%aoVT3)tMNuZKLMLp`mOkZ0XK3rB~PB9O$}XD zuAa4ZSC8+TS&C0v&QH%By!hDNtJ^>Rr1%%tSI?$Ub4slpoF~`#t@WzxEJQ0ZVc#OD zE#2As{u$7;r`s#BUVo&%lhT&qy;<7V=)zX+oxEN;*0RXhOJpBwUZBqB^2D;w5~

    1. 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

      cd^VgTIHVWMg!g&umtM5-) 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�m(qU{Iia(gO|j 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 vHAu#eVAIh0EfpTUoz-UugewRW& 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 sVtA#%g~}r*!st*WOXhmS6AIv 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 z z6&vKGSkuuQz2?W~t`=~Wsb;u+6*5=8f)}|=c>0(h{Ri8NZv9vv`89s|KtB@mEU#HImwBk11WSzCBfkc5rNq3He2(5@Ot5f!E8A1507K;ciApm$ctmx<0Y*5f>BhigHJWM38ybI+}Y>q{JJ#$#W)=HP% zf}MwT+uP&YP2P+VS4D@Z8+-dm!JU=i>j>cbgg=r<9AY--7R?d?*zkr>HJ*nzS*ZxD z)N{zH1uXtM*mMic2Z!tK6i$~ohiA=Y57t$E+&yDqt@x&#lp8|atyqiLU%hdtd3@7SG>uSvnTh;aef282gqAy9B<60Z`l&1O68d{-<;^s2Olzv0p>?PUSTK(5XN{h1e zGns^iKFFi1+!~?oL{QKA)VyoNXSnO}# z2gRu151+Pm+)L~pi#9q;FA|!e<;AzI5oPc~GAkn+IkJKF%SJpDCO>Ca+dzn`A4|j% zQr=5wR>azYTl~ch;HO1$SQVFR=Kb8&0*$-ce2>CY&W|HO9f_q^i)pi9(<(6x+l)sG zx1;EpRvUJJ7){IzlG!b>!B=ah*F!|Vhpnv~3eD`qk+xBDho^=!Yv2g2BU-UU@>L;t z#@v3)-$K=3T9rT=4p_wSKQJ7b3gbAx?GyQ7sj(wH88e~G9G5QPmCB+rLk~p555#*j z!7Rp7PH2Kp-dSk(eW{Bud&%1A5@i`$}^f}7e%MH}7T9P5vxS~b#(hwsdLFG~3GUJbs`zLeai0pljm zXRy}@Q7HcE&J(%I&elgTR+9huSNlxX?xJjU=GL~aCspvkj&)VP?4Yu7`xs^9af%R% zGyHNPKsqhZQ*C{W-YyRU1x9MjYEoewX^dt{(|U+CdF9GWS+ z)6C1@mGnS{f3pzRMq36Rox+`_2?g;)J(G!|X18-`#MErt?kqP{fp;n6sTFD**lhE?-s<0L{K^QF+fdMExMWE?W|ZJT4_r|%BbyLfABNaZ0i4?r7=>cwKP~tyPq}sC~itQ%nXKRyH^>G;ITOgM8*uvyz zd8tndP(M_av}A2ZI!`g? z!Bpi2$Qy$g1k+O5roNdios?rN?a$esGu{)!JDM<&u(lcfqYG6+s^}UskJ^1Jw!}vu z+_pG~isj{m)Ur-u%WjHHolzq5u3VT8V8{d_-+ewrpPIeq2gyD+);j(AH7^acPFVa2 zcGEE1c$gZ>Zhm`i*##R!Ndk^!tTKlNhP6MSunlcx`7oln(cx?42IaBu)+ng%MmN3VITwq=PNP~T;I zX^+wNZ7Nc{racH)Pyw3y?uw>iuovHbw5*3~DQ%uu)!@>%95_fXcU>7bIyt zQx3hrGd6m|3tNMtw_NqYK1;fFptYf65*>q|%UG43J-CJSR^dGqI&W?_2G;KVI(IZ; z4@Y&K^92#I1gtV%JTuCLs2g>Ux6RyTzdd}d)}NQyNwpZaXrYb!hMaaVeXa6Kze&?H zy=UuQycrn0v+kyi+C6bP0S;HiNfFC59f-Yb+uz^~3(GnQfkCf*@hwhBRo?hNkG;~q zkuv&=$mr@2g)3DpO7%VtTE+~N9lFvwX)bp`(A^Cx707E=i!3%oo7Tcy%nsY0I+J6O z;V@d*3-zSP>8mdqJ{M-#mLQZZDYKsYGi|x9txhs_oK~##BuJx_0SF~&=aUg^_>SAK zC0bdCVL0IS3DMBsc*<<~8v6Q7sSL<%)IgC-*Yq+&PR&*tYDP@<-zsn3Di^<;`kv5Y zPXq{L&py|@S-^k1iO~5+Mfqv6k(1jt#4ee_A`fa9;-kSTiUk$1>svT1oPwJU^A+cx zea0LaT+!M;3aeOt15ix1%GB$59Fpcnl=yPTCz1@oKh5Ah!Go@Qz9a|G^!kOw4g0zKqUKM&r zWZ|zGGWhXYnJwPCd?uHc=Spg4iBl`cABw7uWk+G`bu^i5Sc4iyYs<)?sy^A6z7hxi z5^1W<{=u*V1)!HJWmUzzzb37qvHJPp&W-o2A2Gw8b0X;1We;wqwz22I>CMWUpqa^b zxts7(_wIOGAJv6^hRQdP+NS;@yL?L5x&BbIIA*0 zQdhUZiFTgJvgh&fdU6;pYni_b5mD^pt7k#)25&&7Dm8|L7O;Og7P|L@cU46ow>1b8nLm~<$AG#Wc z%=4SNhC^>h{adak!x6>9wUa{TtKrs#UzJ;~km+xo#Vv0& zI)nzojn=t#@HUIX#fjC6Zq!qw%pZBY#{m$GIrzG4aJS90WF~q8N%_tWKD5 z*=dhjdUd2xkB%NZQgsk9%6xwR9v=-9tF(3>833?GukrhME8;1zo~OmkTt`Utz<%`u z)*E3ibDd?IH}p7n`#+bDXEc7`&Jmz(n6^$vkjeB<%H=PBPdxKTlL(>=}Bc?-bc6Qr0a2w7d1e(`44Q|B)ou93` zTnh->k!90vbYPJJT*2>2m#wedV=0!ragMhdPh(=^4iVKKzCaaafI$dA|6P1AX`__p zFD-o%V>w0=VHw1Kd#ZgaWB;Fq7V+z+ck3ej&{y{tAqL5hMPq?f<&dVgLc* z{-g7JZlI(MZUTsZv*Gy*(Dxn5X!B3H)f52`5b{3&cfvsboq+X6yQeHBBq}HN&(Zux zP#G$5fU%OKD{=mlJNN(Pj`R=i!HWOx-o?b(%F)$@K~44F?EW6k|JvQT{ogpxC;}zj zxnm)i*}MLoH}P-a-!c1VCfR>Z5KWR!74<)2_K!@Ae}sU>4l7|8V24CV~(u{c9%w3sZ85-v9sr delta 29643 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 diff --git a/plugins/s1-secops-skills/dist/sdl-dashboard.skill b/plugins/s1-secops-skills/dist/sdl-dashboard.skill index adc56dbcc4dff186c9c4397444c86ee9d3d85665..6c9274322acc80d3fb9a95be4e622a276202e6aa 100644 GIT binary patch delta 74414 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 cqyFctE}lVr9AU`+hG#g!P$9 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

      5|~Z8}nT(=M-NXeGwxFrF289J=Jb#|8eC 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

      ;2erSb&PRt2Jq@E8&KCi&%Y8@WH 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

      Ib?5+A_P~u0O{T}79}UF_ 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
      T$8e{kY<6Ni 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 z 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�JxA}7W5KQ`Cg@O&f7?E_lftF{E2^j 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 z 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 Zwe-|f#RLn?ksnRKkP}?fbb(HR{{ftesc--Q delta 91596 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 LPo8kNp8@{^L3-cn diff --git a/plugins/s1-secops-skills/dist/soc-investigator.skill b/plugins/s1-secops-skills/dist/soc-investigator.skill index ddf6fc0094b810065792d29e067c5d4161153c26..fd42c3a155a2413429dcacedd05539848cacb28a 100644 GIT binary patch delta 9109 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 IkNg7mAEGvPvH$=8 delta 8838 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 M0_7w8uju6e0sNB+N&o-= diff --git a/plugins/s1-secops-skills/docs/docker.md b/plugins/s1-secops-skills/docs/docker.md index 7d094a4..cd7bfb3 100644 --- a/plugins/s1-secops-skills/docs/docker.md +++ b/plugins/s1-secops-skills/docs/docker.md @@ -81,7 +81,7 @@ docker run -i --rm --pull=missing \ -e SDL_XDR_URL='https://xdr.us1.sentinelone.net' \ -e SDL_LOG_READ_KEY='...' \ -e SDL_CONFIG_READ_KEY='...' \ - ghcr.io/pmoses-s1/s1-mcps:1.2.4 s1-secops-mcp <<< '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}' + ghcr.io/pmoses-s1/s1-mcps:1.2.5 s1-secops-mcp <<< '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}' ``` Expected: a single JSON line back on stdout with `serverInfo.name = "sentinelone-mcp-server"`. Stderr should show `Tools: 26 registered` and one of the `configured`/`NOT configured` summaries per API surface. @@ -90,7 +90,7 @@ For a less verbose env-source pattern, put the values in a `.env` file and pass ```bash docker run -i --rm --pull=missing --env-file ~/.config/sentinelone/s1-mcp.env \ - ghcr.io/pmoses-s1/s1-mcps:1.2.4 s1-secops-mcp <<< '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}' + ghcr.io/pmoses-s1/s1-mcps:1.2.5 s1-secops-mcp <<< '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}' ``` The `.env` file is plain `KEY=value` per line. Keep its mode 0600 and out of any repo. @@ -100,8 +100,8 @@ The `.env` file is plain `KEY=value` per line. Keep its mode 0600 and out of any If you suspect a corrupted local image: ```bash -docker rmi ghcr.io/pmoses-s1/s1-mcps:1.2.4 -docker pull ghcr.io/pmoses-s1/s1-mcps:1.2.4 +docker rmi ghcr.io/pmoses-s1/s1-mcps:1.2.5 +docker pull ghcr.io/pmoses-s1/s1-mcps:1.2.5 ``` ### 5. Roll back to the npx path @@ -134,7 +134,7 @@ To use your own copy, mount your Cowork project folder read-only and point the e "-e", "S1_HEC_INGEST_URL", "-e", "SDL_XDR_URL", "-e", "SDL_LOG_READ_KEY", "-e", "SDL_CONFIG_WRITE_KEY", "-e", "SDL_CONFIG_READ_KEY", - "ghcr.io/pmoses-s1/s1-mcps:1.2.4", + "ghcr.io/pmoses-s1/s1-mcps:1.2.5", "s1-secops-mcp" ], "env": { "...": "..." } diff --git a/plugins/s1-secops-skills/docs/installation.md b/plugins/s1-secops-skills/docs/installation.md index 0ef1e88..ef1b987 100644 --- a/plugins/s1-secops-skills/docs/installation.md +++ b/plugins/s1-secops-skills/docs/installation.md @@ -50,7 +50,7 @@ All three servers run from public package registries: `s1-secops-mcp` and `@burt "-e", "SDL_LOG_READ_KEY", "-e", "SDL_CONFIG_WRITE_KEY", "-e", "SDL_CONFIG_READ_KEY", - "ghcr.io/pmoses-s1/s1-mcps:1.2.4", + "ghcr.io/pmoses-s1/s1-mcps:1.2.5", "sentinelone-mcp" ], "env": { diff --git a/plugins/s1-secops-skills/skills/hyperautomation/SKILL.md b/plugins/s1-secops-skills/skills/hyperautomation/SKILL.md index 532eeb2..380f729 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/SKILL.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/SKILL.md @@ -1,19 +1,19 @@ --- name: hyperautomation -description: > - Use this skill whenever a user wants to create, design, build, generate, write, or export a - SentinelOne Hyperautomation workflow in JSON format. Triggers include: any mention of - "Hyperautomation", "workflow", "automation", "SOAR", "playbook", "alert response", "trigger", - "scheduled workflow", "webhook workflow", or any request to automate a SentinelOne-related - security task. Also triggers when the user asks to import, export, test, validate, or submit - a workflow to a SentinelOne console via API. Always use this skill for any task involving - SentinelOne workflow JSON — even if phrased casually (e.g., "build me a thing that disables - a user when an alert fires"). Also triggers for autonomous / auto-response SOC requests: - "autonomous SOC", "SOC in a box", "auto-triage", "investigate and respond automatically", - "auto-isolate on a critical alert", "auto-close false positives and escalate real threats", - or letting an LLM decide isolate vs quarantine vs close per alert (the canonical - investigate-decide-respond shape lives in references/autonomous-soc-template.md). - When in doubt about whether this skill applies, use it. +author: Prithvi Moses +description: >- + Use this skill whenever a user wants to create, design, build, generate, write, or export + a SentinelOne Hyperautomation workflow in JSON format. Triggers: any mention of + "Hyperautomation", "workflow", "automation", "SOAR", "playbook", "alert response", + "trigger", "scheduled workflow", "webhook workflow", or any request to automate a + SentinelOne-related security task, even phrased casually ("build me a thing that disables + a user when an alert fires"). Also triggers when the user asks to import, export, test, + validate, or submit a workflow to a SentinelOne console via API, and for autonomous / + auto-response SOC requests: "autonomous SOC", "SOC in a box", "auto-triage", "investigate + and respond automatically", "auto-isolate on a critical alert", "auto-close false + positives and escalate real threats", or letting an LLM decide isolate vs quarantine vs + close per alert (the canonical investigate-decide-respond shape lives in + references/autonomous-soc-template.md). When in doubt, use it. --- # SentinelOne Hyperautomation Skill @@ -21,7 +21,7 @@ description: > This skill enables Claude to design and generate valid SentinelOne Hyperautomation workflow JSON, explain the logic behind workflows, and optionally submit them to a live console via API. -> **Sandbox proxy blocked?** If import/export API calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes `ha_list_workflows`, `ha_get_workflow`, `ha_import_workflow`, and `ha_export_workflow` — all running from your machine against the Hyperautomation API. +> **Sandbox proxy blocked?** If import/export API calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes `ha_list_workflows`, `ha_get_workflow`, `ha_import_workflow`, and `ha_export_workflow`, all running from your machine against the Hyperautomation API. ## Minimum viable workflow JSON (smoke test) @@ -69,7 +69,7 @@ before iterating on real action graphs. Notes: -- `dynamic_properties: {}` is valid — the manual-trigger node renders with no input fields. +- `dynamic_properties: {}` is valid: the manual-trigger node renders with no input fields. - **Import is not complete until published: treat create/import and publish as ONE atomic step, publish in the SAME step, never as a follow-up. ALWAYS publish a newly created or imported workflow to a Shared Draft.** A workflow created or imported via the API lands as a **Private Draft owned by the API token's user** (for example, the service user), so it is invisible in the console to the human who requested it. Immediately after a successful import, publish it: `POST /hyper-automate/api/v1/workflows/{workflow_id}/publish?accountIds=` (bodyless `{}`, returns 204; state stays `inactive`, meaning shared but not running). Use `siteIds=` for a site-scoped workflow. See `references/api-integration.md` section 8a. Skip this only when you are activating the workflow, since activation auto-publishes. You can only publish a draft owned by the token's user; publishing another user's private draft returns 403 "Workflow can't be published". - Activate the imported workflow with `POST /workflows/{workflow_id}/{version_id}/activation?siteIds=` (returns 204). @@ -81,7 +81,7 @@ Notes: When a user asks to build a workflow, follow this process: -### Step 1 — Understand the intent +### Step 1: Understand the intent Ask (or infer from context): @@ -90,10 +90,10 @@ Ask (or infer from context): - What is the desired outcome? (enrich alert, disable user, send notification, etc.) - Should the workflow run automatically or on-demand? -### Step 2 — Warn about integrations +### Step 2: Warn about integrations **CRITICAL**: Before generating JSON, identify any integration-backed actions (tag = "integration"). -These require pre-configured connections in the console that CANNOT be *created* via API. (An EXISTING connection CAN be pre-bound programmatically: set `integration_id` = the connection's id on each `http_request` action in the import JSON with `use_authentication_data: true`, then activate via `POST .../workflows/{id}/{version_id}/activation` — no manual UI binding needed. One connection also serves actions that hit different hosts, e.g. the LRQ console host and the HEC ingest host, since auth is header-injected regardless of the URL.) +These require pre-configured connections in the console that CANNOT be *created* via API. (An EXISTING connection CAN be pre-bound programmatically: set `integration_id` = the connection's id on each `http_request` action in the import JSON with `use_authentication_data: true`, then activate via `POST .../workflows/{id}/{version_id}/activation`; no manual UI binding needed. One connection also serves actions that hit different hosts, e.g. the LRQ console host and the HEC ingest host, since auth is header-injected regardless of the URL.) Always tell the user: *"This workflow uses the [X, Y, Z] integrations. Before importing, you must configure connections for these in your Hyperautomation → Integrations section."* @@ -101,17 +101,17 @@ Integration-backed actions have `"tag": "integration"` and a non-null `integrati Core actions (Variable, Loop, Condition, Delay, Send Email, HTTP Request without integration, Break Loop, Snippet, Wait for Slack, Create Interaction) have `"tag": "core_action"`. -### Step 3 — Generate the JSON +### Step 3: Generate the JSON Read `references/workflow-schema.md` to produce a valid workflow JSON. Read `references/building-blocks.md` for the correct action type structures. Read `references/functions-reference.md` for available functions and their syntax. -### Step 4 — Validate before outputting +### Step 4: Validate before outputting Self-check against `references/validation-rules.md` before presenting the workflow. -### Step 5 — API submission (optional) +### Step 5: API submission (optional) If the user wants to submit to a live console, read `references/api-integration.md`. @@ -149,7 +149,7 @@ S1_CONSOLE_API_TOKEN = os.environ.get("S1_CONSOLE_API_TOKEN") or _creds.get("S1_ Once resolved, validate them using the two-step test in `references/api-integration.md` (system health check + token permission check). Only proceed with import/trigger/activate after both checks pass. Always use a personal Console User API token, not a Service User -token — see `references/api-integration.md` for the reason. +token; see `references/api-integration.md` for the reason. ### Step 6: Publish so the requester can see it (REQUIRED after any API import) @@ -160,15 +160,15 @@ A workflow imported or created via the API is a **Private Draft owned by the tok --- -## Reference files — when to read each +## Reference files: when to read each | File | Read when... | |------|-------------| -| `references/workflow-schema.md` | Always when generating JSON — defines the envelope and action structure | +| `references/workflow-schema.md` | Always when generating JSON: defines the envelope and action structure | | `references/building-blocks.md` | Need the exact shape of a specific action type (trigger, loop, condition, etc.) | | `references/building-blocks-catalog.md` | **Picking what to use** for a given step / composing multi-action idioms / bootstrapping a SOAR recipe. Mined from 643 active production workflows. Read FIRST when designing a new workflow. | | `references/functions-reference.md` | Using `{{Function.X()}}` syntax or PowerQuery patterns | -| `references/validation-rules.md` | Before outputting any workflow — run the checklist | +| `references/validation-rules.md` | Before outputting any workflow: run the checklist | | `references/api-integration.md` | User wants to import/export/submit to a live console | | `references/snippets.md` | Building or calling a **snippet** (reusable sub-workflow): authoring rules, static vs dynamic `snippet_20` calls, and the snippet lifecycle API | | `references/autonomous-soc-template.md` | Building an **autonomous SOC** / auto-response workflow: canonical alert→investigate→triage→decide→respond shape, the reusable response-snippet library, dynamic-snippet dispatch, and a branded SOC-email snippet example | @@ -204,18 +204,17 @@ When in doubt, the load-bearing 17 atoms are: > **Snippet node types.** *Calling* a snippet from a workflow uses a `snippet_20` node (not `snippet`). *Authoring* a snippet uses a `snippet_trigger` (inputs) + `snippet_output` (returns) in place of a normal trigger. See `references/snippets.md`. -## Example workflows (in references/examples/) +## Example patterns (in references/) Annotated real examples to use as structural references: -- `simple-linear.md` — simple trigger → action → note pattern -- `branching.md` — condition with true/false branches + success/fail notes -- `loop-pattern.md` — loop with APPEND and BREAK logic -- `integration-pattern.md` — integration-backed HTTP request with connection placeholders +- `references/building-blocks-catalog.md`: patterns mined from 643 active production workflows. Atomic node shapes (Section A), composite idioms such as condition branches with success/fail notes, loops with APPEND and BREAK logic, and integration-backed HTTP requests with connection placeholders (Section B), plus full use-case recipes (Section C) and anti-patterns (Section E). +- `references/snippets.md`: authoring and calling reusable snippets, with worked `snippet_trigger`, `snippet_output`, and `snippet_20` node shapes. +- `references/autonomous-soc-template.md`: the canonical end-to-end investigate-decide-respond workflow template. --- -## Quick reference — action name → slugified reference +## Quick reference: action name → slugified reference When referencing a previous action in `{{...}}` syntax, use the kebab-case version of the action's `name` field. Examples: @@ -243,16 +242,16 @@ Use this when the workflow contains integration-backed actions: > ⚠️ **Pre-requisite integrations to configure before importing:** > -> - **[Integration Name]** — used for [action name(s)]. Configure at Hyperautomation → Integrations → [Integration Name] → Add Connection. +> - **[Integration Name]**: used for [action name(s)]. Configure at Hyperautomation → Integrations → [Integration Name] → Add Connection. > - *(repeat for each)* > -> Once configured, note the connection name — you may need to update the `connection_name` field in the JSON before importing. +> Once configured, note the connection name; you may need to update the `connection_name` field in the JSON before importing. --- ## Common mistakes to avoid -- ❌ Defining multiple variables in a single Variable action when one references another — they evaluate simultaneously and will fail with "variable not found" +- ❌ Defining multiple variables in a single Variable action when one references another; they evaluate simultaneously and will fail with "variable not found" ✅ Always use one Variable action per variable when chaining references. One var → one action, always. - ❌ Forgetting `Function.HTML_ENCODE` on note text passed to UAM GraphQL. Any quote, ampersand, or angle bracket breaks the mutation string. ✅ Always wrap: `\\\"{{Function.HTML_ENCODE(local_var.note)}}\\\"`. @@ -268,9 +267,9 @@ Use this when the workflow contains integration-backed actions: - ❌ Running an SDL PowerQuery (LRQ / `datasource` / `savelookup`) from an HTTP action bound to the **"SentinelOne"** mgmt connection. That connection signs as `Authorization: ApiToken`, but the SDL query endpoints (`POST /sdl/v2/api/queries` and `POST {sdl-host}/api/powerQuery`) require `Bearer`, so the action returns `HTTP 500 "Header must start with Bearer"`. ✅ Bind the **"SentinelOne SDL"** connection (Bearer by default) on the HTTP action. Notes: the ApiToken-only `/web/api/v2.1/dv/events/pq` cannot run the `datasource` command (returns 400) and is just an async wrapper over LRQ, so it is not usable for asset/inventory refresh; `/api/powerQuery` on the SDL host is synchronous (one call completes a `savelookup`) while `/sdl/v2/api/queries` is async. Tenant-validated 2026-06-13. - ❌ Ingesting OCSF / structured events into AI SIEM via HEC (`/services/collector/event?isParsed=true`) without SentinelOne source-attribution fields. OCSF omits them, so events land with a null source (no attribution, degraded console rendering, and `dataSource.name`-based filters/detections miss). - ✅ Include `dataSource.name`, `dataSource.vendor`, `dataSource.category` (set to `security` — required for AI SIEM to process custom OCSF sources), `event.type`, and `site_id`. Emit `event.type` as a FLAT dotted key (`"event.type": "..."`); a nested `event:{...}` object is dropped on ingest because `event` is a HEC-reserved key. -- ❌ **Leaving every action's `client_data.position` at `{x:0,y:0}`.** The flow runs fine but the console renders every node stacked on top of itself — unreadable. ALWAYS lay out the graph (tenant-validated 2026-07-18). - ✅ Assign real coordinates: top-level nodes (`parent_action: null`) step DOWN the y-axis (~180px apart, x=0); a loop's child nodes (`parent_action` = the loop's `export_id`) sit INSIDE the loop container at an x offset (~210) stepping down (~180px). Give the `loop` a large `client_data.dimensions` (e.g. `{width:620,height:720}`) so it encloses its children. A one-pass layout after you build the action list is enough — see the reference `_layout(actions)` pattern: + ✅ Include `dataSource.name`, `dataSource.vendor`, `dataSource.category` (set to `security`, required for AI SIEM to process custom OCSF sources), `event.type`, and `site_id`. Emit `event.type` as a FLAT dotted key (`"event.type": "..."`); a nested `event:{...}` object is dropped on ingest because `event` is a HEC-reserved key. +- ❌ **Leaving every action's `client_data.position` at `{x:0,y:0}`.** The flow runs fine but the console renders every node stacked on top of itself, unreadable. ALWAYS lay out the graph (tenant-validated 2026-07-18). + ✅ Assign real coordinates: top-level nodes (`parent_action: null`) step DOWN the y-axis (~180px apart, x=0); a loop's child nodes (`parent_action` = the loop's `export_id`) sit INSIDE the loop container at an x offset (~210) stepping down (~180px). Give the `loop` a large `client_data.dimensions` (e.g. `{width:620,height:720}`) so it encloses its children. A one-pass layout after you build the action list is enough; see the reference `_layout(actions)` pattern: ```python def _layout(actions): @@ -287,20 +286,20 @@ Use this when the workflow contains integration-backed actions: cd["position"] = {"x": 210, "y": y}; child_y[a["parent_action"]] = y + 180 ``` -- ❌ **Binding an http_request action to a CONNECTION id.** Setting `action.integration_id` to a specific connection instance's id imports + activates fine (204) but FAILS AT RUNTIME with `"Must provide connection in order..."` (activation does not validate the binding — see below). Tenant-validated 2026-07-18. - ✅ Bind the built-in **integration (action-pack) id** — the value `discover`/list returns as the workflow action's `integration_id` (e.g. the SentinelOne SDL action-pack id). A connection created via `POST /web/api/v2.1/hyper-automate/api/v1/connections` returns a *connection* id; do NOT bind that — bind the integration id it was created under, and rely on a connection existing under that integration. +- ❌ **Binding an http_request action to a CONNECTION id.** Setting `action.integration_id` to a specific connection instance's id imports + activates fine (204) but FAILS AT RUNTIME with `"Must provide connection in order..."` (activation does not validate the binding; see below). Tenant-validated 2026-07-18. + ✅ Bind the built-in **integration (action-pack) id**, the value `discover`/list returns as the workflow action's `integration_id` (e.g. the SentinelOne SDL action-pack id). A connection created via `POST /web/api/v2.1/hyper-automate/api/v1/connections` returns a *connection* id; do NOT bind that, bind the integration id it was created under, and rely on a connection existing under that integration. - ❌ **Trusting activation (204) as proof a flow works.** Activation validates neither connection binding nor `{{Function.JQ}}` references. ✅ Always run-now (or the per-action **Test Action**) after activating and confirm state `Completed` with empty `error_actions`. - ❌ **`select((ARR | index(.field)) != null)` in `Function.JQ`.** The `| index(...)` pipe rebinds `.` to `ARR`, so `.field` then indexes the array → `Cannot index array with string "field"`. ✅ Bind first: `select(.field as $n | (ARR | index($n)) != null)`. And when building HTML inside a `Function.JQ` string, use SINGLE-quoted HTML attributes so the only double quotes are jq string delimiters (pre-escaping `\"` inside collides with the wrapper's single quote-escape and the platform reports "Invalid References"). - ❌ Guarding a destructive action (block, isolate, disable) with a fail-OPEN approval gate (`... not_equals "dismissed"`). A `wait_for_slack` / `wait_for_interaction` timeout yields an empty value that passes `not_equals`, so the action auto-runs with **no** approval. ✅ Fail CLOSED: test `... equals "approved"` and route the destructive action off the `"true"` branch only (see `references/validation-rules.md` → Condition rules). -- ❌ Setting `parent_action` to a previous (non-loop) node's `export_id` to express flow order — this returns import `422 "Invalid workflow data"` even when everything else looks correct. `parent_action` is loop-membership ONLY. +- ❌ Setting `parent_action` to a previous (non-loop) node's `export_id` to express flow order: this returns import `422 "Invalid workflow data"` even when everything else looks correct. `parent_action` is loop-membership ONLY. ✅ `parent_action: null` on every node that is not inside a loop; wire flow order strictly via `connected_to.target` (see `references/validation-rules.md` → Import / `parent_action` rules). -- ❌ Writing back to an alert (note / analyst verdict / status) via the old `/web/api/v2.0/threats` REST endpoints — they are decommissioned and return HTTP 405. +- ❌ Writing back to an alert (note / analyst verdict / status) via the old `/web/api/v2.0/threats` REST endpoints: they are decommissioned and return HTTP 405. ✅ Use the Unified Alerts GraphQL API (`POST /web/api/v2.1/unifiedalerts/graphql`) for every write-back, not just notes (see `references/api-integration.md` → SentinelOne alert write-backs). -## Running an SDL LRQ from an HA flow (async launch + poll) — tenant-validated 2026-06-22 +## Running an SDL LRQ from an HA flow (async launch + poll): tenant-validated 2026-06-22 **Rule: always read SDL data from an HA flow via LRQ, never the synchronous `/api/powerQuery`.** The sync endpoint returns truncated / incomplete responses for large result sets (measured ~1/5 success on a ~1 MB `dataset` read; LRQ was 5/5) and is deprecated. Use LRQ for every SDL read from a workflow, including `dataset` / lookup-table reads, regardless of size. Reference `{{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries` so the host comes from the bound "SentinelOne SDL" connection, not a hardcoded tenant. @@ -308,21 +307,21 @@ Use this when the workflow contains integration-backed actions: `POST /sdl/v2/api/queries` is ASYNC. The launch response is NOT the results: it returns `body.id` plus `body.stepsCompleted` / `body.stepsTotal`, and `body.data` is `null` while the query is still -running. The query id is also EPHEMERAL — it expires shortly after the query finishes. So a fixed +running. The query id is also EPHEMERAL; it expires shortly after the query finishes. So a fixed wait fails BOTH ways: too short returns `data: null` (still running); too long returns HTTP 404 "query id not found" (the id expired, and the downstream reference then resolves to `UnresolvedLanguageReference`). Do NOT use one long delay. Use a tight POLL LOOP that reads the moment the query is done. Required pattern (tenant-validated 2026-06-25): -1. **Launch** — `POST {{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries` with body +1. **Launch**: `POST {{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries` with body `{"queryType":"PQ","tenant":true,"startTime":...,"endTime":...,"queryPriority":"HIGH","pq":{"query":...,"resultType":"TABLE"}}`. Capture `body.id` AND the `X-Dataset-Query-Forward-Tag` response header (mandatory, session-scoped, echoed on every GET/DELETE) into local vars. Extract the header case-insensitively with JQ: `{{Function.JQ(launch-slug.headers, "to_entries | map(select(.key|ascii_downcase==\"x-dataset-query-forward-tag\")) | .[0].value", true)}}`. -2. **Poll loop** — a `loop` (while, capped, e.g. 60 iterations) whose FIRST inner action is the GET +2. **Poll loop**: a `loop` (while, capped, e.g. 60 iterations) whose FIRST inner action is the GET `GET {{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries/{{local_var.query_id}}?lastStepSeen=0`, echoing header `X-Dataset-Query-Forward-Tag: {{local_var.forward_tag}}`. Then a condition on the - POLL body (NOT the launch body — the launch body is captured once and never updates inside the loop): + POLL body (NOT the launch body, the launch body is captured once and never updates inside the loop): done when `{{poll-slug.body.stepsCompleted}} = {{poll-slug.body.stepsTotal}}` (operator `equals`; the done-condition field is **`stepsTotal`**. Live-verified 2026-07-29 by dumping a raw LRQ poll body: it carries BOTH `stepsTotal` and `totalSteps` (both equal, e.g. 2), so either works and @@ -330,7 +329,7 @@ the query is done. Required pattern (tenant-validated 2026-06-25): SDL docs). TRUE → consume results + `break_loop`. FALSE → a short `delay` (~5s) as the leaf of the false branch; the loop then re-iterates and re-polls. 3. **Loop-scoped outputs are NOT visible outside the loop.** Every action that reads a poll result - (`{{poll-slug.body...}}`) — extract/read, branch, notify, break — MUST live INSIDE the loop + (`{{poll-slug.body...}}`), extract/read, branch, notify, break, MUST live INSIDE the loop (`parent_action` = the loop's export_id). An action placed after the loop that references a loop-internal output fails to resolve. Read from the POLL response: `poll-slug.body.data.columns` (array of `{name}`), `poll-slug.body.data.values` (2D array); count rows with @@ -345,7 +344,7 @@ signs `ApiToken` and the SDL endpoints reject it with `HTTP 500 "Header must sta Create/verify this connection at Hyperautomation → Integrations → SentinelOne SDL → Add Connection (Bearer token) BEFORE activating the workflow; activation otherwise fails 400 "requires configuration". -## Posting a UAM SecurityAlert from an HA flow that actually SURFACES — tenant-validated 2026-06-22 +## Posting a UAM SecurityAlert from an HA flow that actually SURFACES, tenant-validated 2026-06-22 Post ONE self-contained alert to `{HEC_INGEST_URL}/v1/alerts` (Bearer + `S1-Scope` headers). A separate `/v1/indicators` call is NOT needed, embed the indicator inline in @@ -384,10 +383,10 @@ baseline but with zero events in the live window, which needs a `left join` + `d The **alternate is an HA watchdog**: a scheduled (or manual / run-now) workflow that 1. launches the full PowerQuery as an SDL LRQ (the LRQ runs on raw events, so `left join`, `dataset`, - `savelookup`, wide/`timebucket`, large `lookup`, etc. all work) — see "Running an SDL LRQ from an HA + `savelookup`, wide/`timebucket`, large `lookup`, etc. all work); see "Running an SDL LRQ from an HA flow" above; 2. polls the LRQ to completion and reads back the result rows; -3. posts ONE OCSF SecurityAlert to UAM for the offending rows (or a summary) — see "Posting a UAM +3. posts ONE OCSF SecurityAlert to UAM for the offending rows (or a summary): see "Posting a UAM SecurityAlert from an HA flow that actually SURFACES" above; set `metadata.product = {"name":"Hyperautomation","vendor_name":"SentinelOne"}` for attribution. @@ -409,13 +408,13 @@ skill scripts. The MCP server runs locally on your machine and makes direct HTTP ### Deployment gotchas (confirmed 2026-06-11 on usea1-purple) - **`ha_import_workflow` does not scope to a site.** It posts to `/import` with no `siteIds`, so - on a site-scoped tenant it returns the misleading `403 "Insufficient permissions"` — not a role + on a site-scoped tenant it returns the misleading `403 "Insufficient permissions"`, not a role problem. For a site-scoped deploy, call the REST endpoint directly with the scope param: `POST /web/api/v2.1/hyper-automate/api/public/workflow-import-export/import?siteIds=` with body `{"data": }` (e.g. via the `sentinelone-mgmt-console-api` POST helper). For an account-level deploy use the same public endpoint with `?accountIds=`; the v1 `/workflow-import-export/import?_scopeId=&_scopeLevel=account` path returns `403`. Same - scope rule applies to `activation`, `deactivate`, `publish`, and `DELETE` — append + scope rule applies to `activation`, `deactivate`, `publish`, and `DELETE`, append `?siteIds=` or `?accountIds=` to match where the workflow lives. - **There is no in-place update.** Import always creates a NEW workflow. Re-importing a name that already exists succeeds but the console auto-appends `(1)`, `(2)`, … to the name. To "edit" a diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/api-integration.md b/plugins/s1-secops-skills/skills/hyperautomation/references/api-integration.md index 82c1ce2..9b0a743 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/api-integration.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/api-integration.md @@ -9,10 +9,10 @@ Two environment variables drive all API interactions with the console: | `S1_CONSOLE_URL` | Full console base URL, e.g. `https://usea1-acme.sentinelone.net` | | `S1_CONSOLE_API_TOKEN` | Console User (personal) API token (generated in Settings → Users → API Token) | -**Always validate these before use.** Run the two-step check below — if either step fails, +**Always validate these before use.** Run the two-step check below, if either step fails, stop and tell the user what went wrong before proceeding with any workflow operation. -### Step 1 — Validate `S1_CONSOLE_URL` (no auth required) +### Step 1: Validate `S1_CONSOLE_URL` (no auth required) ``` GET {S1_CONSOLE_URL}/web/api/v2.1/system @@ -22,7 +22,7 @@ This endpoint requires no authentication and always returns `200` with `{"data": when the console is reachable. A non-200 response or a network error means `S1_CONSOLE_URL` is wrong or the console is unreachable. -### Step 2 — Validate `S1_CONSOLE_API_TOKEN` (auth + permission check) +### Step 2: Validate `S1_CONSOLE_API_TOKEN` (auth + permission check) ``` GET {S1_CONSOLE_URL}/web/api/v2.1/hyper-automate/api/public/workflows?limit=1 @@ -31,8 +31,8 @@ Authorization: ApiToken {S1_CONSOLE_API_TOKEN} A `200` response confirms the token is valid and has `Hyper Automate.view` permission. Failure responses: -- `401` — token is missing or expired -- `403` — token lacks `Hyper Automate.view` permission +- `401`: token is missing or expired +- `403`: token lacks `Hyper Automate.view` permission ```javascript // Validation helper @@ -77,7 +77,7 @@ All scope-filtering query params are **plural**: `accountIds`, `siteIds`, `group You will see two different scope-filter shapes in SentinelOne tutorials and Slack snippets. Only the **plural query-string** shape works on the Hyperautomation API. The other variants all return `HTTP 403 "Insufficient -permissions"` — a misleading error that looks like a missing role, but is +permissions"`, a misleading error that looks like a missing role, but is actually a wrong parameter name. | Shape | Result | @@ -235,12 +235,12 @@ to work for post-import retrieval. Accepts multiple workflow objects. Use for bulk deployments. **Body params** (multipart/form-data): -- `file` (required) — the batch import file (workflow JSON or ZIP archive) -- `filter` (required) — JSON-encoded string. Send `{}` for "no filter". +- `file` (required): the batch import file (workflow JSON or ZIP archive) +- `filter` (required): JSON-encoded string. Send `{}` for "no filter". ⚠️ Sending `filter` as an **empty string** (`""`) triggers a server-side parse error that surfaces as **HTTP 500**, *not* HTTP 4xx. If you see a 500 on batch import, suspect the `filter` field first. -- `body` (optional) — `{ "data": {...}, "filter": {"type": "JsonPath"|"JsonSchema", "value": "..."} }` +- `body` (optional): `{ "data": {...}, "filter": {"type": "JsonPath"|"JsonSchema", "value": "..."} }` Example: ```bash @@ -251,7 +251,7 @@ curl -X POST "$S1_CONSOLE/web/api/v2.1/hyper-automate/api/public/workflow-import ``` **Responses**: `201` success, `422` validation error (missing field), -`403` (real permission check; fires only after schema validation passes — +`403` (real permission check; fires only after schema validation passes; don't trust a 500 from a malformed `filter` as evidence about permissions). --- @@ -273,7 +273,7 @@ Returns the full workflow JSON for re-import or inspection. **Permission**: `Hyper Automate.workflowsExport` -**Query params** (all optional — combine to filter): +**Query params** (all optional, combine to filter): | Param | Type | Description | |-------|------|-------------| | `workflow_ids` | string | Comma-separated workflow IDs | @@ -401,7 +401,7 @@ returns `204`), then (2) `DELETE .../workflows/{id}?siteIds=` (returns `204` 2026-07-11 on two active watchdog flows: deactivate `204` then delete `204`; a direct delete of the still-active flow first returned the 400 above. -**Query params**: `accountIds` or `siteIds` — match where the workflow lives. A `404 "Object not +**Query params**: `accountIds` or `siteIds`, match where the workflow lives. A `404 "Object not found"` means the id is not under that scope (or already deleted). **Responses**: `204` success (no body). @@ -537,7 +537,7 @@ Uses the `S1_CONSOLE_URL` and `S1_CONSOLE_API_TOKEN` environment variables. Alwa ```javascript const apiUrl = process.env.S1_CONSOLE_URL; // e.g. https://usea1-acme.sentinelone.net const apiToken = process.env.S1_CONSOLE_API_TOKEN; // Service User API token -const siteId = process.env.SITE_ID; // optional — scope to a specific site +const siteId = process.env.SITE_ID; // optional, scope to a specific site const base = `${apiUrl}/web/api/v2.1/hyper-automate/api/public`; const headers = { @@ -583,7 +583,7 @@ const triggerRes = await fetch( | HTTP | Meaning | Common causes | |------|---------|---------------| -| `200` / `201` / `204` | Success | — | +| `200` / `201` / `204` | Success | n/a | | `400` | Bad request | Malformed body, invalid field value | | `401` | Unauthorized | Missing or expired API token | | `403` | Forbidden | Token lacks required permission | @@ -591,17 +591,17 @@ const triggerRes = await fetch( | `422` | Validation error | Schema mismatch, duplicate `export_id`, invalid `type` value, missing required field | Common import `422` messages: -- `"Invalid action type"` — typo in `type` field -- `"export_id conflict"` — duplicate `export_id` values in actions array -- `"Invalid target"` — `connected_to.target` references non-existent `export_id` -- `"Missing required field"` — required field absent from data object +- `"Invalid action type"`: typo in `type` field +- `"export_id conflict"`: duplicate `export_id` values in actions array +- `"Invalid target"`: `connected_to.target` references non-existent `export_id` +- `"Missing required field"`: required field absent from data object --- -## SentinelOne alert write-backs — use the Unified Alerts GraphQL API +## SentinelOne alert write-backs: use the Unified Alerts GraphQL API -When a workflow writes back to the alert that triggered it — add a note, set the analyst verdict, -change status, assign an owner, or set a ticket id — use the **Unified Alerts GraphQL API**, not the +When a workflow writes back to the alert that triggered it, add a note, set the analyst verdict, +change status, assign an owner, or set a ticket id; use the **Unified Alerts GraphQL API**, not the legacy REST threats endpoints. The old `POST /web/api/v2.0/threats/*` note/verdict/status paths are **decommissioned and return HTTP 405.** @@ -611,11 +611,11 @@ legacy REST threats endpoints. The old `POST /web/api/v2.0/threats/*` note/verdi The **note-add** mutation shape (`addAlertNote` / `alertTriggerActions` with `S1/alert/addNote`) is already documented in `building-blocks-catalog.md` → B6. The same `alertTriggerActions` envelope drives -the rest of the write-back actions — pass a different `id` in `actions[]`: +the rest of the write-back actions, pass a different `id` in `actions[]`: | Action id | Payload | |-----------|---------| -| `S1/alert/addNote` | `{ note: { value: $note } }` — or rich: `{ formattedNote: { text: $text, plainText: $plain, type: MARKDOWN } }` | +| `S1/alert/addNote` | `{ note: { value: $note } }`: or rich: `{ formattedNote: { text: $text, plainText: $plain, type: MARKDOWN } }` | | `S1/alert/analystVerdictUpdate` | `{ analystVerdict: { value: } }` | | `S1/alert/statusUpdate` | `{ status: { value: } }` | | `S1/alert/assignUser` | assign an owner to the alert | @@ -626,17 +626,17 @@ the rest of the write-back actions — pass a different `id` in `actions[]`: - **Enum values are UNQUOTED GraphQL literals**, not strings. `AnalystVerdict`: `FALSE_POSITIVE_BENIGN` / `TRUE_POSITIVE_MALWARE` / `UNDEFINED` / … ; `Status`: `NEW` / `IN_PROGRESS` / `RESOLVED`. Writing `"IN_PROGRESS"` (quoted) fails. -- **The `$id` GraphQL variable must be typed `String!`, not `ID!`** — `stringEqual.value` expects a +- **The `$id` GraphQL variable must be typed `String!`, not `ID!`**: `stringEqual.value` expects a `String`, so an `ID!` variable raises `VariableTypeMismatch`. - **`ContentType` enum** for `formattedNote.type` is `HTML | MARKDOWN | PLAIN_TEXT`. `MARKDOWN` renders - headings, bold, tables, and links in the alert Notes panel — prefer it for rich evidence notes. + headings, bold, tables, and links in the alert Notes panel; prefer it for rich evidence notes. - **Unknown or unavailable action ids come back as FAILURES, not silent no-ops.** The mutation returns HTTP 200 with the bad action under `actions[].failure` (`errorMessage: "No result returned by target service"`), NOT an empty `actions: []` and NOT under `skip`. Always check `actions[].failure` and `actions[].skip`, not just `success`: a wrong or deprecated id (e.g. `setAnalystVerdict` / `setStatus`, which are absent from the live catalog) fails here while the HTTP action still reports 200. Enumerate the valid ids for an alert first via the `alertAvailableActions` query. (Live-validated 2026-07-24.) -- Writes are **eventually consistent (~5s)** — don't read-after-write immediately and assume failure. +- Writes are **eventually consistent (~5s)**: don't read-after-write immediately and assume failure. --- @@ -653,14 +653,14 @@ render as native on the canvas, the vendor's `integration_id`. unconfirmed on S-26.x. `GET {base}/public-actions` returns 404 (as do `/actions` and `/integration-actions`); capture the current path from a browser DevTools network trace of the Hyperautomation > Integrations page before relying on it. (Path 404 verified live 2026-07-24.) -- **`url` / `url_path` / `payload` overrides on an integration action ARE honored** — the action then +- **`url` / `url_path` / `payload` overrides on an integration action ARE honored**: the action then executes as a generic HTTP request through the bound connection. To make a node *unambiguously* a generic request, set `public_action_id: null`. - **Null out `connection_id`s in exported workflow JSON for cross-tenant portability.** A hard-coded `connection_id` from the source tenant imports as `404 "connection not found"` in another tenant; leaving it `null` imports clean (the user binds the connection after import). - **Prefer NEW API endpoints over deprecated ones** for every native action, and verify the real - endpoint before wiring — deprecated paths can reject functions or return empty rows silently. + endpoint before wiring, deprecated paths can reject functions or return empty rows silently. --- @@ -675,7 +675,7 @@ render as native on the canvas, the vendor's `integration_id`. activate, see sections 8, 8a, and 8b above.) Param behaviour live-validated 2026-07-24. - **Per-action execution output is NOT exposed via the API** (the per-action output endpoints 404). Validate a deployed workflow by triggering it and reading the resulting alert notes / downstream side - effects — not by inspecting action outputs over the API. + effects, not by inspecting action outputs over the API. --- @@ -688,6 +688,6 @@ render as native on the canvas, the vendor's `integration_id`. | US East 2 | `https://usea2-.sentinelone.net` | **Token location**: Settings → Users → [your user] → API Token → Generate. -Use a **Console User (personal) token**. Do not use a Service User token — the Hyperautomation +Use a **Console User (personal) token**. Do not use a Service User token, the Hyperautomation API provides no endpoint to share or transfer workflow ownership, so a workflow imported with a Service User token would be owned by that service account and invisible to human users. diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/autonomous-soc-template.md b/plugins/s1-secops-skills/skills/hyperautomation/references/autonomous-soc-template.md index cd81ae5..d4dff83 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/autonomous-soc-template.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/autonomous-soc-template.md @@ -6,7 +6,7 @@ analyst in the loop. ## Example prompts that should trigger this template Use this template when a user asks for end-to-end alert handling, auto-response, or a "SOC in a -box" — even when phrased casually. Representative prompts: +box", even when phrased casually. Representative prompts: - "Build an autonomous SOC workflow that investigates and responds to alerts on its own." - "When a critical alert fires, run Purple AI, decide the response, and act, no analyst needed." @@ -36,28 +36,28 @@ a snippet whenever you notice the same action graph appearing in more than one w ## Canonical shape (alert-triggered) -1. **Singularity Response Trigger** — fire on the target alert (filter by name / severity). -2. **Trigger Agentic Investigation** — `http_request` to Unified Alerts GraphQL, mutation +1. **Singularity Response Trigger**: fire on the target alert (filter by name / severity). +2. **Trigger Agentic Investigation**: `http_request` to Unified Alerts GraphQL, mutation `alertTriggerActions` with action `S1/aiInvestigation/run` (`payload.aiInvestigation{tenantId, consoleVersion:"HyperAutomation", userAgent:"SentinelOne-HyperAutomation"}`). -3. **Pause for Investigation Completion** — a **static** snippet call that polls until the +3. **Pause for Investigation Completion**: a **static** snippet call that polls until the investigation finishes (poll-until-complete loop below). Shared by every alert workflow. -4. **Get Investigation Summary** — `http_request` GraphQL `aiInvestigations { status verdict result … }` +4. **Get Investigation Summary**: `http_request` GraphQL `aiInvestigations { status verdict result … }` once complete. -5. *(optional)* **IOC enrichment** — extract hashes into a variable, branch SHA1 / SHA256 / MD5 +5. *(optional)* **IOC enrichment**: extract hashes into a variable, branch SHA1 / SHA256 / MD5 checks, enrich with an LLM or a threat-intel action. -6. **Triage & Summary** — an `llm` action turns the investigation + alert into a verdict/summary. -7. **Summary markdown** — an `llm` action formats a human-readable summary. -8. **Add Note / Set Status** — `http_request` GraphQL `addAlertNote` + `analystVerdictUpdate` / +6. **Triage & Summary**: an `llm` action turns the investigation + alert into a verdict/summary. +7. **Summary markdown**: an `llm` action formats a human-readable summary. +8. **Add Note / Set Status**: `http_request` GraphQL `addAlertNote` + `analystVerdictUpdate` / `statusUpdate` (wrap note text in `Function.HTML_ENCODE`). -9. *(optional)* **Ticket + collaboration** — create a ticket, open a Slack channel (snippet), invite, +9. *(optional)* **Ticket + collaboration**: create a ticket, open a Slack channel (snippet), invite, notify. -10. **Response Decision** — an `llm` action returns ONE response action, expressed as the **name of a +10. **Response Decision**: an `llm` action returns ONE response action, expressed as the **name of a response snippet**. -11. **Response** — a **dynamic** `snippet_20` (`is_dynamic: true`, +11. **Response**: a **dynamic** `snippet_20` (`is_dynamic: true`, `dynamic_snippet_name: "{{response-decision.data}}"`) that dispatches to the chosen response snippet, passing the shared input contract. -12. **Wrap-up** — `llm` action summary → update alert notes → update the collaboration channel. +12. **Wrap-up**: `llm` action summary → update alert notes → update the collaboration channel. ## The reusable snippet library @@ -79,7 +79,7 @@ to any of them with one `inputs` map. A workable contract: The Response Decision LLM returns the name of one snippet in the library; the dynamic node runs it with these inputs. Adding a new response is then just: author a new snippet against the same -contract and teach the LLM its name — no change to the parent workflow. +contract and teach the LLM its name; no change to the parent workflow. ## Poll-until-complete loop (used by the Pause snippet) @@ -94,7 +94,7 @@ A while-loop that polls a status and breaks when done: - **Inner chain** (each node `parent_action` = the loop's `export_id`): `[delay] → Get Status (http) → condition(status == "COMPLETED") ─true→ break_loop`. The condition's false path has no edge, so the loop iterates again. -- Read the full result AFTER the loop (a fresh Get) — a node placed after the loop can read the +- Read the full result AFTER the loop (a fresh Get): a node placed after the loop can read the loop's own outputs but not a loop-internal node's output. ## Build order diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks-catalog.md b/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks-catalog.md index c39379f..cc1013f 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks-catalog.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks-catalog.md @@ -635,7 +635,7 @@ instead of being duplicated across flows. Full authoring + calling + lifecycle: - Bindings survive export as `snippet_workflow_id` / `snippet_version_id`; resolve them with `GET /workflow-actions/snippets-versions/{workflowId}/{versionId}?query={}`. -**Authoring a snippet** uses `snippet_trigger` (inputs) + `snippet_output` (returns) — see +**Authoring a snippet** uses `snippet_trigger` (inputs) + `snippet_output` (returns), see `references/snippets.md` for the node shapes and the import rules. --- @@ -776,7 +776,7 @@ Variable (cursor = next_cursor from response) ↓ Condition (cursor is empty?) TRUE → Break Loop - (NO false edge — the while loop re-runs the inner block automatically; see warning) + (NO false edge, the while loop re-runs the inner block automatically; see warning) ``` > **Confirmed 2026-06-11 (live import):** do NOT wire the condition's `FALSE` branch back to the @@ -791,7 +791,7 @@ Most-used cursor field in the corpus: > **S1 list-endpoint pagination quirks (confirmed 2026-06-11 on `/web/api/v2.1/agents`):** > `pagination.totalItems` is populated only on the **first** page (empty cursor) and returns `0` -> on later pages — for a true total, read it on page 1 or use the length of the gathered list. +> on later pages, for a true total, read it on page 1 or use the length of the gathered list. > `nextCursor` is returned **already URL-encoded** (contains `%3D`); pass it straight into the > next request's `cursor=` (do NOT wrap it in `Function.URL_ENCODE`). An empty `cursor=` returns > page 1 cleanly, so seeding `cursor = ""` is safe. @@ -1108,7 +1108,7 @@ array**, not a raw array. Verified: all 1 in-operator usage in the corpus uses - Call a snippet with a **`snippet_20`** node bound via `snippet_workflow_id` + `snippet_version_id` (these persist through export). Do NOT use type `"snippet"` and do NOT embed the snippet's inner - actions into the parent — embedding orphans a node. + actions into the parent, embedding orphans a node. - Authoring a snippet: `export_id 0` must be a real body action, not the `snippet_trigger`; `snippet_output` values must be non-empty (a bare `{{slug.}}` imports but is invalid at runtime, use a literal or a real `{{slug.field}}`); the workflow name must not contain parentheses `()`. diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks.md b/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks.md index 03ac04b..fa9ca25 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/building-blocks.md @@ -12,7 +12,7 @@ Complete data payloads for every action type in SentinelOne Hyperautomation. ## TRIGGERS -### Manual Trigger (static — no user input) +### Manual Trigger (static: no user input) ```json { "type": "manual_trigger", @@ -36,7 +36,7 @@ Complete data payloads for every action type in SentinelOne Hyperautomation. } ``` -### Manual Trigger (dynamic — prompts user for input) +### Manual Trigger (dynamic: prompts user for input) ```json { "type": "manual_trigger", @@ -158,17 +158,17 @@ Reference incoming data: `{{http-trigger.body.someField}}` > be a **JSON-encoded string of an array** (e.g. `"[\"HIGH\",\"CRITICAL\"]"`), not a raw JSON > array. Every active production flow uses this string-encoded format. Common trigger data references: -- `{{singularity-response-trigger.data.id}}` — alert ID -- `{{singularity-response-trigger.data.name}}` — alert name -- `{{singularity-response-trigger.data.severity}}` — severity -- `{{singularity-response-trigger.data.asset.name}}` — asset/hostname -- `{{singularity-response-trigger.data.asset.agentUuid}}` — agent UUID -- `{{singularity-response-trigger.data.process.file.sha1}}` — file SHA1 -- `{{singularity-response-trigger.data.process.file.sha256}}` — file SHA256 -- `{{singularity-response-trigger.data.detectionSource.product}}` — product (EDR, STAR, CWS...) -- `{{singularity-response-trigger.data.externalId}}` — threat external ID -- `{{singularity-response-trigger.data.indicators[0].id}}` — first indicator ID -- `{{singularity-response-trigger.data.indicators[0].eventTime}}` — first indicator event time +- `{{singularity-response-trigger.data.id}}`: alert ID +- `{{singularity-response-trigger.data.name}}`: alert name +- `{{singularity-response-trigger.data.severity}}`: severity +- `{{singularity-response-trigger.data.asset.name}}`: asset/hostname +- `{{singularity-response-trigger.data.asset.agentUuid}}`: agent UUID +- `{{singularity-response-trigger.data.process.file.sha1}}`: file SHA1 +- `{{singularity-response-trigger.data.process.file.sha256}}`: file SHA256 +- `{{singularity-response-trigger.data.detectionSource.product}}`: product (EDR, STAR, CWS...) +- `{{singularity-response-trigger.data.externalId}}`: threat external ID +- `{{singularity-response-trigger.data.indicators[0].id}}`: first indicator ID +- `{{singularity-response-trigger.data.indicators[0].eventTime}}`: first indicator event time ### Email Trigger ```json @@ -226,7 +226,7 @@ execution detail and consumable by parent workflows). `expire_in_unit` / `expire_in_value` / `expire_method` are only used for global variables that should TTL out; leave null for local. -> **HARD RULE — one variable per action when referencing other local variables** +> **HARD RULE: one variable per action when referencing other local variables** > > All entries in a single Variable action's `variables` array are evaluated simultaneously, not > sequentially. If variable B's value references `{{local_var.A}}` and A is defined in the same @@ -235,7 +235,7 @@ should TTL out; leave null for local. > **Rule**: if any variable's value references a local variable defined elsewhere in the same > workflow, give each such variable its own dedicated Variable action. > -> ❌ **Wrong** — `fullPath` silently resolves to empty because `baseUrl` is not yet available: +> ❌ **Wrong**: `fullPath` silently resolves to empty because `baseUrl` is not yet available: > ```json > { > "name": "Set Vars", @@ -248,7 +248,7 @@ should TTL out; leave null for local. > } > ``` > -> ✅ **Right** — two separate actions, each with one variable: +> ✅ **Right**: two separate actions, each with one variable: > ```json > { > "name": "Set Base URL", @@ -275,7 +275,7 @@ should TTL out; leave null for local. > reference each other or any other `local_var` defined in this workflow (e.g., all values are > literals, trigger fields, or external action outputs). -### Loop (dynamic — iterates over an array) +### Loop (dynamic: iterates over an array) ```json { "type": "loop", @@ -295,7 +295,7 @@ Current index: `{{loop-items.index}}` Connect loop to first inner action using `custom_handle: "inner"`. Actions inside the loop have `"parent_action": `. -### Loop (while — indefinite, until Break) +### Loop (while: indefinite, until Break) ```json { "type": "loop", @@ -311,7 +311,7 @@ Actions inside the loop have `"parent_action": `. } ``` -### Loop (fixed — runs N times) +### Loop (fixed: runs N times) ```json { "type": "loop", @@ -412,7 +412,7 @@ Must have `"parent_action": `. `"connected_to": []`. friendly tables, embedded SentinelOne logo banner). For attachments, use the keys **`file_name`** and **`file_content`** (NOT `name`/`content`): `"attachments": [{"file_name": "report.csv", "file_content": "{{local_var.csvB64}}"}]`. -`file_content` is base64-encoded — `{{Function.BASE64_ENCODE(local_var.csv)}}` for plain text, or +`file_content` is base64-encoded, `{{Function.BASE64_ENCODE(local_var.csv)}}` for plain text, or `{{Function.COMPRESS(...)}}` for a zip. > **Confirmed 2026-06-11 (live import):** using `name`/`content` fails import with @@ -443,7 +443,7 @@ shaping note bodies, normalizing event objects before SDL ingest. **75 of 249 da actions in the corpus are exactly the "Generate UUID" template above**, copy it verbatim when you need a correlation ID. -### HTTP Request (core — no integration) +### HTTP Request (core: no integration) ```json { "type": "http_request", @@ -504,27 +504,35 @@ Same as above but: - URL uses `{{Connection.protocol}}{{Connection.url}}/path/to/api` When generating workflows for import, always set `connection_id`, `connection_name`, -and `integration_id` to null/"" — these are resolved from the user's configured connections. +and `integration_id` to null/""; these are resolved from the user's configured connections. ### URL pattern for integration-backed SentinelOne actions: ``` "url": "{{Connection.protocol}}{{Connection.url}}/web/api/v2.1/" ``` -### Snippet +### Snippet (call a reusable sub-workflow) + +The calling node type is **`snippet_20`**, not `snippet` (see `building-blocks-catalog.md` A15 and `snippets.md`). A bare `"type": "snippet"` appears in older exported flows; do not generate it for new workflows. + ```json { - "type": "snippet", + "type": "snippet_20", "tag": "core_action", + "snippet_workflow_id": "", + "snippet_version_id": "", "data": { "name": "My Snippet", - "action_type": "snippet" - }, - "snippet_workflow_id": null, - "snippet_version_id": null + "action_type": "snippet_20", + "inputs": "{\"Param\":\"{{some-action.value}}\"}", + "use_latest_snippet_version": false, + "is_dynamic": false, + "dynamic_snippet_name": "My Snippet" + } } ``` -Snippets are reusable groups of actions. Connect using `custom_handle: "inner"`. + +Snippets are reusable groups of actions. `data.inputs` is a JSON string mapping the snippet's input parameters to parent references; `use_latest_snippet_version: true` auto-tracks the newest published version. Connect it like any ordinary action (`custom_handle: null`); `custom_handle: "inner"` is only for a loop's first inner action. Authoring a snippet uses `snippet_trigger` + `snippet_output` nodes; full authoring, calling, and lifecycle detail lives in `snippets.md`. ### Create Interaction ```json @@ -595,7 +603,7 @@ Action → Condition (Is Success, checks status_code) → FALSE: Variable (fail note) → HTTP (add note) ``` -### Add Note to Unified Alert (GraphQL mutation — most common pattern) +### Add Note to Unified Alert (GraphQL mutation: most common pattern) ```json { "name": "Add Note to Alert", diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/connections.md b/plugins/s1-secops-skills/skills/hyperautomation/references/connections.md index b4f6fed..2fa3dcb 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/connections.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/connections.md @@ -1,8 +1,8 @@ -# Connections — creating integration connections via API +# Connections: creating integration connections via API Integration-backed actions (`tag: "integration"`) need a connection under their `integration_id`. An existing connection can be bound programmatically (bind the integration id, set -`use_authentication_data: true`). A connection can also be **created** via the API — but creating +`use_authentication_data: true`). A connection can also be **created** via the API, but creating one requires supplying the integration's secret (an API token) in the request body. That secret is supplied by the human operator; do not hard-code, echo, or store it. @@ -13,7 +13,7 @@ POST /web/api/v2.1/hyper-automate/api/v1/connections?siteIds= (or ?accou ``` Returns `200` with a connection id. Scope with `siteIds` / `accountIds` to place the connection -where the flow lives — connections are per-scope, so a site flow needs a connection in that site +where the flow lives; connections are per-scope, so a site flow needs a connection in that site (or an account-level one that covers it). ## Body (SentinelOne first-party connections) @@ -35,7 +35,7 @@ All three SentinelOne connections share one body shape; they differ only in `nam "way_to_pass_input": "Authorization", "way_to_pass_prefix": "Bearer", "authentication_type": "api_key", - "api_key": "" + "api_key": "" } } } @@ -45,9 +45,9 @@ All three SentinelOne connections share one body shape; they differ only in `nam |---|---|---|---| | **SentinelOne SDL** | `SentinelOne SDL connection` | `Bearer` | SDL LRQ / PowerQuery / HEC ingest (`/sdl/…`, `/services/collector`) | | **SentinelOne GraphQL** | `SentinelOne GraphQL connection` | `Bearer` | Unified Alerts GraphQL, agentic-investigation, alert write-backs (`/web/api/v2.1/unifiedalerts/graphql`) | -| **SentinelOne** (mgmt) | `SentinelOne connection` | `ApiToken` | Mgmt REST (`/web/api/v2.1/…`) — sign as `ApiToken`, NOT `Bearer` | +| **SentinelOne** (mgmt) | `SentinelOne connection` | `ApiToken` | Mgmt REST (`/web/api/v2.1/…`): sign as `ApiToken`, NOT `Bearer` | -- SDL and GraphQL sign `Bearer`; the mgmt "SentinelOne" connection signs `ApiToken` — set +- SDL and GraphQL sign `Bearer`; the mgmt "SentinelOne" connection signs `ApiToken`, set `way_to_pass_prefix` accordingly. Binding the wrong one is the classic `HTTP 500 "Header must start with Bearer"` (mgmt token on an SDL endpoint) failure. - `api_key` is the console API token for all three. @@ -66,6 +66,6 @@ Everything except the secret comes straight from the source connection. Bind the **integration** id on `http_request` actions (`integration_id`), set `use_authentication_data: true`, and rely on a connection existing under that integration in the -action's scope. Do NOT bind a specific connection id — that imports/activates but fails at runtime +action's scope. Do NOT bind a specific connection id; that imports/activates but fails at runtime (`"Must provide connection…"`). If no connection exists for a bound integration in the target scope, -activation fails `400 "requires configuration"` — create the connection there first, then activate. +activation fails `400 "requires configuration"`, create the connection there first, then activate. diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/functions-reference.md b/plugins/s1-secops-skills/skills/hyperautomation/references/functions-reference.md index 441facb..e8461be 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/functions-reference.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/functions-reference.md @@ -3,7 +3,7 @@ All functions use the syntax `{{Function.FUNCTION_NAME(args)}}`. Functions can be nested: `{{Function.STRING(Function.MUL(42, Function.DATETIME_TO_MS(Function.DATETIME_NOW())))}}`. -Store complex JQ expressions in a Variable first, then reference the variable in the function call — +Store complex JQ expressions in a Variable first, then reference the variable in the function call; this avoids escaping headaches: `{{Function.JQ(input, local_var.myJqExpression)}}`. --- diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/snippets.md b/plugins/s1-secops-skills/skills/hyperautomation/references/snippets.md index 61e3480..a33e961 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/snippets.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/snippets.md @@ -1,4 +1,4 @@ -# Snippets — reusable sub-workflows +# Snippets: reusable sub-workflows A snippet is a workflow you call from other workflows. Use snippets to factor any reusable slice of logic (isolate a device, quarantine a threat, open a ticket, poll until an investigation @@ -9,14 +9,14 @@ completes, notify the SOC) into one versioned block that many workflows share. A snippet is a workflow flagged `is_snippet=true`, but **what makes it a snippet is its NODES, not a flag in the create body.** It contains a `snippet_trigger` (its input contract) and a `snippet_output` (its return contract) in place of an ordinary trigger. The import endpoint ignores -an explicit `is_snippet` field — include the `snippet_trigger` + `snippet_output` nodes and the +an explicit `is_snippet` field, include the `snippet_trigger` + `snippet_output` nodes and the platform treats the workflow as a snippet automatically. ## Authoring a snippet Three kinds of node: -1. **`snippet_trigger`** — the input contract. `data.action_type: "snippet_trigger"`, +1. **`snippet_trigger`**: the input contract. `data.action_type: "snippet_trigger"`, `data.name: "Snippet Input"`, and `data.dynamic_properties` declares each input: ```json @@ -29,17 +29,17 @@ Three kinds of node: Body actions read an input as `{{snippet-input.}}` (the slug of "Snippet Input"). Hyphenated params are fine: `{{snippet-input.Singularity-ID}}`. -2. **Body actions** — any normal actions (`http_request`, `llm`, `condition`, `loop`, +2. **Body actions**: any normal actions (`http_request`, `llm`, `condition`, `loop`, `send_email`, …). Same shapes as in a regular workflow. -3. **`snippet_output`** — the return contract. `data.action_type: "snippet_output"`, and +3. **`snippet_output`**: the return contract. `data.action_type: "snippet_output"`, and `data.output` maps output names to values: ```json "output": {"Isolated": "{{disconnect-endpoint.status}}"} ``` -### Authoring rules (import returns `422 "Invalid workflow data"` and names no field — check these) +### Authoring rules (import returns `422 "Invalid workflow data"` and names no field: check these) - **`export_id 0` must belong to a real body action, not the `snippet_trigger`.** Assigning the trigger `export_id 0` fails import. Convention: body action = `0`, `snippet_trigger` = `1`, @@ -47,12 +47,12 @@ Three kinds of node: - **`snippet_output` values must be non-empty.** A bare `{{slug.}}` (trailing dot, empty field) imports but the snippet is invalid at runtime. Use a real `{{slug.field}}` the node actually emits, or a literal string (e.g. `"done"`). `send_email` does not emit a `.status` field. -- **The workflow name must not contain parentheses `()`** — import fails. Names must be unique +- **The workflow name must not contain parentheses `()`**: import fails. Names must be unique among live workflows (a collision also returns `422`). - Every node inside a loop sets `parent_action` = the loop's `export_id` (see the loop pattern in `autonomous-soc-template.md`). -## Calling a snippet — static +## Calling a snippet: static A parent workflow calls a snippet with a **`snippet_20`** node. Do NOT use type `"snippet"`, and do NOT embed the snippet's inner actions into the parent (embedding produces an orphaned node on the @@ -78,7 +78,7 @@ canvas): - Resolve a workflow's snippet bindings with `GET /workflow-actions/snippets-versions/{workflowId}/{versionId}?query={}`. -## Calling a snippet — dynamic (runtime dispatch) +## Calling a snippet: dynamic (runtime dispatch) Set `is_dynamic: true` and make `dynamic_snippet_name` a **mustache expression that resolves to a snippet name at runtime**. The node dispatches to whichever snippet matches that name: @@ -95,7 +95,7 @@ snippet name at runtime**. The node dispatches to whichever snippet matches that An upstream LLM (or condition) emits one of several snippet names; the dynamic `snippet_20` routes to it. For this to work, **every candidate snippet must share one input contract** (identical `snippet_trigger` `dynamic_properties`) so the same `inputs` map satisfies any of them. This is how -an autonomous responder picks Isolate vs Quarantine vs Close-as-FP at runtime — see +an autonomous responder picks Isolate vs Quarantine vs Close-as-FP at runtime, see `autonomous-soc-template.md`. ## Lifecycle (API) @@ -103,19 +103,19 @@ an autonomous responder picks Isolate vs Quarantine vs Close-as-FP at runtime Snippets ride the `/workflows` API. Scope every call with `siteIds=` **or** `accountIds=` to match where the snippet lives (a site snippet also appears in that account's list). -- **Create** — import a workflow that contains `snippet_trigger` + `snippet_output`: +- **Create**: import a workflow that contains `snippet_trigger` + `snippet_output`: `POST /workflow-import-export/import?` with `{"data": }`. (The console UI's own create is `POST /workflows` with an `actions_create[]` seeding those two nodes; import is equivalent and is what to use programmatically.) -- **Publish** — `POST /v1/workflows/{id}/publish?` (bodyless, `204`). -- **Activate** — `POST /workflows/{id}/{versionId}/activation?` with body +- **Publish**: `POST /v1/workflows/{id}/publish?` (bodyless, `204`). +- **Activate**: `POST /workflows/{id}/{versionId}/activation?` with body `{"data": {"version_description": "", "dimensions": {"x":0,"y":0,"width":256,"height":100}}}` (`204`). -- **List** — `GET /v1/workflows?is_snippet=true&`. -- **Deactivate** — `POST /v1/workflows/{id}/{versionId}/deactivate?` (`204`). A snippet can +- **List**: `GET /v1/workflows?is_snippet=true&`. +- **Deactivate**: `POST /v1/workflows/{id}/{versionId}/deactivate?` (`204`). A snippet can carry MULTIPLE active versions; deactivate EACH version before deleting. -- **Delete (archive)** — `POST /v1/workflows/archive` with +- **Delete (archive)**: `POST /v1/workflows/archive` with `{"data": {"workflow_ids": [id]}, "filter": {}}` (`200`). The filter scope must MATCH the - object's scope: for an account-scoped snippet the filter must be `accountIds`-only — adding + object's scope: for an account-scoped snippet the filter must be `accountIds`-only, adding `siteIds` returns `404 "Object not found"`. A snippet still referenced by a workflow cannot be archived (`400 "Active workflows cannot be archived"` / reference guard); archive or unbind the referencing workflow first. diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/validation-rules.md b/plugins/s1-secops-skills/skills/hyperautomation/references/validation-rules.md index 49429a7..c6b561a 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/validation-rules.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/validation-rules.md @@ -38,36 +38,36 @@ Run this checklist before outputting any workflow JSON. - [ ] `loop_type: "dynamic"` always has a non-null `object_to_iterate` - [ ] `loop_type: "while"` or `"fixed"` has `object_to_iterate: null` - [ ] In a `while` loop, the terminating condition has ONLY a `"true"` → `break_loop` edge. Do NOT - add a `"false"` back-edge to an earlier inner action — the loop re-runs the inner block on its + add a `"false"` back-edge to an earlier inner action, the loop re-runs the inner block on its own, and a manual back-edge makes import fail with `422 "Invalid workflow data"`. ## Condition rules -- [ ] Condition uses either `"condition_type": "simple"` (with nested `condition` object) or `"condition_type": "multi"` (with flat `conditions` array) — not both +- [ ] Condition uses either `"condition_type": "simple"` (with nested `condition` object) or `"condition_type": "multi"` (with flat `conditions` array): not both - [ ] For `"simple"`: `"condition"` is non-null, `"conditions"` is `null` - [ ] For `"multi"`: `"conditions"` is a non-empty array, `"condition"` is `null` - [ ] Condition branches use `"custom_handle": "true"` and `"custom_handle": "false"` -- [ ] A condition with only one branch (e.g., only `"true"`) is valid — the other is simply absent from `connected_to` +- [ ] A condition with only one branch (e.g., only `"true"`) is valid: the other is simply absent from `connected_to` - [ ] **Approval / human-in-the-loop gates FAIL CLOSED.** A condition that guards a destructive action (block, isolate, disable) must test for the explicit approval value, e.g. - `{{wait-for-slack.body.actions[0].value}} equals "approved"` — NEVER `not_equals "dismissed"`. On a + `{{wait-for-slack.body.actions[0].value}} equals "approved"`; NEVER `not_equals "dismissed"`. On a Slack (or any `wait_for_interaction`) timeout the value resolves to empty, and empty is `!= "dismissed"`, so a fail-open `not_equals` gate would auto-run the destructive action with no approval. Route the destructive action off the `"true"` branch of an `equals` test only. ## Import / `parent_action` rules -- [ ] **`parent_action` is for LOOP membership ONLY** — it is `null` on every node that is not inside a +- [ ] **`parent_action` is for LOOP membership ONLY**: it is `null` on every node that is not inside a loop; flow order is expressed **strictly** via `connected_to.target`, never via `parent_action`. Setting `parent_action` to a previous (non-loop) node's `export_id` is the #1 cause of an import `422 "Invalid workflow data"` even when every field otherwise looks correct. -- [ ] `export_id` values are arbitrary unique integers — they need not be sequential or positional (a +- [ ] `export_id` values are arbitrary unique integers: they need not be sequential or positional (a real export uses ids like `9, 8, 5, 6`). - [ ] `variable` action `data` carries its full field set: `variables_scope`, `expire_*`, `global_var_*` (in addition to the `variables` array). - [ ] `manual_trigger` action `data` carries `trigger_type`, `dynamic_properties`, and `static_payload`. - [ ] Fastest way to debug a persistent `422`: round-trip a live `export?ids=all` workflow member (which - is guaranteed valid), then bisect — swap your nodes into the known-good envelope one at a time until + is guaranteed valid), then bisect, swap your nodes into the known-good envelope one at a time until the import breaks. ## Variable rules @@ -77,19 +77,19 @@ Run this checklist before outputting any workflow JSON. - [ ] `variables_scope` is `"local"` or `"global"` - [ ] Dynamic references use `{{...}}` double curly braces - [ ] **HARD RULE**: if a variable's value contains `{{local_var.*}}`, that variable must be in - its own dedicated Variable action — a single action must never define a variable whose value + its own dedicated Variable action, a single action must never define a variable whose value references another `local_var` set in the same action's `variables` array. Variables in one action are evaluated simultaneously, not sequentially, so forward/same-action references silently resolve to empty. - ❌ Wrong — `fullPath` will be empty because `baseUrl` is resolved in the same pass: + ❌ Wrong: `fullPath` will be empty because `baseUrl` is resolved in the same pass: ```json { "variables": [ { "name": "baseUrl", "value": "https://api.example.com" }, { "name": "fullPath", "value": "{{local_var.baseUrl}}/v1/alerts" } ]} ``` - ✅ Right — split into two sequential Variable actions: + ✅ Right: split into two sequential Variable actions: ```json // Action 1 { "variables": [{ "name": "baseUrl", "value": "https://api.example.com" }] } @@ -106,7 +106,7 @@ Run this checklist before outputting any workflow JSON. ## Function syntax rules -- [ ] All functions use `{{Function.FUNCTION_NAME(args)}}` — capital F, capital function name +- [ ] All functions use `{{Function.FUNCTION_NAME(args)}}`: capital F, capital function name - [ ] Nested functions are valid: `{{Function.STRING(Function.MUL(42, Function.DATETIME_TO_MS(Function.DATETIME_NOW())))}}` - [ ] JQ filter strings with double quotes inside must be escaped: `\"` - [ ] `Function.COMPRESS` requires its files array in square brackets: `[local_var.myFile]` @@ -114,20 +114,20 @@ Run this checklist before outputting any workflow JSON. ## Common mistakes to avoid -- ❌ Defining multiple variables that reference each other in a single Variable action — they +- ❌ Defining multiple variables that reference each other in a single Variable action; they resolve simultaneously, so the reference will be empty. Split them into separate actions. ✅ One Variable action per variable whenever `{{local_var.*}}` appears in the value. -- ❌ Using `{{loop.item}}` inside a loop — use the action's slug: `{{loop-action-name.item}}` +- ❌ Using `{{loop.item}}` inside a loop: use the action's slug: `{{loop-action-name.item}}` ✅ e.g., `{{loop-the-list-of-ipv4.item}}` for a loop named "Loop the list of IPv4" -- ❌ Referencing an action by its `export_id` — always use the slugified `name` field +- ❌ Referencing an action by its `export_id`: always use the slugified `name` field - ❌ Setting `parent_action` on actions that are outside the loop - ❌ Using `"custom_handle": "inner"` for anything other than the loop's first inner action - ❌ Forgetting that action slug = name lowercased, spaces→hyphens, special chars dropped -- ❌ Setting `break_loop` with `connected_to` entries — it must always be `[]` +- ❌ Setting `break_loop` with `connected_to` entries: it must always be `[]` - ❌ Having a Singularity Response Trigger with empty `filter_groups` array -- ❌ Generating `connection_id` UUIDs — always use `null` for import-ready JSON -- ❌ Using `Function.JQ` with complex expressions directly — store in Variable first +- ❌ Generating `connection_id` UUIDs: always use `null` for import-ready JSON +- ❌ Using `Function.JQ` with complex expressions directly: store in Variable first - ❌ Mixing `condition` and `conditions` in the same condition action data object -- ❌ `send_email` attachments with `name`/`content` keys — the importer requires `file_name` and +- ❌ `send_email` attachments with `name`/`content` keys: the importer requires `file_name` and `file_content` (import `422 "Field required"` otherwise). `file_content` is base64. -- ❌ Wiring a `while`-loop condition's `false` branch back into the loop body — omit it (see Loop rules) +- ❌ Wiring a `while`-loop condition's `false` branch back into the loop body: omit it (see Loop rules) diff --git a/plugins/s1-secops-skills/skills/hyperautomation/references/workflow-schema.md b/plugins/s1-secops-skills/skills/hyperautomation/references/workflow-schema.md index 773997c..f362363 100644 --- a/plugins/s1-secops-skills/skills/hyperautomation/references/workflow-schema.md +++ b/plugins/s1-secops-skills/skills/hyperautomation/references/workflow-schema.md @@ -27,7 +27,7 @@ Every item in the `actions` array is an **action object**: "connection_name": null | "", "use_connection_name": false, "integration_id": null | "", - "data": { /* action-type-specific payload — see building-blocks.md */ }, + "data": { /* action-type-specific payload; see building-blocks.md */ }, "state": "active", "description": null | "human description", "client_data": { @@ -59,30 +59,30 @@ The trigger typically gets the highest export_id. Defines edges (connections) to downstream actions. - `target`: the `export_id` of the next action - `custom_handle`: - - `null` — default (only one outgoing connection) - - `"true"` / `"false"` — condition branches - - `"inner"` — used for the body of a loop (the first action inside the loop) + - `null`: default (only one outgoing connection) + - `"true"` / `"false"`: condition branches + - `"inner"`: used for the body of a loop (the first action inside the loop) ### `parent_action` -- `null` — action is at the top level of the workflow -- `` — `export_id` of the loop that contains this action +- `null`: action is at the top level of the workflow +- ``: `export_id` of the loop that contains this action ### `tag` -- `"core_action"` — built-in actions (Variable, Loop, Condition, HTTP Request without integration, +- `"core_action"`: built-in actions (Variable, Loop, Condition, HTTP Request without integration, Send Email, Delay, Break Loop, Scheduled/Manual/HTTP/Email/Singularity Trigger, Snippet, Wait for Slack, Create Interaction, Wait for Interaction) -- `"integration"` — actions backed by a pre-configured integration connection +- `"integration"`: actions backed by a pre-configured integration connection ### `connection_id` / `connection_name` / `use_connection_name` - For core actions: all null/false - For integration actions: `connection_id` is the UUID of the configured connection. When generating for import, set `connection_id: null`, `connection_name: ""`, - `use_connection_name: false` — the user will configure the connection after import. + `use_connection_name: false`, the user will configure the connection after import. ### `integration_id` - For core actions: `null` - For integration actions: the UUID of the integration type (e.g., SentinelOne = `"ef645af9-ed60-4efd-882e-bf534442ce86"`, M365/Entra = `"73475bd9-3762-4f17-aab5-c544ec5ec31b"`) - When generating for a new workflow, set to `null` — it will be resolved from the connection. + When generating for a new workflow, set to `null`; it will be resolved from the connection. --- @@ -91,11 +91,11 @@ Defines edges (connections) to downstream actions. Position fields affect the visual canvas only. Use these conventions for readability: - First action (trigger): `{ "x": 0, "y": 0 }` - Each subsequent step: increment `y` by ~177 (height 76 + gap 101) -- Parallel branches: offset `x` by ±160–300 +- Parallel branches: offset `x` by ±160-300 Standard dimensions: `{ "width": 256, "height": 76 }` for most actions. Triggers: `{ "width": 256, "height": 100 }`. -Loop containers: wider/taller to contain children — `{ "width": 760, "height": 750 }` typical. +Loop containers: wider/taller to contain children, `{ "width": 760, "height": 750 }` typical. --- @@ -121,7 +121,7 @@ Example: `"name": "Get Agents with Active Threat"` → `get-agents-with-active-t --- -## Singularity Response Trigger — filter_groups structure +## Singularity Response Trigger: filter_groups structure ```json "filter_groups": [ @@ -160,7 +160,7 @@ For `"in"` operator, `compared_value` is a JSON array string: `"[\"HIGH\",\"CRIT --- -## Condition action — two styles +## Condition action: two styles ### Simple condition (nested `condition` object, `condition_type: "simple"`): ```json diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/SKILL.md b/plugins/s1-secops-skills/skills/mgmt-console-api/SKILL.md index 3b77fc0..47ddd50 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/SKILL.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/SKILL.md @@ -1,18 +1,18 @@ --- name: mgmt-console-api author: Prithvi Moses -description: Use whenever the user wants to query, update, create, or act on a SentinelOne Management Console — threats, alerts, agents, sites, accounts, groups, exclusions, RemoteOps, Deep Visibility, Hyperautomation, Unified Alert Management (UAM), Purple AI, IOCs, or any other S1 Mgmt API resource. Trigger on "console", "query/update/create console", "SentinelOne", "S1", "Singularity", "UAM", "Purple AI", "/web/api/v2.1/...", S1 agent/threat/site IDs, or asks like "list endpoints", "triage alerts", "add note to alert", "create an IOC", "isolate endpoint", "run RemoteOps", "pull DV results". For alerts the PRIMARY API is GraphQL UAM at /web/api/v2.1/unifiedalerts/graphql; REST /cloud-detection/alerts is SECONDARY (older, cloud-detection scoped, int64 IDs). Defer to Purple MCP if the user says "purple mcp" or "mcp"; this skill is the backup then. Wraps the S1 Mgmt REST API (781 ops, 113 tags, v2.1) plus UAM GraphQL and Purple AI GraphQL, with a Python client, searchable index, and reversible tests. +description: Use whenever the user wants to query, update, create, or act on a SentinelOne Management Console: threats, alerts, agents, sites, accounts, groups, exclusions, RemoteOps, Deep Visibility, Hyperautomation, Unified Alert Management (UAM), Purple AI, IOCs, or any other S1 Mgmt API resource. Trigger on "console", "query/update/create console", "SentinelOne", "S1", "Singularity", "UAM", "Purple AI", "/web/api/v2.1/...", S1 agent/threat/site IDs, or asks like "list endpoints", "triage alerts", "add note to alert", "create an IOC", "isolate endpoint", "run RemoteOps", "pull DV results". For alerts the PRIMARY API is GraphQL UAM at /web/api/v2.1/unifiedalerts/graphql; REST /cloud-detection/alerts is SECONDARY (older, cloud-detection scoped, int64 IDs). Defer to Purple MCP if the user says "purple mcp" or "mcp"; this skill is the backup then. Wraps the S1 Mgmt REST API (781 ops, 113 tags, v2.1) plus UAM GraphQL and Purple AI GraphQL, with a Python client, searchable index, and reversible tests. --- # SentinelOne Management Console API Wraps the SentinelOne Management Console API (Swagger 2.0, spec version 2.1, 781 operations) with a pre-built Python client, a compact endpoint index, and per-tag reference files. -> **Sandbox proxy blocked?** If calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally on your machine via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes all the tools in this skill — `s1_api_get`, `s1_api_post`, `purple_ai_alert_summary`, `uam_list_alerts`, `uam_get_alert`, `uam_add_note`, `uam_set_status` — with schemas validated against the live API. For natural-language Purple AI queries and AI investigations, use the Purple MCP (`mcp__purple-mcp__purple_ai`) directly — those operations require a browser-session teamToken that API tokens never obtain. +> **Sandbox proxy blocked?** If calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally on your machine via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes all the tools in this skill, `s1_api_get`, `s1_api_post`, `purple_ai_alert_summary`, `uam_list_alerts`, `uam_get_alert`, `uam_add_note`, `uam_set_status`, with schemas validated against the live API. For natural-language Purple AI queries and AI investigations, use the Purple MCP (`mcp__purple-mcp__purple_ai`) directly; those operations require a browser-session teamToken that API tokens never obtain. > -> **Load this skill BEFORE any console/UAM *write*, not just reads.** Add-note, set-analyst-verdict, set-status, assign, and IOC-create all run through the UAM `alertTriggerActions` mutation with a specific action-id + `OrFilterSelectionInput` shape (see `references/UNIFIED_ALERTS.md`): action ids are `S1/alert/addNote` / `analystVerdictUpdate` / `statusUpdate`, and the alert is targeted by `filter:{or:[{and:[{fieldId:"id",stringEqual:{value:}}]}]}` — the alert id is the FILTER, never the action `id`. Hand-rolling this GraphQL from live schema introspection is the fast path to a wrong action-id/filter and a misleading empty result. Also: `alertTriggerActions` returns a success-shaped `ActionsTriggered` even when nothing changed — always re-query (`uam_get_alert`) to confirm the write landed. +> **Load this skill BEFORE any console/UAM *write*, not just reads.** Add-note, set-analyst-verdict, set-status, assign, and IOC-create all run through the UAM `alertTriggerActions` mutation with a specific action-id + `OrFilterSelectionInput` shape (see `references/UNIFIED_ALERTS.md`): action ids are `S1/alert/addNote` / `analystVerdictUpdate` / `statusUpdate`, and the alert is targeted by `filter:{or:[{and:[{fieldId:"id",stringEqual:{value:}}]}]}`, the alert id is the FILTER, never the action `id`. Hand-rolling this GraphQL from live schema introspection is the fast path to a wrong action-id/filter and a misleading empty result. Also: `alertTriggerActions` returns a success-shaped `ActionsTriggered` even when nothing changed, always re-query (`uam_get_alert`) to confirm the write landed. -## Setup — configure credentials first +## Setup: configure credentials first Drop a `credentials.json` file directly into your Cowork project folder with the required fields: @@ -41,17 +41,17 @@ Before running anything, confirm credentials resolved. If not, stop and ask the When the user asks for something involving the S1 API, follow this pattern: 1. **Find the right endpoint.** - - If the user's ask is verb-shaped ("list / count / isolate / hunt …") and you need orientation, read `references/CAPABILITY_MAP.md` first — it's a compact per-tag summary of what verbs each resource supports. + - If the user's ask is verb-shaped ("list / count / isolate / hunt …") and you need orientation, read `references/CAPABILITY_MAP.md` first; it's a compact per-tag summary of what verbs each resource supports. - For a specific multi-step task ("threat triage", "endpoint isolation", "DV hunt"), `references/WORKFLOWS.md` has ready-to-adapt recipes. - Otherwise go straight to `scripts/search_endpoints.py` with a keyword matching the user's intent. It now ranks results by relevance (path segment hits + verb intent + tag) and supports synonyms ("isolate" → "disconnect", "endpoint" → "agent"). Add `--only-works` to restrict to endpoints confirmed reachable on this tenant by the most recent smoke test. -2. **Read the per-tag reference.** Open `references/tags/.md` (names match the table in `references/TAG_INDEX.md`) to see full parameter lists, descriptions, required permissions, and response codes for that group. Only read the tag file(s) relevant to the task — don't read them all. -3. **Call the endpoint.** Either use `scripts/call_endpoint.py` for one-off calls, or import `S1Client` from `scripts/s1_client.py` in a Python script for anything that needs loops, joins, or transforms. For independent GETs, prefer `c.get_many([(path, params), ...])` — it fans out in parallel over the client's pooled connection and is ~3× faster than a sequential loop. -4. **Paginate correctly.** S1 list endpoints use cursor-based pagination. The client's `paginate()` and `iter_items()` handle this automatically — prefer them over manual `skip`/`limit` math, which caps at 1000 items. +2. **Read the per-tag reference.** Open `references/tags/.md` (names match the table in `references/TAG_INDEX.md`) to see full parameter lists, descriptions, required permissions, and response codes for that group. Only read the tag file(s) relevant to the task; don't read them all. +3. **Call the endpoint.** Either use `scripts/call_endpoint.py` for one-off calls, or import `S1Client` from `scripts/s1_client.py` in a Python script for anything that needs loops, joins, or transforms. For independent GETs, prefer `c.get_many([(path, params), ...])`; it fans out in parallel over the client's pooled connection and is ~3× faster than a sequential loop. +4. **Paginate correctly.** S1 list endpoints use cursor-based pagination. The client's `paginate()` and `iter_items()` handle this automatically; prefer them over manual `skip`/`limit` math, which caps at 1000 items. 5. **Summarize the result for the user.** Don't dump raw JSON unless asked. Prefer a short prose summary plus a table or CSV/XLSX if the volume warrants. ## GET vs POST: the rule you must follow -The S1 API uses **GET for every read operation** — listing, counting, and exporting. POST is only for actions and mutations. Violating this produces HTTP 404, not a permissions error, because the path simply does not exist. +The S1 API uses **GET for every read operation**, listing, counting, and exporting. POST is only for actions and mutations. Violating this produces HTTP 404, not a permissions error, because the path simply does not exist. **Read (always GET):** @@ -71,7 +71,7 @@ The S1 API uses **GET for every read operation** — listing, counting, and expo - Threat actions (mitigate, verdict, fetch-file): `POST /web/api/v2.1/threats/` - Mutations (notes, exclusions, IOCs, custom rules): POST/PUT/DELETE on the relevant resource path -**Paths that do not exist — never call these:** +**Paths that do not exist; never call these:** These paths return HTTP 404 and have never existed in the v2.1 spec. They are plausible-sounding guesses that are consistently wrong: @@ -83,37 +83,37 @@ These paths return HTTP 404 and have never existed in the v2.1 spec. They are pl | `POST /web/api/v2.1/threats/count` | "count threats via POST" | `GET /web/api/v2.1/threats?countOnly=true` | | `POST /web/api/v2.1/agents/summary` | "agent summary" | `GET /web/api/v2.1/agents/count` + `GET /web/api/v2.1/agents` | -If you are about to call `s1_api_post` for a read/count/export operation, stop and switch to `s1_api_get`. Before any `s1_api_post` call, confirm the path exists: `python3 scripts/search_endpoints.py ""` — if the path does not appear, it does not exist. +If you are about to call `s1_api_post` for a read/count/export operation, stop and switch to `s1_api_get`. Before any `s1_api_post` call, confirm the path exists: `python3 scripts/search_endpoints.py ""`, if the path does not appear, it does not exist. -## Schema gotchas — confirmed on live tenant +## Schema gotchas: confirmed on live tenant These are fields where the obvious guess is wrong. All verified against the live tenant. -### Custom Detection Rules and STAR Rules — POST /cloud-detection/rules +### Custom Detection Rules and STAR Rules: POST /cloud-detection/rules **STAR rules** ("streaming threat assessment rules") are the product name for real-time detection rules that evaluate every matching event as it arrives. There is no separate -`/star-rules` API path — that path returns 404. STAR rules are `cloud-detection/rules` +`/star-rules` API path; that path returns 404. STAR rules are `cloud-detection/rules` with `queryType=events`, the same endpoint as all other Custom Detection Rules. `queryType` enum (from swagger): `events`, `scheduled`, `correlation`, `uebafirstseen`. --- -#### ⚠️ LISTING DETECTION RULES — read this BEFORE calling GET /cloud-detection/rules +#### ⚠️ LISTING DETECTION RULES: read this BEFORE calling GET /cloud-detection/rules -The list endpoint hides `queryType: "scheduled"` rules by default. **Without `isLegacy=false` in the query string, scheduled rules return 0 results even though they exist and are visible in the console UI.** This is the single most common drift between API output and console reality. There is no error, no warning, no hint — the response simply omits scheduled rules. Re-confirmed against the live API, 2026-05. +The list endpoint hides `queryType: "scheduled"` rules by default. **Without `isLegacy=false` in the query string, scheduled rules return 0 results even though they exist and are visible in the console UI.** This is the single most common drift between API output and console reality. There is no error, no warning, no hint, the response simply omits scheduled rules. Re-confirmed against the live API, 2026-05. **Always pass `isLegacy=false` when listing.** The only time you can omit it is if you are 100% sure you only care about events-type STAR rules and want to filter scheduled rules out. | Goal | Correct query | Anti-pattern (silently wrong) | |---|---|---| -| List all detection rules | `GET /cloud-detection/rules?isLegacy=false&limit=200` | `GET /cloud-detection/rules?limit=200` — drops scheduled | -| List only scheduled detections | `GET /cloud-detection/rules?isLegacy=false&queryType=scheduled&limit=200` | `GET /cloud-detection/rules?queryType=scheduled` — returns 0 | +| List all detection rules | `GET /cloud-detection/rules?isLegacy=false&limit=200` | `GET /cloud-detection/rules?limit=200`: drops scheduled | +| List only scheduled detections | `GET /cloud-detection/rules?isLegacy=false&queryType=scheduled&limit=200` | `GET /cloud-detection/rules?queryType=scheduled`: returns 0 | | List only events (STAR) rules | `GET /cloud-detection/rules?queryType=events&limit=200` | (this one is safe; events rules are not gated by `isLegacy`) | -| Search by name across all types | `GET /cloud-detection/rules?isLegacy=false&name__contains=Foo` | `GET /cloud-detection/rules?name__contains=Foo` — drops scheduled | +| Search by name across all types | `GET /cloud-detection/rules?isLegacy=false&name__contains=Foo` | `GET /cloud-detection/rules?name__contains=Foo`: drops scheduled | -**Verdict-language note for analysts:** if you query without `isLegacy=false` and the response is empty, the correct statement is "no events rules came back; I haven't yet checked scheduled rules" — not "this tenant has zero scheduled detections". Promoting the absence of evidence to "confirmed zero" is the failure mode this gotcha exists to prevent. +**Verdict-language note for analysts:** if you query without `isLegacy=false` and the response is empty, the correct statement is "no events rules came back; I haven't yet checked scheduled rules", not "this tenant has zero scheduled detections". Promoting the absence of evidence to "confirmed zero" is the failure mode this gotcha exists to prevent. `queryType` accepts a single value or an array (comma-separated): `queryType=scheduled` or `queryType=events,scheduled` both work. The combination `queryType=` + `nameSubstring=` returns HTTP 500; use one filter at a time, or use `name__contains` instead of `nameSubstring` (which works with both). @@ -143,7 +143,7 @@ See the **PowerQuery Scheduled Detections** subsection below for the full schedu `expirationMode` valid values: `"Permanent"` or `"Temporary"`. `"Never"` is not valid and returns 400. -**Events (STAR) rule — confirmed CREATE body (live API, 2026-05):** +**Events (STAR) rule, confirmed CREATE body (live API, 2026-05):** ```json { @@ -164,19 +164,19 @@ See the **PowerQuery Scheduled Detections** subsection below for the full schedu Events rule gotchas confirmed against live API: -- `"activeResponse"` in the body returns HTTP 400 "Unknown field" — omit it. +- `"activeResponse"` in the body returns HTTP 400 "Unknown field": omit it. - `queryLang` defaults to `"1.0"` for events rules; do not set it explicitly (unlike scheduled rules which require `"2.0"`). - `treatAsThreat="UNDEFINED"` is accepted on input but stored as `null` in the response. - `status="Draft"` creates a rule that never fires even if live telemetry matches. -- GET `nameSubstring` + `queryType` combined returns HTTP 500 — use one filter at a time. +- GET `nameSubstring` + `queryType` combined returns HTTP 500: use one filter at a time. - DELETE body is top-level `{filter: {ids: [...], siteIds: [...]}}` with no `"data"` wrapper. - `isLegacy=false` is NOT needed for events rules (only required for scheduled rules). `status` valid values: `"Draft"`, `"Activating"`, `"Active"`, `"Disabling"`, `"Disabled"`. Use `"Disabled"` to create a non-firing rule; the API returns `"Draft"` in the response for a rule that has never been activated. -**PUT /cloud-detection/rules/{id}** — `status` is required in the PUT body even though it is read-only in practice. Omitting it returns 400 "Missing data for required field." +**PUT /cloud-detection/rules/{id}**, `status` is required in the PUT body even though it is read-only in practice. Omitting it returns 400 "Missing data for required field." -### Saved Filters — POST /filters +### Saved Filters: POST /filters The body field for filter criteria is `filterFields`, not `filters`: @@ -190,13 +190,13 @@ The body field for filter criteria is `filterFields`, not `filters`: } ``` -**PUT /filters/{id}** — does NOT accept a top-level `filter` scope wrapper. Pass only `{"data": {...}}`: +**PUT /filters/{id}**, does NOT accept a top-level `filter` scope wrapper. Pass only `{"data": {...}}`: ```json {"data": {"name": "updated-name", "filterFields": {"infected": false}}} ``` -### PowerQuery Scheduled Detections — POST/PUT/GET/DELETE /cloud-detection/rules +### PowerQuery Scheduled Detections: POST/PUT/GET/DELETE /cloud-detection/rules `queryType: "scheduled"` rules are PowerQuery-based detections. **This is the only path that accepts pipe-syntax PowerQuery in a detection rule body.** Events rules reject pipe syntax even with `queryLang: "2.0"`. They use a different schema from `events` and `correlation` rules and have several non-obvious requirements confirmed against the live API (2026-05). @@ -231,9 +231,9 @@ All five `data` fields are required. `queryLang: "2.0"` is mandatory; omitting i - `disableAgentMitigation` is **not** part of the scheduled schema. Including it returns HTTP 400 `Unknown field`. Cloud-source PQ rules do not need it; mitigation actions are not supported on scheduled rules anyway. - `treatAsThreat: "Malicious"` is for events rules with EDR telemetry. Scheduled rules accept `treatAsThreat: "UNDEFINED"` (or omit) and `networkQuarantine: false`. The verdict surfaces via the rule's `severity`, not via mitigation. - New rules are created in `Draft` status regardless of the requested `status` in the POST. To enable, call `PUT /web/api/v2.1/cloud-detection/rules/enable` with `{"filter": {"ids": [...], "accountIds": [...]}}` after creation. The response transitions to `Activating` and then `Active` within the hour. -- The PowerQuery in `scheduledParams.query` must NOT use `nolimit`, `compare`, or subqueries. The 1,000-row intermediate cap from `references/detection-rules.md` applies. +- The PowerQuery in `scheduledParams.query` must NOT use `nolimit`, `compare`, or subqueries. The 1,000-row intermediate cap documented in the `sentinelone-powerquery` skill at `references/detection-rules.md` applies. -**GET requires `isLegacy=false`** — without this query parameter, the list endpoint returns 0 results for scheduled rules even though they exist and are visible in the console UI. Always include it. **When listing all rules regardless of type (e.g. searching by name), always pass `isLegacy=false` — without it you will only see events-type rules and silently miss all scheduled rules:** +**GET requires `isLegacy=false`**, without this query parameter, the list endpoint returns 0 results for scheduled rules even though they exist and are visible in the console UI. Always include it. **When listing all rules regardless of type (e.g. searching by name), always pass `isLegacy=false`, without it you will only see events-type rules and silently miss all scheduled rules:** ```text GET /web/api/v2.1/cloud-detection/rules?isLegacy=false&limit=100 @@ -245,8 +245,8 @@ Note: `name__contains` filter silently returns 0 for scheduled rules when `isLeg **PUT requires `filter.siteIds`** in the body even though swagger marks `filter` as optional. Also requires all five data fields (name, queryType, severity, expirationMode, status). Additional PUT gotchas confirmed 2026-05-26: -- `activeResponse` in the PUT body returns HTTP 400 "Unknown field" — omit it (same as POST). -- `treatAsThreat: null` in the PUT body returns HTTP 400 "Field may not be null" — use `"UNDEFINED"` even though the GET response shows `null`. The API stores it as `null` but rejects `null` as input. +- `activeResponse` in the PUT body returns HTTP 400 "Unknown field": omit it (same as POST). +- `treatAsThreat: null` in the PUT body returns HTTP 400 "Field may not be null": use `"UNDEFINED"` even though the GET response shows `null`. The API stores it as `null` but rejects `null` as input. - `status` must be included (e.g. `"Active"`) even though it is effectively read-only on PUT. ```json @@ -261,30 +261,30 @@ Note: `name__contains` filter silently returns 0 for scheduled rules when `isLeg } ``` -**ENABLE/DISABLE** — dedicated PUT endpoints. The filter takes `ids` plus an optional scope (`siteIds` or `accountIds`); `ids` alone works because rule IDs are globally unique. Do NOT include `isLegacy` in the body — it returns `400 filter: isLegacy: Unknown field` (`isLegacy` is a GET-listing param only). Tenant-validated 2026-06-16: `{"filter": {"ids": [...]}}` returned `{"affected": N}`. +**ENABLE/DISABLE**, dedicated PUT endpoints. The filter takes `ids` plus an optional scope (`siteIds` or `accountIds`); `ids` alone works because rule IDs are globally unique. Do NOT include `isLegacy` in the body, it returns `400 filter: isLegacy: Unknown field` (`isLegacy` is a GET-listing param only). Tenant-validated 2026-06-16: `{"filter": {"ids": [...]}}` returned `{"affected": N}`. ```text PUT /web/api/v2.1/cloud-detection/rules/enable body: {"filter": {"ids": [""], "siteIds": [""]}} PUT /web/api/v2.1/cloud-detection/rules/disable body: {"filter": {"ids": [""], "siteIds": [""]}} ``` -**DELETE body — use `json_body=` keyword arg in s1_client.py.** The method signature is `delete(path, params=None, json_body=None)`. Passing the filter dict positionally sends it as query params and returns HTTP 400: +**DELETE body; use `json_body=` keyword arg in s1_client.py.** The method signature is `delete(path, params=None, json_body=None)`. Passing the filter dict positionally sends it as query params and returns HTTP 400: ```python # Correct client.delete("/web/api/v2.1/cloud-detection/rules", json_body={"filter": {"ids": [rule_id], "accountIds": [acct_id]}}) -# Wrong — sends filter as query string +# Wrong: sends filter as query string client.delete("/web/api/v2.1/cloud-detection/rules", {"filter": {"ids": [rule_id], "accountIds": [acct_id]}}) ``` **Verify deletion with GET (expect 0 hits), not a second DELETE.** A second DELETE returns HTTP 400 "Could not find rule with id: ..." rather than `affected: 0`. -### Alert notes — UAM GraphQL +### Alert notes: UAM GraphQL -`deleteAlertNote` has a 30–90 second propagation window after creation before it can be deleted. The mutation uses `alertNoteId`, not `noteId`: +`deleteAlertNote` has a 30-90 second propagation window after creation before it can be deleted. The mutation uses `alertNoteId`, not `noteId`: ```graphql mutation del($nid: ID!) { @@ -302,38 +302,38 @@ When starting on an unfamiliar tenant, run the non-destructive smoke test once: python scripts/smoke_test_queries.py --workers 12 ``` -It enumerates every GET plus a curated allow-list of read-only query POSTs, records which ones return 200/403/404/etc., and writes `references/tenant_capabilities.md` and `.json`. Useful for "what's this token actually allowed to do" and as a pre-sales capability snapshot. The sweep is read-only — no writes, no agent actions — so tenant start-state and end-state are identical. +It enumerates every GET plus a curated allow-list of read-only query POSTs, records which ones return 200/403/404/etc., and writes `references/tenant_capabilities.md` and `.json`. Useful for "what's this token actually allowed to do" and as a pre-sales capability snapshot. The sweep is read-only, no writes, no agent actions, so tenant start-state and end-state are identical. ## Files in this skill -- `/credentials.json` — credentials (set `S1_CONSOLE_URL` and `S1_CONSOLE_API_TOKEN`; see Setup above). Auto-discovered by the plugin's SessionStart hook. -- `scripts/bootstrap_creds.sh` — idempotent helper that copies workspace creds into the sandbox-local path. Wired to the plugin's SessionStart hook; safe to re-run manually. -- `scripts/s1_client.py` — importable Python client. Handles auth, pooled HTTP connections, retries on 429/5xx, pagination, parallel fan-out via `get_many()`, and optional short-TTL response caching for rarely-changing reads (accounts, sites, groups, system/info, etc.). -- `scripts/call_endpoint.py` — CLI for one-shot calls: `python scripts/call_endpoint.py GET /web/api/v2.1/agents --param limit=5`. -- `scripts/search_endpoints.py` — ranked keyword search over the endpoint index, with synonym expansion and an `--only-works` filter that restricts to endpoints confirmed reachable on this tenant. -- `scripts/smoke_test_queries.py` — non-destructive sweep of every GET + safe query POST. Writes `references/tenant_capabilities.{json,md}`. Read-only; tenant state unchanged. -- `scripts/purple_ai.py` — Purple AI natural-language wrapper over `POST /web/api/v2.1/graphql`. **Non-functional for API tokens** — `purpleLaunchQuery NATURAL_LANGUAGE` requires a browser-session teamToken that service accounts never obtain (confirmed SERVICE_ERROR 2026-05-03). Use the Purple MCP (`mcp__purple-mcp__purple_ai`) for NL queries. Kept for reference only. -- `scripts/call_purple.py` — CLI wrapper for `purple_query()`. **Non-functional for API tokens** (same teamToken constraint). Use the Purple MCP instead. -- `scripts/unified_alerts.py` — Unified Alert Management (UAM) GraphQL wrapper over `POST /web/api/v2.1/unifiedalerts/graphql`. Covers the full query + mutation surface (list/filter/group/notes/history/trigger-actions). See `references/UNIFIED_ALERTS.md`. -- `scripts/call_unified_alerts.py` — CLI for UAM: `python scripts/call_unified_alerts.py list --filter detectionProduct=EDR --first 10`, `... add-note "…"`, `... set-status --scope --alert-id RESOLVED`. -- `references/UNIFIED_ALERTS.md` — UAM reference: operation catalogue, schema quirks, filter patterns, action catalogue, worked recipes. -- `references/TAG_INDEX.md` — table of all 113 tags with file pointers and op counts. Start here when you don't know which tag owns an endpoint. -- `references/CAPABILITY_MAP.md` — per-tag verb-and-resource summary (L=list, G=get-one, C=count, E=export, A=action, F=filter, S=search, X=mutate) plus an "I want to…" quick lookup. Your fastest orientation when you know the verb but not the path. -- `references/WORKFLOWS.md` — ready-to-adapt multi-step recipes: threat triage, endpoint isolation, DV / PowerQuery hunt, RemoteOps, audit trail, tenant capability snapshot, etc. Each lists the endpoints you actually need and the params that matter. -- `references/tenant_capabilities.{json,md}` — auto-generated by `smoke_test_queries.py`: per-endpoint status (200/403/404/etc.) for the configured tenant. Regenerate whenever the token or tenant changes. The committed copy is a worked example from the Purple demo tenant. -- `references/endpoint_index.json` — compact machine-readable index (one entry per op). Used by `search_endpoints.py` but can be read directly if you need to filter programmatically. -- `references/tags/.md` — per-tag reference with parameters, descriptions, and required permissions. Load only the files you need. -- `references/common_params.md` — shared query params (`skip`, `limit`, `cursor`, `sortBy`, etc.) and the pagination pattern. -- `references/POWERQUERY_RECIPES.md` — PowerQuery / SDL query recipes tested on-tenant: indicator prevalence, PowerShell outbound to public IPs, failed-login triage, storyline activity summary, UAM-indicator SDL crosscheck, endpoint heartbeat. For full PQ language reference use the dedicated `sentinelone-powerquery` skill. -- `spec/swagger_2_1.json` — the original full Swagger spec (14 MB). Use only when the per-tag reference is insufficient — e.g. to resolve a deeply nested request-body schema by `$ref`. Never read this whole file into context. -- `tests/test_ioc_lifecycle.py` — reversible CREATE → LIST → DELETE → VERIFY round-trip for Threat Intelligence IOCs. Uses a unique run-tag per invocation, scopes to a single account, and cleans up before exit. Covers the one "create content" path against the S1 detection surface. -- `tests/test_alerts_dual_api.py` — dual-API round-trip for alerts: GraphQL list/detail/addNote/notes/deleteNote plus a parallel REST `/cloud-detection/alerts` read. Demonstrates that UAM GraphQL is the PRIMARY alert surface and REST is SECONDARY, with the note mutation cleaned up before exit (handles the `mgmt_note_id` propagation delay). -- `scripts/pq.py` — foolproof PowerQuery runner over the LRQ API. Wraps launch/poll/cancel, auth flip to `Bearer`, `X-Dataset-Query-Forward-Tag` capture, exponential backoff on 5xx/429/connection errors, and a best-effort cancel. One call: `run_pq(client, "", hours=24)` returns `{row_count, columns, rows, matchCount, ...}`. Also exposes `list_data_sources(client, hours=24)` for the first-response "does this data source actually exist on this tenant?" check. Use this any time a user says "query logs", "run a PQ", "search for events" via the mgmt console API. -- `scripts/inspect_source.py` — source-agnostic schema discovery. For any `dataSource.name`, samples raw events via the LRQ `LOG` queryType (or sync `/sdl/api/query` when available) and classifies every attribute the parser emits into `principal_user` / `principal_host` / `principal_ip` / `action` / `temporal` / `network` / `file` / `process` / `grouping_candidate` / `other`. Picks `prim_key` + `action_key` from whatever the source actually carries, so downstream code never hardcodes field names. Exports `discover_schema(client, source, hours, sample, extra_filter, backend, escalate)` and `pick_keys(schema)`; CLI: `python scripts/inspect_source.py --source "" --window 24h`. See "Data source + schema discovery" below. -- `scripts/uam_alert_interface.py` — UAM (Unified Alert Management) Alert Interface client for pushing OCSF indicators + alerts INTO UAM via `POST /v1/indicators` and `POST /v1/alerts` on the SentinelOne HEC ingest host (e.g. `ingest.us1.sentinelone.net`, the same host used for log ingest). Handles the gzip-compressed concatenated-JSON body, `Bearer` auth (the endpoint rejects `ApiToken`), and the `S1-Scope` header. Exposes `UAMAlertInterfaceClient`, plus `build_file_indicator()`, `build_process_indicator()`, `build_network_indicator()`, and `build_alert_referencing()` payload helpers. URL defaults to `https://ingest.us1.sentinelone.net`; override via the `S1_HEC_INGEST_URL` env var or credentials.json key (former canonical `S1_UAM_ALERT_INTERFACE_URL` and legacy snake_case `uam_alert_interface_url` still honored). -- `tests/test_uam_alert_interface_single.py` — minimum-viable reversible write-side round-trip: POST one OCSF FileSystem-Activity indicator + one SecurityAlert referencing it, poll UAM GraphQL until the alert surfaces, verify the indicator is stitched in, then close the alert via bulk-ops (status=RESOLVED, analystVerdict=TRUE_POSITIVE_BENIGN). Covers the single-indicator happy path into UAM. -- `tests/test_uam_alert_interface_batch.py` — comprehensive reversible round-trip: batched POST of 3 indicators (OCSF classes 1001 FileSystem Activity, 1007 Process Activity, 4001 Network Activity) each carrying 3+ observables, referenced by a single SecurityAlert via `finding_info.related_events[]`. Verifies all 3 metadata.uids and their observable names surface in `alert.rawIndicators`, then closes the alert. Covers batching, multi-observable, and multi-indicator linkage. -- `scripts/ingestion_gateway.py` + `tests/test_ingestion_gateway_alert_with_indicator.py` — deprecated back-compat shims. The helper re-exports from `uam_alert_interface`; the test prints a pointer to the renamed file and exits non-zero. +- `/credentials.json`: credentials (set `S1_CONSOLE_URL` and `S1_CONSOLE_API_TOKEN`; see Setup above). Auto-discovered by the plugin's SessionStart hook. +- `scripts/bootstrap_creds.sh`: idempotent helper that copies workspace creds into the sandbox-local path. Wired to the plugin's SessionStart hook; safe to re-run manually. +- `scripts/s1_client.py`: importable Python client. Handles auth, pooled HTTP connections, retries on 429/5xx, pagination, parallel fan-out via `get_many()`, and optional short-TTL response caching for rarely-changing reads (accounts, sites, groups, system/info, etc.). +- `scripts/call_endpoint.py`: CLI for one-shot calls: `python scripts/call_endpoint.py GET /web/api/v2.1/agents --param limit=5`. +- `scripts/search_endpoints.py`: ranked keyword search over the endpoint index, with synonym expansion and an `--only-works` filter that restricts to endpoints confirmed reachable on this tenant. +- `scripts/smoke_test_queries.py`: non-destructive sweep of every GET + safe query POST. Writes `references/tenant_capabilities.{json,md}`. Read-only; tenant state unchanged. +- `scripts/purple_ai.py`: Purple AI natural-language wrapper over `POST /web/api/v2.1/graphql`. **Non-functional for API tokens**, `purpleLaunchQuery NATURAL_LANGUAGE` requires a browser-session teamToken that service accounts never obtain (confirmed SERVICE_ERROR 2026-05-03). Use the Purple MCP (`mcp__purple-mcp__purple_ai`) for NL queries. Kept for reference only. +- `scripts/call_purple.py`: CLI wrapper for `purple_query()`. **Non-functional for API tokens** (same teamToken constraint). Use the Purple MCP instead. +- `scripts/unified_alerts.py`: Unified Alert Management (UAM) GraphQL wrapper over `POST /web/api/v2.1/unifiedalerts/graphql`. Covers the full query + mutation surface (list/filter/group/notes/history/trigger-actions). See `references/UNIFIED_ALERTS.md`. +- `scripts/call_unified_alerts.py`: CLI for UAM: `python scripts/call_unified_alerts.py list --filter detectionProduct=EDR --first 10`, `... add-note "…"`, `... set-status --scope --alert-id RESOLVED`. +- `references/UNIFIED_ALERTS.md`: UAM reference: operation catalogue, schema quirks, filter patterns, action catalogue, worked recipes. +- `references/TAG_INDEX.md`: table of all 113 tags with file pointers and op counts. Start here when you don't know which tag owns an endpoint. +- `references/CAPABILITY_MAP.md`: per-tag verb-and-resource summary (L=list, G=get-one, C=count, E=export, A=action, F=filter, S=search, X=mutate) plus an "I want to…" quick lookup. Your fastest orientation when you know the verb but not the path. +- `references/WORKFLOWS.md`: ready-to-adapt multi-step recipes: threat triage, endpoint isolation, DV / PowerQuery hunt, RemoteOps, audit trail, tenant capability snapshot, etc. Each lists the endpoints you actually need and the params that matter. +- `references/tenant_capabilities.{json,md}`: auto-generated by `smoke_test_queries.py`: per-endpoint status (200/403/404/etc.) for the configured tenant. Regenerate whenever the token or tenant changes. The committed copy is a worked example from the Purple demo tenant. +- `references/endpoint_index.json`: compact machine-readable index (one entry per op). Used by `search_endpoints.py` but can be read directly if you need to filter programmatically. +- `references/tags/.md`: per-tag reference with parameters, descriptions, and required permissions. Load only the files you need. +- `references/common_params.md`: shared query params (`skip`, `limit`, `cursor`, `sortBy`, etc.) and the pagination pattern. +- `references/POWERQUERY_RECIPES.md`: PowerQuery / SDL query recipes tested on-tenant: indicator prevalence, PowerShell outbound to public IPs, failed-login triage, storyline activity summary, UAM-indicator SDL crosscheck, endpoint heartbeat. For full PQ language reference use the dedicated `sentinelone-powerquery` skill. +- `spec/swagger_2_1.json`, the original full Swagger spec (14 MB). Use only when the per-tag reference is insufficient, e.g. to resolve a deeply nested request-body schema by `$ref`. Never read this whole file into context. +- `tests/test_ioc_lifecycle.py`: reversible CREATE → LIST → DELETE → VERIFY round-trip for Threat Intelligence IOCs. Uses a unique run-tag per invocation, scopes to a single account, and cleans up before exit. Covers the one "create content" path against the S1 detection surface. +- `tests/test_alerts_dual_api.py`: dual-API round-trip for alerts: GraphQL list/detail/addNote/notes/deleteNote plus a parallel REST `/cloud-detection/alerts` read. Demonstrates that UAM GraphQL is the PRIMARY alert surface and REST is SECONDARY, with the note mutation cleaned up before exit (handles the `mgmt_note_id` propagation delay). +- `scripts/pq.py`: foolproof PowerQuery runner over the LRQ API. Wraps launch/poll/cancel, auth flip to `Bearer`, `X-Dataset-Query-Forward-Tag` capture, exponential backoff on 5xx/429/connection errors, and a best-effort cancel. One call: `run_pq(client, "", hours=24)` returns `{row_count, columns, rows, matchCount, ...}`. Also exposes `list_data_sources(client, hours=24)` for the first-response "does this data source actually exist on this tenant?" check. Use this any time a user says "query logs", "run a PQ", "search for events" via the mgmt console API. +- `scripts/inspect_source.py`: source-agnostic schema discovery. For any `dataSource.name`, samples raw events via the LRQ `LOG` queryType (or sync `/sdl/api/query` when available) and classifies every attribute the parser emits into `principal_user` / `principal_host` / `principal_ip` / `action` / `temporal` / `network` / `file` / `process` / `grouping_candidate` / `other`. Picks `prim_key` + `action_key` from whatever the source actually carries, so downstream code never hardcodes field names. Exports `discover_schema(client, source, hours, sample, extra_filter, backend, escalate)` and `pick_keys(schema)`; CLI: `python scripts/inspect_source.py --source "" --window 24h`. See "Data source + schema discovery" below. +- `scripts/uam_alert_interface.py`: UAM (Unified Alert Management) Alert Interface client for pushing OCSF indicators + alerts INTO UAM via `POST /v1/indicators` and `POST /v1/alerts` on the SentinelOne HEC ingest host (e.g. `ingest.us1.sentinelone.net`, the same host used for log ingest). Handles the gzip-compressed concatenated-JSON body, `Bearer` auth (the endpoint rejects `ApiToken`), and the `S1-Scope` header. Exposes `UAMAlertInterfaceClient`, plus `build_file_indicator()`, `build_process_indicator()`, `build_network_indicator()`, and `build_alert_referencing()` payload helpers. URL defaults to `https://ingest.us1.sentinelone.net`; override via the `S1_HEC_INGEST_URL` env var or credentials.json key (former canonical `S1_UAM_ALERT_INTERFACE_URL` and legacy snake_case `uam_alert_interface_url` still honored). +- `tests/test_uam_alert_interface_single.py`: minimum-viable reversible write-side round-trip: POST one OCSF FileSystem-Activity indicator + one SecurityAlert referencing it, poll UAM GraphQL until the alert surfaces, verify the indicator is stitched in, then close the alert via bulk-ops (status=RESOLVED, analystVerdict=TRUE_POSITIVE_BENIGN). Covers the single-indicator happy path into UAM. +- `tests/test_uam_alert_interface_batch.py`: comprehensive reversible round-trip: batched POST of 3 indicators (OCSF classes 1001 FileSystem Activity, 1007 Process Activity, 4001 Network Activity) each carrying 3+ observables, referenced by a single SecurityAlert via `finding_info.related_events[]`. Verifies all 3 metadata.uids and their observable names surface in `alert.rawIndicators`, then closes the alert. Covers batching, multi-observable, and multi-indicator linkage. +- `scripts/ingestion_gateway.py` + `tests/test_ingestion_gateway_alert_with_indicator.py`: deprecated back-compat shims. The helper re-exports from `uam_alert_interface`; the test prints a pointer to the renamed file and exits non-zero. - `scripts/build_source_report.py`: collector for the CTO report pipeline. Runs dimension probes + per-principal mix + timeline for a named data source via `scripts/pq.py` and writes `reports/_/data.json`. Outputs to a per-source subfolder so multiple sources and windows coexist cleanly. - `scripts/render_charts.py`: pure-function renderer. `data.json` in, PNG charts out under `reports/_/charts/`. No tenant calls. - `scripts/build_docx.py` / `scripts/build_pptx.py`: source-agnostic renderers that read `data.json` and emit `_CTO_Report_.docx` and `_CTO_Deck_.pptx`. Every section is gated on `dims` so dimension-sparse sources render cleanly. See "CTO report generation pipeline" below for the full contract and renderer gotchas. @@ -355,7 +355,7 @@ r = c.get("/web/api/v2.1/threats", params={"limit": 100, "resolved": False}) for threat in c.iter_items("/web/api/v2.1/threats", params={"limit": 200}): ... -# parallel fan-out — independent GETs over pooled connections (~3× faster) +# parallel fan-out: independent GETs over pooled connections (~3× faster) results = c.get_many([ ("/web/api/v2.1/accounts", {"limit": 1}), ("/web/api/v2.1/sites", {"limit": 1}), @@ -370,29 +370,29 @@ c.post("/web/api/v2.1/agents/actions/disconnect", json_body={"filter": {"ids": [ ## Authentication -The API uses header auth: `Authorization: ApiToken `. The client injects this automatically — do not hand-roll headers. +The API uses header auth: `Authorization: ApiToken `. The client injects this automatically; do not hand-roll headers. -Token scopes are enforced server-side. Each endpoint in the per-tag references lists `Required permissions` — if a 403 comes back, the token lacks one of those scopes, and the fix is a new token (not a code change). Surface this clearly to the user. +Token scopes are enforced server-side. Each endpoint in the per-tag references lists `Required permissions`, if a 403 comes back, the token lacks one of those scopes, and the fix is a new token (not a code change). Surface this clearly to the user. ## Rate limits and retries -The client retries automatically on 429 and 5xx with exponential backoff (max 30s), honoring `Retry-After` when present. For bulk operations across thousands of entities, prefer a single filtered action endpoint (`/agents/actions/...`) over a loop of per-ID calls — the API is designed around filter-based bulk ops. +The client retries automatically on 429 and 5xx with exponential backoff (max 30s), honoring `Retry-After` when present. For bulk operations across thousands of entities, prefer a single filtered action endpoint (`/agents/actions/...`) over a loop of per-ID calls, the API is designed around filter-based bulk ops. -## Destructive actions — confirm first +## Destructive actions: confirm first -Many endpoints are destructive or operationally sensitive: disconnect/reconnect agent, uninstall, isolate, shutdown, decommission, script execution via RemoteOps, policy changes, user mutations, account/site deletion. Before firing any `POST`/`PUT`/`DELETE` that affects agents, policies, or tenant config, summarize exactly what will happen (endpoint, filter, estimated scope) and get explicit user confirmation. A 200 response on a wrong filter can isolate thousands of endpoints — there is no undo on many of these. +Many endpoints are destructive or operationally sensitive: disconnect/reconnect agent, uninstall, isolate, shutdown, decommission, script execution via RemoteOps, policy changes, user mutations, account/site deletion. Before firing any `POST`/`PUT`/`DELETE` that affects agents, policies, or tenant config, summarize exactly what will happen (endpoint, filter, estimated scope) and get explicit user confirmation. A 200 response on a wrong filter can isolate thousands of endpoints; there is no undo on many of these. The safe pattern: run the matching `GET` with `countOnly=true` first to show the blast radius, then the mutating call. -## Purple AI — natural-language query, alert summary, and auto-investigation +## Purple AI: natural-language query, alert summary, and auto-investigation -> **Precedence:** if the user explicitly mentions "purple mcp" or "mcp", prefer the Purple MCP tools (`mcp__purple-mcp__purple_ai`, `mcp__purple-mcp__powerquery`, etc.) — this skill is the backup path in that case. Use the wrapper below when the user has asked for the S1 console/API directly, when Purple MCP is unavailable, or when you need to script a raw GraphQL call. +> **Precedence:** if the user explicitly mentions "purple mcp" or "mcp", prefer the Purple MCP tools (`mcp__purple-mcp__purple_ai`, `mcp__purple-mcp__powerquery`, etc.); this skill is the backup path in that case. Use the wrapper below when the user has asked for the S1 console/API directly, when Purple MCP is unavailable, or when you need to script a raw GraphQL call. ### Hosts | Host | Purpose | |---|---| -| `.sentinelone.net` | Management console — all REST and GraphQL calls use this host | +| `.sentinelone.net` | Management console: all REST and GraphQL calls use this host | | `id.na1.sentinelone.net` | Browser session keep-alive (not relevant for API tokens) | | `metrics-proxy-use1.na1.sentinelone.net` | Internal metrics (returned 503 in observed sessions, non-fatal) | @@ -402,9 +402,9 @@ Purple AI uses **three** GraphQL endpoints (all traffic is `POST` with JSON body | Endpoint | Purpose | |---|---| -| `POST /web/api/v2.1/graphql` | LLM dispatcher — `purpleLaunchQuery`, `purpleAlertSummary` | +| `POST /web/api/v2.1/graphql` | LLM dispatcher: `purpleLaunchQuery`, `purpleAlertSummary` | | `POST /sdl/v2/graphql` | Notebook lifecycle + SDL query execution (see operation table below) | -| `POST /web/api/v2.1/unifiedalerts/graphql` | UAM — auto-investigation trigger and polling | +| `POST /web/api/v2.1/unifiedalerts/graphql` | UAM: auto-investigation trigger and polling | Auth uses the same `Authorization: ApiToken ` header as REST. No extra credential setup. @@ -424,13 +424,13 @@ Auth uses the same `Authorization: ApiToken ` header as REST. No extra cr These fire on page load and when entering a notebook. Not needed for API-token workflows, but useful for debugging feature availability: -- `GET /web/api/v2.1/private/system/enabled-features?siteIds=` — feature flags (`purpleNative`, `purpleConversations`, `purpleAutoInvestigations`) -- `GET /web/api/v2.1/private/rbac/user-permissions?siteIds=` — current user's permission set -- `POST /web/api/v2.1/private/users/session-info` — session info +- `GET /web/api/v2.1/private/system/enabled-features?siteIds=`: feature flags (`purpleNative`, `purpleConversations`, `purpleAutoInvestigations`) +- `GET /web/api/v2.1/private/rbac/user-permissions?siteIds=`: current user's permission set +- `POST /web/api/v2.1/private/users/session-info`: session info ### Operations -#### purpleLaunchQuery — NL → PowerQuery (or summary/suggestions) +#### purpleLaunchQuery: NL → PowerQuery (or summary/suggestions) **Critical: this is a GraphQL `query` (not `mutation`). Variable wrapper is `request` (type `PurpleLaunchQueryRequest`). Prior implementations using `mutation` + `PurpleLaunchQueryInput` fail with HTTP 400.** @@ -438,10 +438,10 @@ These fire on page load and when entering a notebook. Not needed for API-token w | contentType | Returns | |---|---| -| `NATURAL_LANGUAGE` | `result.powerQuery.query` — the generated PQ string | -| `QUERY_RESULTS` | `result.summary` — English summary of a previous PQ result set | -| `SUGGEST_QUESTIONS` | `result.suggestedQuestions[]` — follow-up question chips | -| `STAR_RULE`, `DETECTION_RULE` | `result.detectionRule` — generated detection logic | +| `NATURAL_LANGUAGE` | `result.powerQuery.query`: the generated PQ string | +| `QUERY_RESULTS` | `result.summary`: English summary of a previous PQ result set | +| `SUGGEST_QUESTIONS` | `result.suggestedQuestions[]`: follow-up question chips | +| `STAR_RULE`, `DETECTION_RULE` | `result.detectionRule`: generated detection logic | ```graphql query purpleLaunchQuery($request: PurpleLaunchQueryRequest!) { @@ -495,12 +495,12 @@ Variables (`$request`): } ``` -`PurpleUserDetailsRequest` schema (confirmed via live validation error — does NOT have `siteIds` or `groupIds`): +`PurpleUserDetailsRequest` schema (confirmed via live validation error, does NOT have `siteIds` or `groupIds`): ```jsonc { "accountId": "<19-digit ID>", // ID! required - "teamToken": "<24-char>", // ID! required — session token from Purple AI workspace + "teamToken": "<24-char>", // ID! required, session token from Purple AI workspace "sessionId": "", "emailAddress": "", "userAgent": "", @@ -547,9 +547,9 @@ createNotebook → purpleLaunchQuery (NATURAL_LANGUAGE) → addPurpleInputOutput Note: starter prompts that return a documentation-style answer skip the `launchQuery`/`pingQuery` stage entirely. -**API-token users: use the Purple MCP.** The `purple_ai_query` MCP tool has been removed — `purpleLaunchQuery NATURAL_LANGUAGE` is confirmed non-functional for service-account API tokens (requires browser-session teamToken; returns AsimovError from LaunchQueryManager). Use `mcp__purple-mcp__purple_ai` for NL queries and `mcp__purple-mcp__powerquery` to execute the returned PQ. +**API-token users: use the Purple MCP.** The `purple_ai_query` MCP tool has been removed, `purpleLaunchQuery NATURAL_LANGUAGE` is confirmed non-functional for service-account API tokens (requires browser-session teamToken; returns AsimovError from LaunchQueryManager). Use `mcp__purple-mcp__purple_ai` for NL queries and `mcp__purple-mcp__powerquery` to execute the returned PQ. -#### purpleAlertSummary — per-alert natural-language summary +#### purpleAlertSummary: per-alert natural-language summary Separate operation (not purpleLaunchQuery). Synchronous (isAsync=false, no polling). @@ -564,18 +564,18 @@ query AlertSummary($request: PurpleAlertSummaryRequest!) { Variables: `request.contentType = "ALERT_ENTRY"`, `request.inputAlert = ""`, `request.consoleDetails`, `request.userDetails`. -**MCP tool:** `purple_ai_alert_summary` — call `uam_get_alert` first to get the OCSF JSON, then pass it here. +**MCP tool:** `purple_ai_alert_summary`, call `uam_get_alert` first to get the OCSF JSON, then pass it here. -#### aiInvestigations — auto-investigation +#### aiInvestigations: auto-investigation Two-step flow, both via the UAM GraphQL endpoint (`/web/api/v2.1/unifiedalerts/graphql`): -1. `alertTriggerActions` mutation with `id: "S1/aiInvestigation/run"` — fires investigation -2. `GetAlertAiInvestigations` query, polled every ~4s — streams `investigationStep` text, final `result` (markdown, ~16KB) + `verdict` enum +1. `alertTriggerActions` mutation with `id: "S1/aiInvestigation/run"`: fires investigation +2. `GetAlertAiInvestigations` query, polled every ~4s: streams `investigationStep` text, final `result` (markdown, ~16KB) + `verdict` enum Verdict enum: `UNKNOWN`, `TRUE_POSITIVE`, `FALSE_POSITIVE`. -**API-token users: use the Purple MCP.** The `purple_ai_investigate` MCP tool has been removed — `aiInvestigation/run` via `alertTriggerActions` is confirmed non-functional for service-account API tokens (returns SERVICE_ERROR; same teamToken dependency as `purpleLaunchQuery`). Use `mcp__purple-mcp__purple_ai` for AI investigations. +**API-token users: use the Purple MCP.** The `purple_ai_investigate` MCP tool has been removed, `aiInvestigation/run` via `alertTriggerActions` is confirmed non-functional for service-account API tokens (returns SERVICE_ERROR; same teamToken dependency as `purpleLaunchQuery`). Use `mcp__purple-mcp__purple_ai` for AI investigations. ### Python CLI @@ -590,48 +590,48 @@ Verdict enum: `UNKNOWN`, `TRUE_POSITIVE`, `FALSE_POSITIVE`. ### Domain boundary -Purple AI answers questions about **SDL telemetry** (process/network/file events, indicators, ingested logs). It does **not** answer questions about **console entities** (alerts, threats, agents, sites, policies). Those are REST resources. Out-of-domain questions return `resultType: "MESSAGE"` with a guardrail refusal — switch to the REST path. +Purple AI answers questions about **SDL telemetry** (process/network/file events, indicators, ingested logs). It does **not** answer questions about **console entities** (alerts, threats, agents, sites, policies). Those are REST resources. Out-of-domain questions return `resultType: "MESSAGE"` with a guardrail refusal, switch to the REST path. ### Caveats and confirmed API-token limitations (live-tested 2026-05-03) | Operation | API-token result | Notes | |---|---|---| -| `purpleAlertSummary` (ALERT_ENTRY) | **PASS** — returns real LLM summary | Works with `userDetails: null`; no SDL dependency | -| `purpleLaunchQuery` (NATURAL_LANGUAGE) | **FAIL** — `AsimovError` from `LaunchQueryManager` | LLM layer rejects service-account requests; see below | -| `aiInvestigation/run` via `alertTriggerActions` | **FAIL** — `SERVICE_ERROR` | Same LLM-layer dependency | -| `/sdl/v2/graphql` queries (`purpleConversations`, etc.) | **FAIL** — `unauthenticated` | SDL queries require browser session cookie | -| `/sdl/v2/graphql` mutations (`createNotebook`, etc.) | **PARTIAL** — schema validation reached | Auth passes for mutations; mutation names differ from browser UI (introspection blocked) | +| `purpleAlertSummary` (ALERT_ENTRY) | **PASS**: returns real LLM summary | Works with `userDetails: null`; no SDL dependency | +| `purpleLaunchQuery` (NATURAL_LANGUAGE) | **FAIL**: `AsimovError` from `LaunchQueryManager` | LLM layer rejects service-account requests; see below | +| `aiInvestigation/run` via `alertTriggerActions` | **FAIL**: `SERVICE_ERROR` | Same LLM-layer dependency | +| `/sdl/v2/graphql` queries (`purpleConversations`, etc.) | **FAIL**: `unauthenticated` | SDL queries require browser session cookie | +| `/sdl/v2/graphql` mutations (`createNotebook`, etc.) | **PARTIAL**: schema validation reached | Auth passes for mutations; mutation names differ from browser UI (introspection blocked) | -**Root cause of NATURAL_LANGUAGE failures:** `purpleLaunchQuery` internally routes to the same LLM workspace layer as the browser UI. That layer uses `teamToken` (obtained by browser users via `createNotebook` on `/sdl/v2/graphql`) to identify the user's Purple AI notebook. Service accounts (API tokens) never initialize a browser session, so `teamToken` is always empty and the `LaunchQueryManager` (`AsimovError`) rejects the request. This is not a schema issue — the request passes GraphQL validation (HTTP 200) and fails at the LLM dispatch layer. +**Root cause of NATURAL_LANGUAGE failures:** `purpleLaunchQuery` internally routes to the same LLM workspace layer as the browser UI. That layer uses `teamToken` (obtained by browser users via `createNotebook` on `/sdl/v2/graphql`) to identify the user's Purple AI notebook. Service accounts (API tokens) never initialize a browser session, so `teamToken` is always empty and the `LaunchQueryManager` (`AsimovError`) rejects the request. This is not a schema issue, the request passes GraphQL validation (HTTP 200) and fails at the LLM dispatch layer. `purpleAlertSummary` bypasses this because it is a self-contained summarisation operation: the full alert context is supplied inline in `inputAlert`, no SDL session or teamToken lookup is needed. -**SDL auth nuance (confirmed via live testing):** SDL query operations return `unauthenticated` for API tokens. SDL mutations reach schema validation (meaning auth succeeds) — but the specific mutation names used by the browser UI (`createNotebook`, etc.) are not exposed under those names for API tokens. Introspection is blocked on the SDL endpoint. +**SDL auth nuance (confirmed via live testing):** SDL query operations return `unauthenticated` for API tokens. SDL mutations reach schema validation (meaning auth succeeds), but the specific mutation names used by the browser UI (`createNotebook`, etc.) are not exposed under those names for API tokens. Introspection is blocked on the SDL endpoint. - The GraphQL endpoint is **not a committed public API**. Field names and schema can change between console releases. -- Notebooks have a TTL — old notebooks return "Notebook is expired" and queries return no results. +- Notebooks have a TTL: old notebooks return "Notebook is expired" and queries return no results. - Each GraphQL request should carry a unique `requestId` UUID as a query param for tracing (`?opname=&requestId=`). The server ignores it but it aids debugging. -- Permission failures for `purpleLaunchQuery` surface as `status.state = FAILED` with `error.origin = LaunchQueryManager` (HTTP 200, not 400 or 403) — not the usual "invalid query" 400 you get for schema errors. -- Do **not** auto-execute generated PQ without showing it to the user first — Purple can hallucinate fields. -- `inputContent` must appear at **both** the top level of `request` AND inside `conversation.messages[0].inputMessage.inputContent` — the server requires both (confirmed via live validation). +- Permission failures for `purpleLaunchQuery` surface as `status.state = FAILED` with `error.origin = LaunchQueryManager` (HTTP 200, not 400 or 403): not the usual "invalid query" 400 you get for schema errors. +- Do **not** auto-execute generated PQ without showing it to the user first, Purple can hallucinate fields. +- `inputContent` must appear at **both** the top level of `request` AND inside `conversation.messages[0].inputMessage.inputContent`: the server requires both (confirmed via live validation). -## Querying logs via the mgmt console API — the foolproof procedure +## Querying logs via the mgmt console API: the foolproof procedure Every time somebody rolls their own `requests.post(...)` for a PowerQuery, one of the same six things goes wrong: wrong auth prefix, wrong endpoint path, missing `tenant: true`, missing `X-Dataset-Query-Forward-Tag`, no retry on transient 5xx, or 0 rows and the wrong debugging reflex. The fix is: do not hand-roll the call. Use `scripts/pq.py`. -### Step 0 — pick the right surface before you write a query +### Step 0: pick the right surface before you write a query | The user wants… | Use | Why | |---|---|---| | Raw event telemetry (EDR, third-party logs, SDL data) | **`scripts/pq.py`** (LRQ PowerQuery) | This is what SDL/PowerQuery is for. All `dataSource.*`, `event.*`, `src.process.*`, `tgt.file.*`, `i.scheme="edr"` filters. | | Triage/filter/note/status on an existing alert | `scripts/unified_alerts.py` (UAM GraphQL) | Alerts are entities, not log events. UAM filter syntax is GraphQL `FilterInput`, NOT PowerQuery. Do not confuse the two. | | Legacy STAR/cloud-detection alert REST shape | `/web/api/v2.1/cloud-detection/alerts` | Only when you need `agentDetectionInfo` / `sourceProcess` etc. Otherwise UAM. | -| A console entity — threat, agent, site, policy, IOC, group | REST via `s1_client.py` | Not a log query. `GET /web/api/v2.1/{threats,agents,sites,...}`. | +| A console entity: threat, agent, site, policy, IOC, group | REST via `s1_client.py` | Not a log query. `GET /web/api/v2.1/{threats,agents,sites,...}`. | | Natural-language hunt that can be hand-reviewed | `purple_ai.purple_query(...)` then LRQ-execute the returned PQ | Purple generates PQ text; `pq.py` runs it. | If the user names a vendor ("Example Source", "Zscaler", "Okta", "FortiGate") and says "query" or "search logs", that is always the PQ path, never UAM filter syntax. -### Step 1 — use `scripts/pq.py`, not inline `requests` +### Step 1: use `scripts/pq.py`, not inline `requests` ```python import sys @@ -658,18 +658,18 @@ for row in res["rows"]: The helper does ALL of this for you, so there is nothing to remember: - `Authorization: Bearer ` (flipped from the REST `ApiToken` prefix; same JWT, different scheme). -- `POST /sdl/v2/api/queries` on the tenant console host. **NOT** `/web/api/v2.1/sdl/v2/api/queries`, **NOT** `xdr.us1.sentinelone.net`. Do not "fix" a 404 by adding `/web/api/v2.1` — that path does not exist; the fix is the shorter path. +- `POST /sdl/v2/api/queries` on the tenant console host. **NOT** `/web/api/v2.1/sdl/v2/api/queries`, **NOT** `xdr.us1.sentinelone.net`. Do not "fix" a 404 by adding `/web/api/v2.1`; that path does not exist; the fix is the shorter path. - Captures `X-Dataset-Query-Forward-Tag` from the POST response and echoes it on every GET / DELETE (mandatory for shard routing; without it you get rejections). - Sets `queryType: "PQ"`, `tenant: true`, `pq: {query, resultType: "TABLE"}` (omit `tenant` and you silently get `matchCount=0`). -- Polls at 1s (query expires 30s after the last poll — slower polling means you lose the query). +- Polls at 1s (query expires 30s after the last poll: slower polling means you lose the query). - Retries 5xx / 429 / connection errors with exponential backoff. Honors `Retry-After`. The DNS-cache-overflow 503s behind some egress proxies are exactly what this is for. - Cancels on every exit path (success, deadline, failure) to release the per-account concurrent-query budget. -### Step 2 — if you get 0 rows, follow the ladder, do NOT widen the window first +### Step 2: if you get 0 rows, follow the ladder, do NOT widen the window first `run_pq` returning `row_count=0` has an ordered diagnostic. Burning time by widening the window first is the most common failure mode; the window is almost never the cause. -1. **Enumerate the data sources.** If your filter names a vendor / product, first confirm it exists on THIS tenant and you have the string right. Spelling, case, and punctuation matter — the filter is a literal string match. +1. **Enumerate the data sources.** If your filter names a vendor / product, first confirm it exists on THIS tenant and you have the string right. Spelling, case, and punctuation matter, the filter is a literal string match. ```python sources = list_data_sources(c, hours=24) @@ -677,15 +677,15 @@ The helper does ALL of this for you, so there is nothing to remember: print(s["dataSource.name"], s["dataSource.category"], s["ct"]) ``` - If "Example Source" isn't in the list, the tenant isn't ingesting it — no amount of widening the window will help. If it's there under a different spelling (`"PromptSecurity"`, `"Prompt Sec"`), use the exact string. -2. **Compare `matchCount` vs `row_count`.** `matchCount=0` means the initial filter discarded everything before any aggregation — the filter is too tight (or naming the wrong thing). `matchCount > 0` with `row_count = 0` means a post-pipe stage (`| group`, `| filter after group`) ate the rows — inspect the pipe. -3. **Only after the above come back clean**, widen the time window — in that order: 24h → 7d → 30d. + If "Example Source" isn't in the list, the tenant isn't ingesting it; no amount of widening the window will help. If it's there under a different spelling (`"PromptSecurity"`, `"Prompt Sec"`), use the exact string. +2. **Compare `matchCount` vs `row_count`.** `matchCount=0` means the initial filter discarded everything before any aggregation, the filter is too tight (or naming the wrong thing). `matchCount > 0` with `row_count = 0` means a post-pipe stage (`| group`, `| filter after group`) ate the rows, inspect the pipe. +3. **Only after the above come back clean**, widen the time window: in that order: 24h → 7d → 30d. -### Step 3 — for large windows / heavy aggregates, slice +### Step 3: for large windows / heavy aggregates, slice For ranges past 2-3 days with `event.type=*`-scale aggregates, slice the window and run slices in parallel. Full reference, measured perf (30d 574M-event aggregate lands in ~29s with two service-user JWTs), and the two-JWT runner recipe are in the `sentinelone-powerquery` skill at `references/lrq-api.md`. `run_pq` is the single-slice primitive underneath. -### Step 3a — timeseries: prefer client-side day slicing over `timebucket(...)` +### Step 3a (timeseries): prefer client-side day slicing over `timebucket(...)` `timebucket(...)` works in PQ when used as a NAMED grouping output inside `group ... by`: @@ -693,7 +693,7 @@ For ranges past 2-3 days with `event.type=*`-scale aggregates, slice the window | group n = count() by day = timebucket('1d'), action ← works ``` -The bare positional form (no alias) and references inside `let` / `filter` are unreliable across tenant versions and have historically returned HTTP 500 `"undefined field 'timebucket'"`. Even when `timebucket` does work, a single 7d / 30d aggregate against a busy source frequently exceeds the LRQ per-call deadline (~38s observed) — a 7d aggregate that finishes in 60s on the older `/api/powerQuery` endpoint will time out on LRQ. +The bare positional form (no alias) and references inside `let` / `filter` are unreliable across tenant versions and have historically returned HTTP 500 `"undefined field 'timebucket'"`. Even when `timebucket` does work, a single 7d / 30d aggregate against a busy source frequently exceeds the LRQ per-call deadline (~38s observed), a 7d aggregate that finishes in 60s on the older `/api/powerQuery` endpoint will time out on LRQ. **Default to client-side day slicing for any window > 24h.** It's faster, avoids the deadline budget, respects the per-user 3 rps cap cleanly, and produces the same end result. The named-form `day = timebucket('1d')` is fine inside a single 24h-or-less slice when you really do need per-hour or per-15-min buckets: @@ -715,7 +715,7 @@ with cf.ThreadPoolExecutor(max_workers=3) as ex: # 3rps user cap 7 daily slices run in ~20s wall-clock (vs ~2 min for a 7d aggregate) and respect the per-user 3 rps cap. For hourly buckets over a 24h window use 24 slices at the same concurrency; for 30d use hourly slicing with 2 JWTs (see `sentinelone-powerquery` skill). -### Step 3b — window-scaling playbook (performance by period) +### Step 3b: window-scaling playbook (performance by period) | Window | Recommended runner | Why | |---|---|---| @@ -725,7 +725,7 @@ with cf.ThreadPoolExecutor(max_workers=3) as ex: # 3rps user cap | 7d to 30d | mandatory slicing (daily buckets) + 2 JWTs | two-JWT runner in `sentinelone-powerquery` | | 30d+ | hourly slicing + 2-3 JWTs, cache results | 574M-event aggregate at 30d = ~29s with two JWTs | -### Step 3c — LRQ response-shape gotchas (handled by `run_pq`) +### Step 3c: LRQ response-shape gotchas (handled by `run_pq`) If you ever have to read a raw LRQ response (e.g. debugging), know: @@ -733,7 +733,7 @@ If you ever have to read a raw LRQ response (e.g. debugging), know: - `matchCount` lives inside the `data` block (`response["data"]["matchCount"]`), not at top level. Default to that path; fall back to top-level for older engines. - `values` is an array of arrays (one per row); `run_pq` pairs it with column names for you. -### Step 4 — when NOT to use `pq.py` +### Step 4: when NOT to use `pq.py` - If the user said "purple mcp" or "mcp", defer to `mcp__purple-mcp__powerquery` first; this is the backup path when the MCP times out or 5xxs. - If the user is working with alerts as entities (listing, filtering, note, status), that's UAM GraphQL (`unified_alerts.py`), not PowerQuery. UAM filter syntax is `[{fieldId, stringEqual: {...}}]`; it is NOT PowerQuery `| filter` syntax. Mixing them is a common trap in screenshot-driven debugging. @@ -742,21 +742,21 @@ If you ever have to read a raw LRQ response (e.g. debugging), know: - [ ] You called `run_pq` / `list_data_sources`, not inline `requests.post`. - [ ] Base URL is the tenant console (e.g. `https://your-tenant.sentinelone.net`), not `xdr.us1.sentinelone.net`. -- [ ] Endpoint path is `/sdl/v2/api/queries` (short form). If you see 404s, do NOT add `/web/api/v2.1` — that's wrong. -- [ ] If you're filtering on EDR data (`src.process.*`, `event.type=*`, `tgt.file.*`), prepend `dataSource.name='SentinelOne' dataSource.category='security'` — on mixed tenants the default scope carries Scalyr/infra logs too and wide filters silently return `matchCount=0`. +- [ ] Endpoint path is `/sdl/v2/api/queries` (short form). If you see 404s, do NOT add `/web/api/v2.1`; that's wrong. +- [ ] If you're filtering on EDR data (`src.process.*`, `event.type=*`, `tgt.file.*`), prepend `dataSource.name='SentinelOne' dataSource.category='security'`: on mixed tenants the default scope carries Scalyr/infra logs too and wide filters silently return `matchCount=0`. - [ ] 0 rows → ran `list_data_sources` and checked `matchCount` vs `row_count` BEFORE widening the window. -## Unified Alert Management (UAM) — PRIMARY alert API +## Unified Alert Management (UAM): PRIMARY alert API -> **Alert API precedence — important:** +> **Alert API precedence, important:** > -> 1. **PRIMARY — GraphQL UAM** at `POST /web/api/v2.1/unifiedalerts/graphql`. This is the modern, multi-source alerts inbox (EDR, XDR, Identity, STAR, Cloud, NGFW, and ingested third-party telemetry). IDs are UUIDs (e.g. `019db24c-8b6d-7451-8697-b1b2e1a270f1`). Use this for any alert listing, filtering, triage, note, status, verdict, assignment, group-by, facet, or CSV-export task. -> 2. **SECONDARY — REST** at `GET /web/api/v2.1/cloud-detection/alerts`. Older surface, scoped to cloud-detection events (STAR rule hits, EDR overflow). IDs are int64 (e.g. `2055164731151448891`). Use only when you specifically need the denormalized REST payload (`agentDetectionInfo`, `sourceProcess`, `targetProcess`, `ruleInfo`) or when UAM is unavailable. These are **parallel surfaces, not redundant** — the same alert will have different IDs in each. -> 3. **No `createAlert`.** S1 does not expose a mutation for creating alerts directly. Alerts are server-side byproducts of detection engines — create a STAR/Custom Detection rule (`POST /web/api/v2.1/cloud-detection/rules`), upload an IOC that matches live telemetry (`POST /web/api/v2.1/threat-intelligence/iocs`), or generate synthetic endpoint activity. `addAlertNote` is the closest reversible content-creation path against an existing alert. +> 1. **PRIMARY: GraphQL UAM** at `POST /web/api/v2.1/unifiedalerts/graphql`. This is the modern, multi-source alerts inbox (EDR, XDR, Identity, STAR, Cloud, NGFW, and ingested third-party telemetry). IDs are UUIDs (e.g. `019db24c-8b6d-7451-8697-b1b2e1a270f1`). Use this for any alert listing, filtering, triage, note, status, verdict, assignment, group-by, facet, or CSV-export task. +> 2. **SECONDARY: REST** at `GET /web/api/v2.1/cloud-detection/alerts`. Older surface, scoped to cloud-detection events (STAR rule hits, EDR overflow). IDs are int64 (e.g. `2055164731151448891`). Use only when you specifically need the denormalized REST payload (`agentDetectionInfo`, `sourceProcess`, `targetProcess`, `ruleInfo`) or when UAM is unavailable. These are **parallel surfaces, not redundant**, the same alert will have different IDs in each. +> 3. **No `createAlert`.** S1 does not expose a mutation for creating alerts directly. Alerts are server-side byproducts of detection engines, create a STAR/Custom Detection rule (`POST /web/api/v2.1/cloud-detection/rules`), upload an IOC that matches live telemetry (`POST /web/api/v2.1/threat-intelligence/iocs`), or generate synthetic endpoint activity. `addAlertNote` is the closest reversible content-creation path against an existing alert. Auth is the same `Authorization: ApiToken` header as REST; no extra credentials. Full reference in `references/UNIFIED_ALERTS.md`. The end-to-end dual-API round-trip test is `tests/test_alerts_dual_api.py`. -Use UAM whenever the user is working with *alerts* as first-class entities — triaging, filtering, adding notes, resolving, bulk-assigning — rather than the older `GET /web/api/v2.1/threats` surface. +Use UAM whenever the user is working with *alerts* as first-class entities, triaging, filtering, adding notes, resolving, bulk-assigning, rather than the older `GET /web/api/v2.1/threats` surface. ```python import sys @@ -798,20 +798,20 @@ python scripts/call_unified_alerts.py set-status --scope --alert-id python scripts/call_unified_alerts.py csv-export --filter severity=CRITICAL -o crit.csv ``` -### UAM domain — what belongs here vs REST +### UAM domain: what belongs here vs REST -UAM owns everything in the modern Alerts inbox, including alert notes, alert history, mitigation results, trigger-actions, and Cursor-paginated group-by / facet views. The older `/web/api/v2.1/threats` REST surface still exists and covers the classic endpoint-protection threat lifecycle — when the user says "alerts", "unified alerts", "alert notes", or mentions XDR / multi-source detections, route to UAM. When they say "threat", "threat group", "incident", or reference `/threats`, stay on REST. +UAM owns everything in the modern Alerts inbox, including alert notes, alert history, mitigation results, trigger-actions, and Cursor-paginated group-by / facet views. The older `/web/api/v2.1/threats` REST surface still exists and covers the classic endpoint-protection threat lifecycle, when the user says "alerts", "unified alerts", "alert notes", or mentions XDR / multi-source detections, route to UAM. When they say "threat", "threat group", "incident", or reference `/threats`, stay on REST. ### Important quirks (hidden by the wrapper, but mind them if writing raw GraphQL) - The `alerts` query takes a flat `filters: [FilterInput!]` (AND-joined); mutations and `alertAvailableActions` take `filter: OrFilterSelectionInput` shaped as `{ or: [{ and: [FilterInput, ...] }, ...] }`. Mixing these up is a validation error. The wrapper exposes `build_filter(...)`, `or_filter(...)`, and `scope(...)` helpers so callers don't have to hand-assemble them. -- `updateAlertNote` and `deleteAlertNote` fail for ~30–90s after a note is freshly created (`"Alert Note with ID ... does not have mgmt_note_id set, unable to [edit|delete], try again later!"`) because the management-console backend is still propagating an internal id. The wrapper retries automatically with backoff — callers don't need to sleep. +- `updateAlertNote` and `deleteAlertNote` fail for ~30-90s after a note is freshly created (`"Alert Note with ID ... does not have mgmt_note_id set, unable to [edit|delete], try again later!"`) because the management-console backend is still propagating an internal id. The wrapper retries automatically with backoff, callers don't need to sleep. - `aiInvestigations` has no `data` wrapper, but `alertNotes` / `alertFiltersCount` / `alertGroupByCount` / `alertAvailableActions` / `alertMitigationActionResults` / CSV exports all do. `alerts` / `alertHistory` / `alertTimeline` / `alertGroups` use connection shape (`edges`/`pageInfo`/`totalCount`). -- Full list of traps — including the `SortOrderType` enum name, `alertGroupByCount` using `limit` (not `first`), subselection requirements on `CsvResponse` / `ActionsError`, and the actual shape of `alertsViewDataAvailability` — is in `references/UNIFIED_ALERTS.md` under "Schema quirks". +- Full list of traps, including the `SortOrderType` enum name, `alertGroupByCount` using `limit` (not `first`), subselection requirements on `CsvResponse` / `ActionsError`, and the actual shape of `alertsViewDataAvailability`, is in `references/UNIFIED_ALERTS.md` under "Schema quirks". -### Destructive actions — blast radius +### Destructive actions: blast radius -`alertTriggerActions` is the single mutation that can touch many alerts at once. Passing `filter: null` means *every alert in scope* — potentially hundreds of thousands. The safe pattern is the same as REST bulk actions: +`alertTriggerActions` is the single mutation that can touch many alerts at once. Passing `filter: null` means *every alert in scope*, potentially hundreds of thousands. The safe pattern is the same as REST bulk actions: 1. Use `list_alerts(..., first=1)` with the proposed filter and read `totalCount`. 2. Show the user the exact filter + action list + count. @@ -969,7 +969,7 @@ Full empirical matrix including per-field behaviour and probing recipes: `refere Before you write queries, dashboards, or detections against an SDL data source, discover two things: (1) what sources exist on this tenant and which are actively ingesting, and (2) for a given source, what attributes the parser actually emits. Hardcoded field lists are the number-one reason queries return 0 rows on a new tenant. This workflow replaces them. -### Step 1 — enumerate sources (`dataSource.name = *`) +### Step 1: enumerate sources (`dataSource.name = *`) ```python from pq import list_data_sources @@ -984,7 +984,7 @@ Rules of thumb: - There can be multiple rows with the same `dataSource.name` under different `dataSource.category` values (e.g. `SentinelOne / security`, `SentinelOne / None`, `SentinelOne / telemetry`). Treat category as metadata, not part of the name. - A source with non-zero `ct` in 24h is live. Anything else is either decommissioned, in a different time window, or scoped out of the current token. -### Step 2 — discover the schema for one source (`discover_schema`) +### Step 2: discover the schema for one source (`discover_schema`) ```python from inspect_source import discover_schema, pick_keys @@ -1059,10 +1059,10 @@ elif prim_key: What it does: -1. Calls `inspect_source.discover_schema()` for the named source and `pick_keys(schema)` to choose `prim_key` (principal — user / host / IP / role) and `action_key` (event.type / activity_name / action). Honors per-source overrides if the caller knows better. +1. Calls `inspect_source.discover_schema()` for the named source and `pick_keys(schema)` to choose `prim_key` (principal: user / host / IP / role) and `action_key` (event.type / activity_name / action). Honors per-source overrides if the caller knows better. 2. Runs N daily count slices (default 30) via `pq.run_pq()` over the baseline window. Daily slicing avoids the LRQ per-call deadline; `max_workers=3` respects the per-user 3 rps cap. 3. Runs one 24h live slice. -4. Merges slices client-side. Supports two baseline strategies: pooled (all daily samples in one bucket) and DoW-stratified (one bucket per day-of-week — eliminates weekday/weekend false-positives). +4. Merges slices client-side. Supports two baseline strategies: pooled (all daily samples in one bucket) and DoW-stratified (one bucket per day-of-week, eliminates weekday/weekend false-positives). 5. Surfaces three anomaly classes on every run: matched-pair z-score deviations (SPIKE/DROP), silent pairs (baseline → live=0), and new-behaviour pairs (live with no baseline). Usage: @@ -1073,15 +1073,15 @@ python scripts/baseline_anomaly.py --source "Okta" --days 7 python scripts/baseline_anomaly.py --source "FortiGate" --days 30 --stratify dow --principal src.ip.address --action unmapped.action ``` -State is checkpointed to disk per source (`baseline_anomaly__state.json`) so the script is resumable across runs — use this when working in environments with short shell budgets. +State is checkpointed to disk per source (`baseline_anomaly__state.json`) so the script is resumable across runs; use this when working in environments with short shell budgets. -PQ building blocks the script wraps live in the `sentinelone-powerquery` skill at `examples/behavioral-baselines.md`. Read that file when authoring the equivalent as a STAR / PowerQuery Alert detection rule body — the rule-body shape uses `lookup` against a pre-computed baseline table (from `savelookup`) instead of the script's two-window LRQ pattern. +PQ building blocks the script wraps live in the `sentinelone-powerquery` skill at `examples/behavioral-baselines.md`. Read that file when authoring the equivalent as a STAR / PowerQuery Alert detection rule body, the rule-body shape uses `lookup` against a pre-computed baseline table (from `savelookup`) instead of the script's two-window LRQ pattern. ### When to re-run discovery - Before writing any query against a source you haven't touched on this tenant. - When a previously-working query starts returning 0 rows (parser may have changed field names after a platform update). -- On tenant handover — different customers enable different parser versions, especially for XDR connectors. +- On tenant handover: different customers enable different parser versions, especially for XDR connectors. - Before authoring a detection rule body (STAR / Custom Detection / PowerQuery Alert), to confirm the fields the rule references actually exist. Pass the discovered schema through to the rule author in the body of the request. ## CTO report generation pipeline @@ -1133,19 +1133,19 @@ The collector creates `reports/_/` on first run. The `reports/` di ## Common high-value workflows -- **Unified alert triage** — `list_alerts(...)` from `unified_alerts` for the modern multi-source alerts inbox (EDR + XDR + Identity + cloud + third-party); use `facets`/`group-by` for volume rollups; `set_alert_status` / `set_analyst_verdict` / `assign_alerts` for triage decisions; `add_alert_note` for context. -- **Threat triage (legacy)** — `GET /threats` filtered by `createdAt__gte` + `resolved=false`; enrich with agent details from `/agents?ids=...`; output a table. -- **Endpoint isolation** — find agent IDs (`/agents` with name/IP filter), confirm count, `POST /agents/actions/disconnect` with filter. +- **Unified alert triage**: `list_alerts(...)` from `unified_alerts` for the modern multi-source alerts inbox (EDR + XDR + Identity + cloud + third-party); use `facets`/`group-by` for volume rollups; `set_alert_status` / `set_analyst_verdict` / `assign_alerts` for triage decisions; `add_alert_note` for context. +- **Threat triage (legacy)**: `GET /threats` filtered by `createdAt__gte` + `resolved=false`; enrich with agent details from `/agents?ids=...`; output a table. +- **Endpoint isolation**: find agent IDs (`/agents` with name/IP filter), confirm count, `POST /agents/actions/disconnect` with filter. - **Hunt across DV / PowerQuery** -- `POST /sdl/v2/api/queries` with `queryType="LOG"` (S1QL) or `queryType="PQ"` (PowerQuery), then poll `GET /sdl/v2/api/queries/{id}` echoing the `X-Dataset-Query-Forward-Tag` response header. Auth is Bearer, not ApiToken. Legacy `/dv/init-query` + `/dv/query-status` + `/dv/events` + `/dv/events/pq` flows are deprecated (sunset 2027-02-15). See `references/WORKFLOWS.md` Section 4 for the canonical runner. - **Natural-language hunt via Purple AI** -- Use `mcp__purple-mcp__purple_ai` (Purple MCP). The `purple_query()` Python helper and `scripts/call_purple.py` are non-functional for API tokens (`purpleLaunchQuery NATURAL_LANGUAGE` requires a browser-session teamToken, confirmed 2026-05-03). Only for SDL-telemetry questions; route entity questions to REST. -- **Site/Group inventory** — `/sites`, `/groups`, `/accounts` are the tenant-structure endpoints; many resources require filtering by `siteIds` / `accountIds`. -- **Bulk action audit** — `/activities` is the system-wide audit log; filter by `activityTypes` and `createdAt__gte`. +- **Site/Group inventory**: `/sites`, `/groups`, `/accounts` are the tenant-structure endpoints; many resources require filtering by `siteIds` / `accountIds`. +- **Bulk action audit**: `/activities` is the system-wide audit log; filter by `activityTypes` and `createdAt__gte`. - **Push alerts + indicators INTO UAM** -- build OCSF payloads, then call `UAMAlertInterfaceClient.post_alert_with_indicators(alert, [...])` once per alert (loop for many). The helper posts indicators, sleeps 3s, and posts the single alert in the one sequence proven to surface cleanly on US1 tenants. See "UAM Alert Interface" section above for the two silent-drop failure modes (multi-alert POST, no sleep) it prevents. Use for pipeline integrations, synthetic-alert generation, and detection testing. - **CTO report for a data source** -- `python scripts/build_source_report.py --source "" --window <7d|24h>` then `scripts/render_charts.py`, `scripts/build_docx.py`, `scripts/build_pptx.py` on the resulting `reports/_/data.json`. Works for any SDL data source; the renderer gates every section on `dims` so dimension-sparse sources (e.g. Windows Event Logs with only `event.type`) still produce a coherent deck. See "CTO report generation pipeline" for the data contract and renderer gotchas. -Consult the per-tag reference files for exact parameter names — the above are orientation, not copy-paste ready. +Consult the per-tag reference files for exact parameter names, the above are orientation, not copy-paste ready. -## Hyperautomation (HA) — workflow management +## Hyperautomation (HA): workflow management API root (confirmed via live network capture 2026-05-03): @@ -1168,7 +1168,7 @@ Auth: same `Authorization: ApiToken ` header as all other S1 REST calls. **Important:** the single-workflow fetch requires BOTH `workflowId` AND `revisionId`. The `revisionId` is the `workflow.version_id` field returned in the list response. `GET /workflows/single/{id}` without a revision returns 404. -**Deletion is a REST `DELETE` (soft, recoverable).** `DELETE /web/api/v2.1/hyper-automate/api/v1/workflows/{id}?accountIds=` returns `204` (validated 2026-06-13: import then publish then delete then gone-from-list). Scope with `accountIds` or `siteIds` to match where the workflow lives. The older `POST /workflows/archive` and the legacy archive wrapper return HTTP 500 on this tenant — do not use them; the REST `DELETE` is the correct mechanism. +**Deletion is a REST `DELETE` (soft, recoverable).** `DELETE /web/api/v2.1/hyper-automate/api/v1/workflows/{id}?accountIds=` returns `204` (validated 2026-06-13: import then publish then delete then gone-from-list). Scope with `accountIds` or `siteIds` to match where the workflow lives. The older `POST /workflows/archive` and the legacy archive wrapper return HTTP 500 on this tenant; do not use them; the REST `DELETE` is the correct mechanism. Export/import were not captured in the v1 network trace. They are confirmed working at the `/public` base path; the `/v1` equivalents have not been verified. @@ -1206,16 +1206,16 @@ Action types observed: `singularity_response_trigger`, `manual_trigger`, `http_t ### MCP tools -`ha_list_workflows` — list with scope/sort/pagination. Returns `revisionId` alongside each workflow. -`ha_get_workflow` — fetch a single workflow by `workflowId` + optional `revisionId` (auto-resolves from list if omitted). -`ha_delete_workflow` — soft-delete one or more workflows via `DELETE /workflows/{id}` (scope with accountIds/siteIds). Confirm with user before calling. -`ha_import_workflow` — create workflow from JSON. Requires Hyper Automate.write permission. -`ha_export_workflow` — export all workflows as ZIP. +`ha_list_workflows`, list with scope/sort/pagination. Returns `revisionId` alongside each workflow. +`ha_get_workflow`, fetch a single workflow by `workflowId` + optional `revisionId` (auto-resolves from list if omitted). +`ha_delete_workflow`, soft-delete one or more workflows via `DELETE /workflows/{id}` (scope with accountIds/siteIds). Confirm with user before calling. +`ha_import_workflow`, create workflow from JSON. Requires Hyper Automate.write permission. +`ha_export_workflow`, export all workflows as ZIP. ### Permissions -`Hyper Automate.view` — read operations (list, get, filter-count, export). -`Hyper Automate.write` — write operations (import, delete). Confirmed: without this permission, import returns 403. +`Hyper Automate.view`, read operations (list, get, filter-count, export). +`Hyper Automate.write`, write operations (import, delete). Confirmed: without this permission, import returns 403. ## Using s1-secops-mcp tools for direct console operations @@ -1231,3 +1231,4 @@ skill scripts. The MCP tools run locally on your machine and make direct HTTPS c - **Delete:** `DELETE /web/api/v2.1/cloud-detection/rules/{id}`, or bulk with `{"filter": {"ids": [...], "siteIds" | "accountIds": [...]}}`. - **List:** always pass `isLegacy=false` or scheduled / PowerQuery rules are silently omitted. - **Scheduled rules run on a pre-aggregated data layer**, so PowerQuery functions like `dataset`, `datasource`, `now`, `querystart`/`queryend`/`queryspan`, `topK`, `savelookup`, CIDR/wildcard `lookup`, `lookup` over a >10,000-row table, time-shifted `timebucket`, and `timebucket` < 30s are NOT available in a scheduled-rule body (full list in the `sentinelone-powerquery` skill). A detection needing any of them, e.g. an absent-pair anti-join (`left join` + `dataset`), runs as a Hyperautomation watchdog instead (see `sentinelone-hyperautomation`). +- **Lookup-reading rules are account-scope only.** Lookup tables / datatables are ACCOUNT-level objects, so any rule whose PQ body reads one (`| lookup ... from `) can only be created with `filter.accountIds`; site-scoped creation of lookup-reading rules is invalid. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/CAPABILITY_MAP.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/CAPABILITY_MAP.md index 2c48b98..5ec6369 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/CAPABILITY_MAP.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/CAPABILITY_MAP.md @@ -2,7 +2,7 @@ Compact per-tag capability summary showing the common verb+resource shapes across all 781 operations. Use this as your first stop when you know *what* you want to do ("list", "count", "isolate") but not the exact path. For a specific endpoint use `search_endpoints.py` instead. -Symbols: L=list (GET collection), G=get-one (GET /{id}), C=count (GET /count or GET list?countOnly=true — always GET, never POST), E=export (GET /export — always GET, never POST), A=action (POST /actions/…), F=filters/facets, S=search (POST free-text or autocomplete), X=create/update/delete (mutating), ✓=confirmed working on this tenant (see tenant_capabilities.md). +Symbols: L=list (GET collection), G=get-one (GET /{id}), C=count (GET /count or GET list?countOnly=true, always GET, never POST), E=export (GET /export, always GET, never POST), A=action (POST /actions/…), F=filters/facets, S=search (POST free-text or autocomplete), X=create/update/delete (mutating), ✓=confirmed working on this tenant (see tenant_capabilities.md). | Tag | Resource | Ops | Capabilities | On this tenant | |---|---|---:|---|---| @@ -141,32 +141,32 @@ Symbols: L=list (GET collection), G=get-one (GET /{id}), C=count (GET /count or | I want to… | Start here | |---|---| -| list threats | Threats — `GET /web/api/v2.1/threats` | -| count threats | Threats — `GET /web/api/v2.1/threats?countOnly=true` → `{"data":[],"pagination":{"totalItems":N}}`. Or check `pagination.totalItems` from any list call. No POST equivalent exists. | -| export all threats to CSV | Threats — `GET /web/api/v2.1/threats/export` (no extra params; returns full CSV stream) | -| list agents/endpoints | Agents — `GET /web/api/v2.1/agents` | -| count agents | Agents — `GET /web/api/v2.1/agents/count` → `{"data":{"total":N}}`. No POST equivalent exists. | -| get agents by IDs | Agents — `GET /web/api/v2.1/agents?ids=,` (comma-separated query param, not a POST body) | -| count anything (generic) | Append `/count` to the list path for resources that have a dedicated count endpoint (agents, groups, sites). For resources without `/count`, pass `countOnly=true` as a query param to the list GET. Do not use POST for counting — there is no read-side POST in this API. | -| isolate an endpoint | Agent Actions — `POST /web/api/v2.1/agents/actions/disconnect` | -| reconnect an endpoint | Agent Actions — `POST /web/api/v2.1/agents/actions/connect` | -| uninstall an agent | Agent Actions — `POST /web/api/v2.1/agents/actions/uninstall` | -| move agent to group | Agent Actions — `POST /web/api/v2.1/agents/actions/move-to-group` | -| run a RemoteOps script | RemoteOps Scripts — `POST /web/api/v2.1/remote-scripts/execute` | -| hunt across Deep Visibility | Long Running Query — `POST /sdl/v2/api/queries` (queryType="LOG" for S1QL or "PQ" for PowerQuery), then `GET /sdl/v2/api/queries/{id}` to poll. The legacy /dv/init-query + /dv/query-status + /dv/events flow is deprecated (sunset 2027-02-15). | -| run a PowerQuery | Long Running Query — `POST /sdl/v2/api/queries` (queryType="PQ"), then `GET /sdl/v2/api/queries/{id}` to poll. The legacy /dv/events/pq + /dv/events/pq-ping flow is deprecated (sunset 2027-02-15). | -| see tenant structure | Accounts/Sites/Groups — `GET /web/api/v2.1/{accounts,sites,groups}` | -| see what the token can do | RBAC — `GET /web/api/v2.1/rbac/role` and `GET /web/api/v2.1/users` | -| audit who did what | Activities — `GET /web/api/v2.1/activities` | +| list threats | Threats: `GET /web/api/v2.1/threats` | +| count threats | Threats: `GET /web/api/v2.1/threats?countOnly=true` → `{"data":[],"pagination":{"totalItems":N}}`. Or check `pagination.totalItems` from any list call. No POST equivalent exists. | +| export all threats to CSV | Threats: `GET /web/api/v2.1/threats/export` (no extra params; returns full CSV stream) | +| list agents/endpoints | Agents: `GET /web/api/v2.1/agents` | +| count agents | Agents: `GET /web/api/v2.1/agents/count` → `{"data":{"total":N}}`. No POST equivalent exists. | +| get agents by IDs | Agents: `GET /web/api/v2.1/agents?ids=,` (comma-separated query param, not a POST body) | +| count anything (generic) | Append `/count` to the list path for resources that have a dedicated count endpoint (agents, groups, sites). For resources without `/count`, pass `countOnly=true` as a query param to the list GET. Do not use POST for counting; there is no read-side POST in this API. | +| isolate an endpoint | Agent Actions: `POST /web/api/v2.1/agents/actions/disconnect` | +| reconnect an endpoint | Agent Actions: `POST /web/api/v2.1/agents/actions/connect` | +| uninstall an agent | Agent Actions: `POST /web/api/v2.1/agents/actions/uninstall` | +| move agent to group | Agent Actions: `POST /web/api/v2.1/agents/actions/move-to-group` | +| run a RemoteOps script | RemoteOps Scripts: `POST /web/api/v2.1/remote-scripts/execute` | +| hunt across Deep Visibility | Long Running Query: `POST /sdl/v2/api/queries` (queryType="LOG" for S1QL or "PQ" for PowerQuery), then `GET /sdl/v2/api/queries/{id}` to poll. The legacy /dv/init-query + /dv/query-status + /dv/events flow is deprecated (sunset 2027-02-15). | +| run a PowerQuery | Long Running Query: `POST /sdl/v2/api/queries` (queryType="PQ"), then `GET /sdl/v2/api/queries/{id}` to poll. The legacy /dv/events/pq + /dv/events/pq-ping flow is deprecated (sunset 2027-02-15). | +| see tenant structure | Accounts/Sites/Groups: `GET /web/api/v2.1/{accounts,sites,groups}` | +| see what the token can do | RBAC: `GET /web/api/v2.1/rbac/role` and `GET /web/api/v2.1/users` | +| audit who did what | Activities: `GET /web/api/v2.1/activities` | | find an exclusion | Exclusions v2.1 / Exclusions and Blocklist | -| list firewall rules | Firewall Control — `GET /web/api/v2.1/firewall-control` | +| list firewall rules | Firewall Control: `GET /web/api/v2.1/firewall-control` | | list custom detection rules | Custom Detection Rule / Platform Detection Rules | -| see Hyperautomation workflows | Hyperautomation — `GET /web/api/v2.1/hyperautomation/workflows` | -| list installed agent packages | Updates — `GET /web/api/v2.1/update/agent/packages` | +| see Hyperautomation workflows | Hyperautomation: `GET /web/api/v2.1/hyperautomation/workflows` | +| list installed agent packages | Updates: `GET /web/api/v2.1/update/agent/packages` | ## Paths that do not exist -These paths produce HTTP 404 and have never been in the v2.1 spec. They look plausible but are wrong — do not use them: +These paths produce HTTP 404 and have never been in the v2.1 spec. They look plausible but are wrong; do not use them: | Wrong path | Correct alternative | |---|---| diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/POWERQUERY_RECIPES.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/POWERQUERY_RECIPES.md index c4e6372..8697f61 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/POWERQUERY_RECIPES.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/POWERQUERY_RECIPES.md @@ -193,7 +193,7 @@ For the full schema, see the `sentinelone-powerquery` skill's ## `| group` syntax reference The `| group` pipe aggregates rows. All grouping fields must be inside -an aggregation function — bare field names after `by` are NOT valid +an aggregation function, bare field names after `by` are NOT valid and return a parse error ("Field must be enclosed in a grouping function"). ### Forms @@ -240,7 +240,7 @@ and return a parse error ("Field must be enclosed in a grouping function"). ### What NOT to do ``` -# Wrong — bare field after by without aggregation wrapper: +# Wrong: bare field after by without aggregation wrapper: | group count = count() by event.type | sort count desc ← alias collision | group event.type by count() ← reversed ``` diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/TAG_INDEX.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/TAG_INDEX.md index 0b6535e..b6af179 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/TAG_INDEX.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/TAG_INDEX.md @@ -1,4 +1,4 @@ -# SentinelOne API — Tag Index +# SentinelOne API: Tag Index 111 tags, 781 operations total. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/UNIFIED_ALERTS.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/UNIFIED_ALERTS.md index bd6433e..01971b6 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/UNIFIED_ALERTS.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/UNIFIED_ALERTS.md @@ -2,7 +2,7 @@ **Endpoint:** `POST /web/api/v2.1/unifiedalerts/graphql` **Schema endpoint:** `POST /web/api/v2.1/unifiedalerts/graphql/schema` -**Auth:** same `Authorization: ApiToken ` header as REST — no extra permission grant required beyond the RBAC entries under "Unified Alerts". +**Auth:** same `Authorization: ApiToken ` header as REST; no extra permission grant required beyond the RBAC entries under "Unified Alerts". **Skill entry points:** `scripts/unified_alerts.py` (module) and `scripts/call_unified_alerts.py` (CLI). **Upstream docs:** https://community.sentinelone.com/s/article/000010170 @@ -10,9 +10,9 @@ ## When to use this vs REST threats / alerts -Use UAM for any work on the Unified Alerts product: multi-source alert triage (EDR, XDR, Identity, STAR, Cloud, NGFW, Mimecast, Proofpoint, etc.), facet-style filtering, bulk actions, and alert notes. The v2.1 REST `/threats` endpoints cover the older "threats" surface only — for everything else that shows in the modern Alerts inbox, start here. +Use UAM for any work on the Unified Alerts product: multi-source alert triage (EDR, XDR, Identity, STAR, Cloud, NGFW, Mimecast, Proofpoint, etc.), facet-style filtering, bulk actions, and alert notes. The v2.1 REST `/threats` endpoints cover the older "threats" surface only, for everything else that shows in the modern Alerts inbox, start here. -UAM is a single GraphQL surface (17 queries + 4 mutations). Every query and mutation is built around the same `ScopeSelectorInput`, `OrFilterSelectionInput`, and `FilterInput` types — once you have those right, the rest is just picking fields. +UAM is a single GraphQL surface (17 queries + 4 mutations). Every query and mutation is built around the same `ScopeSelectorInput`, `OrFilterSelectionInput`, and `FilterInput` types, once you have those right, the rest is just picking fields. --- @@ -101,7 +101,7 @@ Filter syntax: `fieldId=value` (stringEqual), `fieldId=v1,v2` (stringIn), `field | `alertGroupByCount` | Facet counts | `group_by_count` | Schema marks deprecated (use alertGroups). `AlertGroupByResponse { data[] }` → `{fieldId, hasNextPage, values[{value,label,count}]}`. | | `alertFiltersCount` | Facet counts for UI sidebar | `filters_count` | Similar `data` wrapper; `values[{value,label,count}]`. | | `alertGroups` | Paginated group-by | `alert_groups` | Connection; node has `value`/`label`/`count`. | -| `autocompleteOptions` | Suggest values for a field | `autocomplete` | Needs `searchText` length ≥ 3; not every field supports it (e.g. `externalId` refuses). Option has `{value, count}` — no `label`. | +| `autocompleteOptions` | Suggest values for a field | `autocomplete` | Needs `searchText` length ≥ 3; not every field supports it (e.g. `externalId` refuses). Option has `{value, count}`; no `label`. | | `alertsViewDataAvailability` | Which views have data | `view_data_availability` | Nested: `viewDataAvailability[{viewType, dataAvailable}]`. | | `aiInvestigations` | AI investigation status | `ai_investigations` | Returns `[AiInvestigation!]` **directly** (no `data` wrapper). | | `alertsCsvExport` | Bulk alerts CSV | `export_alerts_csv` | `CsvResponse { data }`; returns a CSV string. | @@ -112,7 +112,7 @@ Filter syntax: `fieldId=value` (stringEqual), `fieldId=v1,v2` (stringIn), `field | Name | Purpose | Wrapper | Notes | |---|---|---|---| | `addAlertNote` | Create note | `add_alert_note` | Returns the full note list for the alert (find the new one by matching text or by diffing ids before/after). | -| `updateAlertNote` | Edit note | `update_alert_note` | Fails for ~30–90s after creation with `mgmt_note_id not set`. Wrapper retries automatically. | +| `updateAlertNote` | Edit note | `update_alert_note` | Fails for ~30-90s after creation with `mgmt_note_id not set`. Wrapper retries automatically. | | `deleteAlertNote` | Remove note | `delete_alert_note` | Same eventual-consistency behaviour; wrapper retries. | | `alertTriggerActions` | Bulk actions against a filter | `trigger_actions` + convenience wrappers (`set_alert_status`, `set_analyst_verdict`, `assign_alerts`) | Filter is `OrFilterSelectionInput` (use `or_filter(...)`). Result is a union of `ActionsTriggered | TriggerActionsError | TriggerActionsScheduled`. | @@ -123,13 +123,13 @@ Filter syntax: `fieldId=value` (stringEqual), `fieldId=v1,v2` (stringIn), `field These are the traps the wrapper hides, in case you're writing GraphQL by hand. **`OrFilterSelectionInput` vs flat `[FilterInput!]`.** -The `alerts` query takes `filters: [FilterInput!]` — a flat AND-joined list. Mutations and `alertAvailableActions` take `filter: OrFilterSelectionInput`, shaped as `{ or: [ { and: [FilterInput,...] }, ... ] }`. Passing a flat list to a mutation is a validation error; passing an or/and wrapper to `alerts` is also an error. +The `alerts` query takes `filters: [FilterInput!]`, a flat AND-joined list. Mutations and `alertAvailableActions` take `filter: OrFilterSelectionInput`, shaped as `{ or: [ { and: [FilterInput,...] }, ... ] }`. Passing a flat list to a mutation is a validation error; passing an or/and wrapper to `alerts` is also an error. -**`FilterInput` comparators.** One field plus one comparator per filter object. Common: `stringEqual {value}`, `stringIn {values[]}`, `stringStartsWith {value}`, `stringEndsWith {value}`, `fullText {value}`, `boolEqual {value}`, `intEqual {value}`, `intIn {values[]}`, `dateRange {from,to}`. Check `alertColumnMetadata.filterTypes` for a field before picking one — not every comparator is supported on every field. +**`FilterInput` comparators.** One field plus one comparator per filter object. Common: `stringEqual {value}`, `stringIn {values[]}`, `stringStartsWith {value}`, `stringEndsWith {value}`, `fullText {value}`, `boolEqual {value}`, `intEqual {value}`, `intIn {values[]}`, `dateRange {from,to}`. Check `alertColumnMetadata.filterTypes` for a field before picking one, not every comparator is supported on every field. **Connection vs `data` wrapper.** Some types use the GraphQL connection pattern (`edges { node } pageInfo totalCount`): `alerts`, `alertHistory`, `alertTimeline`, `alertGroups`. Others wrap their list under `data`: `alertNotes`, `alertMitigationActionResults`, `alertGroupByCount`, `alertFiltersCount`, `alertAvailableActions`, CSV exports. A handful return bare list/scalar: `aiInvestigations`, `alertColumnMetadata`. -**Facet value shapes.** `alertGroupByCount.data[*].values[*]` uses `{value, label, count}`. `alertFiltersCount.data[*].values[*]` uses the same. `alertGroups` nodes use `{value, label, count}` (NOT `groupValue`). `autocompleteOptions.values[*]` uses `{value, count}` — no `label`. +**Facet value shapes.** `alertGroupByCount.data[*].values[*]` uses `{value, label, count}`. `alertFiltersCount.data[*].values[*]` uses the same. `alertGroups` nodes use `{value, label, count}` (NOT `groupValue`). `autocompleteOptions.values[*]` uses `{value, count}`; no `label`. **`alertAvailableActions.errors` is `[ActionsError!]`.** You have to subselect at least `{ errorMessage }` on it, even if you don't care about the errors. @@ -155,7 +155,7 @@ The `alerts` query takes `filters: [FilterInput!]` — a flat AND-joined list. M ## Action catalogue -From live `alertAvailableActions` on a Singularity Platform tenant with EDR, Identity, CWS, STAR, Mimecast, Proofpoint, Vectra, Palo Alto, Netskope, Singularity Mobile, and several marketplace apps enabled. Your tenant's list will differ — always call `available_actions(...)` with a narrow filter to see what's actually live before you trigger anything. +From live `alertAvailableActions` on a Singularity Platform tenant with EDR, Identity, CWS, STAR, Mimecast, Proofpoint, Vectra, Palo Alto, Netskope, Singularity Mobile, and several marketplace apps enabled. Your tenant's list will differ; always call `available_actions(...)` with a narrow filter to see what's actually live before you trigger anything. | Action ID | Type | What it does | |---|---|---| @@ -249,9 +249,9 @@ csv = uam.export_alerts_csv(c, filters=[ | `Subselection required for type 'CsvResponse!'` | Requested CSV export without picking `{ data }`. | Add `{ data }`. | | `Field doesn't support auto-complete.` | `autocompleteOptions` on unsupported field (e.g. `externalId`). | Pick a supported field (`alertName`, `assetName`, `processName`, ...) or use `autocomplete` via alert list filter. | | `Autocomplete requires minimum 3 characters` | `searchText` too short. | Send ≥ 3 chars. | -| `Alert Note with ID ... does not have mgmt_note_id set, unable to [edit\|delete], try again later!` | Note freshly created; management-side id hasn't propagated. | Retry after 30–120s. The wrapper does this automatically. | +| `Alert Note with ID ... does not have mgmt_note_id set, unable to [edit\|delete], try again later!` | Note freshly created; management-side id hasn't propagated. | Retry after 30-120s. The wrapper does this automatically. | | No actions returned from `alertAvailableActions` | Called it with no filter or with a filter that matches nothing. | Pass a non-empty `or_filter(...)` (e.g. by alert id). | -| **0 results with no error** when filtering `status="OPEN"` | `"OPEN"` is not a valid UAM status enum value. Returns 0 results silently — no GraphQL error is raised. Confirmed on live tenant. | Use `"NEW"` instead. Valid status values are `NEW`, `IN_PROGRESS`, `RESOLVED` only. | +| **0 results with no error** when filtering `status="OPEN"` | `"OPEN"` is not a valid UAM status enum value. Returns 0 results silently; no GraphQL error is raised. Confirmed on live tenant. | Use `"NEW"` instead. Valid status values are `NEW`, `IN_PROGRESS`, `RESOLVED` only. | | **0 results with no error** when filtering `status="FALSE_POSITIVE"` | `"FALSE_POSITIVE"` is an `analystVerdict` value, not a `status` value. Silently returns 0 results. | To filter by analyst verdict, use `fieldId="analystVerdict"` with `stringEqual {value: "FALSE_POSITIVE_USER_ERROR"}` (or whichever verdict value). Status and analystVerdict are separate fields. | --- @@ -266,7 +266,7 @@ raw = fetch_schema(c) # dict; the full SDL is under raw["_raw"] Path("uam_schema.graphql").write_text(raw["_raw"]) ``` -The SDL is ~225 KB and self-describing — if a field shape ever changes, grep the latest dump before guessing. +The SDL is ~225 KB and self-describing, if a field shape ever changes, grep the latest dump before guessing. --- @@ -282,5 +282,5 @@ Findings from a live events-vs-scheduled reproduction (2026-06). ## Ingestion paths (HEC vs UAM) Two distinct ingest APIs share the ingest host URL but are not connected: -- **HEC ingest** (HTTP Event Collector): raw logs/events + a named `parser`; feeds Event Search, PowerQuery, and detection rules. This is the log-ingestion path (replaces the removed SDL `uploadLogs`). For pre-structured / OCSF JSON ingested with `?isParsed=true` (no parser), each event MUST include `dataSource.name`, `dataSource.vendor`, `dataSource.category` (set to `security` for custom OCSF sources), `event.type` (as a FLAT dotted key — a nested `event:{...}` object is dropped since `event` is HEC-reserved), and `site_id`. OCSF omits these, and without them events land with a null source (no attribution; `dataSource.name`-based filters/detections miss). +- **HEC ingest** (HTTP Event Collector): raw logs/events + a named `parser`; feeds Event Search, PowerQuery, and detection rules. This is the log-ingestion path (replaces the removed SDL `uploadLogs`). For pre-structured / OCSF JSON ingested with `?isParsed=true` (no parser), each event MUST include `dataSource.name`, `dataSource.vendor`, `dataSource.category` (set to `security` for custom OCSF sources), `event.type` (as a FLAT dotted key, a nested `event:{...}` object is dropped since `event` is HEC-reserved), and `site_id`. OCSF omits these, and without them events land with a null source (no attribution; `dataSource.name`-based filters/detections miss). - **UAM ingest** (`uam_post_indicators` / `uam_ingest_alert`, `/v1/*`): creates UAM alerts/indicators directly and builds the alert asset from the event `device` object. Site routing via `scope = accountId:siteId`. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/WORKFLOWS.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/WORKFLOWS.md index 977e22d..51a2cc4 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/WORKFLOWS.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/WORKFLOWS.md @@ -4,7 +4,7 @@ Ready-to-adapt multi-step recipes for the most common pre-sales / SecOps request --- -## 1. Threat triage — what fired in the last N hours? +## 1. Threat triage: what fired in the last N hours? ```python from datetime import datetime, timezone, timedelta @@ -24,7 +24,7 @@ Key params: `createdAt__gte` (ISO-8601), `resolved=false`, `incidentStatuses=unr --- -## 2. Endpoint inventory — what's deployed, by site, with health? +## 2. Endpoint inventory: what's deployed, by site, with health? ```python rows = [] @@ -50,7 +50,7 @@ Useful filters: `isActive=true`, `osTypes=windows,macos,linux`, `siteIds=...`, ` filt = {"computerName__contains": "laptop-", "isActive": True} count = c.get("/web/api/v2.1/agents/count", params=filt) # show user: count["data"]["total"] -# then — after explicit confirmation — +# then, after explicit confirmation, c.post("/web/api/v2.1/agents/actions/disconnect", json_body={"filter": filt}) # undo @@ -58,7 +58,7 @@ c.post("/web/api/v2.1/agents/actions/connect", json_body={"filter": filt}) ``` -Destructive: network quarantine has no undo beyond the corresponding `connect` action. Prefer filter-based bulk ops over per-ID loops — the API is designed for them. +Destructive: network quarantine has no undo beyond the corresponding `connect` action. Prefer filter-based bulk ops over per-ID loops, the API is designed for them. --- @@ -189,7 +189,7 @@ paths = list(c.iter_items("/web/api/v2.1/exclusions", params={"type": "path", "limit": 500})) ``` -Exclusions v2.1 (`/exclusions-v2`) is the newer API — prefer it on modern tenants. +Exclusions v2.1 (`/exclusions-v2`) is the newer API; prefer it on modern tenants. --- diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/common_params.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/common_params.md index 864667a..c5c979b 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/common_params.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/common_params.md @@ -2,14 +2,14 @@ Most list endpoints share these. See per-endpoint docs for additional filters. -- `skip` — pagination offset (0-1000). For >1000 items, use `cursor` instead. -- `limit` — page size (1-1000, default 10). -- `cursor` — opaque pagination token returned by prior response. Prefer this for deep pagination. -- `countOnly` — if true, returns only the count. -- `skipCount` — if true, skips count calc (faster). -- `sortBy` — field to sort by (endpoint-specific enum). -- `sortOrder` — asc or desc. -- `ids` — filter by list of IDs (max 5000 typically). +- `skip`: pagination offset (0-1000). For >1000 items, use `cursor` instead. +- `limit`: page size (1-1000, default 10). +- `cursor`: opaque pagination token returned by prior response. Prefer this for deep pagination. +- `countOnly`: if true, returns only the count. +- `skipCount`: if true, skips count calc (faster). +- `sortBy`: field to sort by (endpoint-specific enum). +- `sortOrder`: asc or desc. +- `ids`: filter by list of IDs (max 5000 typically). ## Pagination pattern diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Accounts.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Accounts.md index 81f38d3..105b048 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Accounts.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Accounts.md @@ -11,33 +11,33 @@ Get the Accounts, and their data, that match the filter. This command gives the Required permissions: `Accounts.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, totalLicenses, expiration, accountType, state, createdAt, updatedAt, activeLicenses, activeAgents, numberOfSites, usageType, billingMode) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `ids` [query, array] — A list of Account IDs. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to search for. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: name. (Note: on single-Account Consoles, the Account name will not be matched) -- `name` [query, string] — Name. Example: "My Account". -- `isDefault` [query, boolean] — Is default -- `accountType` [query, string] (enum: Trial, Paid) — Account type. Example: "Trial". -- `expiration` [query, string] — Expiration. Example: "2018-02-27T04:49:26.257525Z". -- `totalLicenses` [query, integer] — Total licenses -- `activeLicenses` [query, integer] — Active licenses -- `sku` [query, string] — Sku. Example: "core". -- `module` [query, string] — Module. Example: "star,rso". -- `createdAt` [query, string] — Timestamp of Account creation. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt` [query, string] — Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". -- `state` [query, string] (enum: active, expired, deleted) — Account state. Example: "active". -- `states` [query, array] — Filter by state, such as active or expired. -- `statesNin` [query, array] — List of states to not filter -- `features` [query, array] — Filter the list of Accounts for those that support this feature. Example: "firewall-control". -- `usageType` [query, string] (enum: customer, mssp, ir) — Usage type. Example: "customer". -- `billingMode` [query, string] (enum: subscription, consumption) — Billing mode. Example: "subscription". -- `name__contains` [query, array] — Free-text filter by account name (supports multiple values) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, totalLicenses, expiration, accountType, state, createdAt, updatedAt, activeLicenses, activeAgents, numberOfSites, usageType, billingMode): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `ids` [query, array]: A list of Account IDs. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to search for. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: name. (Note: on single-Account Consoles, the Account name will not be matched) +- `name` [query, string]: Name. Example: "My Account". +- `isDefault` [query, boolean]: Is default +- `accountType` [query, string] (enum: Trial, Paid): Account type. Example: "Trial". +- `expiration` [query, string]: Expiration. Example: "2018-02-27T04:49:26.257525Z". +- `totalLicenses` [query, integer]: Total licenses +- `activeLicenses` [query, integer]: Active licenses +- `sku` [query, string]: Sku. Example: "core". +- `module` [query, string]: Module. Example: "star,rso". +- `createdAt` [query, string]: Timestamp of Account creation. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt` [query, string]: Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". +- `state` [query, string] (enum: active, expired, deleted): Account state. Example: "active". +- `states` [query, array]: Filter by state, such as active or expired. +- `statesNin` [query, array]: List of states to not filter +- `features` [query, array]: Filter the list of Accounts for those that support this feature. Example: "firewall-control". +- `usageType` [query, string] (enum: customer, mssp, ir): Usage type. Example: "customer". +- `billingMode` [query, string] (enum: subscription, consumption): Billing mode. Example: "subscription". +- `name__contains` [query, array]: Free-text filter by account name (supports multiple values) Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -50,7 +50,7 @@ Create a new Account. This command requires Global permissions and an MSSP deplo Required permissions: `Accounts.create` Parameters: -- `body` [body, accounts.schemas_PostAccountSchema] — +- `body` [body, accounts.schemas_PostAccountSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -63,7 +63,7 @@ Get Account data from a given Account ID. To get an Account ID, run "accounts". Required permissions: `Accounts.view` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". Responses: 404 Account not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -76,8 +76,8 @@ Change the data of an Account. This command requires a Global user or an Account Required permissions: `Accounts.edit` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". -- `body` [body, accounts.schemas_AccountPutSchema] — +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `body` [body, accounts.schemas_AccountPutSchema]: Responses: 404 Account not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -90,7 +90,7 @@ Expire an Account immediately. The user must have Global access or Account acces Required permissions: `Accounts.edit` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". Responses: 404 Account not found, 200 Expire account now, 401 Unauthorized access - please sign in and retry. @@ -103,8 +103,8 @@ Reactivate an expired Account. This command requires a Global user or Support. C Required permissions: `Accounts.edit` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". -- `body` [body, accounts.schemas_ReactivateAccountSchema] — +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `body` [body, accounts.schemas_ReactivateAccountSchema]: Responses: 404 Account not found, 200 Account reactivated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -117,8 +117,8 @@ The policy of the Account is based on the default Global policy and is enforced Required permissions: `Policy.edit` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". -- `body` [body, policies_schemas_RevertPolicySchema] — +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `body` [body, policies_schemas_RevertPolicySchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -131,8 +131,8 @@ You can uninstall all Agents of one Account with one command that requires a pas Required permissions: `Endpoints.modifyUninstallPassword` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". -- `body` [body, accounts.schemas_UninstallPasswordGenerateRequestSchema] — +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `body` [body, accounts.schemas_UninstallPasswordGenerateRequestSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -145,7 +145,7 @@ Get the uninstall password metadata, such as which user created and revoked it a Required permissions: `Accounts.view` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". Responses: 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -158,7 +158,7 @@ Delete the account-level uninstall password. If you do not delete it, you or ano Required permissions: `Endpoints.modifyUninstallPassword` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". Responses: 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -171,7 +171,7 @@ Get the uninstall password to uninstall several Agents of one Account with one c Required permissions: `Endpoints.viewUninstallPassword` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". Responses: 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -184,25 +184,25 @@ Export Accounts data to a CSV, for Accounts that match the filter. Required permissions: `Accounts.view` Parameters: -- `ids` [query, array] — A list of Account IDs. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to search for. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: name. (Note: on single-Account Consoles, the Account name will not be matched) -- `name` [query, string] — Name. Example: "My Account". -- `isDefault` [query, boolean] — Is default -- `accountType` [query, string] (enum: Trial, Paid) — Account type. Example: "Trial". -- `expiration` [query, string] — Expiration. Example: "2018-02-27T04:49:26.257525Z". -- `totalLicenses` [query, integer] — Total licenses -- `activeLicenses` [query, integer] — Active licenses -- `sku` [query, string] — Sku. Example: "core". -- `module` [query, string] — Module. Example: "star,rso". -- `createdAt` [query, string] — Timestamp of Account creation. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt` [query, string] — Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". -- `state` [query, string] (enum: active, expired, deleted) — Account state. Example: "active". -- `states` [query, array] — Filter by state, such as active or expired. -- `statesNin` [query, array] — List of states to not filter -- `features` [query, array] — Filter the list of Accounts for those that support this feature. Example: "firewall-control". -- `usageType` [query, string] (enum: customer, mssp, ir) — Usage type. Example: "customer". -- `billingMode` [query, string] (enum: subscription, consumption) — Billing mode. Example: "subscription". -- `name__contains` [query, array] — Free-text filter by account name (supports multiple values) +- `ids` [query, array]: A list of Account IDs. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to search for. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: name. (Note: on single-Account Consoles, the Account name will not be matched) +- `name` [query, string]: Name. Example: "My Account". +- `isDefault` [query, boolean]: Is default +- `accountType` [query, string] (enum: Trial, Paid): Account type. Example: "Trial". +- `expiration` [query, string]: Expiration. Example: "2018-02-27T04:49:26.257525Z". +- `totalLicenses` [query, integer]: Total licenses +- `activeLicenses` [query, integer]: Active licenses +- `sku` [query, string]: Sku. Example: "core". +- `module` [query, string]: Module. Example: "star,rso". +- `createdAt` [query, string]: Timestamp of Account creation. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt` [query, string]: Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". +- `state` [query, string] (enum: active, expired, deleted): Account state. Example: "active". +- `states` [query, array]: Filter by state, such as active or expired. +- `statesNin` [query, array]: List of states to not filter +- `features` [query, array]: Filter the list of Accounts for those that support this feature. Example: "firewall-control". +- `usageType` [query, string] (enum: customer, mssp, ir): Usage type. Example: "customer". +- `billingMode` [query, string] (enum: subscription, consumption): Billing mode. Example: "subscription". +- `name__contains` [query, array]: Free-text filter by account name (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Activities.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Activities.md index b7ff3ad..e310f26 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Activities.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Activities.md @@ -12,32 +12,32 @@ Get the activities, and their data, that match the filters. Required permissions: `Activity Page.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, activityType, createdAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Get activities created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Get activities created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Get activities created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Get activities created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Get activities created in this range (inclusive) of a start timestamp and an end timestamp. Example: "1514978764288-1514978999999". -- `activityTypes` [query, array] — Return only these activity codes (comma-separated list). Select a code from the drop-down, or see the id field from the Get activity types command. . Example: "52,53,71,72". -- `includeHidden` [query, boolean] — Include internal activities hidden from display. Example: "False". -- `threatIds` [query, array] — Return activities related to specified threats. Example: "225494730938493804,225494730938493915". -- `agentIds` [query, array] — Return activities related to specified agents. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter activities by specific activity IDs. Example: "225494730938493804,225494730938493915". -- `activityUuids` [query, array] — Return activities by specific activity UUIDs. Example: "a2c8037c-e6df-436d-b92b-bc09a418717e,f15b308b-fab9-4c0b-b6f5-17d236a7bf55". -- `userIds` [query, array] — The user who invoked the activity (If applicable). Example: "225494730938493804,225494730938493915". -- `userEmails` [query, array] — Email of the user who invoked the activity (If applicable) -- `ruleIds` [query, array] — Return activities related to specified rules. Example: "225494730938493804,225494730938493915". -- `alertIds` [query, array] — Return activities related to specified alerts. Example: "225494730938493804,225494730938493915". -- `relatedIds` [query, array] — Return activities related to specified entities. Example: "56ee72a79c7e5c62dd36e6b1". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, activityType, createdAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Get activities created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Get activities created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Get activities created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Get activities created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Get activities created in this range (inclusive) of a start timestamp and an end timestamp. Example: "1514978764288-1514978999999". +- `activityTypes` [query, array]: Return only these activity codes (comma-separated list). Select a code from the drop-down, or see the id field from the Get activity types command. . Example: "52,53,71,72". +- `includeHidden` [query, boolean]: Include internal activities hidden from display. Example: "False". +- `threatIds` [query, array]: Return activities related to specified threats. Example: "225494730938493804,225494730938493915". +- `agentIds` [query, array]: Return activities related to specified agents. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter activities by specific activity IDs. Example: "225494730938493804,225494730938493915". +- `activityUuids` [query, array]: Return activities by specific activity UUIDs. Example: "a2c8037c-e6df-436d-b92b-bc09a418717e,f15b308b-fab9-4c0b-b6f5-17d236a7bf55". +- `userIds` [query, array]: The user who invoked the activity (If applicable). Example: "225494730938493804,225494730938493915". +- `userEmails` [query, array]: Email of the user who invoked the activity (If applicable) +- `ruleIds` [query, array]: Return activities related to specified rules. Example: "225494730938493804,225494730938493915". +- `alertIds` [query, array]: Return activities related to specified alerts. Example: "225494730938493804,225494730938493915". +- `relatedIds` [query, array]: Return activities related to specified entities. Example: "56ee72a79c7e5c62dd36e6b1". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -60,26 +60,26 @@ Export the list of activities. Required permissions: `Activity Page.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Get activities created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Get activities created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Get activities created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Get activities created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Get activities created in this range (inclusive) of a start timestamp and an end timestamp. Example: "1514978764288-1514978999999". -- `activityTypes` [query, array] — Return only these activity codes (comma-separated list). Select a code from the drop-down, or see the id field from the Get activity types command. . Example: "52,53,71,72". -- `includeHidden` [query, boolean] — Include internal activities hidden from display. Example: "False". -- `threatIds` [query, array] — Return activities related to specified threats. Example: "225494730938493804,225494730938493915". -- `agentIds` [query, array] — Return activities related to specified agents. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter activities by specific activity IDs. Example: "225494730938493804,225494730938493915". -- `activityUuids` [query, array] — Return activities by specific activity UUIDs. Example: "a2c8037c-e6df-436d-b92b-bc09a418717e,f15b308b-fab9-4c0b-b6f5-17d236a7bf55". -- `userIds` [query, array] — The user who invoked the activity (If applicable). Example: "225494730938493804,225494730938493915". -- `userEmails` [query, array] — Email of the user who invoked the activity (If applicable) -- `ruleIds` [query, array] — Return activities related to specified rules. Example: "225494730938493804,225494730938493915". -- `alertIds` [query, array] — Return activities related to specified alerts. Example: "225494730938493804,225494730938493915". -- `relatedIds` [query, array] — Return activities related to specified entities. Example: "56ee72a79c7e5c62dd36e6b1". -- `rowsLimit` [query, integer] — Limit number of returned items (1-10000). Example: "100". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Get activities created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Get activities created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Get activities created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Get activities created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Get activities created in this range (inclusive) of a start timestamp and an end timestamp. Example: "1514978764288-1514978999999". +- `activityTypes` [query, array]: Return only these activity codes (comma-separated list). Select a code from the drop-down, or see the id field from the Get activity types command. . Example: "52,53,71,72". +- `includeHidden` [query, boolean]: Include internal activities hidden from display. Example: "False". +- `threatIds` [query, array]: Return activities related to specified threats. Example: "225494730938493804,225494730938493915". +- `agentIds` [query, array]: Return activities related to specified agents. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter activities by specific activity IDs. Example: "225494730938493804,225494730938493915". +- `activityUuids` [query, array]: Return activities by specific activity UUIDs. Example: "a2c8037c-e6df-436d-b92b-bc09a418717e,f15b308b-fab9-4c0b-b6f5-17d236a7bf55". +- `userIds` [query, array]: The user who invoked the activity (If applicable). Example: "225494730938493804,225494730938493915". +- `userEmails` [query, array]: Email of the user who invoked the activity (If applicable) +- `ruleIds` [query, array]: Return activities related to specified rules. Example: "225494730938493804,225494730938493915". +- `alertIds` [query, array]: Return activities related to specified alerts. Example: "225494730938493804,225494730938493915". +- `relatedIds` [query, array]: Return activities related to specified entities. Example: "56ee72a79c7e5c62dd36e6b1". +- `rowsLimit` [query, integer]: Limit number of returned items (1-10000). Example: "100". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -92,31 +92,31 @@ To see examples of Syslog messages, you can get the Syslog message that correspo Required permissions: `Activity Page.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, activityType, createdAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Get activities created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Get activities created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Get activities created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Get activities created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Get activities created in this range (inclusive) of a start timestamp and an end timestamp. Example: "1514978764288-1514978999999". -- `activityTypes` [query, array] — Return only these activity codes (comma-separated list). Select a code from the drop-down, or see the id field from the Get activity types command. . Example: "52,53,71,72". -- `includeHidden` [query, boolean] — Include internal activities hidden from display. Example: "False". -- `threatIds` [query, array] — Return activities related to specified threats. Example: "225494730938493804,225494730938493915". -- `agentIds` [query, array] — Return activities related to specified agents. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter activities by specific activity IDs. Example: "225494730938493804,225494730938493915". -- `activityUuids` [query, array] — Return activities by specific activity UUIDs. Example: "a2c8037c-e6df-436d-b92b-bc09a418717e,f15b308b-fab9-4c0b-b6f5-17d236a7bf55". -- `userIds` [query, array] — The user who invoked the activity (If applicable). Example: "225494730938493804,225494730938493915". -- `userEmails` [query, array] — Email of the user who invoked the activity (If applicable) -- `ruleIds` [query, array] — Return activities related to specified rules. Example: "225494730938493804,225494730938493915". -- `alertIds` [query, array] — Return activities related to specified alerts. Example: "225494730938493804,225494730938493915". -- `relatedIds` [query, array] — Return activities related to specified entities. Example: "56ee72a79c7e5c62dd36e6b1". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, activityType, createdAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Get activities created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Get activities created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Get activities created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Get activities created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Get activities created in this range (inclusive) of a start timestamp and an end timestamp. Example: "1514978764288-1514978999999". +- `activityTypes` [query, array]: Return only these activity codes (comma-separated list). Select a code from the drop-down, or see the id field from the Get activity types command. . Example: "52,53,71,72". +- `includeHidden` [query, boolean]: Include internal activities hidden from display. Example: "False". +- `threatIds` [query, array]: Return activities related to specified threats. Example: "225494730938493804,225494730938493915". +- `agentIds` [query, array]: Return activities related to specified agents. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter activities by specific activity IDs. Example: "225494730938493804,225494730938493915". +- `activityUuids` [query, array]: Return activities by specific activity UUIDs. Example: "a2c8037c-e6df-436d-b92b-bc09a418717e,f15b308b-fab9-4c0b-b6f5-17d236a7bf55". +- `userIds` [query, array]: The user who invoked the activity (If applicable). Example: "225494730938493804,225494730938493915". +- `userEmails` [query, array]: Email of the user who invoked the activity (If applicable) +- `ruleIds` [query, array]: Return activities related to specified rules. Example: "225494730938493804,225494730938493915". +- `alertIds` [query, array]: Return activities related to specified alerts. Example: "225494730938493804,225494730938493915". +- `relatedIds` [query, array]: Return activities related to specified entities. Example: "56ee72a79c7e5c62dd36e6b1". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Actions.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Actions.md index e1365a7..a21f0a0 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Actions.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Actions.md @@ -11,7 +11,7 @@ Immediately stop a Full Disk Scan on all Agents that match the filter. See "Init Required permissions: `Endpoints.abortScan` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,7 +24,7 @@ Approve stateless upgrade for agents Required permissions: `Endpoints.uninstall` Parameters: -- `body` [body, agents.schemas_AgentsCleaninstallerSchema] — +- `body` [body, agents.schemas_AgentsCleaninstallerSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -37,7 +37,7 @@ If a user tries to uninstall the SentinelOne Agent from an endpoint, an uninstal Required permissions: `Endpoints.approveUninstall` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -50,7 +50,7 @@ You can send a message through the Agents that users can see.
      This is useful Required permissions: `Endpoints.sendMessage` Parameters: -- `body` [body, agents.schemas_AgentsBroadcastActionSchema] — +- `body` [body, agents.schemas_AgentsBroadcastActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -63,7 +63,7 @@ Who can run Remote Shell? Remote Shell is a powerful way to respond remotely to Required permissions: `Endpoints.remoteShell` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 Insufficient permissions, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry., 200 Success @@ -76,7 +76,7 @@ After you run "disconnect from network" on endpoints, analyze the issue, and mit Required permissions: `Endpoints.reconnectToNetwork` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -89,7 +89,7 @@ If a user is scheduled for time off, or a device is scheduled for maintenance, y Required permissions: `Endpoints.decommission` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,7 +102,7 @@ Use this command to disable Agents that match the filter.
      Disabled agents ru Required permissions: `Endpoints.disableAgent` Parameters: -- `body` [body, agents.schemas_AgentDisableActionSchema] — +- `body` [body, agents.schemas_AgentDisableActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -115,7 +115,7 @@ Use this command to isolate (quarantine) endpoints from the network, if the endp Required permissions: `Endpoints.disconnectFromNetwork` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -128,7 +128,7 @@ Use this command to enable disabled Agents that match the filter.
      If the com Required permissions: `Endpoints.enableAgent` Parameters: -- `body` [body, agents.schemas_AgentEnableActionSchema] — +- `body` [body, agents.schemas_AgentEnableActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -141,7 +141,7 @@ Firewall Control is disabled at the Global level. When it is first enabled, all Required permissions: `Endpoints.configureFirewallLogging` Parameters: -- `body` [body, agents.schemas_AgentFetchFirewallRulesActionSchema] — +- `body` [body, agents.schemas_AgentFetchFirewallRulesActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -154,7 +154,7 @@ Application Risk Management is an EA feature. Contact your partner or SentinelOn Required permissions: `Endpoints.showApplications` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -167,7 +167,7 @@ Get the Agent and Endpoint logs from Agents that match the filter.
      The Agent Required permissions: `Endpoints.FetchLogs` Parameters: -- `body` [body, agents.schemas_AgentFetchLogsActionSchema] — +- `body` [body, agents.schemas_AgentFetchLogsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -180,7 +180,7 @@ Get Firewall Control events in the local log file, written in clear text, for Fi Required permissions: `Endpoints.configureFirewallLogging` Parameters: -- `body` [body, agents.schemas_AgentFirewallLoggingActionSchema] — +- `body` [body, agents.schemas_AgentFirewallLoggingActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -193,7 +193,7 @@ Use this command to run a Full Disk Scan on Agents that match the filter.
      Fu Required permissions: `Endpoints.initiateScan` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -206,7 +206,7 @@ Edit when authorization of local upgrades/downgrades expires. Required permissions: `Local Upgrade/Downgrade Authorization.edit` Parameters: -- `body` [body, agents.schemas_AgentLocalUpgradeAuthorizationActionSchema] — +- `body` [body, agents.schemas_AgentLocalUpgradeAuthorizationActionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -219,7 +219,7 @@ The "add" operation adds the given tags to the endpoints (if not already present Required permissions: `Endpoints.manageEndpointTags` Parameters: -- `body` [body, agents.schemas_ManageEndpointTagsSchema] — +- `body` [body, agents.schemas_ManageEndpointTagsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -232,7 +232,7 @@ The value of the Agent version as "up-to-date" is a useful filter for many actio Required permissions: `Endpoints.markAsUpToDate` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -245,7 +245,7 @@ You can move Agents between Management Consoles. This command moves Agents to a Required permissions: `Endpoints.migrateAgent` Parameters: -- `body` [body, agents.schemas_AgentsMoveToConsoleSchema] — +- `body` [body, agents.schemas_AgentsMoveToConsoleSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -258,7 +258,7 @@ This command requires Account or Global level access.
      Agents are assigned to Required permissions: `Endpoints.moveToAnotherSite` Parameters: -- `body` [body, agents.schemas_AgentsMoveToSiteSchema] — +- `body` [body, agents.schemas_AgentsMoveToSiteSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -271,7 +271,7 @@ IMPORTANT: This action will assign a new UUID to Agents that match the filter. < Required permissions: `Endpoints.randomizeUuid` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -284,7 +284,7 @@ Disable Network Discovery from the Agents that match the filter.
      Singularity Required permissions: `Endpoints.disableRanger` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -297,7 +297,7 @@ Singularity Network Discovery gives full visibility of all devices connected to Required permissions: `Endpoints.enableRanger` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -310,7 +310,7 @@ Reject uninstall requests for all Agents that match the filter. To learn more ab Required permissions: `Endpoints.rejectUninstall` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -323,7 +323,7 @@ SentinelCtl is the CLI for Agents. It runs commands directly on one Agent at a t Required permissions: `Endpoints.resetLocalConfiguration` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -336,7 +336,7 @@ Initiate an Agent passphrase reset for Agents that match the filter.
      This ac Required permissions: `Endpoints.resetPassphrase` Parameters: -- `body` [body, agents.schemas_AgentsResetPassphrasesSchema] — +- `body` [body, agents.schemas_AgentsResetPassphrasesSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -349,7 +349,7 @@ Check if a passphrase reset can be initiated for Agents that match the filter. < Required permissions: `Endpoints.resetPassphrase` Parameters: -- `body` [body, agents.schemas_AgentsResetPassphraseCapabilitySchema] — +- `body` [body, agents.schemas_AgentsResetPassphraseCapabilitySchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -362,7 +362,7 @@ Use this command to restart endpoints that have an Agent installed and that fit Required permissions: `Endpoints.reboot` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -375,7 +375,7 @@ This command requires Global permissions or Support.
      The configuration of an Required permissions: `Endpoints.configuration` Parameters: -- `body` [body, agents.schemas_AgentsSetConfigSchema] — +- `body` [body, agents.schemas_AgentsSetConfigSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -388,7 +388,7 @@ You can add a Customer Identifier (a string) to identify each endpoint or to tag Required permissions: `Endpoints.setCustomerIdentifier` Parameters: -- `body` [body, agents.schemas_AgentsUpdateExternalIdScheme] — +- `body` [body, agents.schemas_AgentsUpdateExternalIdScheme]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -401,7 +401,7 @@ You can shut down endpoints remotely for performance, maintenance, or security. Required permissions: `Endpoints.shutDown` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -414,7 +414,7 @@ Use this command to start remote profiling on Agents that match the filter.
      Required permissions: `Endpoints.remoteProfiling` Parameters: -- `body` [body, agents.schemas_AgentStartProfilingActionSchema] — +- `body` [body, agents.schemas_AgentStartProfilingActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -427,7 +427,7 @@ Remote shell is an opened websocket between the browser and the Agent, with a pr Required permissions: `Endpoints.remoteShell` Parameters: -- `body` [body, agents.schemas_StartRemoteShellSchema] — +- `body` [body, agents.schemas_StartRemoteShellSchema]: Responses: 403 Insufficient permissions, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry., 200 Success @@ -440,7 +440,7 @@ Use this command to stop remote profiling on Agents that match the filter.
      I Required permissions: `Endpoints.remoteProfiling` Parameters: -- `body` [body, agents.schemas_AgentStopProfilingActionSchema] — +- `body` [body, agents.schemas_AgentStopProfilingActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -453,7 +453,7 @@ Remote Shell is a powerful, full shell for Windows, macOS, and Linux. It is best Required permissions: `Endpoints.remoteShell` Parameters: -- `body` [body, agents.schemas_TerminateRemoteShellSchema] — +- `body` [body, agents.schemas_TerminateRemoteShellSchema]: Responses: 403 Insufficient permissions, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry., 200 Success @@ -466,7 +466,7 @@ Use this command to uninstall Agents that match the filter. For Windows and macO Required permissions: `Endpoints.uninstall` Parameters: -- `body` [body, agents.schemas_AgentsDangerousActionSchema] — +- `body` [body, agents.schemas_AgentsDangerousActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -479,7 +479,7 @@ Use this command to update the Agent version on endpoints that have the Agent in Required permissions: `Endpoints.updateSoftware` Parameters: -- `body` [body, agents.schemas_AgentsUpdateSoftwareActionSchema] — +- `body` [body, agents.schemas_AgentsUpdateSoftwareActionSchema]: Responses: 403 User has insufficient permissions to perform the requested a, 409 The Agent is automatically upgraded according to its Upgrade, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -492,7 +492,7 @@ Fetch files from endpoints (up to 10 MB for each command) to analyze the root of Required permissions: `Endpoints.fileFetch` Parameters: -- `agent_id` [path, string] **required** — Agent ID. Example: "225494730938493804". -- `body` [body, agents.schemas_AgentFetchFilesActionSchema] — +- `agent_id` [path, string] **required**: Agent ID. Example: "225494730938493804". +- `body` [body, agents.schemas_AgentFetchFilesActionSchema]: Responses: 404 Agent not found, 403 User has insufficient permissions to perform the requested a, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Support_Actions.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Support_Actions.md index 1b4d3d7..20d4017 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Support_Actions.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agent_Support_Actions.md @@ -11,6 +11,6 @@ Remote Shell is a powerful way to respond remotely to events on endpoints. It le Required permissions: `Endpoints.clearRemoteShellSession` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents.md index e492950..763472a 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents.md @@ -11,212 +11,212 @@ Get the Agents, and their data, that match the filter. This command gives the Ag Required permissions: `Endpoints.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: createdAt, updatedAt, id, computerName, groupId, osType, osName, uuid, scanStatus, isDecommissioned, decommissionedAt, isUninstalled, threatMitigationStatus, threatResolved, threatContentHash, threatCreatedAt, registeredAt, lastActiveDate, isActive, isPendingUninstall, activeThreats, isUpToDate, agentVersion, osArch, machineType, networkStatus, domain, mitigationMode, mitigationModeSuspicious, encryptedApplications, totalMemory, cpuCount, coreCount, externalIp, lastLoggedInUserName, groupName, networkInterfacePhysical, siteId, siteName, infected, threatRebootRequired, consoleMigrationStatus, appsVulnerabilityStatus, accountName, externalId, installerType, rangerVersion, operationalState, remoteProfilingState, networkQuarantineEnabled, firewallEnabled, locationEnabled, cloudAccount, cloudImage, cloudInstanceId, cloudInstanceSize, cloudLocation, cloudNetwork, cloudProvider, clusterName, kubernetesVersion, kubernetesType, agentNamespace, agentPodName, serialNumber, cpuId, fullDiskScanLastUpdatedAt, lastSuccessfulScanDate, ecsType, ecsVersion, ecsClusterName, ecsTaskArn, ecsTaskAvailabilityZone, ecsServiceName, ecsServiceArn, ecsTaskDefinitionFamily, ecsTaskDefinitionRevision, ecsTaskDefinitionArn, isAdConnector, activeProtection, pacFileUsage, proxyMethod, console, consoleProxyAddress, deepVisibility, deepVisibilityProxyAddress) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredGroupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredSiteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `registeredAt__between` [query, string] — Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastActiveDate__between` [query, string] — Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastSuccessfulScanDate__between` [query, string] — Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". -- `isActive` [query, array] — Include only active Agents -- `isPendingUninstall` [query, array] — Include only Agents with pending uninstall requests -- `infected` [query, boolean] — Include only Agents with at least one active threat -- `isUpToDate` [query, array] — Include only Agents with updated software -- `query` [query, string] — A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". -- `agentVersions` [query, array] — Agent versions to include. Example: "2.0.0.0,2.1.5.144". -- `agentVersionsNin` [query, array] — Agent versions not to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersions` [query, array] — Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersionsNin` [query, array] — Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". -- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64) — OS architecture. Example: "32 bit". -- `osArches` [query, array] — OS architectures to include. Example: "32 bit,64 bit". -- `osArchesNin` [query, array] — OS architectures not to include. Example: "32 bit,64 bit". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Not included OS types. Example: "macos". -- `scanStatuses` [query, array] — Included scan statuses. Example: "started,aborted". -- `scanStatusesNin` [query, array] — Not included scan statuses. Example: "started,aborted". -- `machineTypes` [query, array] — Included machine types. Example: "laptop,desktop". -- `machineTypesNin` [query, array] — Not included machine types. Example: "laptop,desktop". -- `storageTypes` [query, array] — Included storage types. Example: "NetApp,Dell,S3". -- `storageTypesNin` [query, array] — Excluded storage types. Example: "NetApp,Dell,S3". -- `networkStatuses` [query, array] — Included network statuses. Example: "connected,connecting". -- `networkStatusesNin` [query, array] — Included network statuses. Example: "connected,connecting". -- `domains` [query, array] — Included network domains. Example: "mybusiness.net,workgroup". -- `domainsNin` [query, array] — Not included network domains. Example: "mybusiness.net,workgroup". -- `encryptedApplications` [query, array] — Disk encryption status -- `totalMemory__between` [query, string] — Total memory range (GB, inclusive). Example: "4-8". -- `coreCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `cpuCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `userActionsNeeded` [query, array] — Included pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissions` [query, array] — Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `userActionsNeededNin` [query, array] — Excluded pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissionsNin` [query, array] — Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `adQuery` [query, string] — An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". -- `hasLocalConfiguration` [query, boolean] — Agent has a local configuration set -- `consoleMigrationStatuses` [query, array] — Migration status in. Example: "N/A". -- `consoleMigrationStatusesNin` [query, array] — Migration status nin. Example: "N/A". -- `appsVulnerabilityStatuses` [query, array] — Apps vulnerability status in. Example: "patch_required". -- `appsVulnerabilityStatusesNin` [query, array] — Apps vulnerability status nin. Example: "patch_required". -- `locationIds` [query, array] — Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `locationIdsNin` [query, array] — Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `installerTypes` [query, array] — Include only Agents installed with these package types. Example: ".msi". -- `installerTypesNin` [query, array] — Exclude Agents installed with these package types. Example: ".msi". -- `operationalStates` [query, array] — Agent operational state -- `operationalStatesNin` [query, array] — Do not include these Agent operational states -- `remoteProfilingStates` [query, array] — Agent remote profiling state -- `remoteProfilingStatesNin` [query, array] — Do not include these Agent remote profiling states -- `rangerStatuses` [query, array] — Status of Network Discovery. Example: "NotApplicable". -- `rangerStatusesNin` [query, array] — Do not include these Network Scanner Statuses. Example: "NotApplicable". -- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled) — [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". -- `threatRebootRequired` [query, array] — Has at least one threat with at least one mitigation action pending reboot to succeed -- `networkQuarantineEnabled` [query, array] — The agents supports Network Quarantine Control and its enabled for the agent's group -- `firewallEnabled` [query, array] — The agents supports Firewall Control and it is enabled for the agent's group -- `locationEnabled` [query, array] — The agents supports Location Awareness and it is enabled for the agent's group -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `tagsData` [query, string] — Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Agents that have any tags assigned if True, or none if False -- `isAdConnector` [query, array] — The agents that are ADConnectors if True, or not if False -- `isHyperAutomate` [query, array] — The agents has Hyper Automate PNA enabled if True, or not if False -- `activeProtection` [query, array] — Included agent active protections. Example: "edr,idr". -- `containerizedWorkloadCounts` [query, object] — Containerized workload counts -- `hasContainerizedWorkload` [query, array] — Indicates whether the agent protects containerized workload at the moment -- `pacFileUsage` [query, array] — Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). -- `proxyMethod` [query, array] — Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `proxyMethodNin` [query, array] — Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `console` [query, array] — Include only Agents using console proxy. Accepts true, false, or none (for not reported). -- `deepVisibility` [query, array] — Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "205,127.0". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `networkInterfaceInet__contains` [query, array] — Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". -- `networkInterfacePhysical__contains` [query, array] — Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". -- `networkInterfaceGatewayMacAddress__contains` [query, array] — Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". -- `lastLoggedInUserName__contains` [query, array] — Free-text filter by username (supports multiple values). Example: "admin,johnd1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `adQuery__contains` [query, array] — Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". -- `adUserName__contains` [query, array] — Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". -- `adUserMember__contains` [query, array] — Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". -- `adUserQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". -- `adComputerName__contains` [query, array] — Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". -- `adComputerMember__contains` [query, array] — Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". -- `adComputerQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `externalId__contains` [query, array] — Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `agentNamespace__contains` [query, array] — Free-text filter by agent namespace (supports multiple values) -- `agentPodName__contains` [query, array] — Free-text filter by agent pod name (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `cloudTags__contains` [query, array] — Free-text filter by cloud tags (supports multiple values) -- `clusterName__contains` [query, array] — Free-text filter by cluster name (supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by K8s node labels (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by K8s node name (supports multiple values) -- `k8sType__contains` [query, array] — Free-text filter by K8s type(supports multiple values) -- `k8sVersion__contains` [query, array] — Free-text filter by K8s version (supports multiple values) -- `liveUpdateId__contains` [query, array] — Free-text filter by live update ID (supports multiple values) -- `serialNumber__contains` [query, array] — Free-text filter by Serial Number (supports multiple values) -- `cpuId__contains` [query, array] — Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". -- `ecsType__contains` [query, array] — Free-text filter by ECS type -- `ecsVersion__contains` [query, array] — Free-text filter by ECS version -- `ecsClusterName__contains` [query, array] — Free-text filter by ECS cluster name -- `ecsTaskArn__contains` [query, array] — Free-text filter by ECS task arn -- `ecsTaskAvailabilityZone__contains` [query, array] — Free-text filter by ECS task availability zone -- `ecsServiceName__contains` [query, array] — Free-text filter by ECS service name -- `ecsServiceArn__contains` [query, array] — Free-text filter by ECS service arn -- `ecsTaskDefinitionFamily__contains` [query, array] — Free-text filter by ECS task definition family -- `ecsTaskDefinitionRevision__contains` [query, array] — Free-text filter by ECS task definition revision -- `ecsTaskDefinitionArn__contains` [query, array] — Free-text filter by ECS task definition arn -- `isDecommissioned` [query, array] — Include active, decommissioned or both. Example: "True,False". -- `isUninstalled` [query, array] — Include installed, uninstalled or both. Example: "True,False". -- `computerNameOrUuid__contains` [query, array] — Free-text filter by computer name or uuid (supports multiple values) -- `ids` [query, array] — Included Agent IDs. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — Excluded Agent IDs. Example: "225494730938493804,225494730938493915". -- `filterId` [query, string] — Include all Agents matching this saved filter. Example: "225494730938493804". -- `decommissionedAt__gte` [query, string] — Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lt` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lte` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__gt` [query, string] — Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__between` [query, string] — Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `computerName__like` [query, string] — Match computer name partially (substring). Example: "Lab1". -- `computerName` [query, string] — Computer name. Example: "My Office Desktop". -- `agentVersion__lt` [query, string] — Agents versions less than given version. Example: "2.5.1.1320". -- `agentVersion__lte` [query, string] — Agents versions less than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__gt` [query, string] — Agents versions greater than given version. Example: "2.5.1.1320". -- `agentVersion__gte` [query, string] — Agents versions greater than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__between` [query, string] — Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". -- `uuid` [query, string] — Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". -- `uuids` [query, array] — A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". -- `scanStatus` [query, string] (enum: none, started, aborted, finished) — Scan status. Example: "none". -- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved) — Include only Agents that have threats with this mitigation status. Example: "mitigated". -- `threatResolved` [query, boolean] — Include only Agents with at least one resolved threat -- `threatHidden` [query, boolean] — Include only Agents with at least one hidden threat -- `threatContentHash` [query, string] — Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". -- `threatCreatedAt__lt` [query, string] — Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__lte` [query, string] — Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gt` [query, string] — Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gte` [query, string] — Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__between` [query, string] — Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". -- `activeThreats` [query, integer] — Include Agents with this amount of active threats. Example: "3". -- `activeThreats__gt` [query, integer] — Include Agents with at least this amount of active threats. Example: "5". -- `mitigationMode` [query, string] (enum: detect, protect) — Agent mitigation mode policy. Example: "detect". -- `mitigationModeSuspicious` [query, string] (enum: detect, protect) — Mitigation mode policy for suspicious activity. Example: "detect". -- `registeredAt__lt` [query, string] — Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__lte` [query, string] — Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gt` [query, string] — Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gte` [query, string] — Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lt` [query, string] — Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lte` [query, string] — Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gt` [query, string] — Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gte` [query, string] — Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lt` [query, string] — Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lte` [query, string] — Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gt` [query, string] — Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gte` [query, string] — Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `coreCount__lt` [query, integer] — CPU cores (less than) -- `coreCount__lte` [query, integer] — CPU cores (less than or equal) -- `coreCount__gt` [query, integer] — CPU cores (more than) -- `coreCount__gte` [query, integer] — CPU cores (more than or equal) -- `cpuCount__lt` [query, integer] — Number of CPUs (less than) -- `cpuCount__lte` [query, integer] — Number of CPUs (less than or equal) -- `cpuCount__gt` [query, integer] — Number of CPUs (more than) -- `cpuCount__gte` [query, integer] — Number of CPUs (more than or equal) -- `totalMemory__lt` [query, integer] — Memory size (MB, less than) -- `totalMemory__lte` [query, integer] — Memory size (MB, less than or equal) -- `totalMemory__gt` [query, integer] — Memory size (MB, more than) -- `totalMemory__gte` [query, integer] — Memory size (MB, more than or equal) -- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed) — Migration status. Example: "N/A". -- `gatewayIp` [query, string] — Gateway ip. Example: "192.168.0.1". -- `csvFilterId` [query, string] — The ID of the CSV file to filter by. Example: "225494730938493804". -- `rsoLevel` [query, string] (enum: none, pro, ars) — Supported Remote Script Orchestration level. Example: "none". -- `remoteOpsForensicsSupported` [query, boolean] — Include only agents that has Remote Ops Forensicsfeature supported -- `windowsOsRevision__gte` [query, integer] — Agents os revision than or equal to given version -- `windowsOsRevision__lte` [query, integer] — Agents os revision lower than or equal to given version -- `rsoLevels` [query, array] — A list of included rso_levels. Example: "pro,ars". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: createdAt, updatedAt, id, computerName, groupId, osType, osName, uuid, scanStatus, isDecommissioned, decommissionedAt, isUninstalled, threatMitigationStatus, threatResolved, threatContentHash, threatCreatedAt, registeredAt, lastActiveDate, isActive, isPendingUninstall, activeThreats, isUpToDate, agentVersion, osArch, machineType, networkStatus, domain, mitigationMode, mitigationModeSuspicious, encryptedApplications, totalMemory, cpuCount, coreCount, externalIp, lastLoggedInUserName, groupName, networkInterfacePhysical, siteId, siteName, infected, threatRebootRequired, consoleMigrationStatus, appsVulnerabilityStatus, accountName, externalId, installerType, rangerVersion, operationalState, remoteProfilingState, networkQuarantineEnabled, firewallEnabled, locationEnabled, cloudAccount, cloudImage, cloudInstanceId, cloudInstanceSize, cloudLocation, cloudNetwork, cloudProvider, clusterName, kubernetesVersion, kubernetesType, agentNamespace, agentPodName, serialNumber, cpuId, fullDiskScanLastUpdatedAt, lastSuccessfulScanDate, ecsType, ecsVersion, ecsClusterName, ecsTaskArn, ecsTaskAvailabilityZone, ecsServiceName, ecsServiceArn, ecsTaskDefinitionFamily, ecsTaskDefinitionRevision, ecsTaskDefinitionArn, isAdConnector, activeProtection, pacFileUsage, proxyMethod, console, consoleProxyAddress, deepVisibility, deepVisibilityProxyAddress): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredGroupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredSiteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `registeredAt__between` [query, string]: Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastActiveDate__between` [query, string]: Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastSuccessfulScanDate__between` [query, string]: Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". +- `isActive` [query, array]: Include only active Agents +- `isPendingUninstall` [query, array]: Include only Agents with pending uninstall requests +- `infected` [query, boolean]: Include only Agents with at least one active threat +- `isUpToDate` [query, array]: Include only Agents with updated software +- `query` [query, string]: A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". +- `agentVersions` [query, array]: Agent versions to include. Example: "2.0.0.0,2.1.5.144". +- `agentVersionsNin` [query, array]: Agent versions not to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersions` [query, array]: Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersionsNin` [query, array]: Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". +- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64): OS architecture. Example: "32 bit". +- `osArches` [query, array]: OS architectures to include. Example: "32 bit,64 bit". +- `osArchesNin` [query, array]: OS architectures not to include. Example: "32 bit,64 bit". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Not included OS types. Example: "macos". +- `scanStatuses` [query, array]: Included scan statuses. Example: "started,aborted". +- `scanStatusesNin` [query, array]: Not included scan statuses. Example: "started,aborted". +- `machineTypes` [query, array]: Included machine types. Example: "laptop,desktop". +- `machineTypesNin` [query, array]: Not included machine types. Example: "laptop,desktop". +- `storageTypes` [query, array]: Included storage types. Example: "NetApp,Dell,S3". +- `storageTypesNin` [query, array]: Excluded storage types. Example: "NetApp,Dell,S3". +- `networkStatuses` [query, array]: Included network statuses. Example: "connected,connecting". +- `networkStatusesNin` [query, array]: Included network statuses. Example: "connected,connecting". +- `domains` [query, array]: Included network domains. Example: "mybusiness.net,workgroup". +- `domainsNin` [query, array]: Not included network domains. Example: "mybusiness.net,workgroup". +- `encryptedApplications` [query, array]: Disk encryption status +- `totalMemory__between` [query, string]: Total memory range (GB, inclusive). Example: "4-8". +- `coreCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `cpuCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `userActionsNeeded` [query, array]: Included pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissions` [query, array]: Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `userActionsNeededNin` [query, array]: Excluded pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissionsNin` [query, array]: Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `adQuery` [query, string]: An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". +- `hasLocalConfiguration` [query, boolean]: Agent has a local configuration set +- `consoleMigrationStatuses` [query, array]: Migration status in. Example: "N/A". +- `consoleMigrationStatusesNin` [query, array]: Migration status nin. Example: "N/A". +- `appsVulnerabilityStatuses` [query, array]: Apps vulnerability status in. Example: "patch_required". +- `appsVulnerabilityStatusesNin` [query, array]: Apps vulnerability status nin. Example: "patch_required". +- `locationIds` [query, array]: Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `locationIdsNin` [query, array]: Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `installerTypes` [query, array]: Include only Agents installed with these package types. Example: ".msi". +- `installerTypesNin` [query, array]: Exclude Agents installed with these package types. Example: ".msi". +- `operationalStates` [query, array]: Agent operational state +- `operationalStatesNin` [query, array]: Do not include these Agent operational states +- `remoteProfilingStates` [query, array]: Agent remote profiling state +- `remoteProfilingStatesNin` [query, array]: Do not include these Agent remote profiling states +- `rangerStatuses` [query, array]: Status of Network Discovery. Example: "NotApplicable". +- `rangerStatusesNin` [query, array]: Do not include these Network Scanner Statuses. Example: "NotApplicable". +- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled): [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". +- `threatRebootRequired` [query, array]: Has at least one threat with at least one mitigation action pending reboot to succeed +- `networkQuarantineEnabled` [query, array]: The agents supports Network Quarantine Control and its enabled for the agent's group +- `firewallEnabled` [query, array]: The agents supports Firewall Control and it is enabled for the agent's group +- `locationEnabled` [query, array]: The agents supports Location Awareness and it is enabled for the agent's group +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `tagsData` [query, string]: Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Agents that have any tags assigned if True, or none if False +- `isAdConnector` [query, array]: The agents that are ADConnectors if True, or not if False +- `isHyperAutomate` [query, array]: The agents has Hyper Automate PNA enabled if True, or not if False +- `activeProtection` [query, array]: Included agent active protections. Example: "edr,idr". +- `containerizedWorkloadCounts` [query, object]: Containerized workload counts +- `hasContainerizedWorkload` [query, array]: Indicates whether the agent protects containerized workload at the moment +- `pacFileUsage` [query, array]: Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). +- `proxyMethod` [query, array]: Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `proxyMethodNin` [query, array]: Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `console` [query, array]: Include only Agents using console proxy. Accepts true, false, or none (for not reported). +- `deepVisibility` [query, array]: Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "205,127.0". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `networkInterfaceInet__contains` [query, array]: Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". +- `networkInterfacePhysical__contains` [query, array]: Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". +- `networkInterfaceGatewayMacAddress__contains` [query, array]: Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". +- `lastLoggedInUserName__contains` [query, array]: Free-text filter by username (supports multiple values). Example: "admin,johnd1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `adQuery__contains` [query, array]: Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". +- `adUserName__contains` [query, array]: Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". +- `adUserMember__contains` [query, array]: Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". +- `adUserQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". +- `adComputerName__contains` [query, array]: Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". +- `adComputerMember__contains` [query, array]: Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". +- `adComputerQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `externalId__contains` [query, array]: Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `agentNamespace__contains` [query, array]: Free-text filter by agent namespace (supports multiple values) +- `agentPodName__contains` [query, array]: Free-text filter by agent pod name (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `cloudTags__contains` [query, array]: Free-text filter by cloud tags (supports multiple values) +- `clusterName__contains` [query, array]: Free-text filter by cluster name (supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by K8s node labels (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by K8s node name (supports multiple values) +- `k8sType__contains` [query, array]: Free-text filter by K8s type(supports multiple values) +- `k8sVersion__contains` [query, array]: Free-text filter by K8s version (supports multiple values) +- `liveUpdateId__contains` [query, array]: Free-text filter by live update ID (supports multiple values) +- `serialNumber__contains` [query, array]: Free-text filter by Serial Number (supports multiple values) +- `cpuId__contains` [query, array]: Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". +- `ecsType__contains` [query, array]: Free-text filter by ECS type +- `ecsVersion__contains` [query, array]: Free-text filter by ECS version +- `ecsClusterName__contains` [query, array]: Free-text filter by ECS cluster name +- `ecsTaskArn__contains` [query, array]: Free-text filter by ECS task arn +- `ecsTaskAvailabilityZone__contains` [query, array]: Free-text filter by ECS task availability zone +- `ecsServiceName__contains` [query, array]: Free-text filter by ECS service name +- `ecsServiceArn__contains` [query, array]: Free-text filter by ECS service arn +- `ecsTaskDefinitionFamily__contains` [query, array]: Free-text filter by ECS task definition family +- `ecsTaskDefinitionRevision__contains` [query, array]: Free-text filter by ECS task definition revision +- `ecsTaskDefinitionArn__contains` [query, array]: Free-text filter by ECS task definition arn +- `isDecommissioned` [query, array]: Include active, decommissioned or both. Example: "True,False". +- `isUninstalled` [query, array]: Include installed, uninstalled or both. Example: "True,False". +- `computerNameOrUuid__contains` [query, array]: Free-text filter by computer name or uuid (supports multiple values) +- `ids` [query, array]: Included Agent IDs. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: Excluded Agent IDs. Example: "225494730938493804,225494730938493915". +- `filterId` [query, string]: Include all Agents matching this saved filter. Example: "225494730938493804". +- `decommissionedAt__gte` [query, string]: Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lt` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lte` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__gt` [query, string]: Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__between` [query, string]: Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `computerName__like` [query, string]: Match computer name partially (substring). Example: "Lab1". +- `computerName` [query, string]: Computer name. Example: "My Office Desktop". +- `agentVersion__lt` [query, string]: Agents versions less than given version. Example: "2.5.1.1320". +- `agentVersion__lte` [query, string]: Agents versions less than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__gt` [query, string]: Agents versions greater than given version. Example: "2.5.1.1320". +- `agentVersion__gte` [query, string]: Agents versions greater than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__between` [query, string]: Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". +- `uuid` [query, string]: Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". +- `uuids` [query, array]: A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". +- `scanStatus` [query, string] (enum: none, started, aborted, finished): Scan status. Example: "none". +- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved): Include only Agents that have threats with this mitigation status. Example: "mitigated". +- `threatResolved` [query, boolean]: Include only Agents with at least one resolved threat +- `threatHidden` [query, boolean]: Include only Agents with at least one hidden threat +- `threatContentHash` [query, string]: Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". +- `threatCreatedAt__lt` [query, string]: Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__lte` [query, string]: Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gt` [query, string]: Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gte` [query, string]: Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__between` [query, string]: Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". +- `activeThreats` [query, integer]: Include Agents with this amount of active threats. Example: "3". +- `activeThreats__gt` [query, integer]: Include Agents with at least this amount of active threats. Example: "5". +- `mitigationMode` [query, string] (enum: detect, protect): Agent mitigation mode policy. Example: "detect". +- `mitigationModeSuspicious` [query, string] (enum: detect, protect): Mitigation mode policy for suspicious activity. Example: "detect". +- `registeredAt__lt` [query, string]: Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__lte` [query, string]: Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gt` [query, string]: Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gte` [query, string]: Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lt` [query, string]: Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lte` [query, string]: Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gt` [query, string]: Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gte` [query, string]: Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lt` [query, string]: Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lte` [query, string]: Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gt` [query, string]: Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gte` [query, string]: Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `coreCount__lt` [query, integer]: CPU cores (less than) +- `coreCount__lte` [query, integer]: CPU cores (less than or equal) +- `coreCount__gt` [query, integer]: CPU cores (more than) +- `coreCount__gte` [query, integer]: CPU cores (more than or equal) +- `cpuCount__lt` [query, integer]: Number of CPUs (less than) +- `cpuCount__lte` [query, integer]: Number of CPUs (less than or equal) +- `cpuCount__gt` [query, integer]: Number of CPUs (more than) +- `cpuCount__gte` [query, integer]: Number of CPUs (more than or equal) +- `totalMemory__lt` [query, integer]: Memory size (MB, less than) +- `totalMemory__lte` [query, integer]: Memory size (MB, less than or equal) +- `totalMemory__gt` [query, integer]: Memory size (MB, more than) +- `totalMemory__gte` [query, integer]: Memory size (MB, more than or equal) +- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed): Migration status. Example: "N/A". +- `gatewayIp` [query, string]: Gateway ip. Example: "192.168.0.1". +- `csvFilterId` [query, string]: The ID of the CSV file to filter by. Example: "225494730938493804". +- `rsoLevel` [query, string] (enum: none, pro, ars): Supported Remote Script Orchestration level. Example: "none". +- `remoteOpsForensicsSupported` [query, boolean]: Include only agents that has Remote Ops Forensicsfeature supported +- `windowsOsRevision__gte` [query, integer]: Agents os revision than or equal to given version +- `windowsOsRevision__lte` [query, integer]: Agents os revision lower than or equal to given version +- `rsoLevels` [query, array]: A list of included rso_levels. Example: "pro,ars". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -229,7 +229,7 @@ Get the installed applications for a specific Agent.
      To get the Agent ID, ru Required permissions: `Endpoints.view` Parameters: -- `ids` [query, array] **required** — Agent ID list. Example: "225494730938493804,225494730938493915". +- `ids` [query, array] **required**: Agent ID list. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -242,205 +242,205 @@ Get the count of Agents that match a filter. This command is useful to run befor Required permissions: `Endpoints.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredGroupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredSiteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `registeredAt__between` [query, string] — Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastActiveDate__between` [query, string] — Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastSuccessfulScanDate__between` [query, string] — Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". -- `isActive` [query, array] — Include only active Agents -- `isPendingUninstall` [query, array] — Include only Agents with pending uninstall requests -- `infected` [query, boolean] — Include only Agents with at least one active threat -- `isUpToDate` [query, array] — Include only Agents with updated software -- `query` [query, string] — A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". -- `agentVersions` [query, array] — Agent versions to include. Example: "2.0.0.0,2.1.5.144". -- `agentVersionsNin` [query, array] — Agent versions not to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersions` [query, array] — Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersionsNin` [query, array] — Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". -- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64) — OS architecture. Example: "32 bit". -- `osArches` [query, array] — OS architectures to include. Example: "32 bit,64 bit". -- `osArchesNin` [query, array] — OS architectures not to include. Example: "32 bit,64 bit". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Not included OS types. Example: "macos". -- `scanStatuses` [query, array] — Included scan statuses. Example: "started,aborted". -- `scanStatusesNin` [query, array] — Not included scan statuses. Example: "started,aborted". -- `machineTypes` [query, array] — Included machine types. Example: "laptop,desktop". -- `machineTypesNin` [query, array] — Not included machine types. Example: "laptop,desktop". -- `storageTypes` [query, array] — Included storage types. Example: "NetApp,Dell,S3". -- `storageTypesNin` [query, array] — Excluded storage types. Example: "NetApp,Dell,S3". -- `networkStatuses` [query, array] — Included network statuses. Example: "connected,connecting". -- `networkStatusesNin` [query, array] — Included network statuses. Example: "connected,connecting". -- `domains` [query, array] — Included network domains. Example: "mybusiness.net,workgroup". -- `domainsNin` [query, array] — Not included network domains. Example: "mybusiness.net,workgroup". -- `encryptedApplications` [query, array] — Disk encryption status -- `totalMemory__between` [query, string] — Total memory range (GB, inclusive). Example: "4-8". -- `coreCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `cpuCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `userActionsNeeded` [query, array] — Included pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissions` [query, array] — Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `userActionsNeededNin` [query, array] — Excluded pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissionsNin` [query, array] — Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `adQuery` [query, string] — An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". -- `hasLocalConfiguration` [query, boolean] — Agent has a local configuration set -- `consoleMigrationStatuses` [query, array] — Migration status in. Example: "N/A". -- `consoleMigrationStatusesNin` [query, array] — Migration status nin. Example: "N/A". -- `appsVulnerabilityStatuses` [query, array] — Apps vulnerability status in. Example: "patch_required". -- `appsVulnerabilityStatusesNin` [query, array] — Apps vulnerability status nin. Example: "patch_required". -- `locationIds` [query, array] — Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `locationIdsNin` [query, array] — Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `installerTypes` [query, array] — Include only Agents installed with these package types. Example: ".msi". -- `installerTypesNin` [query, array] — Exclude Agents installed with these package types. Example: ".msi". -- `operationalStates` [query, array] — Agent operational state -- `operationalStatesNin` [query, array] — Do not include these Agent operational states -- `remoteProfilingStates` [query, array] — Agent remote profiling state -- `remoteProfilingStatesNin` [query, array] — Do not include these Agent remote profiling states -- `rangerStatuses` [query, array] — Status of Network Discovery. Example: "NotApplicable". -- `rangerStatusesNin` [query, array] — Do not include these Network Scanner Statuses. Example: "NotApplicable". -- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled) — [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". -- `threatRebootRequired` [query, array] — Has at least one threat with at least one mitigation action pending reboot to succeed -- `networkQuarantineEnabled` [query, array] — The agents supports Network Quarantine Control and its enabled for the agent's group -- `firewallEnabled` [query, array] — The agents supports Firewall Control and it is enabled for the agent's group -- `locationEnabled` [query, array] — The agents supports Location Awareness and it is enabled for the agent's group -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `tagsData` [query, string] — Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Agents that have any tags assigned if True, or none if False -- `isAdConnector` [query, array] — The agents that are ADConnectors if True, or not if False -- `isHyperAutomate` [query, array] — The agents has Hyper Automate PNA enabled if True, or not if False -- `activeProtection` [query, array] — Included agent active protections. Example: "edr,idr". -- `containerizedWorkloadCounts` [query, object] — Containerized workload counts -- `hasContainerizedWorkload` [query, array] — Indicates whether the agent protects containerized workload at the moment -- `pacFileUsage` [query, array] — Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). -- `proxyMethod` [query, array] — Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `proxyMethodNin` [query, array] — Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `console` [query, array] — Include only Agents using console proxy. Accepts true, false, or none (for not reported). -- `deepVisibility` [query, array] — Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "205,127.0". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `networkInterfaceInet__contains` [query, array] — Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". -- `networkInterfacePhysical__contains` [query, array] — Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". -- `networkInterfaceGatewayMacAddress__contains` [query, array] — Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". -- `lastLoggedInUserName__contains` [query, array] — Free-text filter by username (supports multiple values). Example: "admin,johnd1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `adQuery__contains` [query, array] — Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". -- `adUserName__contains` [query, array] — Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". -- `adUserMember__contains` [query, array] — Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". -- `adUserQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". -- `adComputerName__contains` [query, array] — Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". -- `adComputerMember__contains` [query, array] — Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". -- `adComputerQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `externalId__contains` [query, array] — Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `agentNamespace__contains` [query, array] — Free-text filter by agent namespace (supports multiple values) -- `agentPodName__contains` [query, array] — Free-text filter by agent pod name (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `cloudTags__contains` [query, array] — Free-text filter by cloud tags (supports multiple values) -- `clusterName__contains` [query, array] — Free-text filter by cluster name (supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by K8s node labels (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by K8s node name (supports multiple values) -- `k8sType__contains` [query, array] — Free-text filter by K8s type(supports multiple values) -- `k8sVersion__contains` [query, array] — Free-text filter by K8s version (supports multiple values) -- `liveUpdateId__contains` [query, array] — Free-text filter by live update ID (supports multiple values) -- `serialNumber__contains` [query, array] — Free-text filter by Serial Number (supports multiple values) -- `cpuId__contains` [query, array] — Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". -- `ecsType__contains` [query, array] — Free-text filter by ECS type -- `ecsVersion__contains` [query, array] — Free-text filter by ECS version -- `ecsClusterName__contains` [query, array] — Free-text filter by ECS cluster name -- `ecsTaskArn__contains` [query, array] — Free-text filter by ECS task arn -- `ecsTaskAvailabilityZone__contains` [query, array] — Free-text filter by ECS task availability zone -- `ecsServiceName__contains` [query, array] — Free-text filter by ECS service name -- `ecsServiceArn__contains` [query, array] — Free-text filter by ECS service arn -- `ecsTaskDefinitionFamily__contains` [query, array] — Free-text filter by ECS task definition family -- `ecsTaskDefinitionRevision__contains` [query, array] — Free-text filter by ECS task definition revision -- `ecsTaskDefinitionArn__contains` [query, array] — Free-text filter by ECS task definition arn -- `isDecommissioned` [query, array] — Include active, decommissioned or both. Example: "True,False". -- `isUninstalled` [query, array] — Include installed, uninstalled or both. Example: "True,False". -- `computerNameOrUuid__contains` [query, array] — Free-text filter by computer name or uuid (supports multiple values) -- `ids` [query, array] — Included Agent IDs. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — Excluded Agent IDs. Example: "225494730938493804,225494730938493915". -- `filterId` [query, string] — Include all Agents matching this saved filter. Example: "225494730938493804". -- `decommissionedAt__gte` [query, string] — Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lt` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lte` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__gt` [query, string] — Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__between` [query, string] — Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `computerName__like` [query, string] — Match computer name partially (substring). Example: "Lab1". -- `computerName` [query, string] — Computer name. Example: "My Office Desktop". -- `agentVersion__lt` [query, string] — Agents versions less than given version. Example: "2.5.1.1320". -- `agentVersion__lte` [query, string] — Agents versions less than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__gt` [query, string] — Agents versions greater than given version. Example: "2.5.1.1320". -- `agentVersion__gte` [query, string] — Agents versions greater than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__between` [query, string] — Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". -- `uuid` [query, string] — Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". -- `uuids` [query, array] — A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". -- `scanStatus` [query, string] (enum: none, started, aborted, finished) — Scan status. Example: "none". -- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved) — Include only Agents that have threats with this mitigation status. Example: "mitigated". -- `threatResolved` [query, boolean] — Include only Agents with at least one resolved threat -- `threatHidden` [query, boolean] — Include only Agents with at least one hidden threat -- `threatContentHash` [query, string] — Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". -- `threatCreatedAt__lt` [query, string] — Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__lte` [query, string] — Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gt` [query, string] — Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gte` [query, string] — Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__between` [query, string] — Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". -- `activeThreats` [query, integer] — Include Agents with this amount of active threats. Example: "3". -- `activeThreats__gt` [query, integer] — Include Agents with at least this amount of active threats. Example: "5". -- `mitigationMode` [query, string] (enum: detect, protect) — Agent mitigation mode policy. Example: "detect". -- `mitigationModeSuspicious` [query, string] (enum: detect, protect) — Mitigation mode policy for suspicious activity. Example: "detect". -- `registeredAt__lt` [query, string] — Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__lte` [query, string] — Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gt` [query, string] — Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gte` [query, string] — Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lt` [query, string] — Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lte` [query, string] — Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gt` [query, string] — Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gte` [query, string] — Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lt` [query, string] — Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lte` [query, string] — Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gt` [query, string] — Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gte` [query, string] — Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `coreCount__lt` [query, integer] — CPU cores (less than) -- `coreCount__lte` [query, integer] — CPU cores (less than or equal) -- `coreCount__gt` [query, integer] — CPU cores (more than) -- `coreCount__gte` [query, integer] — CPU cores (more than or equal) -- `cpuCount__lt` [query, integer] — Number of CPUs (less than) -- `cpuCount__lte` [query, integer] — Number of CPUs (less than or equal) -- `cpuCount__gt` [query, integer] — Number of CPUs (more than) -- `cpuCount__gte` [query, integer] — Number of CPUs (more than or equal) -- `totalMemory__lt` [query, integer] — Memory size (MB, less than) -- `totalMemory__lte` [query, integer] — Memory size (MB, less than or equal) -- `totalMemory__gt` [query, integer] — Memory size (MB, more than) -- `totalMemory__gte` [query, integer] — Memory size (MB, more than or equal) -- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed) — Migration status. Example: "N/A". -- `gatewayIp` [query, string] — Gateway ip. Example: "192.168.0.1". -- `csvFilterId` [query, string] — The ID of the CSV file to filter by. Example: "225494730938493804". -- `rsoLevel` [query, string] (enum: none, pro, ars) — Supported Remote Script Orchestration level. Example: "none". -- `remoteOpsForensicsSupported` [query, boolean] — Include only agents that has Remote Ops Forensicsfeature supported -- `windowsOsRevision__gte` [query, integer] — Agents os revision than or equal to given version -- `windowsOsRevision__lte` [query, integer] — Agents os revision lower than or equal to given version -- `rsoLevels` [query, array] — A list of included rso_levels. Example: "pro,ars". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredGroupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredSiteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `registeredAt__between` [query, string]: Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastActiveDate__between` [query, string]: Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastSuccessfulScanDate__between` [query, string]: Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". +- `isActive` [query, array]: Include only active Agents +- `isPendingUninstall` [query, array]: Include only Agents with pending uninstall requests +- `infected` [query, boolean]: Include only Agents with at least one active threat +- `isUpToDate` [query, array]: Include only Agents with updated software +- `query` [query, string]: A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". +- `agentVersions` [query, array]: Agent versions to include. Example: "2.0.0.0,2.1.5.144". +- `agentVersionsNin` [query, array]: Agent versions not to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersions` [query, array]: Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersionsNin` [query, array]: Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". +- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64): OS architecture. Example: "32 bit". +- `osArches` [query, array]: OS architectures to include. Example: "32 bit,64 bit". +- `osArchesNin` [query, array]: OS architectures not to include. Example: "32 bit,64 bit". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Not included OS types. Example: "macos". +- `scanStatuses` [query, array]: Included scan statuses. Example: "started,aborted". +- `scanStatusesNin` [query, array]: Not included scan statuses. Example: "started,aborted". +- `machineTypes` [query, array]: Included machine types. Example: "laptop,desktop". +- `machineTypesNin` [query, array]: Not included machine types. Example: "laptop,desktop". +- `storageTypes` [query, array]: Included storage types. Example: "NetApp,Dell,S3". +- `storageTypesNin` [query, array]: Excluded storage types. Example: "NetApp,Dell,S3". +- `networkStatuses` [query, array]: Included network statuses. Example: "connected,connecting". +- `networkStatusesNin` [query, array]: Included network statuses. Example: "connected,connecting". +- `domains` [query, array]: Included network domains. Example: "mybusiness.net,workgroup". +- `domainsNin` [query, array]: Not included network domains. Example: "mybusiness.net,workgroup". +- `encryptedApplications` [query, array]: Disk encryption status +- `totalMemory__between` [query, string]: Total memory range (GB, inclusive). Example: "4-8". +- `coreCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `cpuCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `userActionsNeeded` [query, array]: Included pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissions` [query, array]: Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `userActionsNeededNin` [query, array]: Excluded pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissionsNin` [query, array]: Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `adQuery` [query, string]: An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". +- `hasLocalConfiguration` [query, boolean]: Agent has a local configuration set +- `consoleMigrationStatuses` [query, array]: Migration status in. Example: "N/A". +- `consoleMigrationStatusesNin` [query, array]: Migration status nin. Example: "N/A". +- `appsVulnerabilityStatuses` [query, array]: Apps vulnerability status in. Example: "patch_required". +- `appsVulnerabilityStatusesNin` [query, array]: Apps vulnerability status nin. Example: "patch_required". +- `locationIds` [query, array]: Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `locationIdsNin` [query, array]: Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `installerTypes` [query, array]: Include only Agents installed with these package types. Example: ".msi". +- `installerTypesNin` [query, array]: Exclude Agents installed with these package types. Example: ".msi". +- `operationalStates` [query, array]: Agent operational state +- `operationalStatesNin` [query, array]: Do not include these Agent operational states +- `remoteProfilingStates` [query, array]: Agent remote profiling state +- `remoteProfilingStatesNin` [query, array]: Do not include these Agent remote profiling states +- `rangerStatuses` [query, array]: Status of Network Discovery. Example: "NotApplicable". +- `rangerStatusesNin` [query, array]: Do not include these Network Scanner Statuses. Example: "NotApplicable". +- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled): [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". +- `threatRebootRequired` [query, array]: Has at least one threat with at least one mitigation action pending reboot to succeed +- `networkQuarantineEnabled` [query, array]: The agents supports Network Quarantine Control and its enabled for the agent's group +- `firewallEnabled` [query, array]: The agents supports Firewall Control and it is enabled for the agent's group +- `locationEnabled` [query, array]: The agents supports Location Awareness and it is enabled for the agent's group +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `tagsData` [query, string]: Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Agents that have any tags assigned if True, or none if False +- `isAdConnector` [query, array]: The agents that are ADConnectors if True, or not if False +- `isHyperAutomate` [query, array]: The agents has Hyper Automate PNA enabled if True, or not if False +- `activeProtection` [query, array]: Included agent active protections. Example: "edr,idr". +- `containerizedWorkloadCounts` [query, object]: Containerized workload counts +- `hasContainerizedWorkload` [query, array]: Indicates whether the agent protects containerized workload at the moment +- `pacFileUsage` [query, array]: Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). +- `proxyMethod` [query, array]: Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `proxyMethodNin` [query, array]: Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `console` [query, array]: Include only Agents using console proxy. Accepts true, false, or none (for not reported). +- `deepVisibility` [query, array]: Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "205,127.0". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `networkInterfaceInet__contains` [query, array]: Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". +- `networkInterfacePhysical__contains` [query, array]: Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". +- `networkInterfaceGatewayMacAddress__contains` [query, array]: Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". +- `lastLoggedInUserName__contains` [query, array]: Free-text filter by username (supports multiple values). Example: "admin,johnd1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `adQuery__contains` [query, array]: Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". +- `adUserName__contains` [query, array]: Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". +- `adUserMember__contains` [query, array]: Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". +- `adUserQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". +- `adComputerName__contains` [query, array]: Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". +- `adComputerMember__contains` [query, array]: Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". +- `adComputerQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `externalId__contains` [query, array]: Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `agentNamespace__contains` [query, array]: Free-text filter by agent namespace (supports multiple values) +- `agentPodName__contains` [query, array]: Free-text filter by agent pod name (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `cloudTags__contains` [query, array]: Free-text filter by cloud tags (supports multiple values) +- `clusterName__contains` [query, array]: Free-text filter by cluster name (supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by K8s node labels (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by K8s node name (supports multiple values) +- `k8sType__contains` [query, array]: Free-text filter by K8s type(supports multiple values) +- `k8sVersion__contains` [query, array]: Free-text filter by K8s version (supports multiple values) +- `liveUpdateId__contains` [query, array]: Free-text filter by live update ID (supports multiple values) +- `serialNumber__contains` [query, array]: Free-text filter by Serial Number (supports multiple values) +- `cpuId__contains` [query, array]: Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". +- `ecsType__contains` [query, array]: Free-text filter by ECS type +- `ecsVersion__contains` [query, array]: Free-text filter by ECS version +- `ecsClusterName__contains` [query, array]: Free-text filter by ECS cluster name +- `ecsTaskArn__contains` [query, array]: Free-text filter by ECS task arn +- `ecsTaskAvailabilityZone__contains` [query, array]: Free-text filter by ECS task availability zone +- `ecsServiceName__contains` [query, array]: Free-text filter by ECS service name +- `ecsServiceArn__contains` [query, array]: Free-text filter by ECS service arn +- `ecsTaskDefinitionFamily__contains` [query, array]: Free-text filter by ECS task definition family +- `ecsTaskDefinitionRevision__contains` [query, array]: Free-text filter by ECS task definition revision +- `ecsTaskDefinitionArn__contains` [query, array]: Free-text filter by ECS task definition arn +- `isDecommissioned` [query, array]: Include active, decommissioned or both. Example: "True,False". +- `isUninstalled` [query, array]: Include installed, uninstalled or both. Example: "True,False". +- `computerNameOrUuid__contains` [query, array]: Free-text filter by computer name or uuid (supports multiple values) +- `ids` [query, array]: Included Agent IDs. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: Excluded Agent IDs. Example: "225494730938493804,225494730938493915". +- `filterId` [query, string]: Include all Agents matching this saved filter. Example: "225494730938493804". +- `decommissionedAt__gte` [query, string]: Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lt` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lte` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__gt` [query, string]: Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__between` [query, string]: Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `computerName__like` [query, string]: Match computer name partially (substring). Example: "Lab1". +- `computerName` [query, string]: Computer name. Example: "My Office Desktop". +- `agentVersion__lt` [query, string]: Agents versions less than given version. Example: "2.5.1.1320". +- `agentVersion__lte` [query, string]: Agents versions less than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__gt` [query, string]: Agents versions greater than given version. Example: "2.5.1.1320". +- `agentVersion__gte` [query, string]: Agents versions greater than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__between` [query, string]: Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". +- `uuid` [query, string]: Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". +- `uuids` [query, array]: A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". +- `scanStatus` [query, string] (enum: none, started, aborted, finished): Scan status. Example: "none". +- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved): Include only Agents that have threats with this mitigation status. Example: "mitigated". +- `threatResolved` [query, boolean]: Include only Agents with at least one resolved threat +- `threatHidden` [query, boolean]: Include only Agents with at least one hidden threat +- `threatContentHash` [query, string]: Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". +- `threatCreatedAt__lt` [query, string]: Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__lte` [query, string]: Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gt` [query, string]: Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gte` [query, string]: Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__between` [query, string]: Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". +- `activeThreats` [query, integer]: Include Agents with this amount of active threats. Example: "3". +- `activeThreats__gt` [query, integer]: Include Agents with at least this amount of active threats. Example: "5". +- `mitigationMode` [query, string] (enum: detect, protect): Agent mitigation mode policy. Example: "detect". +- `mitigationModeSuspicious` [query, string] (enum: detect, protect): Mitigation mode policy for suspicious activity. Example: "detect". +- `registeredAt__lt` [query, string]: Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__lte` [query, string]: Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gt` [query, string]: Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gte` [query, string]: Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lt` [query, string]: Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lte` [query, string]: Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gt` [query, string]: Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gte` [query, string]: Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lt` [query, string]: Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lte` [query, string]: Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gt` [query, string]: Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gte` [query, string]: Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `coreCount__lt` [query, integer]: CPU cores (less than) +- `coreCount__lte` [query, integer]: CPU cores (less than or equal) +- `coreCount__gt` [query, integer]: CPU cores (more than) +- `coreCount__gte` [query, integer]: CPU cores (more than or equal) +- `cpuCount__lt` [query, integer]: Number of CPUs (less than) +- `cpuCount__lte` [query, integer]: Number of CPUs (less than or equal) +- `cpuCount__gt` [query, integer]: Number of CPUs (more than) +- `cpuCount__gte` [query, integer]: Number of CPUs (more than or equal) +- `totalMemory__lt` [query, integer]: Memory size (MB, less than) +- `totalMemory__lte` [query, integer]: Memory size (MB, less than or equal) +- `totalMemory__gt` [query, integer]: Memory size (MB, more than) +- `totalMemory__gte` [query, integer]: Memory size (MB, more than or equal) +- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed): Migration status. Example: "N/A". +- `gatewayIp` [query, string]: Gateway ip. Example: "192.168.0.1". +- `csvFilterId` [query, string]: The ID of the CSV file to filter by. Example: "225494730938493804". +- `rsoLevel` [query, string] (enum: none, pro, ars): Supported Remote Script Orchestration level. Example: "none". +- `remoteOpsForensicsSupported` [query, boolean]: Include only agents that has Remote Ops Forensicsfeature supported +- `windowsOsRevision__gte` [query, integer]: Agents os revision than or equal to given version +- `windowsOsRevision__lte` [query, integer]: Agents os revision lower than or equal to given version +- `rsoLevels` [query, array]: A list of included rso_levels. Example: "pro,ars". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -453,7 +453,7 @@ Disable Agent PNA for Hyperautomation Required permissions: `Endpoints.edit, Hyper Automate.connectionsEdit` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -466,7 +466,7 @@ Enable Agent PNA for Hyperautomation Required permissions: `Endpoints.edit, Hyper Automate.connectionsEdit` Parameters: -- `body` [body, agents.schemas_AgentsActionSchema] — +- `body` [body, agents.schemas_AgentsActionSchema]: Responses: 400 Invalid user input received. See error details for further i, 404 Agent not found, 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -479,210 +479,210 @@ Show the passphrase for the Agents that match the filter. This is an important c Required permissions: `Endpoints.showPassphrase` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredGroupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredSiteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `registeredAt__between` [query, string] — Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastActiveDate__between` [query, string] — Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastSuccessfulScanDate__between` [query, string] — Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". -- `isActive` [query, array] — Include only active Agents -- `isPendingUninstall` [query, array] — Include only Agents with pending uninstall requests -- `infected` [query, boolean] — Include only Agents with at least one active threat -- `isUpToDate` [query, array] — Include only Agents with updated software -- `query` [query, string] — A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". -- `agentVersions` [query, array] — Agent versions to include. Example: "2.0.0.0,2.1.5.144". -- `agentVersionsNin` [query, array] — Agent versions not to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersions` [query, array] — Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersionsNin` [query, array] — Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". -- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64) — OS architecture. Example: "32 bit". -- `osArches` [query, array] — OS architectures to include. Example: "32 bit,64 bit". -- `osArchesNin` [query, array] — OS architectures not to include. Example: "32 bit,64 bit". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Not included OS types. Example: "macos". -- `scanStatuses` [query, array] — Included scan statuses. Example: "started,aborted". -- `scanStatusesNin` [query, array] — Not included scan statuses. Example: "started,aborted". -- `machineTypes` [query, array] — Included machine types. Example: "laptop,desktop". -- `machineTypesNin` [query, array] — Not included machine types. Example: "laptop,desktop". -- `storageTypes` [query, array] — Included storage types. Example: "NetApp,Dell,S3". -- `storageTypesNin` [query, array] — Excluded storage types. Example: "NetApp,Dell,S3". -- `networkStatuses` [query, array] — Included network statuses. Example: "connected,connecting". -- `networkStatusesNin` [query, array] — Included network statuses. Example: "connected,connecting". -- `domains` [query, array] — Included network domains. Example: "mybusiness.net,workgroup". -- `domainsNin` [query, array] — Not included network domains. Example: "mybusiness.net,workgroup". -- `encryptedApplications` [query, array] — Disk encryption status -- `totalMemory__between` [query, string] — Total memory range (GB, inclusive). Example: "4-8". -- `coreCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `cpuCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `userActionsNeeded` [query, array] — Included pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissions` [query, array] — Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `userActionsNeededNin` [query, array] — Excluded pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissionsNin` [query, array] — Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `adQuery` [query, string] — An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". -- `hasLocalConfiguration` [query, boolean] — Agent has a local configuration set -- `consoleMigrationStatuses` [query, array] — Migration status in. Example: "N/A". -- `consoleMigrationStatusesNin` [query, array] — Migration status nin. Example: "N/A". -- `appsVulnerabilityStatuses` [query, array] — Apps vulnerability status in. Example: "patch_required". -- `appsVulnerabilityStatusesNin` [query, array] — Apps vulnerability status nin. Example: "patch_required". -- `locationIds` [query, array] — Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `locationIdsNin` [query, array] — Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `installerTypes` [query, array] — Include only Agents installed with these package types. Example: ".msi". -- `installerTypesNin` [query, array] — Exclude Agents installed with these package types. Example: ".msi". -- `operationalStates` [query, array] — Agent operational state -- `operationalStatesNin` [query, array] — Do not include these Agent operational states -- `remoteProfilingStates` [query, array] — Agent remote profiling state -- `remoteProfilingStatesNin` [query, array] — Do not include these Agent remote profiling states -- `rangerStatuses` [query, array] — Status of Network Discovery. Example: "NotApplicable". -- `rangerStatusesNin` [query, array] — Do not include these Network Scanner Statuses. Example: "NotApplicable". -- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled) — [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". -- `threatRebootRequired` [query, array] — Has at least one threat with at least one mitigation action pending reboot to succeed -- `networkQuarantineEnabled` [query, array] — The agents supports Network Quarantine Control and its enabled for the agent's group -- `firewallEnabled` [query, array] — The agents supports Firewall Control and it is enabled for the agent's group -- `locationEnabled` [query, array] — The agents supports Location Awareness and it is enabled for the agent's group -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `tagsData` [query, string] — Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Agents that have any tags assigned if True, or none if False -- `isAdConnector` [query, array] — The agents that are ADConnectors if True, or not if False -- `isHyperAutomate` [query, array] — The agents has Hyper Automate PNA enabled if True, or not if False -- `activeProtection` [query, array] — Included agent active protections. Example: "edr,idr". -- `containerizedWorkloadCounts` [query, object] — Containerized workload counts -- `hasContainerizedWorkload` [query, array] — Indicates whether the agent protects containerized workload at the moment -- `pacFileUsage` [query, array] — Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). -- `proxyMethod` [query, array] — Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `proxyMethodNin` [query, array] — Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `console` [query, array] — Include only Agents using console proxy. Accepts true, false, or none (for not reported). -- `deepVisibility` [query, array] — Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "205,127.0". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `networkInterfaceInet__contains` [query, array] — Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". -- `networkInterfacePhysical__contains` [query, array] — Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". -- `networkInterfaceGatewayMacAddress__contains` [query, array] — Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". -- `lastLoggedInUserName__contains` [query, array] — Free-text filter by username (supports multiple values). Example: "admin,johnd1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `adQuery__contains` [query, array] — Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". -- `adUserName__contains` [query, array] — Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". -- `adUserMember__contains` [query, array] — Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". -- `adUserQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". -- `adComputerName__contains` [query, array] — Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". -- `adComputerMember__contains` [query, array] — Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". -- `adComputerQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `externalId__contains` [query, array] — Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `agentNamespace__contains` [query, array] — Free-text filter by agent namespace (supports multiple values) -- `agentPodName__contains` [query, array] — Free-text filter by agent pod name (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `cloudTags__contains` [query, array] — Free-text filter by cloud tags (supports multiple values) -- `clusterName__contains` [query, array] — Free-text filter by cluster name (supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by K8s node labels (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by K8s node name (supports multiple values) -- `k8sType__contains` [query, array] — Free-text filter by K8s type(supports multiple values) -- `k8sVersion__contains` [query, array] — Free-text filter by K8s version (supports multiple values) -- `liveUpdateId__contains` [query, array] — Free-text filter by live update ID (supports multiple values) -- `serialNumber__contains` [query, array] — Free-text filter by Serial Number (supports multiple values) -- `cpuId__contains` [query, array] — Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". -- `ecsType__contains` [query, array] — Free-text filter by ECS type -- `ecsVersion__contains` [query, array] — Free-text filter by ECS version -- `ecsClusterName__contains` [query, array] — Free-text filter by ECS cluster name -- `ecsTaskArn__contains` [query, array] — Free-text filter by ECS task arn -- `ecsTaskAvailabilityZone__contains` [query, array] — Free-text filter by ECS task availability zone -- `ecsServiceName__contains` [query, array] — Free-text filter by ECS service name -- `ecsServiceArn__contains` [query, array] — Free-text filter by ECS service arn -- `ecsTaskDefinitionFamily__contains` [query, array] — Free-text filter by ECS task definition family -- `ecsTaskDefinitionRevision__contains` [query, array] — Free-text filter by ECS task definition revision -- `ecsTaskDefinitionArn__contains` [query, array] — Free-text filter by ECS task definition arn -- `isDecommissioned` [query, array] — Include active, decommissioned or both. Example: "True,False". -- `isUninstalled` [query, array] — Include installed, uninstalled or both. Example: "True,False". -- `computerNameOrUuid__contains` [query, array] — Free-text filter by computer name or uuid (supports multiple values) -- `ids` [query, array] — Included Agent IDs. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — Excluded Agent IDs. Example: "225494730938493804,225494730938493915". -- `filterId` [query, string] — Include all Agents matching this saved filter. Example: "225494730938493804". -- `decommissionedAt__gte` [query, string] — Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lt` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lte` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__gt` [query, string] — Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__between` [query, string] — Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `computerName__like` [query, string] — Match computer name partially (substring). Example: "Lab1". -- `computerName` [query, string] — Computer name. Example: "My Office Desktop". -- `agentVersion__lt` [query, string] — Agents versions less than given version. Example: "2.5.1.1320". -- `agentVersion__lte` [query, string] — Agents versions less than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__gt` [query, string] — Agents versions greater than given version. Example: "2.5.1.1320". -- `agentVersion__gte` [query, string] — Agents versions greater than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__between` [query, string] — Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". -- `uuid` [query, string] — Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". -- `uuids` [query, array] — A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". -- `scanStatus` [query, string] (enum: none, started, aborted, finished) — Scan status. Example: "none". -- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved) — Include only Agents that have threats with this mitigation status. Example: "mitigated". -- `threatResolved` [query, boolean] — Include only Agents with at least one resolved threat -- `threatHidden` [query, boolean] — Include only Agents with at least one hidden threat -- `threatContentHash` [query, string] — Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". -- `threatCreatedAt__lt` [query, string] — Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__lte` [query, string] — Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gt` [query, string] — Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gte` [query, string] — Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__between` [query, string] — Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". -- `activeThreats` [query, integer] — Include Agents with this amount of active threats. Example: "3". -- `activeThreats__gt` [query, integer] — Include Agents with at least this amount of active threats. Example: "5". -- `mitigationMode` [query, string] (enum: detect, protect) — Agent mitigation mode policy. Example: "detect". -- `mitigationModeSuspicious` [query, string] (enum: detect, protect) — Mitigation mode policy for suspicious activity. Example: "detect". -- `registeredAt__lt` [query, string] — Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__lte` [query, string] — Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gt` [query, string] — Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gte` [query, string] — Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lt` [query, string] — Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lte` [query, string] — Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gt` [query, string] — Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gte` [query, string] — Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lt` [query, string] — Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lte` [query, string] — Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gt` [query, string] — Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gte` [query, string] — Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `coreCount__lt` [query, integer] — CPU cores (less than) -- `coreCount__lte` [query, integer] — CPU cores (less than or equal) -- `coreCount__gt` [query, integer] — CPU cores (more than) -- `coreCount__gte` [query, integer] — CPU cores (more than or equal) -- `cpuCount__lt` [query, integer] — Number of CPUs (less than) -- `cpuCount__lte` [query, integer] — Number of CPUs (less than or equal) -- `cpuCount__gt` [query, integer] — Number of CPUs (more than) -- `cpuCount__gte` [query, integer] — Number of CPUs (more than or equal) -- `totalMemory__lt` [query, integer] — Memory size (MB, less than) -- `totalMemory__lte` [query, integer] — Memory size (MB, less than or equal) -- `totalMemory__gt` [query, integer] — Memory size (MB, more than) -- `totalMemory__gte` [query, integer] — Memory size (MB, more than or equal) -- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed) — Migration status. Example: "N/A". -- `gatewayIp` [query, string] — Gateway ip. Example: "192.168.0.1". -- `csvFilterId` [query, string] — The ID of the CSV file to filter by. Example: "225494730938493804". -- `rsoLevel` [query, string] (enum: none, pro, ars) — Supported Remote Script Orchestration level. Example: "none". -- `remoteOpsForensicsSupported` [query, boolean] — Include only agents that has Remote Ops Forensicsfeature supported -- `windowsOsRevision__gte` [query, integer] — Agents os revision than or equal to given version -- `windowsOsRevision__lte` [query, integer] — Agents os revision lower than or equal to given version -- `rsoLevels` [query, array] — A list of included rso_levels. Example: "pro,ars". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredGroupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredSiteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `registeredAt__between` [query, string]: Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastActiveDate__between` [query, string]: Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastSuccessfulScanDate__between` [query, string]: Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". +- `isActive` [query, array]: Include only active Agents +- `isPendingUninstall` [query, array]: Include only Agents with pending uninstall requests +- `infected` [query, boolean]: Include only Agents with at least one active threat +- `isUpToDate` [query, array]: Include only Agents with updated software +- `query` [query, string]: A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". +- `agentVersions` [query, array]: Agent versions to include. Example: "2.0.0.0,2.1.5.144". +- `agentVersionsNin` [query, array]: Agent versions not to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersions` [query, array]: Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersionsNin` [query, array]: Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". +- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64): OS architecture. Example: "32 bit". +- `osArches` [query, array]: OS architectures to include. Example: "32 bit,64 bit". +- `osArchesNin` [query, array]: OS architectures not to include. Example: "32 bit,64 bit". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Not included OS types. Example: "macos". +- `scanStatuses` [query, array]: Included scan statuses. Example: "started,aborted". +- `scanStatusesNin` [query, array]: Not included scan statuses. Example: "started,aborted". +- `machineTypes` [query, array]: Included machine types. Example: "laptop,desktop". +- `machineTypesNin` [query, array]: Not included machine types. Example: "laptop,desktop". +- `storageTypes` [query, array]: Included storage types. Example: "NetApp,Dell,S3". +- `storageTypesNin` [query, array]: Excluded storage types. Example: "NetApp,Dell,S3". +- `networkStatuses` [query, array]: Included network statuses. Example: "connected,connecting". +- `networkStatusesNin` [query, array]: Included network statuses. Example: "connected,connecting". +- `domains` [query, array]: Included network domains. Example: "mybusiness.net,workgroup". +- `domainsNin` [query, array]: Not included network domains. Example: "mybusiness.net,workgroup". +- `encryptedApplications` [query, array]: Disk encryption status +- `totalMemory__between` [query, string]: Total memory range (GB, inclusive). Example: "4-8". +- `coreCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `cpuCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `userActionsNeeded` [query, array]: Included pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissions` [query, array]: Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `userActionsNeededNin` [query, array]: Excluded pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissionsNin` [query, array]: Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `adQuery` [query, string]: An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". +- `hasLocalConfiguration` [query, boolean]: Agent has a local configuration set +- `consoleMigrationStatuses` [query, array]: Migration status in. Example: "N/A". +- `consoleMigrationStatusesNin` [query, array]: Migration status nin. Example: "N/A". +- `appsVulnerabilityStatuses` [query, array]: Apps vulnerability status in. Example: "patch_required". +- `appsVulnerabilityStatusesNin` [query, array]: Apps vulnerability status nin. Example: "patch_required". +- `locationIds` [query, array]: Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `locationIdsNin` [query, array]: Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `installerTypes` [query, array]: Include only Agents installed with these package types. Example: ".msi". +- `installerTypesNin` [query, array]: Exclude Agents installed with these package types. Example: ".msi". +- `operationalStates` [query, array]: Agent operational state +- `operationalStatesNin` [query, array]: Do not include these Agent operational states +- `remoteProfilingStates` [query, array]: Agent remote profiling state +- `remoteProfilingStatesNin` [query, array]: Do not include these Agent remote profiling states +- `rangerStatuses` [query, array]: Status of Network Discovery. Example: "NotApplicable". +- `rangerStatusesNin` [query, array]: Do not include these Network Scanner Statuses. Example: "NotApplicable". +- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled): [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". +- `threatRebootRequired` [query, array]: Has at least one threat with at least one mitigation action pending reboot to succeed +- `networkQuarantineEnabled` [query, array]: The agents supports Network Quarantine Control and its enabled for the agent's group +- `firewallEnabled` [query, array]: The agents supports Firewall Control and it is enabled for the agent's group +- `locationEnabled` [query, array]: The agents supports Location Awareness and it is enabled for the agent's group +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `tagsData` [query, string]: Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Agents that have any tags assigned if True, or none if False +- `isAdConnector` [query, array]: The agents that are ADConnectors if True, or not if False +- `isHyperAutomate` [query, array]: The agents has Hyper Automate PNA enabled if True, or not if False +- `activeProtection` [query, array]: Included agent active protections. Example: "edr,idr". +- `containerizedWorkloadCounts` [query, object]: Containerized workload counts +- `hasContainerizedWorkload` [query, array]: Indicates whether the agent protects containerized workload at the moment +- `pacFileUsage` [query, array]: Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). +- `proxyMethod` [query, array]: Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `proxyMethodNin` [query, array]: Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `console` [query, array]: Include only Agents using console proxy. Accepts true, false, or none (for not reported). +- `deepVisibility` [query, array]: Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "205,127.0". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `networkInterfaceInet__contains` [query, array]: Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". +- `networkInterfacePhysical__contains` [query, array]: Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". +- `networkInterfaceGatewayMacAddress__contains` [query, array]: Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". +- `lastLoggedInUserName__contains` [query, array]: Free-text filter by username (supports multiple values). Example: "admin,johnd1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `adQuery__contains` [query, array]: Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". +- `adUserName__contains` [query, array]: Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". +- `adUserMember__contains` [query, array]: Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". +- `adUserQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". +- `adComputerName__contains` [query, array]: Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". +- `adComputerMember__contains` [query, array]: Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". +- `adComputerQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `externalId__contains` [query, array]: Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `agentNamespace__contains` [query, array]: Free-text filter by agent namespace (supports multiple values) +- `agentPodName__contains` [query, array]: Free-text filter by agent pod name (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `cloudTags__contains` [query, array]: Free-text filter by cloud tags (supports multiple values) +- `clusterName__contains` [query, array]: Free-text filter by cluster name (supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by K8s node labels (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by K8s node name (supports multiple values) +- `k8sType__contains` [query, array]: Free-text filter by K8s type(supports multiple values) +- `k8sVersion__contains` [query, array]: Free-text filter by K8s version (supports multiple values) +- `liveUpdateId__contains` [query, array]: Free-text filter by live update ID (supports multiple values) +- `serialNumber__contains` [query, array]: Free-text filter by Serial Number (supports multiple values) +- `cpuId__contains` [query, array]: Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". +- `ecsType__contains` [query, array]: Free-text filter by ECS type +- `ecsVersion__contains` [query, array]: Free-text filter by ECS version +- `ecsClusterName__contains` [query, array]: Free-text filter by ECS cluster name +- `ecsTaskArn__contains` [query, array]: Free-text filter by ECS task arn +- `ecsTaskAvailabilityZone__contains` [query, array]: Free-text filter by ECS task availability zone +- `ecsServiceName__contains` [query, array]: Free-text filter by ECS service name +- `ecsServiceArn__contains` [query, array]: Free-text filter by ECS service arn +- `ecsTaskDefinitionFamily__contains` [query, array]: Free-text filter by ECS task definition family +- `ecsTaskDefinitionRevision__contains` [query, array]: Free-text filter by ECS task definition revision +- `ecsTaskDefinitionArn__contains` [query, array]: Free-text filter by ECS task definition arn +- `isDecommissioned` [query, array]: Include active, decommissioned or both. Example: "True,False". +- `isUninstalled` [query, array]: Include installed, uninstalled or both. Example: "True,False". +- `computerNameOrUuid__contains` [query, array]: Free-text filter by computer name or uuid (supports multiple values) +- `ids` [query, array]: Included Agent IDs. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: Excluded Agent IDs. Example: "225494730938493804,225494730938493915". +- `filterId` [query, string]: Include all Agents matching this saved filter. Example: "225494730938493804". +- `decommissionedAt__gte` [query, string]: Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lt` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lte` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__gt` [query, string]: Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__between` [query, string]: Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `computerName__like` [query, string]: Match computer name partially (substring). Example: "Lab1". +- `computerName` [query, string]: Computer name. Example: "My Office Desktop". +- `agentVersion__lt` [query, string]: Agents versions less than given version. Example: "2.5.1.1320". +- `agentVersion__lte` [query, string]: Agents versions less than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__gt` [query, string]: Agents versions greater than given version. Example: "2.5.1.1320". +- `agentVersion__gte` [query, string]: Agents versions greater than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__between` [query, string]: Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". +- `uuid` [query, string]: Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". +- `uuids` [query, array]: A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". +- `scanStatus` [query, string] (enum: none, started, aborted, finished): Scan status. Example: "none". +- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved): Include only Agents that have threats with this mitigation status. Example: "mitigated". +- `threatResolved` [query, boolean]: Include only Agents with at least one resolved threat +- `threatHidden` [query, boolean]: Include only Agents with at least one hidden threat +- `threatContentHash` [query, string]: Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". +- `threatCreatedAt__lt` [query, string]: Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__lte` [query, string]: Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gt` [query, string]: Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gte` [query, string]: Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__between` [query, string]: Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". +- `activeThreats` [query, integer]: Include Agents with this amount of active threats. Example: "3". +- `activeThreats__gt` [query, integer]: Include Agents with at least this amount of active threats. Example: "5". +- `mitigationMode` [query, string] (enum: detect, protect): Agent mitigation mode policy. Example: "detect". +- `mitigationModeSuspicious` [query, string] (enum: detect, protect): Mitigation mode policy for suspicious activity. Example: "detect". +- `registeredAt__lt` [query, string]: Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__lte` [query, string]: Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gt` [query, string]: Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gte` [query, string]: Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lt` [query, string]: Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lte` [query, string]: Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gt` [query, string]: Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gte` [query, string]: Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lt` [query, string]: Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lte` [query, string]: Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gt` [query, string]: Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gte` [query, string]: Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `coreCount__lt` [query, integer]: CPU cores (less than) +- `coreCount__lte` [query, integer]: CPU cores (less than or equal) +- `coreCount__gt` [query, integer]: CPU cores (more than) +- `coreCount__gte` [query, integer]: CPU cores (more than or equal) +- `cpuCount__lt` [query, integer]: Number of CPUs (less than) +- `cpuCount__lte` [query, integer]: Number of CPUs (less than or equal) +- `cpuCount__gt` [query, integer]: Number of CPUs (more than) +- `cpuCount__gte` [query, integer]: Number of CPUs (more than or equal) +- `totalMemory__lt` [query, integer]: Memory size (MB, less than) +- `totalMemory__lte` [query, integer]: Memory size (MB, less than or equal) +- `totalMemory__gt` [query, integer]: Memory size (MB, more than) +- `totalMemory__gte` [query, integer]: Memory size (MB, more than or equal) +- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed): Migration status. Example: "N/A". +- `gatewayIp` [query, string]: Gateway ip. Example: "192.168.0.1". +- `csvFilterId` [query, string]: The ID of the CSV file to filter by. Example: "225494730938493804". +- `rsoLevel` [query, string] (enum: none, pro, ars): Supported Remote Script Orchestration level. Example: "none". +- `remoteOpsForensicsSupported` [query, boolean]: Include only agents that has Remote Ops Forensicsfeature supported +- `windowsOsRevision__gte` [query, integer]: Agents os revision than or equal to given version +- `windowsOsRevision__lte` [query, integer]: Agents os revision lower than or equal to given version +- `rsoLevels` [query, array]: A list of included rso_levels. Example: "pro,ars". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -695,7 +695,7 @@ Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input rec Required permissions: `Endpoints.view` Parameters: -- `ids` [query, array] **required** — Agent ID list. Example: "225494730938493804,225494730938493915". +- `ids` [query, array] **required**: Agent ID list. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -709,32 +709,32 @@ Required permissions: `Endpoints.view` Optional permissions: `Tag Management.edit` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: key, value, description, updatedAt, createdBy, updatedBy, scopePath) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `includeParents` [query, boolean] — Return tags from parent scope levels -- `includeChildren` [query, boolean] — Return tags from children scope levels -- `ids` [query, array] — List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". -- `key__contains` [query, array] — Free-text filter by tag key. Example: "server". -- `query` [query, string] — Free text search on fields key, value, description -- `key` [query, string] — Tag key -- `value` [query, string] — Tag value -- `description` [query, string] — Tag description -- `scopePath` [query, string] — Scope path -- `createdBy` [query, string] — Created by -- `updatedBy` [query, string] — Updated by -- `value__contains` [query, array] — Free-text filter by tag value. Example: "server". -- `includeEndpointCounters` [query, boolean] — Include endpoint counters -- `includeExclusionCounters` [query, boolean] — Include exclusion counters -- `isDecommissioned` [query, array] — Filter endpoint counts by decommissioned status: [False] for active only, [True] for decommissioned only, [True, False] for both. Example: "True,False". -- `isUninstalled` [query, array] — Filter endpoint counts by uninstalled status: [False] for installed only, [True] for uninstalled only, [True, False] for both. Example: "True,False". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: key, value, description, updatedAt, createdBy, updatedBy, scopePath): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `includeParents` [query, boolean]: Return tags from parent scope levels +- `includeChildren` [query, boolean]: Return tags from children scope levels +- `ids` [query, array]: List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". +- `key__contains` [query, array]: Free-text filter by tag key. Example: "server". +- `query` [query, string]: Free text search on fields key, value, description +- `key` [query, string]: Tag key +- `value` [query, string]: Tag value +- `description` [query, string]: Tag description +- `scopePath` [query, string]: Scope path +- `createdBy` [query, string]: Created by +- `updatedBy` [query, string]: Updated by +- `value__contains` [query, array]: Free-text filter by tag value. Example: "server". +- `includeEndpointCounters` [query, boolean]: Include endpoint counters +- `includeExclusionCounters` [query, boolean]: Include exclusion counters +- `isDecommissioned` [query, array]: Filter endpoint counts by decommissioned status: [False] for active only, [True] for decommissioned only, [True, False] for both. Example: "True,False". +- `isUninstalled` [query, array]: Filter endpoint counts by uninstalled status: [False] for installed only, [True] for uninstalled only, [True, False] for both. Example: "True,False". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -748,21 +748,21 @@ Required permissions: `Endpoints.view` Optional permissions: `Tag Management.edit` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `includeParents` [query, boolean] — Return tags from parent scope levels -- `includeChildren` [query, boolean] — Return tags from children scope levels -- `ids` [query, array] — List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". -- `key__contains` [query, array] — Free-text filter by tag key. Example: "server". -- `query` [query, string] — Free text search on fields key, value, description -- `key` [query, string] — Tag key -- `value` [query, string] — Tag value -- `description` [query, string] — Tag description -- `scopePath` [query, string] — Scope path -- `createdBy` [query, string] — Created by -- `updatedBy` [query, string] — Updated by -- `value__contains` [query, array] — Free-text filter by tag value. Example: "server". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `includeParents` [query, boolean]: Return tags from parent scope levels +- `includeChildren` [query, boolean]: Return tags from children scope levels +- `ids` [query, array]: List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". +- `key__contains` [query, array]: Free-text filter by tag key. Example: "server". +- `query` [query, string]: Free text search on fields key, value, description +- `key` [query, string]: Tag key +- `value` [query, string]: Tag value +- `description` [query, string]: Tag description +- `scopePath` [query, string]: Scope path +- `createdBy` [query, string]: Created by +- `updatedBy` [query, string]: Updated by +- `value__contains` [query, array]: Free-text filter by tag value. Example: "server". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -775,7 +775,7 @@ Get the time when authorization of local upgrades/downgrades expires Required permissions: `Local Upgrade/Downgrade Authorization.view` Parameters: -- `agent_id` [path, string] **required** — Agent ID. Example: "225494730938493804". +- `agent_id` [path, string] **required**: Agent ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -789,8 +789,8 @@ Required permissions: `Endpoints.view` Optional permissions: `Endpoints.fileFetch, Endpoints.FetchLogs, Endpoints.downloadRemoteShellTranscript` Parameters: -- `agent_id` [path, string] **required** — Agent ID. Example: "225494730938493804". -- `activity_id` [path, string] **required** — ID of activity that logs files uploaded by agent. Example: "225494730938493804". +- `agent_id` [path, string] **required**: Agent ID. Example: "225494730938493804". +- `activity_id` [path, string] **required**: ID of activity that logs files uploaded by agent. Example: "225494730938493804". Responses: 404 Agent or activity not found, 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -803,205 +803,205 @@ Export Agent data to a CSV, for Agents that match the filter. This command expor Required permissions: `Endpoints.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredGroupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredSiteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `registeredAt__between` [query, string] — Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastActiveDate__between` [query, string] — Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastSuccessfulScanDate__between` [query, string] — Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". -- `isActive` [query, array] — Include only active Agents -- `isPendingUninstall` [query, array] — Include only Agents with pending uninstall requests -- `infected` [query, boolean] — Include only Agents with at least one active threat -- `isUpToDate` [query, array] — Include only Agents with updated software -- `query` [query, string] — A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". -- `agentVersions` [query, array] — Agent versions to include. Example: "2.0.0.0,2.1.5.144". -- `agentVersionsNin` [query, array] — Agent versions not to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersions` [query, array] — Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersionsNin` [query, array] — Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". -- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64) — OS architecture. Example: "32 bit". -- `osArches` [query, array] — OS architectures to include. Example: "32 bit,64 bit". -- `osArchesNin` [query, array] — OS architectures not to include. Example: "32 bit,64 bit". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Not included OS types. Example: "macos". -- `scanStatuses` [query, array] — Included scan statuses. Example: "started,aborted". -- `scanStatusesNin` [query, array] — Not included scan statuses. Example: "started,aborted". -- `machineTypes` [query, array] — Included machine types. Example: "laptop,desktop". -- `machineTypesNin` [query, array] — Not included machine types. Example: "laptop,desktop". -- `storageTypes` [query, array] — Included storage types. Example: "NetApp,Dell,S3". -- `storageTypesNin` [query, array] — Excluded storage types. Example: "NetApp,Dell,S3". -- `networkStatuses` [query, array] — Included network statuses. Example: "connected,connecting". -- `networkStatusesNin` [query, array] — Included network statuses. Example: "connected,connecting". -- `domains` [query, array] — Included network domains. Example: "mybusiness.net,workgroup". -- `domainsNin` [query, array] — Not included network domains. Example: "mybusiness.net,workgroup". -- `encryptedApplications` [query, array] — Disk encryption status -- `totalMemory__between` [query, string] — Total memory range (GB, inclusive). Example: "4-8". -- `coreCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `cpuCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `userActionsNeeded` [query, array] — Included pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissions` [query, array] — Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `userActionsNeededNin` [query, array] — Excluded pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissionsNin` [query, array] — Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `adQuery` [query, string] — An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". -- `hasLocalConfiguration` [query, boolean] — Agent has a local configuration set -- `consoleMigrationStatuses` [query, array] — Migration status in. Example: "N/A". -- `consoleMigrationStatusesNin` [query, array] — Migration status nin. Example: "N/A". -- `appsVulnerabilityStatuses` [query, array] — Apps vulnerability status in. Example: "patch_required". -- `appsVulnerabilityStatusesNin` [query, array] — Apps vulnerability status nin. Example: "patch_required". -- `locationIds` [query, array] — Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `locationIdsNin` [query, array] — Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `installerTypes` [query, array] — Include only Agents installed with these package types. Example: ".msi". -- `installerTypesNin` [query, array] — Exclude Agents installed with these package types. Example: ".msi". -- `operationalStates` [query, array] — Agent operational state -- `operationalStatesNin` [query, array] — Do not include these Agent operational states -- `remoteProfilingStates` [query, array] — Agent remote profiling state -- `remoteProfilingStatesNin` [query, array] — Do not include these Agent remote profiling states -- `rangerStatuses` [query, array] — Status of Network Discovery. Example: "NotApplicable". -- `rangerStatusesNin` [query, array] — Do not include these Network Scanner Statuses. Example: "NotApplicable". -- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled) — [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". -- `threatRebootRequired` [query, array] — Has at least one threat with at least one mitigation action pending reboot to succeed -- `networkQuarantineEnabled` [query, array] — The agents supports Network Quarantine Control and its enabled for the agent's group -- `firewallEnabled` [query, array] — The agents supports Firewall Control and it is enabled for the agent's group -- `locationEnabled` [query, array] — The agents supports Location Awareness and it is enabled for the agent's group -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `tagsData` [query, string] — Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Agents that have any tags assigned if True, or none if False -- `isAdConnector` [query, array] — The agents that are ADConnectors if True, or not if False -- `isHyperAutomate` [query, array] — The agents has Hyper Automate PNA enabled if True, or not if False -- `activeProtection` [query, array] — Included agent active protections. Example: "edr,idr". -- `containerizedWorkloadCounts` [query, object] — Containerized workload counts -- `hasContainerizedWorkload` [query, array] — Indicates whether the agent protects containerized workload at the moment -- `pacFileUsage` [query, array] — Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). -- `proxyMethod` [query, array] — Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `proxyMethodNin` [query, array] — Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `console` [query, array] — Include only Agents using console proxy. Accepts true, false, or none (for not reported). -- `deepVisibility` [query, array] — Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "205,127.0". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `networkInterfaceInet__contains` [query, array] — Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". -- `networkInterfacePhysical__contains` [query, array] — Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". -- `networkInterfaceGatewayMacAddress__contains` [query, array] — Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". -- `lastLoggedInUserName__contains` [query, array] — Free-text filter by username (supports multiple values). Example: "admin,johnd1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `adQuery__contains` [query, array] — Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". -- `adUserName__contains` [query, array] — Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". -- `adUserMember__contains` [query, array] — Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". -- `adUserQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". -- `adComputerName__contains` [query, array] — Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". -- `adComputerMember__contains` [query, array] — Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". -- `adComputerQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `externalId__contains` [query, array] — Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `agentNamespace__contains` [query, array] — Free-text filter by agent namespace (supports multiple values) -- `agentPodName__contains` [query, array] — Free-text filter by agent pod name (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `cloudTags__contains` [query, array] — Free-text filter by cloud tags (supports multiple values) -- `clusterName__contains` [query, array] — Free-text filter by cluster name (supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by K8s node labels (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by K8s node name (supports multiple values) -- `k8sType__contains` [query, array] — Free-text filter by K8s type(supports multiple values) -- `k8sVersion__contains` [query, array] — Free-text filter by K8s version (supports multiple values) -- `liveUpdateId__contains` [query, array] — Free-text filter by live update ID (supports multiple values) -- `serialNumber__contains` [query, array] — Free-text filter by Serial Number (supports multiple values) -- `cpuId__contains` [query, array] — Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". -- `ecsType__contains` [query, array] — Free-text filter by ECS type -- `ecsVersion__contains` [query, array] — Free-text filter by ECS version -- `ecsClusterName__contains` [query, array] — Free-text filter by ECS cluster name -- `ecsTaskArn__contains` [query, array] — Free-text filter by ECS task arn -- `ecsTaskAvailabilityZone__contains` [query, array] — Free-text filter by ECS task availability zone -- `ecsServiceName__contains` [query, array] — Free-text filter by ECS service name -- `ecsServiceArn__contains` [query, array] — Free-text filter by ECS service arn -- `ecsTaskDefinitionFamily__contains` [query, array] — Free-text filter by ECS task definition family -- `ecsTaskDefinitionRevision__contains` [query, array] — Free-text filter by ECS task definition revision -- `ecsTaskDefinitionArn__contains` [query, array] — Free-text filter by ECS task definition arn -- `isDecommissioned` [query, array] — Include active, decommissioned or both. Example: "True,False". -- `isUninstalled` [query, array] — Include installed, uninstalled or both. Example: "True,False". -- `computerNameOrUuid__contains` [query, array] — Free-text filter by computer name or uuid (supports multiple values) -- `ids` [query, array] — Included Agent IDs. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — Excluded Agent IDs. Example: "225494730938493804,225494730938493915". -- `filterId` [query, string] — Include all Agents matching this saved filter. Example: "225494730938493804". -- `decommissionedAt__gte` [query, string] — Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lt` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lte` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__gt` [query, string] — Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__between` [query, string] — Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `computerName__like` [query, string] — Match computer name partially (substring). Example: "Lab1". -- `computerName` [query, string] — Computer name. Example: "My Office Desktop". -- `agentVersion__lt` [query, string] — Agents versions less than given version. Example: "2.5.1.1320". -- `agentVersion__lte` [query, string] — Agents versions less than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__gt` [query, string] — Agents versions greater than given version. Example: "2.5.1.1320". -- `agentVersion__gte` [query, string] — Agents versions greater than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__between` [query, string] — Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". -- `uuid` [query, string] — Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". -- `uuids` [query, array] — A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". -- `scanStatus` [query, string] (enum: none, started, aborted, finished) — Scan status. Example: "none". -- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved) — Include only Agents that have threats with this mitigation status. Example: "mitigated". -- `threatResolved` [query, boolean] — Include only Agents with at least one resolved threat -- `threatHidden` [query, boolean] — Include only Agents with at least one hidden threat -- `threatContentHash` [query, string] — Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". -- `threatCreatedAt__lt` [query, string] — Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__lte` [query, string] — Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gt` [query, string] — Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gte` [query, string] — Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__between` [query, string] — Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". -- `activeThreats` [query, integer] — Include Agents with this amount of active threats. Example: "3". -- `activeThreats__gt` [query, integer] — Include Agents with at least this amount of active threats. Example: "5". -- `mitigationMode` [query, string] (enum: detect, protect) — Agent mitigation mode policy. Example: "detect". -- `mitigationModeSuspicious` [query, string] (enum: detect, protect) — Mitigation mode policy for suspicious activity. Example: "detect". -- `registeredAt__lt` [query, string] — Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__lte` [query, string] — Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gt` [query, string] — Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gte` [query, string] — Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lt` [query, string] — Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lte` [query, string] — Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gt` [query, string] — Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gte` [query, string] — Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lt` [query, string] — Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lte` [query, string] — Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gt` [query, string] — Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gte` [query, string] — Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `coreCount__lt` [query, integer] — CPU cores (less than) -- `coreCount__lte` [query, integer] — CPU cores (less than or equal) -- `coreCount__gt` [query, integer] — CPU cores (more than) -- `coreCount__gte` [query, integer] — CPU cores (more than or equal) -- `cpuCount__lt` [query, integer] — Number of CPUs (less than) -- `cpuCount__lte` [query, integer] — Number of CPUs (less than or equal) -- `cpuCount__gt` [query, integer] — Number of CPUs (more than) -- `cpuCount__gte` [query, integer] — Number of CPUs (more than or equal) -- `totalMemory__lt` [query, integer] — Memory size (MB, less than) -- `totalMemory__lte` [query, integer] — Memory size (MB, less than or equal) -- `totalMemory__gt` [query, integer] — Memory size (MB, more than) -- `totalMemory__gte` [query, integer] — Memory size (MB, more than or equal) -- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed) — Migration status. Example: "N/A". -- `gatewayIp` [query, string] — Gateway ip. Example: "192.168.0.1". -- `csvFilterId` [query, string] — The ID of the CSV file to filter by. Example: "225494730938493804". -- `rsoLevel` [query, string] (enum: none, pro, ars) — Supported Remote Script Orchestration level. Example: "none". -- `remoteOpsForensicsSupported` [query, boolean] — Include only agents that has Remote Ops Forensicsfeature supported -- `windowsOsRevision__gte` [query, integer] — Agents os revision than or equal to given version -- `windowsOsRevision__lte` [query, integer] — Agents os revision lower than or equal to given version -- `rsoLevels` [query, array] — A list of included rso_levels. Example: "pro,ars". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredGroupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredSiteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `registeredAt__between` [query, string]: Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastActiveDate__between` [query, string]: Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastSuccessfulScanDate__between` [query, string]: Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". +- `isActive` [query, array]: Include only active Agents +- `isPendingUninstall` [query, array]: Include only Agents with pending uninstall requests +- `infected` [query, boolean]: Include only Agents with at least one active threat +- `isUpToDate` [query, array]: Include only Agents with updated software +- `query` [query, string]: A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". +- `agentVersions` [query, array]: Agent versions to include. Example: "2.0.0.0,2.1.5.144". +- `agentVersionsNin` [query, array]: Agent versions not to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersions` [query, array]: Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersionsNin` [query, array]: Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". +- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64): OS architecture. Example: "32 bit". +- `osArches` [query, array]: OS architectures to include. Example: "32 bit,64 bit". +- `osArchesNin` [query, array]: OS architectures not to include. Example: "32 bit,64 bit". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Not included OS types. Example: "macos". +- `scanStatuses` [query, array]: Included scan statuses. Example: "started,aborted". +- `scanStatusesNin` [query, array]: Not included scan statuses. Example: "started,aborted". +- `machineTypes` [query, array]: Included machine types. Example: "laptop,desktop". +- `machineTypesNin` [query, array]: Not included machine types. Example: "laptop,desktop". +- `storageTypes` [query, array]: Included storage types. Example: "NetApp,Dell,S3". +- `storageTypesNin` [query, array]: Excluded storage types. Example: "NetApp,Dell,S3". +- `networkStatuses` [query, array]: Included network statuses. Example: "connected,connecting". +- `networkStatusesNin` [query, array]: Included network statuses. Example: "connected,connecting". +- `domains` [query, array]: Included network domains. Example: "mybusiness.net,workgroup". +- `domainsNin` [query, array]: Not included network domains. Example: "mybusiness.net,workgroup". +- `encryptedApplications` [query, array]: Disk encryption status +- `totalMemory__between` [query, string]: Total memory range (GB, inclusive). Example: "4-8". +- `coreCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `cpuCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `userActionsNeeded` [query, array]: Included pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissions` [query, array]: Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `userActionsNeededNin` [query, array]: Excluded pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissionsNin` [query, array]: Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `adQuery` [query, string]: An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". +- `hasLocalConfiguration` [query, boolean]: Agent has a local configuration set +- `consoleMigrationStatuses` [query, array]: Migration status in. Example: "N/A". +- `consoleMigrationStatusesNin` [query, array]: Migration status nin. Example: "N/A". +- `appsVulnerabilityStatuses` [query, array]: Apps vulnerability status in. Example: "patch_required". +- `appsVulnerabilityStatusesNin` [query, array]: Apps vulnerability status nin. Example: "patch_required". +- `locationIds` [query, array]: Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `locationIdsNin` [query, array]: Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `installerTypes` [query, array]: Include only Agents installed with these package types. Example: ".msi". +- `installerTypesNin` [query, array]: Exclude Agents installed with these package types. Example: ".msi". +- `operationalStates` [query, array]: Agent operational state +- `operationalStatesNin` [query, array]: Do not include these Agent operational states +- `remoteProfilingStates` [query, array]: Agent remote profiling state +- `remoteProfilingStatesNin` [query, array]: Do not include these Agent remote profiling states +- `rangerStatuses` [query, array]: Status of Network Discovery. Example: "NotApplicable". +- `rangerStatusesNin` [query, array]: Do not include these Network Scanner Statuses. Example: "NotApplicable". +- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled): [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". +- `threatRebootRequired` [query, array]: Has at least one threat with at least one mitigation action pending reboot to succeed +- `networkQuarantineEnabled` [query, array]: The agents supports Network Quarantine Control and its enabled for the agent's group +- `firewallEnabled` [query, array]: The agents supports Firewall Control and it is enabled for the agent's group +- `locationEnabled` [query, array]: The agents supports Location Awareness and it is enabled for the agent's group +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `tagsData` [query, string]: Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Agents that have any tags assigned if True, or none if False +- `isAdConnector` [query, array]: The agents that are ADConnectors if True, or not if False +- `isHyperAutomate` [query, array]: The agents has Hyper Automate PNA enabled if True, or not if False +- `activeProtection` [query, array]: Included agent active protections. Example: "edr,idr". +- `containerizedWorkloadCounts` [query, object]: Containerized workload counts +- `hasContainerizedWorkload` [query, array]: Indicates whether the agent protects containerized workload at the moment +- `pacFileUsage` [query, array]: Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). +- `proxyMethod` [query, array]: Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `proxyMethodNin` [query, array]: Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `console` [query, array]: Include only Agents using console proxy. Accepts true, false, or none (for not reported). +- `deepVisibility` [query, array]: Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "205,127.0". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `networkInterfaceInet__contains` [query, array]: Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". +- `networkInterfacePhysical__contains` [query, array]: Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". +- `networkInterfaceGatewayMacAddress__contains` [query, array]: Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". +- `lastLoggedInUserName__contains` [query, array]: Free-text filter by username (supports multiple values). Example: "admin,johnd1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `adQuery__contains` [query, array]: Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". +- `adUserName__contains` [query, array]: Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". +- `adUserMember__contains` [query, array]: Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". +- `adUserQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". +- `adComputerName__contains` [query, array]: Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". +- `adComputerMember__contains` [query, array]: Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". +- `adComputerQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `externalId__contains` [query, array]: Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `agentNamespace__contains` [query, array]: Free-text filter by agent namespace (supports multiple values) +- `agentPodName__contains` [query, array]: Free-text filter by agent pod name (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `cloudTags__contains` [query, array]: Free-text filter by cloud tags (supports multiple values) +- `clusterName__contains` [query, array]: Free-text filter by cluster name (supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by K8s node labels (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by K8s node name (supports multiple values) +- `k8sType__contains` [query, array]: Free-text filter by K8s type(supports multiple values) +- `k8sVersion__contains` [query, array]: Free-text filter by K8s version (supports multiple values) +- `liveUpdateId__contains` [query, array]: Free-text filter by live update ID (supports multiple values) +- `serialNumber__contains` [query, array]: Free-text filter by Serial Number (supports multiple values) +- `cpuId__contains` [query, array]: Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". +- `ecsType__contains` [query, array]: Free-text filter by ECS type +- `ecsVersion__contains` [query, array]: Free-text filter by ECS version +- `ecsClusterName__contains` [query, array]: Free-text filter by ECS cluster name +- `ecsTaskArn__contains` [query, array]: Free-text filter by ECS task arn +- `ecsTaskAvailabilityZone__contains` [query, array]: Free-text filter by ECS task availability zone +- `ecsServiceName__contains` [query, array]: Free-text filter by ECS service name +- `ecsServiceArn__contains` [query, array]: Free-text filter by ECS service arn +- `ecsTaskDefinitionFamily__contains` [query, array]: Free-text filter by ECS task definition family +- `ecsTaskDefinitionRevision__contains` [query, array]: Free-text filter by ECS task definition revision +- `ecsTaskDefinitionArn__contains` [query, array]: Free-text filter by ECS task definition arn +- `isDecommissioned` [query, array]: Include active, decommissioned or both. Example: "True,False". +- `isUninstalled` [query, array]: Include installed, uninstalled or both. Example: "True,False". +- `computerNameOrUuid__contains` [query, array]: Free-text filter by computer name or uuid (supports multiple values) +- `ids` [query, array]: Included Agent IDs. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: Excluded Agent IDs. Example: "225494730938493804,225494730938493915". +- `filterId` [query, string]: Include all Agents matching this saved filter. Example: "225494730938493804". +- `decommissionedAt__gte` [query, string]: Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lt` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lte` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__gt` [query, string]: Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__between` [query, string]: Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `computerName__like` [query, string]: Match computer name partially (substring). Example: "Lab1". +- `computerName` [query, string]: Computer name. Example: "My Office Desktop". +- `agentVersion__lt` [query, string]: Agents versions less than given version. Example: "2.5.1.1320". +- `agentVersion__lte` [query, string]: Agents versions less than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__gt` [query, string]: Agents versions greater than given version. Example: "2.5.1.1320". +- `agentVersion__gte` [query, string]: Agents versions greater than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__between` [query, string]: Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". +- `uuid` [query, string]: Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". +- `uuids` [query, array]: A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". +- `scanStatus` [query, string] (enum: none, started, aborted, finished): Scan status. Example: "none". +- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved): Include only Agents that have threats with this mitigation status. Example: "mitigated". +- `threatResolved` [query, boolean]: Include only Agents with at least one resolved threat +- `threatHidden` [query, boolean]: Include only Agents with at least one hidden threat +- `threatContentHash` [query, string]: Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". +- `threatCreatedAt__lt` [query, string]: Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__lte` [query, string]: Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gt` [query, string]: Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gte` [query, string]: Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__between` [query, string]: Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". +- `activeThreats` [query, integer]: Include Agents with this amount of active threats. Example: "3". +- `activeThreats__gt` [query, integer]: Include Agents with at least this amount of active threats. Example: "5". +- `mitigationMode` [query, string] (enum: detect, protect): Agent mitigation mode policy. Example: "detect". +- `mitigationModeSuspicious` [query, string] (enum: detect, protect): Mitigation mode policy for suspicious activity. Example: "detect". +- `registeredAt__lt` [query, string]: Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__lte` [query, string]: Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gt` [query, string]: Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gte` [query, string]: Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lt` [query, string]: Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lte` [query, string]: Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gt` [query, string]: Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gte` [query, string]: Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lt` [query, string]: Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lte` [query, string]: Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gt` [query, string]: Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gte` [query, string]: Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `coreCount__lt` [query, integer]: CPU cores (less than) +- `coreCount__lte` [query, integer]: CPU cores (less than or equal) +- `coreCount__gt` [query, integer]: CPU cores (more than) +- `coreCount__gte` [query, integer]: CPU cores (more than or equal) +- `cpuCount__lt` [query, integer]: Number of CPUs (less than) +- `cpuCount__lte` [query, integer]: Number of CPUs (less than or equal) +- `cpuCount__gt` [query, integer]: Number of CPUs (more than) +- `cpuCount__gte` [query, integer]: Number of CPUs (more than or equal) +- `totalMemory__lt` [query, integer]: Memory size (MB, less than) +- `totalMemory__lte` [query, integer]: Memory size (MB, less than or equal) +- `totalMemory__gt` [query, integer]: Memory size (MB, more than) +- `totalMemory__gte` [query, integer]: Memory size (MB, more than or equal) +- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed): Migration status. Example: "N/A". +- `gatewayIp` [query, string]: Gateway ip. Example: "192.168.0.1". +- `csvFilterId` [query, string]: The ID of the CSV file to filter by. Example: "225494730938493804". +- `rsoLevel` [query, string] (enum: none, pro, ars): Supported Remote Script Orchestration level. Example: "none". +- `remoteOpsForensicsSupported` [query, boolean]: Include only agents that has Remote Ops Forensicsfeature supported +- `windowsOsRevision__gte` [query, integer]: Agents os revision than or equal to given version +- `windowsOsRevision__lte` [query, integer]: Agents os revision lower than or equal to given version +- `rsoLevels` [query, array]: A list of included rso_levels. Example: "pro,ars". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -1014,205 +1014,205 @@ Export Agent data to a CSV, for Agents that match the filter. This command expor Required permissions: `Endpoints.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredGroupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `filteredSiteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `registeredAt__between` [query, string] — Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastActiveDate__between` [query, string] — Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". -- `lastSuccessfulScanDate__between` [query, string] — Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". -- `isActive` [query, array] — Include only active Agents -- `isPendingUninstall` [query, array] — Include only Agents with pending uninstall requests -- `infected` [query, boolean] — Include only Agents with at least one active threat -- `isUpToDate` [query, array] — Include only Agents with updated software -- `query` [query, string] — A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". -- `agentVersions` [query, array] — Agent versions to include. Example: "2.0.0.0,2.1.5.144". -- `agentVersionsNin` [query, array] — Agent versions not to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersions` [query, array] — Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". -- `rangerVersionsNin` [query, array] — Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". -- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64) — OS architecture. Example: "32 bit". -- `osArches` [query, array] — OS architectures to include. Example: "32 bit,64 bit". -- `osArchesNin` [query, array] — OS architectures not to include. Example: "32 bit,64 bit". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Not included OS types. Example: "macos". -- `scanStatuses` [query, array] — Included scan statuses. Example: "started,aborted". -- `scanStatusesNin` [query, array] — Not included scan statuses. Example: "started,aborted". -- `machineTypes` [query, array] — Included machine types. Example: "laptop,desktop". -- `machineTypesNin` [query, array] — Not included machine types. Example: "laptop,desktop". -- `storageTypes` [query, array] — Included storage types. Example: "NetApp,Dell,S3". -- `storageTypesNin` [query, array] — Excluded storage types. Example: "NetApp,Dell,S3". -- `networkStatuses` [query, array] — Included network statuses. Example: "connected,connecting". -- `networkStatusesNin` [query, array] — Included network statuses. Example: "connected,connecting". -- `domains` [query, array] — Included network domains. Example: "mybusiness.net,workgroup". -- `domainsNin` [query, array] — Not included network domains. Example: "mybusiness.net,workgroup". -- `encryptedApplications` [query, array] — Disk encryption status -- `totalMemory__between` [query, string] — Total memory range (GB, inclusive). Example: "4-8". -- `coreCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `cpuCount__between` [query, string] — Possible number of CPU cores (inclusive). Example: "2-8". -- `userActionsNeeded` [query, array] — Included pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissions` [query, array] — Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `userActionsNeededNin` [query, array] — Excluded pending user actions. Example: "reboot_needed,upgrade_needed". -- `missingPermissionsNin` [query, array] — Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". -- `adQuery` [query, string] — An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". -- `hasLocalConfiguration` [query, boolean] — Agent has a local configuration set -- `consoleMigrationStatuses` [query, array] — Migration status in. Example: "N/A". -- `consoleMigrationStatusesNin` [query, array] — Migration status nin. Example: "N/A". -- `appsVulnerabilityStatuses` [query, array] — Apps vulnerability status in. Example: "patch_required". -- `appsVulnerabilityStatusesNin` [query, array] — Apps vulnerability status nin. Example: "patch_required". -- `locationIds` [query, array] — Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `locationIdsNin` [query, array] — Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". -- `installerTypes` [query, array] — Include only Agents installed with these package types. Example: ".msi". -- `installerTypesNin` [query, array] — Exclude Agents installed with these package types. Example: ".msi". -- `operationalStates` [query, array] — Agent operational state -- `operationalStatesNin` [query, array] — Do not include these Agent operational states -- `remoteProfilingStates` [query, array] — Agent remote profiling state -- `remoteProfilingStatesNin` [query, array] — Do not include these Agent remote profiling states -- `rangerStatuses` [query, array] — Status of Network Discovery. Example: "NotApplicable". -- `rangerStatusesNin` [query, array] — Do not include these Network Scanner Statuses. Example: "NotApplicable". -- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled) — [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". -- `threatRebootRequired` [query, array] — Has at least one threat with at least one mitigation action pending reboot to succeed -- `networkQuarantineEnabled` [query, array] — The agents supports Network Quarantine Control and its enabled for the agent's group -- `firewallEnabled` [query, array] — The agents supports Firewall Control and it is enabled for the agent's group -- `locationEnabled` [query, array] — The agents supports Location Awareness and it is enabled for the agent's group -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `tagsData` [query, string] — Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Agents that have any tags assigned if True, or none if False -- `isAdConnector` [query, array] — The agents that are ADConnectors if True, or not if False -- `isHyperAutomate` [query, array] — The agents has Hyper Automate PNA enabled if True, or not if False -- `activeProtection` [query, array] — Included agent active protections. Example: "edr,idr". -- `containerizedWorkloadCounts` [query, object] — Containerized workload counts -- `hasContainerizedWorkload` [query, array] — Indicates whether the agent protects containerized workload at the moment -- `pacFileUsage` [query, array] — Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). -- `proxyMethod` [query, array] — Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `proxyMethodNin` [query, array] — Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". -- `console` [query, array] — Include only Agents using console proxy. Accepts true, false, or none (for not reported). -- `deepVisibility` [query, array] — Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "205,127.0". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `networkInterfaceInet__contains` [query, array] — Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". -- `networkInterfacePhysical__contains` [query, array] — Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". -- `networkInterfaceGatewayMacAddress__contains` [query, array] — Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". -- `lastLoggedInUserName__contains` [query, array] — Free-text filter by username (supports multiple values). Example: "admin,johnd1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `adQuery__contains` [query, array] — Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". -- `adUserName__contains` [query, array] — Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". -- `adUserMember__contains` [query, array] — Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". -- `adUserQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". -- `adComputerName__contains` [query, array] — Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". -- `adComputerMember__contains` [query, array] — Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". -- `adComputerQuery__contains` [query, array] — Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `externalId__contains` [query, array] — Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `agentNamespace__contains` [query, array] — Free-text filter by agent namespace (supports multiple values) -- `agentPodName__contains` [query, array] — Free-text filter by agent pod name (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `cloudTags__contains` [query, array] — Free-text filter by cloud tags (supports multiple values) -- `clusterName__contains` [query, array] — Free-text filter by cluster name (supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by K8s node labels (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by K8s node name (supports multiple values) -- `k8sType__contains` [query, array] — Free-text filter by K8s type(supports multiple values) -- `k8sVersion__contains` [query, array] — Free-text filter by K8s version (supports multiple values) -- `liveUpdateId__contains` [query, array] — Free-text filter by live update ID (supports multiple values) -- `serialNumber__contains` [query, array] — Free-text filter by Serial Number (supports multiple values) -- `cpuId__contains` [query, array] — Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". -- `ecsType__contains` [query, array] — Free-text filter by ECS type -- `ecsVersion__contains` [query, array] — Free-text filter by ECS version -- `ecsClusterName__contains` [query, array] — Free-text filter by ECS cluster name -- `ecsTaskArn__contains` [query, array] — Free-text filter by ECS task arn -- `ecsTaskAvailabilityZone__contains` [query, array] — Free-text filter by ECS task availability zone -- `ecsServiceName__contains` [query, array] — Free-text filter by ECS service name -- `ecsServiceArn__contains` [query, array] — Free-text filter by ECS service arn -- `ecsTaskDefinitionFamily__contains` [query, array] — Free-text filter by ECS task definition family -- `ecsTaskDefinitionRevision__contains` [query, array] — Free-text filter by ECS task definition revision -- `ecsTaskDefinitionArn__contains` [query, array] — Free-text filter by ECS task definition arn -- `isDecommissioned` [query, array] — Include active, decommissioned or both. Example: "True,False". -- `isUninstalled` [query, array] — Include installed, uninstalled or both. Example: "True,False". -- `computerNameOrUuid__contains` [query, array] — Free-text filter by computer name or uuid (supports multiple values) -- `ids` [query, array] — Included Agent IDs. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — Excluded Agent IDs. Example: "225494730938493804,225494730938493915". -- `filterId` [query, string] — Include all Agents matching this saved filter. Example: "225494730938493804". -- `decommissionedAt__gte` [query, string] — Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lt` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__lte` [query, string] — Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__gt` [query, string] — Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `decommissionedAt__between` [query, string] — Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `computerName__like` [query, string] — Match computer name partially (substring). Example: "Lab1". -- `computerName` [query, string] — Computer name. Example: "My Office Desktop". -- `agentVersion__lt` [query, string] — Agents versions less than given version. Example: "2.5.1.1320". -- `agentVersion__lte` [query, string] — Agents versions less than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__gt` [query, string] — Agents versions greater than given version. Example: "2.5.1.1320". -- `agentVersion__gte` [query, string] — Agents versions greater than or equal to given version. Example: "2.5.1.1320". -- `agentVersion__between` [query, string] — Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". -- `uuid` [query, string] — Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". -- `uuids` [query, array] — A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". -- `scanStatus` [query, string] (enum: none, started, aborted, finished) — Scan status. Example: "none". -- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved) — Include only Agents that have threats with this mitigation status. Example: "mitigated". -- `threatResolved` [query, boolean] — Include only Agents with at least one resolved threat -- `threatHidden` [query, boolean] — Include only Agents with at least one hidden threat -- `threatContentHash` [query, string] — Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". -- `threatCreatedAt__lt` [query, string] — Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__lte` [query, string] — Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gt` [query, string] — Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__gte` [query, string] — Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `threatCreatedAt__between` [query, string] — Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". -- `activeThreats` [query, integer] — Include Agents with this amount of active threats. Example: "3". -- `activeThreats__gt` [query, integer] — Include Agents with at least this amount of active threats. Example: "5". -- `mitigationMode` [query, string] (enum: detect, protect) — Agent mitigation mode policy. Example: "detect". -- `mitigationModeSuspicious` [query, string] (enum: detect, protect) — Mitigation mode policy for suspicious activity. Example: "detect". -- `registeredAt__lt` [query, string] — Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__lte` [query, string] — Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gt` [query, string] — Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". -- `registeredAt__gte` [query, string] — Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lt` [query, string] — Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__lte` [query, string] — Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gt` [query, string] — Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastActiveDate__gte` [query, string] — Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lt` [query, string] — Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__lte` [query, string] — Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gt` [query, string] — Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". -- `lastSuccessfulScanDate__gte` [query, string] — Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `coreCount__lt` [query, integer] — CPU cores (less than) -- `coreCount__lte` [query, integer] — CPU cores (less than or equal) -- `coreCount__gt` [query, integer] — CPU cores (more than) -- `coreCount__gte` [query, integer] — CPU cores (more than or equal) -- `cpuCount__lt` [query, integer] — Number of CPUs (less than) -- `cpuCount__lte` [query, integer] — Number of CPUs (less than or equal) -- `cpuCount__gt` [query, integer] — Number of CPUs (more than) -- `cpuCount__gte` [query, integer] — Number of CPUs (more than or equal) -- `totalMemory__lt` [query, integer] — Memory size (MB, less than) -- `totalMemory__lte` [query, integer] — Memory size (MB, less than or equal) -- `totalMemory__gt` [query, integer] — Memory size (MB, more than) -- `totalMemory__gte` [query, integer] — Memory size (MB, more than or equal) -- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed) — Migration status. Example: "N/A". -- `gatewayIp` [query, string] — Gateway ip. Example: "192.168.0.1". -- `csvFilterId` [query, string] — The ID of the CSV file to filter by. Example: "225494730938493804". -- `rsoLevel` [query, string] (enum: none, pro, ars) — Supported Remote Script Orchestration level. Example: "none". -- `remoteOpsForensicsSupported` [query, boolean] — Include only agents that has Remote Ops Forensicsfeature supported -- `windowsOsRevision__gte` [query, integer] — Agents os revision than or equal to given version -- `windowsOsRevision__lte` [query, integer] — Agents os revision lower than or equal to given version -- `rsoLevels` [query, array] — A list of included rso_levels. Example: "pro,ars". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredGroupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `filteredSiteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `registeredAt__between` [query, string]: Date range for first registration time (format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastActiveDate__between` [query, string]: Date range for last active date(format: -, inclusive). Example: "1514978764288-1514978999999". +- `lastSuccessfulScanDate__between` [query, string]: Date range for last successful full disk scan(format: -, inclusive). Example: "1514978764288-1514978999999". +- `isActive` [query, array]: Include only active Agents +- `isPendingUninstall` [query, array]: Include only Agents with pending uninstall requests +- `infected` [query, boolean]: Include only Agents with at least one active threat +- `isUpToDate` [query, array]: Include only Agents with updated software +- `query` [query, string]: A free-text search term, will match applicable attributes (sub-string match). Note: Device's physical addresses will be matched if they start with the search term only (no match if they contain the term). Example: "Linux". +- `agentVersions` [query, array]: Agent versions to include. Example: "2.0.0.0,2.1.5.144". +- `agentVersionsNin` [query, array]: Agent versions not to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersions` [query, array]: Network Scanner versions to include. Example: "2.0.0.0,2.1.5.144". +- `rangerVersionsNin` [query, array]: Network Scanner versions not to include. Example: "2.0.0.0,2.1.5.144". +- `osArch` [query, string] (enum: 32 bit, 64 bit, ARM64): OS architecture. Example: "32 bit". +- `osArches` [query, array]: OS architectures to include. Example: "32 bit,64 bit". +- `osArchesNin` [query, array]: OS architectures not to include. Example: "32 bit,64 bit". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Not included OS types. Example: "macos". +- `scanStatuses` [query, array]: Included scan statuses. Example: "started,aborted". +- `scanStatusesNin` [query, array]: Not included scan statuses. Example: "started,aborted". +- `machineTypes` [query, array]: Included machine types. Example: "laptop,desktop". +- `machineTypesNin` [query, array]: Not included machine types. Example: "laptop,desktop". +- `storageTypes` [query, array]: Included storage types. Example: "NetApp,Dell,S3". +- `storageTypesNin` [query, array]: Excluded storage types. Example: "NetApp,Dell,S3". +- `networkStatuses` [query, array]: Included network statuses. Example: "connected,connecting". +- `networkStatusesNin` [query, array]: Included network statuses. Example: "connected,connecting". +- `domains` [query, array]: Included network domains. Example: "mybusiness.net,workgroup". +- `domainsNin` [query, array]: Not included network domains. Example: "mybusiness.net,workgroup". +- `encryptedApplications` [query, array]: Disk encryption status +- `totalMemory__between` [query, string]: Total memory range (GB, inclusive). Example: "4-8". +- `coreCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `cpuCount__between` [query, string]: Possible number of CPU cores (inclusive). Example: "2-8". +- `userActionsNeeded` [query, array]: Included pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissions` [query, array]: Included missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `userActionsNeededNin` [query, array]: Excluded pending user actions. Example: "reboot_needed,upgrade_needed". +- `missingPermissionsNin` [query, array]: Excluded missing permissions. Example: "user_action_needed_bluetooth_per,user_action_needed_fda_helper". +- `adQuery` [query, string]: An Active Directory query string. Example: "CN=Managers,DC=sentinelone,DC=com". +- `hasLocalConfiguration` [query, boolean]: Agent has a local configuration set +- `consoleMigrationStatuses` [query, array]: Migration status in. Example: "N/A". +- `consoleMigrationStatusesNin` [query, array]: Migration status nin. Example: "N/A". +- `appsVulnerabilityStatuses` [query, array]: Apps vulnerability status in. Example: "patch_required". +- `appsVulnerabilityStatusesNin` [query, array]: Apps vulnerability status nin. Example: "patch_required". +- `locationIds` [query, array]: Include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `locationIdsNin` [query, array]: Do not include only Agents reporting these locations. Example: "225494730938493804,225494730938493915". +- `installerTypes` [query, array]: Include only Agents installed with these package types. Example: ".msi". +- `installerTypesNin` [query, array]: Exclude Agents installed with these package types. Example: ".msi". +- `operationalStates` [query, array]: Agent operational state +- `operationalStatesNin` [query, array]: Do not include these Agent operational states +- `remoteProfilingStates` [query, array]: Agent remote profiling state +- `remoteProfilingStatesNin` [query, array]: Do not include these Agent remote profiling states +- `rangerStatuses` [query, array]: Status of Network Discovery. Example: "NotApplicable". +- `rangerStatusesNin` [query, array]: Do not include these Network Scanner Statuses. Example: "NotApplicable". +- `rangerStatus` [query, string] (enum: NotApplicable, Enabled, Disabled): [DEPRECATED] Use rangerStatuses. Example: "NotApplicable". +- `threatRebootRequired` [query, array]: Has at least one threat with at least one mitigation action pending reboot to succeed +- `networkQuarantineEnabled` [query, array]: The agents supports Network Quarantine Control and its enabled for the agent's group +- `firewallEnabled` [query, array]: The agents supports Firewall Control and it is enabled for the agent's group +- `locationEnabled` [query, array]: The agents supports Location Awareness and it is enabled for the agent's group +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `tagsData` [query, string]: Filter agents by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Agents that have any tags assigned if True, or none if False +- `isAdConnector` [query, array]: The agents that are ADConnectors if True, or not if False +- `isHyperAutomate` [query, array]: The agents has Hyper Automate PNA enabled if True, or not if False +- `activeProtection` [query, array]: Included agent active protections. Example: "edr,idr". +- `containerizedWorkloadCounts` [query, object]: Containerized workload counts +- `hasContainerizedWorkload` [query, array]: Indicates whether the agent protects containerized workload at the moment +- `pacFileUsage` [query, array]: Include only Agents using PAC file for proxy configuration. Accepts true, false, or none (for not reported). +- `proxyMethod` [query, array]: Include only Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `proxyMethodNin` [query, array]: Exclude Agents using these proxy methods. Example: "None,Auto,System,User,Custom". +- `console` [query, array]: Include only Agents using console proxy. Accepts true, false, or none (for not reported). +- `deepVisibility` [query, array]: Include only Agents using deep visibility proxy. Accepts true, false, or none (for not reported). +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "205,127.0". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `networkInterfaceInet__contains` [query, array]: Free-text filter by local IP (supports multiple values). Example: "192,10.0.0". +- `networkInterfacePhysical__contains` [query, array]: Free-text filter by MAC address (supports multiple values). Example: "aa:0f,:41:". +- `networkInterfaceGatewayMacAddress__contains` [query, array]: Free-text filter by Gateway MAC address (supports multiple values). Example: "aa:0f,:41:". +- `lastLoggedInUserName__contains` [query, array]: Free-text filter by username (supports multiple values). Example: "admin,johnd1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `adQuery__contains` [query, array]: Free-text filter by Active Directory string (supports multiple values). Example: "DC=sentinelone". +- `adUserName__contains` [query, array]: Free-text filter by Active Directory username string (supports multiple values). Example: "DC=sentinelone". +- `adUserMember__contains` [query, array]: Free-text filter by Active Directory user groups string (supports multiple values). Example: "DC=sentinelone". +- `adUserQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,John". +- `adComputerName__contains` [query, array]: Free-text filter by Active Directory computer name string (supports multiple values). Example: "DC=sentinelone". +- `adComputerMember__contains` [query, array]: Free-text filter by Active Directory computer groups string (supports multiple values). Example: "DC=sentinelone". +- `adComputerQuery__contains` [query, array]: Free-text filter by Active Directory computer name or its groups (supports multiple values). Example: "DC=sentinelone,Windows". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `externalId__contains` [query, array]: Free-text filter by external ID (Customer ID). Example: "Tag#1 - monitoring,Performance machine". +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `agentNamespace__contains` [query, array]: Free-text filter by agent namespace (supports multiple values) +- `agentPodName__contains` [query, array]: Free-text filter by agent pod name (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `cloudTags__contains` [query, array]: Free-text filter by cloud tags (supports multiple values) +- `clusterName__contains` [query, array]: Free-text filter by cluster name (supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by K8s node labels (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by K8s node name (supports multiple values) +- `k8sType__contains` [query, array]: Free-text filter by K8s type(supports multiple values) +- `k8sVersion__contains` [query, array]: Free-text filter by K8s version (supports multiple values) +- `liveUpdateId__contains` [query, array]: Free-text filter by live update ID (supports multiple values) +- `serialNumber__contains` [query, array]: Free-text filter by Serial Number (supports multiple values) +- `cpuId__contains` [query, array]: Free-text filter by CPU name (supports multiple values). Example: "Intel,AMD". +- `ecsType__contains` [query, array]: Free-text filter by ECS type +- `ecsVersion__contains` [query, array]: Free-text filter by ECS version +- `ecsClusterName__contains` [query, array]: Free-text filter by ECS cluster name +- `ecsTaskArn__contains` [query, array]: Free-text filter by ECS task arn +- `ecsTaskAvailabilityZone__contains` [query, array]: Free-text filter by ECS task availability zone +- `ecsServiceName__contains` [query, array]: Free-text filter by ECS service name +- `ecsServiceArn__contains` [query, array]: Free-text filter by ECS service arn +- `ecsTaskDefinitionFamily__contains` [query, array]: Free-text filter by ECS task definition family +- `ecsTaskDefinitionRevision__contains` [query, array]: Free-text filter by ECS task definition revision +- `ecsTaskDefinitionArn__contains` [query, array]: Free-text filter by ECS task definition arn +- `isDecommissioned` [query, array]: Include active, decommissioned or both. Example: "True,False". +- `isUninstalled` [query, array]: Include installed, uninstalled or both. Example: "True,False". +- `computerNameOrUuid__contains` [query, array]: Free-text filter by computer name or uuid (supports multiple values) +- `ids` [query, array]: Included Agent IDs. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: Excluded Agent IDs. Example: "225494730938493804,225494730938493915". +- `filterId` [query, string]: Include all Agents matching this saved filter. Example: "225494730938493804". +- `decommissionedAt__gte` [query, string]: Agents decommissioned after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lt` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__lte` [query, string]: Agents decommissioned before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__gt` [query, string]: Agents decommissioned after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `decommissionedAt__between` [query, string]: Date range for decommission time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: Agents created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Agents created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Agents created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Agents created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Agents updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Agents updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Agents updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Agents updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `computerName__like` [query, string]: Match computer name partially (substring). Example: "Lab1". +- `computerName` [query, string]: Computer name. Example: "My Office Desktop". +- `agentVersion__lt` [query, string]: Agents versions less than given version. Example: "2.5.1.1320". +- `agentVersion__lte` [query, string]: Agents versions less than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__gt` [query, string]: Agents versions greater than given version. Example: "2.5.1.1320". +- `agentVersion__gte` [query, string]: Agents versions greater than or equal to given version. Example: "2.5.1.1320". +- `agentVersion__between` [query, string]: Version range for agent version (format: -, inclusive). Example: "2.0.0.0-2.1.5.144". +- `uuid` [query, string]: Agent's universally unique identifier. Example: "ff819e70af13be381993075eb0ce5f2f6de05be2". +- `uuids` [query, array]: A list of included UUIDs. Example: "ff819e70af13be381993075eb0ce5f2f6de05b11,ff819e70af13be381993075eb0ce5f2f6de05c22". +- `scanStatus` [query, string] (enum: none, started, aborted, finished): Scan status. Example: "none". +- `threatMitigationStatus` [query, string] (enum: mitigated, blocked, active, suspicious, pending, suspicious_resolved): Include only Agents that have threats with this mitigation status. Example: "mitigated". +- `threatResolved` [query, boolean]: Include only Agents with at least one resolved threat +- `threatHidden` [query, boolean]: Include only Agents with at least one hidden threat +- `threatContentHash` [query, string]: Include only Agents that have at least one threat with this content hash. Example: "cf23df2207d99a74fbe169e3eba035e633b65d94". +- `threatCreatedAt__lt` [query, string]: Agents with threats reported before this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__lte` [query, string]: Agents with threats reported before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gt` [query, string]: Agents with threats reported after this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__gte` [query, string]: Agents with threats reported after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `threatCreatedAt__between` [query, string]: Agents with threats reported in a date range (format: -, inclusive). Example: "1514978764288-1514978999999". +- `activeThreats` [query, integer]: Include Agents with this amount of active threats. Example: "3". +- `activeThreats__gt` [query, integer]: Include Agents with at least this amount of active threats. Example: "5". +- `mitigationMode` [query, string] (enum: detect, protect): Agent mitigation mode policy. Example: "detect". +- `mitigationModeSuspicious` [query, string] (enum: detect, protect): Mitigation mode policy for suspicious activity. Example: "detect". +- `registeredAt__lt` [query, string]: Agents registered before this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__lte` [query, string]: Agents registered before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gt` [query, string]: Agents registered after this time. Example: "2018-02-27T04:49:26.257525Z". +- `registeredAt__gte` [query, string]: Agents registered after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lt` [query, string]: Agents last active before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__lte` [query, string]: Agents last active before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gt` [query, string]: Agents last active after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastActiveDate__gte` [query, string]: Agents last active after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lt` [query, string]: Agents last successful full disk scan before this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__lte` [query, string]: Agents last successful full disk scan before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gt` [query, string]: Agents last successful full disk scan after this time. Example: "2018-02-27T04:49:26.257525Z". +- `lastSuccessfulScanDate__gte` [query, string]: Agents last successful full disk scan after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `coreCount__lt` [query, integer]: CPU cores (less than) +- `coreCount__lte` [query, integer]: CPU cores (less than or equal) +- `coreCount__gt` [query, integer]: CPU cores (more than) +- `coreCount__gte` [query, integer]: CPU cores (more than or equal) +- `cpuCount__lt` [query, integer]: Number of CPUs (less than) +- `cpuCount__lte` [query, integer]: Number of CPUs (less than or equal) +- `cpuCount__gt` [query, integer]: Number of CPUs (more than) +- `cpuCount__gte` [query, integer]: Number of CPUs (more than or equal) +- `totalMemory__lt` [query, integer]: Memory size (MB, less than) +- `totalMemory__lte` [query, integer]: Memory size (MB, less than or equal) +- `totalMemory__gt` [query, integer]: Memory size (MB, more than) +- `totalMemory__gte` [query, integer]: Memory size (MB, more than or equal) +- `migrationStatus` [query, string] (enum: N/A, Pending, Migrated, Failed): Migration status. Example: "N/A". +- `gatewayIp` [query, string]: Gateway ip. Example: "192.168.0.1". +- `csvFilterId` [query, string]: The ID of the CSV file to filter by. Example: "225494730938493804". +- `rsoLevel` [query, string] (enum: none, pro, ars): Supported Remote Script Orchestration level. Example: "none". +- `remoteOpsForensicsSupported` [query, boolean]: Include only agents that has Remote Ops Forensicsfeature supported +- `windowsOsRevision__gte` [query, integer]: Agents os revision than or equal to given version +- `windowsOsRevision__lte` [query, integer]: Agents os revision lower than or equal to given version +- `rsoLevels` [query, array]: A list of included rso_levels. Example: "pro,ars". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -1225,6 +1225,6 @@ Export Agent passphrases to a CSV, for Agents that match the filter. This comman Required permissions: `Endpoints.showPassphrase` Parameters: -- `body` [body, agents.schemas_ExportAgentsPassphrasesSchema] — +- `body` [body, agents.schemas_ExportAgentsPassphrasesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents_Repository_Beta.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents_Repository_Beta.md index 536ceba..bc357ac 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents_Repository_Beta.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Agents_Repository_Beta.md @@ -11,9 +11,9 @@ Deletes an access token for the S1 Agent Artifacts Repository Required permissions: `Agent Artifacts.delete` Parameters: -- `scope_level` [query, string] — Scope level to list the tokens for. Possible values: 'site', 'account' -- `scope_id` [query, integer] — Scope id to list the tokens for, example: '983604236220743370' -- `token_id` [query, integer] — token id of the token to be deleted, example: '42' +- `scope_level` [query, string]: Scope level to list the tokens for. Possible values: 'site', 'account' +- `scope_id` [query, integer]: Scope id to list the tokens for, example: '983604236220743370' +- `token_id` [query, integer]: token id of the token to be deleted, example: '42' Responses: 200 Token deleted, 400 Invalid request, 401 Unauthorized, 404 Not found, 500 Internal error @@ -26,10 +26,10 @@ Lists valid access tokens for the S1 Agent Artifacts Repository, with the option Required permissions: `Agent Artifacts.listAccessTokens` Parameters: -- `scope_level` [query, string] — Scope level to list the tokens for. Possible values: 'site', 'account', 'tenant' -- `scope_id` [query, integer] — Scope id to list the tokens for, example: '983604236220743370' -- `limit` [query, integer] — The number of tokens to return, for example: '10'. Optional -- `offset` [query, integer] — The number of tokens to skip before starting to collect the result, for example: '2'. Optional +- `scope_level` [query, string]: Scope level to list the tokens for. Possible values: 'site', 'account', 'tenant' +- `scope_id` [query, integer]: Scope id to list the tokens for, example: '983604236220743370' +- `limit` [query, integer]: The number of tokens to return, for example: '10'. Optional +- `offset` [query, integer]: The number of tokens to skip before starting to collect the result, for example: '2'. Optional Responses: 200 OK, 400 Invalid request, 401 Unauthorized, 500 Internal error @@ -42,6 +42,6 @@ Creates an access token for the S1 Agent Artifacts Repository, which is needed f Required permissions: `Agent Artifacts.create` Parameters: -- `request` [body, handlers.TokenRequest] **required** — expected request body +- `request` [body, handlers.TokenRequest] **required**: expected request body Responses: 200 OK, 400 Invalid request, 401 Unauthorized, 500 Internal Error diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management.md index 38784ee..20b5514 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management.md @@ -11,25 +11,25 @@ Get application inventory data grouped by application name and vendor. Required permissions: `Applications Page.view` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `sortBy` [query, string] (enum: applicationName, applicationVendor, applicationVersionsCount, endpointsCount) — The column to sort the results by. Example: "id". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `osVersions` [query, array] — Included OS versions -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `osVersion__contains` [query, array] — Free-text filter by os version (supports multiple values). Example: "Windows 7 ServicePack1". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `name__contains` [query, array] — Free-text filter by application name (supports multiple values). Example: "Office,Test". -- `vendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `osArchitectures` [query, array] — Included OS architectures -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `sortBy` [query, string] (enum: applicationName, applicationVendor, applicationVersionsCount, endpointsCount): The column to sort the results by. Example: "id". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `osVersions` [query, array]: Included OS versions +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `osVersion__contains` [query, array]: Free-text filter by os version (supports multiple values). Example: "Windows 7 ServicePack1". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `name__contains` [query, array]: Free-text filter by application name (supports multiple values). Example: "Office,Test". +- `vendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `osArchitectures` [query, array]: Included OS architectures +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -42,7 +42,7 @@ Get the installed applications for a specific endpoint.
      To get the Agent ID, Required permissions: `Applications Page.view` Parameters: -- `ids` [query, array] **required** — Agent ID list. Example: "225494730938493804,225494730938493915". +- `ids` [query, array] **required**: Agent ID list. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -55,29 +55,29 @@ Get endpoint data for a specific application. Required permissions: `Applications Page.view` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `applicationName` [query, string] **required** — Name -- `sortBy` [query, string] (enum: endpointName, endpointType, osType, osVersion, accountName, siteName, groupName, version, fileSize, detectionDate, applicationInstallationDate, cpuCount, coreCount, osArch, applicationInstallationPath) — The column to sort the results by. Example: "id". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `osVersions` [query, array] — Included OS versions -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationVendor` [query, string] **required** — Vendor -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `versions` [query, array] — Included application versions -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `osArchitectures` [query, array] — Included OS architectures -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `applicationName` [query, string] **required**: Name +- `sortBy` [query, string] (enum: endpointName, endpointType, osType, osVersion, accountName, siteName, groupName, version, fileSize, detectionDate, applicationInstallationDate, cpuCount, coreCount, osArch, applicationInstallationPath): The column to sort the results by. Example: "id". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `osVersions` [query, array]: Included OS versions +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationVendor` [query, string] **required**: Vendor +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `versions` [query, array]: Included application versions +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `osArchitectures` [query, array]: Included OS architectures +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -90,23 +90,23 @@ Export application inventory endpoints data to CSV. Required permissions: `Applications Page.view` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `applicationName` [query, string] **required** — Name -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `osVersions` [query, array] — Included OS versions -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationVendor` [query, string] **required** — Vendor -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `versions` [query, array] — Included application versions -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `osArchitectures` [query, array] — Included OS architectures -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `applicationName` [query, string] **required**: Name +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `osVersions` [query, array]: Included OS versions +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationVendor` [query, string] **required**: Vendor +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `versions` [query, array]: Included application versions +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `osArchitectures` [query, array]: Included OS architectures +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -119,19 +119,19 @@ Export application inventory data to CSV. Required permissions: `Applications Page.view` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `osVersions` [query, array] — Included OS versions -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `osVersion__contains` [query, array] — Free-text filter by os version (supports multiple values). Example: "Windows 7 ServicePack1". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `name__contains` [query, array] — Free-text filter by application name (supports multiple values). Example: "Office,Test". -- `vendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `osArchitectures` [query, array] — Included OS architectures -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `osVersions` [query, array]: Included OS versions +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `osVersion__contains` [query, array]: Free-text filter by os version (supports multiple values). Example: "Windows 7 ServicePack1". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `name__contains` [query, array]: Free-text filter by application name (supports multiple values). Example: "Office,Test". +- `vendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `osArchitectures` [query, array]: Included OS architectures +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -144,53 +144,53 @@ Get the CVE vulnerability data for each CVE. Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `riskUpdatedDate__gt` [query, string] — Significant CVE updates after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `detectionDate__gte` [query, string] — CVE detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `applicationNames` [query, array] — Included application names. Example: "Office 1.1,Test". -- `domain__contains` [query, array] — Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available for Singularity Vulnerability Management SKU. Example: "FUNCTIONAL,HIGH". -- `mitigationStatus` [query, array] — Filters by the application's mitigation status values.Available for Singularity Vulnerability Management SKU. Example: "Not mitigated,To be patched,On hold". -- `publishedDate__between` [query, string] — Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `riskScore__between` [query, string] — Risk score (inclusive). Available for Singularity Vulnerability Management SKU. Example: "5-8.9". -- `remediationLevels` [query, array] — Included remediation level values. Available for Singularity Vulnerability Management SKU. Example: "OFFICIAL_FIX,TEMPORARY_FIX". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `applicationVendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `publishedDate__gte` [query, string] — CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `sortBy` [query, string] (enum: id, accountId, siteId, cveId, endpointName, application, applicationVendor, baseScore, severity, daysDetected, detectionDate, publishedDate, lastScanDate, lastScanResult, nvdBaseScore, riskScore, exploitCodeMaturity, remediationLevel, reportConfidence, mitigationStatus) — The column to sort the results by. Example: "id". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available for Singularity Vulnerability Management SKU. Example: "EXPLOITED_UNKNOWN,YES". -- `riskUpdatedDate__lt` [query, string] — Significant CVE updates before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `severities` [query, array] — Included severities. Example: "CRITICAL,HIGH". -- `includeRemovals` [query, boolean] — Include also removed CVEs in the results -- `riskUpdatedDate__gte` [query, string] — Significant CVE updates after or at this timestamp. Recommended for fetching delta-changes. Example: "2018-02-27T04:49:26.257525Z". -- `osVersions` [query, array] — Included OS versions -- `analystVerdict` [query, array] — Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". -- `domains` [query, array] — Included network domains. Example: "mybusiness,workgroup". -- `publishedDate__lt` [query, string] — CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `publishedDate__gt` [query, string] — CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__lt` [query, string] — CVE detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__gt` [query, string] — CVE detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `detectionDate__lte` [query, string] — CVE detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for CVE detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `publishedDate__lte` [query, string] — CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `reportConfidence` [query, array] — Included report confidence values. Available for Singularity Vulnerability Management SKU. Example: "REASONABLE,CONFIRMED". -- `riskUpdatedDate__between` [query, string] — Significant CVE updates within this date range(format: -, inclusive). Example: "1514978890136-1514978650130". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `riskUpdatedDate__lte` [query, string] — Significant CVE updates before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `application__contains` [query, array] — Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `endpointTypes` [query, array] — Included endpoint types -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types -- `lastScanResults` [query, array] — Included last scan results. Example: "Succeeded". -- `daysFromCveDetection` [query, integer] — Days from CVE detection, e.g. 12 days or more. Example: "12". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `riskUpdatedDate__gt` [query, string]: Significant CVE updates after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `detectionDate__gte` [query, string]: CVE detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `applicationNames` [query, array]: Included application names. Example: "Office 1.1,Test". +- `domain__contains` [query, array]: Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available for Singularity Vulnerability Management SKU. Example: "FUNCTIONAL,HIGH". +- `mitigationStatus` [query, array]: Filters by the application's mitigation status values.Available for Singularity Vulnerability Management SKU. Example: "Not mitigated,To be patched,On hold". +- `publishedDate__between` [query, string]: Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `riskScore__between` [query, string]: Risk score (inclusive). Available for Singularity Vulnerability Management SKU. Example: "5-8.9". +- `remediationLevels` [query, array]: Included remediation level values. Available for Singularity Vulnerability Management SKU. Example: "OFFICIAL_FIX,TEMPORARY_FIX". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `applicationVendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `publishedDate__gte` [query, string]: CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `sortBy` [query, string] (enum: id, accountId, siteId, cveId, endpointName, application, applicationVendor, baseScore, severity, daysDetected, detectionDate, publishedDate, lastScanDate, lastScanResult, nvdBaseScore, riskScore, exploitCodeMaturity, remediationLevel, reportConfidence, mitigationStatus): The column to sort the results by. Example: "id". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available for Singularity Vulnerability Management SKU. Example: "EXPLOITED_UNKNOWN,YES". +- `riskUpdatedDate__lt` [query, string]: Significant CVE updates before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `severities` [query, array]: Included severities. Example: "CRITICAL,HIGH". +- `includeRemovals` [query, boolean]: Include also removed CVEs in the results +- `riskUpdatedDate__gte` [query, string]: Significant CVE updates after or at this timestamp. Recommended for fetching delta-changes. Example: "2018-02-27T04:49:26.257525Z". +- `osVersions` [query, array]: Included OS versions +- `analystVerdict` [query, array]: Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". +- `domains` [query, array]: Included network domains. Example: "mybusiness,workgroup". +- `publishedDate__lt` [query, string]: CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `publishedDate__gt` [query, string]: CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__lt` [query, string]: CVE detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__gt` [query, string]: CVE detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `detectionDate__lte` [query, string]: CVE detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for CVE detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `publishedDate__lte` [query, string]: CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `reportConfidence` [query, array]: Included report confidence values. Available for Singularity Vulnerability Management SKU. Example: "REASONABLE,CONFIRMED". +- `riskUpdatedDate__between` [query, string]: Significant CVE updates within this date range(format: -, inclusive). Example: "1514978890136-1514978650130". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `riskUpdatedDate__lte` [query, string]: Significant CVE updates before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `application__contains` [query, array]: Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `endpointTypes` [query, array]: Included endpoint types +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types +- `lastScanResults` [query, array]: Included last scan results. Example: "Succeeded". +- `daysFromCveDetection` [query, integer]: Days from CVE detection, e.g. 12 days or more. Example: "12". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,37 +203,37 @@ Get data for all applications. Available with Ranger Insights license. Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `highestSeverities` [query, array] — Included highest severities. Example: "CRITICAL,HIGH". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationTypes` [query, array] — Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". -- `mostCommonStatuses` [query, array] — Included most common status values. Available with Ranger Insights. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `remediationLevels` [query, array] — Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `sortBy` [query, string] (enum: name, vendor, highestRiskScore, highestNvdBaseScore, highestSeverity, exploitedInTheWild, exploitCodeMaturity, remediationLevel, detectionDate, daysDetected, versionCount, cveCount, endpointCount, applicationType, mostCommonStatus) — The column to sort the results by. Example: "id". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `domains` [query, array] — Included domains. -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `endpointTypes` [query, array] — Included endpoint types. Example: "desktop,laptop". -- `vendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `name__contains` [query, array] — Free-text filter by application name (supports multiple values). Example: "Office 1.1,Test". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types. Example: "windows,linux". -- `daysFromDetection` [query, integer] — Days from application detection, e.g. 12 days or more. Example: "12". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `highestSeverities` [query, array]: Included highest severities. Example: "CRITICAL,HIGH". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationTypes` [query, array]: Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". +- `mostCommonStatuses` [query, array]: Included most common status values. Available with Ranger Insights. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `remediationLevels` [query, array]: Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `sortBy` [query, string] (enum: name, vendor, highestRiskScore, highestNvdBaseScore, highestSeverity, exploitedInTheWild, exploitCodeMaturity, remediationLevel, detectionDate, daysDetected, versionCount, cveCount, endpointCount, applicationType, mostCommonStatus): The column to sort the results by. Example: "id". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `domains` [query, array]: Included domains. +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `endpointTypes` [query, array]: Included endpoint types. Example: "desktop,laptop". +- `vendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `name__contains` [query, array]: Free-text filter by application name (supports multiple values). Example: "Office 1.1,Test". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types. Example: "windows,linux". +- `daysFromDetection` [query, integer]: Days from application detection, e.g. 12 days or more. Example: "12". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -246,31 +246,31 @@ Export aggregated application data to CSV. Available with Ranger Insights licens Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `highestSeverities` [query, array] — Included highest severities. Example: "CRITICAL,HIGH". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationTypes` [query, array] — Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". -- `mostCommonStatuses` [query, array] — Included most common status values. Available with Ranger Insights. -- `remediationLevels` [query, array] — Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `domains` [query, array] — Included domains. -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `endpointTypes` [query, array] — Included endpoint types. Example: "desktop,laptop". -- `vendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `name__contains` [query, array] — Free-text filter by application name (supports multiple values). Example: "Office 1.1,Test". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types. Example: "windows,linux". -- `daysFromDetection` [query, integer] — Days from application detection, e.g. 12 days or more. Example: "12". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `highestSeverities` [query, array]: Included highest severities. Example: "CRITICAL,HIGH". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationTypes` [query, array]: Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". +- `mostCommonStatuses` [query, array]: Included most common status values. Available with Ranger Insights. +- `remediationLevels` [query, array]: Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `domains` [query, array]: Included domains. +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `endpointTypes` [query, array]: Included endpoint types. Example: "desktop,laptop". +- `vendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `name__contains` [query, array]: Free-text filter by application name (supports multiple values). Example: "Office 1.1,Test". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types. Example: "windows,linux". +- `daysFromDetection` [query, integer]: Days from application detection, e.g. 12 days or more. Example: "12". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -283,37 +283,37 @@ Get data for each version of all applications. Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `highestSeverities` [query, array] — Included highest severities. Example: "CRITICAL,HIGH". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationTypes` [query, array] — Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". -- `mostCommonStatuses` [query, array] — Included most common status values. Available with Ranger Insights. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `remediationLevels` [query, array] — Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `sortBy` [query, string] (enum: name, vendor, highestNvdBaseScore, highestSeverity, cveCount, endpointCount, detectionDate, daysDetected, highestRiskScore, exploitedInTheWild, exploitCodeMaturity, remediationLevel, mostCommonStatus, applicationType, endpointsWithoutTicket) — The column to sort the results by. Example: "id". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `domains` [query, array] — Included domains. -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `application__contains` [query, array] — Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `endpointTypes` [query, array] — Included endpoint types. Example: "desktop,laptop". -- `vendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types. Example: "windows,linux". -- `daysFromDetection` [query, integer] — Days from application detection, e.g. 12 days or more. Example: "12". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `highestSeverities` [query, array]: Included highest severities. Example: "CRITICAL,HIGH". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationTypes` [query, array]: Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". +- `mostCommonStatuses` [query, array]: Included most common status values. Available with Ranger Insights. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `remediationLevels` [query, array]: Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `sortBy` [query, string] (enum: name, vendor, highestNvdBaseScore, highestSeverity, cveCount, endpointCount, detectionDate, daysDetected, highestRiskScore, exploitedInTheWild, exploitCodeMaturity, remediationLevel, mostCommonStatus, applicationType, endpointsWithoutTicket): The column to sort the results by. Example: "id". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `domains` [query, array]: Included domains. +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `application__contains` [query, array]: Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `endpointTypes` [query, array]: Included endpoint types. Example: "desktop,laptop". +- `vendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types. Example: "windows,linux". +- `daysFromDetection` [query, integer]: Days from application detection, e.g. 12 days or more. Example: "12". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -326,31 +326,31 @@ Export application data to CSV. Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `highestSeverities` [query, array] — Included highest severities. Example: "CRITICAL,HIGH". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationTypes` [query, array] — Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". -- `mostCommonStatuses` [query, array] — Included most common status values. Available with Ranger Insights. -- `remediationLevels` [query, array] — Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `domains` [query, array] — Included domains. -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `application__contains` [query, array] — Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `endpointTypes` [query, array] — Included endpoint types. Example: "desktop,laptop". -- `vendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types. Example: "windows,linux". -- `daysFromDetection` [query, integer] — Days from application detection, e.g. 12 days or more. Example: "12". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `highestSeverities` [query, array]: Included highest severities. Example: "CRITICAL,HIGH". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationTypes` [query, array]: Application type. Available with Ranger Insights. Example: "A,p,p,l,i,c,a,t,i,o,n". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available with Ranger Insights. Example: "Functional,High". +- `mostCommonStatuses` [query, array]: Included most common status values. Available with Ranger Insights. +- `remediationLevels` [query, array]: Included remediation level values. Available with Ranger Insights. Example: "Official Fix,Temporary Fix". +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available with Ranger Insights. Example: "Unknown,Yes". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `domains` [query, array]: Included domains. +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `application__contains` [query, array]: Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `endpointTypes` [query, array]: Included endpoint types. Example: "desktop,laptop". +- `vendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types. Example: "windows,linux". +- `daysFromDetection` [query, integer]: Days from application detection, e.g. 12 days or more. Example: "12". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -363,32 +363,32 @@ Get CVE data for a specific application. Use applicationIds query parameter to i Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `applicationIds` [query, array] — Included application versions by id. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `applicationVendor` [query, string] — Application vendor -- `publishedDate__between` [query, string] — Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `applicationName` [query, string] — Application name -- `remediationLevels` [query, array] — Included remediation level values. Available with Ranger Insights. Example: "OFFICIAL_FIX,TEMPORARY_FIX". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `publishedDate__gte` [query, string] — CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `sortBy` [query, string] (enum: cveId, severity, nvdBaseScore, publishedDate, riskScore, exploitedInTheWild, exploitCodeMaturity, remediationLevel, reportConfidence) — The column to sort the results by. Example: "id". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available with Ranger Insights. Example: "EXPLOITED_UNKNOWN,YES". -- `severities` [query, array] — Included severities. Example: "CRITICAL,HIGH". -- `publishedDate__lt` [query, string] — CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `publishedDate__gt` [query, string] — CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `publishedDate__lte` [query, string] — CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `reportConfidence` [query, array] — Included report confidence values. Available with Ranger Insights. Example: "REASONABLE,CONFIRMED". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `applicationVersions` [query, array] — Included application versions -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `analystVerdict` [query, array] — Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available with Ranger Insights. Example: "FUNCTIONAL,HIGH". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `applicationIds` [query, array]: Included application versions by id. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `applicationVendor` [query, string]: Application vendor +- `publishedDate__between` [query, string]: Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `applicationName` [query, string]: Application name +- `remediationLevels` [query, array]: Included remediation level values. Available with Ranger Insights. Example: "OFFICIAL_FIX,TEMPORARY_FIX". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `publishedDate__gte` [query, string]: CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `sortBy` [query, string] (enum: cveId, severity, nvdBaseScore, publishedDate, riskScore, exploitedInTheWild, exploitCodeMaturity, remediationLevel, reportConfidence): The column to sort the results by. Example: "id". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available with Ranger Insights. Example: "EXPLOITED_UNKNOWN,YES". +- `severities` [query, array]: Included severities. Example: "CRITICAL,HIGH". +- `publishedDate__lt` [query, string]: CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `publishedDate__gt` [query, string]: CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `publishedDate__lte` [query, string]: CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `reportConfidence` [query, array]: Included report confidence values. Available with Ranger Insights. Example: "REASONABLE,CONFIRMED". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `applicationVersions` [query, array]: Included application versions +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `analystVerdict` [query, array]: Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available with Ranger Insights. Example: "FUNCTIONAL,HIGH". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -401,26 +401,26 @@ Export CVE data to CSV. Use applicationIds query parameter to include a single a Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `applicationIds` [query, array] — Included application versions by id. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `applicationVendor` [query, string] — Application vendor -- `publishedDate__between` [query, string] — Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `applicationName` [query, string] — Application name -- `remediationLevels` [query, array] — Included remediation level values. Available with Ranger Insights. Example: "OFFICIAL_FIX,TEMPORARY_FIX". -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `publishedDate__gte` [query, string] — CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available with Ranger Insights. Example: "EXPLOITED_UNKNOWN,YES". -- `severities` [query, array] — Included severities. Example: "CRITICAL,HIGH". -- `publishedDate__lt` [query, string] — CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `publishedDate__gt` [query, string] — CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `publishedDate__lte` [query, string] — CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `reportConfidence` [query, array] — Included report confidence values. Available with Ranger Insights. Example: "REASONABLE,CONFIRMED". -- `applicationVersions` [query, array] — Included application versions -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `analystVerdict` [query, array] — Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available with Ranger Insights. Example: "FUNCTIONAL,HIGH". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `applicationIds` [query, array]: Included application versions by id. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `applicationVendor` [query, string]: Application vendor +- `publishedDate__between` [query, string]: Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `applicationName` [query, string]: Application name +- `remediationLevels` [query, array]: Included remediation level values. Available with Ranger Insights. Example: "OFFICIAL_FIX,TEMPORARY_FIX". +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `publishedDate__gte` [query, string]: CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available with Ranger Insights. Example: "EXPLOITED_UNKNOWN,YES". +- `severities` [query, array]: Included severities. Example: "CRITICAL,HIGH". +- `publishedDate__lt` [query, string]: CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `publishedDate__gt` [query, string]: CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `publishedDate__lte` [query, string]: CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `reportConfidence` [query, array]: Included report confidence values. Available with Ranger Insights. Example: "REASONABLE,CONFIRMED". +- `applicationVersions` [query, array]: Included application versions +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `analystVerdict` [query, array]: Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available with Ranger Insights. Example: "FUNCTIONAL,HIGH". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -433,44 +433,44 @@ Get a list of all endpoints installed with a specific application that contains Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `statusMessage__contains` [query, array] — Free-text filter by status message (supports multiple values). Available with Ranger Insights. Example: "assigned to john,top priority". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `applicationIds` [query, array] — Included application versions by id. Example: "225494730938493804,225494730938493915". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `applicationVendor` [query, string] — Application vendor -- `domain__contains` [query, array] — Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". -- `daysToMitigation__between` [query, string] — Date range for days left to mitigation. Available with Ranger Insights when using ticket integration. Example: "1-30". -- `statuses` [query, array] — Included statuses. Available with Ranger Insights. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `applicationName` [query, string] — Application name -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `sortBy` [query, string] (enum: name, osType, osVersion, endpointType, account, site, group, domain, detectionDate, daysDetected, applicationVersion, lastScanDate, lastScanResult, status, daysToMitigation) — The column to sort the results by. Example: "id". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `lastScanDate__lt` [query, string] — Last scan date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `osVersions` [query, array] — Included OS versions -- `domains` [query, array] — Included endpoint domains -- `lastScanDate__gt` [query, string] — Last scan date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `endpointId__contains` [query, array] — Free-text filter by endpoint id (supports multiple values) -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `applicationVersions` [query, array] — Included application versions -- `ticketId__contains` [query, array] — Free-text filter by ticket id. Available with Ranger Insights when using ticket integration. Example: "ABC-123,ABCD-100". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `lastScanDate__lte` [query, string] — Last scan date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastScanDate__between` [query, string] — Date range for last scan date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `endpointTypes` [query, array] — Included endpoint types -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types -- `lastScanResults` [query, array] — Included last scan results. Example: "Succeeded". -- `daysFromDetection` [query, integer] — Days from application detection, e.g. 12 days or more. Example: "12". -- `lastScanDate__gte` [query, string] — Last scan date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `statusMessage__contains` [query, array]: Free-text filter by status message (supports multiple values). Available with Ranger Insights. Example: "assigned to john,top priority". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `applicationIds` [query, array]: Included application versions by id. Example: "225494730938493804,225494730938493915". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `applicationVendor` [query, string]: Application vendor +- `domain__contains` [query, array]: Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". +- `daysToMitigation__between` [query, string]: Date range for days left to mitigation. Available with Ranger Insights when using ticket integration. Example: "1-30". +- `statuses` [query, array]: Included statuses. Available with Ranger Insights. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `applicationName` [query, string]: Application name +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `sortBy` [query, string] (enum: name, osType, osVersion, endpointType, account, site, group, domain, detectionDate, daysDetected, applicationVersion, lastScanDate, lastScanResult, status, daysToMitigation): The column to sort the results by. Example: "id". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `lastScanDate__lt` [query, string]: Last scan date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `osVersions` [query, array]: Included OS versions +- `domains` [query, array]: Included endpoint domains +- `lastScanDate__gt` [query, string]: Last scan date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `endpointId__contains` [query, array]: Free-text filter by endpoint id (supports multiple values) +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `applicationVersions` [query, array]: Included application versions +- `ticketId__contains` [query, array]: Free-text filter by ticket id. Available with Ranger Insights when using ticket integration. Example: "ABC-123,ABCD-100". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `lastScanDate__lte` [query, string]: Last scan date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastScanDate__between` [query, string]: Date range for last scan date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `endpointTypes` [query, array]: Included endpoint types +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types +- `lastScanResults` [query, array]: Included last scan results. Example: "Succeeded". +- `daysFromDetection` [query, integer]: Days from application detection, e.g. 12 days or more. Example: "12". +- `lastScanDate__gte` [query, string]: Last scan date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -483,38 +483,38 @@ Export endpoint data to CSV. Use applicationIds query parameter to include a sin Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `statusMessage__contains` [query, array] — Free-text filter by status message (supports multiple values). Available with Ranger Insights. Example: "assigned to john,top priority". -- `applicationIds` [query, array] — Included application versions by id. Example: "225494730938493804,225494730938493915". -- `detectionDate__gte` [query, string] — Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `applicationVendor` [query, string] — Application vendor -- `domain__contains` [query, array] — Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". -- `daysToMitigation__between` [query, string] — Date range for days left to mitigation. Available with Ranger Insights when using ticket integration. Example: "1-30". -- `statuses` [query, array] — Included statuses. Available with Ranger Insights. -- `applicationName` [query, string] — Application name -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `endpointUuid__contains` [query, array] — Free-text filter by endpoint uuid (supports multiple values) -- `lastScanDate__lt` [query, string] — Last scan date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `osVersions` [query, array] — Included OS versions -- `domains` [query, array] — Included endpoint domains -- `lastScanDate__gt` [query, string] — Last scan date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__lt` [query, string] — Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `endpointId__contains` [query, array] — Free-text filter by endpoint id (supports multiple values) -- `detectionDate__gt` [query, string] — Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `applicationVersions` [query, array] — Included application versions -- `ticketId__contains` [query, array] — Free-text filter by ticket id. Available with Ranger Insights when using ticket integration. Example: "ABC-123,ABCD-100". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `lastScanDate__lte` [query, string] — Last scan date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastScanDate__between` [query, string] — Date range for last scan date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `endpointTypes` [query, array] — Included endpoint types -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types -- `lastScanResults` [query, array] — Included last scan results. Example: "Succeeded". -- `daysFromDetection` [query, integer] — Days from application detection, e.g. 12 days or more. Example: "12". -- `lastScanDate__gte` [query, string] — Last scan date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `statusMessage__contains` [query, array]: Free-text filter by status message (supports multiple values). Available with Ranger Insights. Example: "assigned to john,top priority". +- `applicationIds` [query, array]: Included application versions by id. Example: "225494730938493804,225494730938493915". +- `detectionDate__gte` [query, string]: Application detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `applicationVendor` [query, string]: Application vendor +- `domain__contains` [query, array]: Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". +- `daysToMitigation__between` [query, string]: Date range for days left to mitigation. Available with Ranger Insights when using ticket integration. Example: "1-30". +- `statuses` [query, array]: Included statuses. Available with Ranger Insights. +- `applicationName` [query, string]: Application name +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `endpointUuid__contains` [query, array]: Free-text filter by endpoint uuid (supports multiple values) +- `lastScanDate__lt` [query, string]: Last scan date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `osVersions` [query, array]: Included OS versions +- `domains` [query, array]: Included endpoint domains +- `lastScanDate__gt` [query, string]: Last scan date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__lt` [query, string]: Application detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `endpointId__contains` [query, array]: Free-text filter by endpoint id (supports multiple values) +- `detectionDate__gt` [query, string]: Application detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for application detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: Application detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `applicationVersions` [query, array]: Included application versions +- `ticketId__contains` [query, array]: Free-text filter by ticket id. Available with Ranger Insights when using ticket integration. Example: "ABC-123,ABCD-100". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `lastScanDate__lte` [query, string]: Last scan date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastScanDate__between` [query, string]: Date range for last scan date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `endpointTypes` [query, array]: Included endpoint types +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types +- `lastScanResults` [query, array]: Included last scan results. Example: "Succeeded". +- `daysFromDetection` [query, integer]: Days from application detection, e.g. 12 days or more. Example: "12". +- `lastScanDate__gte` [query, string]: Last scan date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -527,47 +527,47 @@ Export risks data to CSV. Required permissions: `Applications Page.viewRisks` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `riskUpdatedDate__gt` [query, string] — Significant CVE updates after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__gte` [query, string] — CVE detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `applicationNames` [query, array] — Included application names. Example: "Office 1.1,Test". -- `domain__contains` [query, array] — Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". -- `exploitCodeMaturity` [query, array] — Included exploit code maturity values. Available for Singularity Vulnerability Management SKU. Example: "FUNCTIONAL,HIGH". -- `mitigationStatus` [query, array] — Filters by the application's mitigation status values.Available for Singularity Vulnerability Management SKU. Example: "Not mitigated,To be patched,On hold". -- `publishedDate__between` [query, string] — Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `riskScore__between` [query, string] — Risk score (inclusive). Available for Singularity Vulnerability Management SKU. Example: "5-8.9". -- `remediationLevels` [query, array] — Included remediation level values. Available for Singularity Vulnerability Management SKU. Example: "OFFICIAL_FIX,TEMPORARY_FIX". -- `applicationVendor__contains` [query, array] — Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". -- `csvDelimiter` [query, string] (enum: ,, ;) — "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". -- `publishedDate__gte` [query, string] — CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `includeRemovals` [query, boolean] — Include also removed CVEs in the results -- `exploitedInTheWild` [query, array] — Included exploited in the wild values. Available for Singularity Vulnerability Management SKU. Example: "EXPLOITED_UNKNOWN,YES". -- `riskUpdatedDate__lt` [query, string] — Significant CVE updates before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `severities` [query, array] — Included severities. Example: "CRITICAL,HIGH". -- `riskUpdatedDate__gte` [query, string] — Significant CVE updates after or at this timestamp. Recommended for fetching delta-changes. Example: "2018-02-27T04:49:26.257525Z". -- `osVersions` [query, array] — Included OS versions -- `analystVerdict` [query, array] — Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". -- `domains` [query, array] — Included network domains. Example: "mybusiness,workgroup". -- `publishedDate__lt` [query, string] — CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `publishedDate__gt` [query, string] — CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__lt` [query, string] — CVE detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__gt` [query, string] — CVE detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `detectionDate__between` [query, string] — Date range for CVE detection date(format: -, inclusive). Example: "1514978890136-1514978650130". -- `detectionDate__lte` [query, string] — CVE detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `publishedDate__lte` [query, string] — CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `reportConfidence` [query, array] — Included report confidence values. Available for Singularity Vulnerability Management SKU. Example: "REASONABLE,CONFIRMED". -- `riskUpdatedDate__between` [query, string] — Significant CVE updates within this date range(format: -, inclusive). Example: "1514978890136-1514978650130". -- `endpointName__contains` [query, array] — Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". -- `riskUpdatedDate__lte` [query, string] — Significant CVE updates before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `vendors` [query, array] — Included vendors. Example: "Microsoft,Apple". -- `application__contains` [query, array] — Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". -- `cveId__contains` [query, array] — Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". -- `endpointTypes` [query, array] — Included endpoint types -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `osTypes` [query, array] — Included OS types -- `lastScanResults` [query, array] — Included last scan results. Example: "Succeeded". -- `daysFromCveDetection` [query, integer] — Days from CVE detection, e.g. 12 days or more. Example: "12". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `riskUpdatedDate__gt` [query, string]: Significant CVE updates after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__gte` [query, string]: CVE detection date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `applicationNames` [query, array]: Included application names. Example: "Office 1.1,Test". +- `domain__contains` [query, array]: Free-text filter by domain (supports multiple values). Example: "mybusiness,workgroup". +- `exploitCodeMaturity` [query, array]: Included exploit code maturity values. Available for Singularity Vulnerability Management SKU. Example: "FUNCTIONAL,HIGH". +- `mitigationStatus` [query, array]: Filters by the application's mitigation status values.Available for Singularity Vulnerability Management SKU. Example: "Not mitigated,To be patched,On hold". +- `publishedDate__between` [query, string]: Date range for CVE publish date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `riskScore__between` [query, string]: Risk score (inclusive). Available for Singularity Vulnerability Management SKU. Example: "5-8.9". +- `remediationLevels` [query, array]: Included remediation level values. Available for Singularity Vulnerability Management SKU. Example: "OFFICIAL_FIX,TEMPORARY_FIX". +- `applicationVendor__contains` [query, array]: Free-text filter by vendor (supports multiple values). Example: "Microsoft,Apple". +- `csvDelimiter` [query, string] (enum: ,, ;): "Optionally specify character to be used as CSV delimiter. Defaults to ",". Example: ",". +- `publishedDate__gte` [query, string]: CVE published date after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `includeRemovals` [query, boolean]: Include also removed CVEs in the results +- `exploitedInTheWild` [query, array]: Included exploited in the wild values. Available for Singularity Vulnerability Management SKU. Example: "EXPLOITED_UNKNOWN,YES". +- `riskUpdatedDate__lt` [query, string]: Significant CVE updates before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `severities` [query, array]: Included severities. Example: "CRITICAL,HIGH". +- `riskUpdatedDate__gte` [query, string]: Significant CVE updates after or at this timestamp. Recommended for fetching delta-changes. Example: "2018-02-27T04:49:26.257525Z". +- `osVersions` [query, array]: Included OS versions +- `analystVerdict` [query, array]: Include Default(not edited)/ False Positives / Added CVEs for Vulnerabilities. Example: "Default,False Positive,Added CVE". +- `domains` [query, array]: Included network domains. Example: "mybusiness,workgroup". +- `publishedDate__lt` [query, string]: CVE published date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `publishedDate__gt` [query, string]: CVE published date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__lt` [query, string]: CVE detection date before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__gt` [query, string]: CVE detection date after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `detectionDate__between` [query, string]: Date range for CVE detection date(format: -, inclusive). Example: "1514978890136-1514978650130". +- `detectionDate__lte` [query, string]: CVE detection date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `publishedDate__lte` [query, string]: CVE published date before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `reportConfidence` [query, array]: Included report confidence values. Available for Singularity Vulnerability Management SKU. Example: "REASONABLE,CONFIRMED". +- `riskUpdatedDate__between` [query, string]: Significant CVE updates within this date range(format: -, inclusive). Example: "1514978890136-1514978650130". +- `endpointName__contains` [query, array]: Free-text filter by endpoint name (supports multiple values). Example: "Office,Test". +- `riskUpdatedDate__lte` [query, string]: Significant CVE updates before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `vendors` [query, array]: Included vendors. Example: "Microsoft,Apple". +- `application__contains` [query, array]: Free-text filter by application name and version (supports multiple values). Example: "Office 1.1,Test". +- `cveId__contains` [query, array]: Free-text filter by CVE id (supports multiple values). Example: "CVE-1234-5678". +- `endpointTypes` [query, array]: Included endpoint types +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `osTypes` [query, array]: Included OS types +- `lastScanResults` [query, array]: Included last scan results. Example: "Succeeded". +- `daysFromCveDetection` [query, integer]: Days from CVE detection, e.g. 12 days or more. Example: "12". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -580,6 +580,6 @@ Initiate application vulnerability scan. Required permissions: `Applications Page.scanVulnerabilities` Parameters: -- `body` [body, v2_1.application_management.application_management_schemas_ScanPostSchema] — +- `body` [body, v2_1.application_management.application_management_schemas_ScanPostSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management_Settings.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management_Settings.md index 2c2d15a..fee2292 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management_Settings.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Management_Settings.md @@ -11,9 +11,9 @@ Get Application Management settings. Required permissions: `Applications Page.view` Parameters: -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `groupIds` [query, array] — Single Group ID to filter by. Example: "225494730938493804". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `groupIds` [query, array]: Single Group ID to filter by. Example: "225494730938493804". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". Responses: 403 Insufficient permissions, 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -25,6 +25,6 @@ Update Application Management Settings Optional permissions: `Applications Page.scanVulnerabilities, Applications Page.changeVulnerabilitiesScanPolicy` Parameters: -- `body` [body, v2_1.application_management.settings_filters_ApplicationManagementSettingsSchema] — +- `body` [body, v2_1.application_management.settings_filters_ApplicationManagementSettingsSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk.md index d751a4a..aebdf91 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk.md @@ -11,26 +11,26 @@ Export the list of applications installed on endpoints with Application Risk-ena Required permissions: `Applications Page.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter by application IDs. Example: "225494730938493804,225494730938493915". -- `osTypes` [query, array] — Filter by OS types. Example: "macos". -- `osTypesNin` [query, array] — Filter not by OS types. Example: "macos". -- `agentMachineTypes` [query, array] — Filter by endpoint machine types. Example: "unknown". -- `agentMachineTypesNin` [query, array] — Filter not by endpoint machine types. Example: "unknown". -- `installedAt__between` [query, string] — Filter by installation date range -- `types` [query, array] — Filter by application types. Example: "app". -- `typesNin` [query, array] — Filter not by application types. Example: "app". -- `riskLevels` [query, array] — Filter by risk. Example: "none". -- `riskLevelsNin` [query, array] — Filter not by risk. Example: "none". -- `size__between` [query, string] — Filter by application size range (bytes). Example: "1024-104856". -- `agentIsDecommissioned` [query, array] — Include active agents, decommissioned or both. Example: "True,False". -- `name__contains` [query, array] — Free-text filter by application name (supports multiple values). Example: "calc". -- `version__contains` [query, array] — Free-text filter by application version (supports multiple values). Example: "1.22.333,build". -- `publisher__contains` [query, array] — Free-text filter by application publisher (supports multiple values). Example: "Sentinel". -- `agentComputerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `agentUuid__contains` [query, array] — Free-text filter by agent UUID (supports multiple values). Example: "e92-01928,b055". -- `agentOsVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter by application IDs. Example: "225494730938493804,225494730938493915". +- `osTypes` [query, array]: Filter by OS types. Example: "macos". +- `osTypesNin` [query, array]: Filter not by OS types. Example: "macos". +- `agentMachineTypes` [query, array]: Filter by endpoint machine types. Example: "unknown". +- `agentMachineTypesNin` [query, array]: Filter not by endpoint machine types. Example: "unknown". +- `installedAt__between` [query, string]: Filter by installation date range +- `types` [query, array]: Filter by application types. Example: "app". +- `typesNin` [query, array]: Filter not by application types. Example: "app". +- `riskLevels` [query, array]: Filter by risk. Example: "none". +- `riskLevelsNin` [query, array]: Filter not by risk. Example: "none". +- `size__between` [query, string]: Filter by application size range (bytes). Example: "1024-104856". +- `agentIsDecommissioned` [query, array]: Include active agents, decommissioned or both. Example: "True,False". +- `name__contains` [query, array]: Free-text filter by application name (supports multiple values). Example: "calc". +- `version__contains` [query, array]: Free-text filter by application version (supports multiple values). Example: "1.22.333,build". +- `publisher__contains` [query, array]: Free-text filter by application publisher (supports multiple values). Example: "Sentinel". +- `agentComputerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `agentUuid__contains` [query, array]: Free-text filter by agent UUID (supports multiple values). Example: "e92-01928,b055". +- `agentOsVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk_Deprecated.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk_Deprecated.md index 7ee4004..06bb856 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk_Deprecated.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Application_Risk_Deprecated.md @@ -11,34 +11,34 @@ Get the applications, and their data (such as risk level), installed on endpoint Required permissions: `Applications Page.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, installedAt, type, name, publisher, version, size, agentComputerName, riskLevel, createdAt, updatedAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter by application IDs. Example: "225494730938493804,225494730938493915". -- `osTypes` [query, array] — Filter by OS types. Example: "macos". -- `osTypesNin` [query, array] — Filter not by OS types. Example: "macos". -- `agentMachineTypes` [query, array] — Filter by endpoint machine types. Example: "unknown". -- `agentMachineTypesNin` [query, array] — Filter not by endpoint machine types. Example: "unknown". -- `installedAt__between` [query, string] — Filter by installation date range -- `types` [query, array] — Filter by application types. Example: "app". -- `typesNin` [query, array] — Filter not by application types. Example: "app". -- `riskLevels` [query, array] — Filter by risk. Example: "none". -- `riskLevelsNin` [query, array] — Filter not by risk. Example: "none". -- `size__between` [query, string] — Filter by application size range (bytes). Example: "1024-104856". -- `agentIsDecommissioned` [query, array] — Include active agents, decommissioned or both. Example: "True,False". -- `name__contains` [query, array] — Free-text filter by application name (supports multiple values). Example: "calc". -- `version__contains` [query, array] — Free-text filter by application version (supports multiple values). Example: "1.22.333,build". -- `publisher__contains` [query, array] — Free-text filter by application publisher (supports multiple values). Example: "Sentinel". -- `agentComputerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `agentUuid__contains` [query, array] — Free-text filter by agent UUID (supports multiple values). Example: "e92-01928,b055". -- `agentOsVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, installedAt, type, name, publisher, version, size, agentComputerName, riskLevel, createdAt, updatedAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter by application IDs. Example: "225494730938493804,225494730938493915". +- `osTypes` [query, array]: Filter by OS types. Example: "macos". +- `osTypesNin` [query, array]: Filter not by OS types. Example: "macos". +- `agentMachineTypes` [query, array]: Filter by endpoint machine types. Example: "unknown". +- `agentMachineTypesNin` [query, array]: Filter not by endpoint machine types. Example: "unknown". +- `installedAt__between` [query, string]: Filter by installation date range +- `types` [query, array]: Filter by application types. Example: "app". +- `typesNin` [query, array]: Filter not by application types. Example: "app". +- `riskLevels` [query, array]: Filter by risk. Example: "none". +- `riskLevelsNin` [query, array]: Filter not by risk. Example: "none". +- `size__between` [query, string]: Filter by application size range (bytes). Example: "1024-104856". +- `agentIsDecommissioned` [query, array]: Include active agents, decommissioned or both. Example: "True,False". +- `name__contains` [query, array]: Free-text filter by application name (supports multiple values). Example: "calc". +- `version__contains` [query, array]: Free-text filter by application version (supports multiple values). Example: "1.22.333,build". +- `publisher__contains` [query, array]: Free-text filter by application publisher (supports multiple values). Example: "Sentinel". +- `agentComputerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `agentUuid__contains` [query, array]: Free-text filter by agent UUID (supports multiple values). Example: "e92-01928,b055". +- `agentOsVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -51,26 +51,26 @@ Get known CVEs for applications that are installed on endpoints with Application Required permissions: `Applications Page.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, publishedAt, agentId, applicationId) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter by internal CVE IDs. Example: "225494730938493804,225494730938493915". -- `cveIds` [query, array] — Filter by global CVE ids. Example: "CVE-2018-3182,CVE-2018-1087". -- `applicationIds` [query, array] — Filter by application IDs. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lt` [query, string] — Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, publishedAt, agentId, applicationId): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter by internal CVE IDs. Example: "225494730938493804,225494730938493915". +- `cveIds` [query, array]: Filter by global CVE ids. Example: "CVE-2018-3182,CVE-2018-1087". +- `applicationIds` [query, array]: Filter by application IDs. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lt` [query, string]: Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Auto_Upgrade_Policy.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Auto_Upgrade_Policy.md index 5265b12..280fb64 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Auto_Upgrade_Policy.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Auto_Upgrade_Policy.md @@ -11,8 +11,8 @@ Get the number of all policies for each OS from the given scope and the inherite Required permissions: `Auto-Upgrade Policy.view` Parameters: -- `scopeLevel` [query, string] **required** — Scope level, one of 'account', 'group', 'site' or 'tenant' -- `scopeId` [query, string] — Scope ID +- `scopeLevel` [query, string] **required**: Scope level, one of 'account', 'group', 'site' or 'tenant' +- `scopeId` [query, string]: Scope ID Responses: 200 Success, 400 Bad request @@ -25,10 +25,10 @@ Get Available Packages Required permissions: `Auto-Upgrade Policy.view` Parameters: -- `scopeLevel` [query, string] **required** — Scope level, one of 'account', 'group', 'site' or 'tenant' -- `scopeId` [query, string] — Scope ID -- `osType` [query, string] **required** — OS type, one of 'linux', 'macos' or 'windows' -- `displayName__contains` [query, string] — Partially match the name of the package, e.g. '22.1 GA' +- `scopeLevel` [query, string] **required**: Scope level, one of 'account', 'group', 'site' or 'tenant' +- `scopeId` [query, string]: Scope ID +- `osType` [query, string] **required**: OS type, one of 'linux', 'macos' or 'windows' +- `displayName__contains` [query, string]: Partially match the name of the package, e.g. '22.1 GA' Responses: 200 Success, 400 Bad request @@ -39,7 +39,7 @@ Responses: 200 Success, 400 Bad request Has policy Parameters: -- `payload` [body, v2_1.models.HasPoliciesRequest] **required** — Policy payload +- `payload` [body, v2_1.models.HasPoliciesRequest] **required**: Policy payload Responses: 200 Success, 400 Bad request @@ -52,13 +52,13 @@ Get paginated and ordered parent policies by a given scope Required permissions: `Auto-Upgrade Policy.view` Parameters: -- `scopeLevel` [query, string] **required** — Scope level, one of 'account', 'group', 'site' or 'tenant' -- `scopeId` [query, string] — Scope ID -- `osType` [query, string] **required** — OS type, one of 'linux', 'macos' or 'windows' -- `limit` [query, integer] **required** — Limit number of returned items. Should be more than 1. Example: '10'. -- `skip` [query, integer] **required** — Skip first number of items. Example: '0'. -- `sortBy` [query, string] **required** — The column to sort the results by. Example: 'priority'. -- `sortOrder` [query, string] **required** — Sort direction. Could be 'asc' or 'desc'. +- `scopeLevel` [query, string] **required**: Scope level, one of 'account', 'group', 'site' or 'tenant' +- `scopeId` [query, string]: Scope ID +- `osType` [query, string] **required**: OS type, one of 'linux', 'macos' or 'windows' +- `limit` [query, integer] **required**: Limit number of returned items. Should be more than 1. Example: '10'. +- `skip` [query, integer] **required**: Skip first number of items. Example: '0'. +- `sortBy` [query, string] **required**: The column to sort the results by. Example: 'priority'. +- `sortOrder` [query, string] **required**: Sort direction. Could be 'asc' or 'desc'. Responses: 200 Success, 400 Bad request @@ -71,13 +71,13 @@ Get paginated and ordered policies by a given scope Required permissions: `Auto-Upgrade Policy.view` Parameters: -- `scopeLevel` [query, string] **required** — Scope level, one of 'account', 'group', 'site' or 'tenant' -- `scopeId` [query, string] — Scope ID -- `osType` [query, string] **required** — OS type, one of 'linux', 'macos' or 'windows' -- `limit` [query, integer] **required** — Limit number of returned items. Should be more than 1. Example: '10' -- `skip` [query, integer] **required** — Skip first number of items. Example: '0'. -- `sortBy` [query, string] **required** — The column to sort the results by. Example: 'priority'. -- `sortOrder` [query, string] **required** — Sort direction. Could be 'asc' or 'desc'. +- `scopeLevel` [query, string] **required**: Scope level, one of 'account', 'group', 'site' or 'tenant' +- `scopeId` [query, string]: Scope ID +- `osType` [query, string] **required**: OS type, one of 'linux', 'macos' or 'windows' +- `limit` [query, integer] **required**: Limit number of returned items. Should be more than 1. Example: '10' +- `skip` [query, integer] **required**: Skip first number of items. Example: '0'. +- `sortBy` [query, string] **required**: The column to sort the results by. Example: 'priority'. +- `sortOrder` [query, string] **required**: Sort direction. Could be 'asc' or 'desc'. Responses: 200 Success, 400 Bad request @@ -90,9 +90,9 @@ Deactivate all policies Required permissions: `Auto-Upgrade Policy.disableAllPolicies` Parameters: -- `scopeLevel` [query, string] **required** — Scope level, one of 'account', 'group', 'site' or 'tenant' -- `scopeId` [query, string] — Scope ID -- `osType` [query, string] **required** — OS type, one of 'linux', 'macos' or 'windows' +- `scopeLevel` [query, string] **required**: Scope level, one of 'account', 'group', 'site' or 'tenant' +- `scopeId` [query, string]: Scope ID +- `osType` [query, string] **required**: OS type, one of 'linux', 'macos' or 'windows' Responses: 200 Success, 400 Bad request @@ -105,8 +105,8 @@ Get the number of policies for each OS, for a given scope level and id Required permissions: `Auto-Upgrade Policy.view` Parameters: -- `scopeLevel` [query, string] **required** — Scope level, one of 'account', 'group', 'site' or 'tenant' -- `scopeId` [query, string] — Scope ID +- `scopeLevel` [query, string] **required**: Scope level, one of 'account', 'group', 'site' or 'tenant' +- `scopeId` [query, string]: Scope ID Responses: 200 Success, 400 Bad request @@ -119,7 +119,7 @@ Add policy Required permissions: `Auto-Upgrade Policy.create` Parameters: -- `payload` [body, v2_1.models.Policy] **required** — Policy payload +- `payload` [body, v2_1.models.Policy] **required**: Policy payload Responses: 200 Success, 400 Bad request @@ -132,8 +132,8 @@ Perform action on a certain policy Required permissions: `Auto-Upgrade Policy.policyAction` Parameters: -- `payload` [body, v2_1.models.EndpointActionRequest] **required** — Policy payload -- `policyid` [path, string] **required** — Policy id +- `payload` [body, v2_1.models.EndpointActionRequest] **required**: Policy payload +- `policyid` [path, string] **required**: Policy id Responses: 200 Success, 400 Bad request @@ -146,8 +146,8 @@ Update existing policy Required permissions: `Auto-Upgrade Policy.edit` Parameters: -- `payload` [body, v2_1.models.CreatePolicyRequest] **required** — Policy payload -- `policyid` [path, string] **required** — Policy id +- `payload` [body, v2_1.models.CreatePolicyRequest] **required**: Policy payload +- `policyid` [path, string] **required**: Policy id Responses: 200 Success, 400 Bad request @@ -160,7 +160,7 @@ Reset the number of times an Agent upgrade will be retried if the original upgra Required permissions: `Auto-Upgrade Policy.edit` Parameters: -- `policyid` [path, string] **required** — Policy ID +- `policyid` [path, string] **required**: Policy ID Responses: 200 Success, 400 Bad request @@ -173,7 +173,7 @@ Reorder policies Required permissions: `Auto-Upgrade Policy.edit` Parameters: -- `payload` [body, v2_1.models.ReorderPolicyRequest] **required** — Policy payload +- `payload` [body, v2_1.models.ReorderPolicyRequest] **required**: Policy payload Responses: 200 Success, 400 Bad request @@ -186,6 +186,6 @@ Set Scope Inheriting Required permissions: `Auto-Upgrade Policy.edit` Parameters: -- `payload` [body, v2_1.models.ScopeInheritanceRequest] **required** — payload +- `payload` [body, v2_1.models.ScopeInheritanceRequest] **required**: payload Responses: 200 Success, 400 Bad request diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Funnel.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Funnel.md index 31fb83c..b4d4bfc 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Funnel.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Funnel.md @@ -11,8 +11,8 @@ Get the AWS assume role external ID. Required permissions: `Cloud Funnel.view` Parameters: -- `accountId` [query, string] — Account id. Example: "225494730938493804". -- `siteId` [query, string] — Site id. Example: "225494730938493804". +- `accountId` [query, string]: Account id. Example: "225494730938493804". +- `siteId` [query, string]: Site id. Example: "225494730938493804". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -25,7 +25,7 @@ Get estimate size of events in the bucket. You need the estimator ID which can b Required permissions: `Cloud Funnel.view` Parameters: -- `estimatorId` [query, string] **required** — Estimator query id. +- `estimatorId` [query, string] **required**: Estimator query id. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -38,7 +38,7 @@ Create estimator ID. This is needed to run the API "Get Estimate Size Of Events" Required permissions: `Cloud Funnel.view` Parameters: -- `body` [body, v2_1.cloud_funnel.schemas_InitEstimatorSchema] — +- `body` [body, v2_1.cloud_funnel.schemas_InitEstimatorSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -51,7 +51,7 @@ Deletes cloud funnel onboarding rule. Required permissions: `Cloud Funnel.delete` Parameters: -- `body` [body, v2_1.cloud_funnel.schemas_OnboardingDeleteSchema] — +- `body` [body, v2_1.cloud_funnel.schemas_OnboardingDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -64,8 +64,8 @@ Gets cloud funnel onboarding rule details Required permissions: `Cloud Funnel.view` Parameters: -- `accountId` [query, string] — Account id. Example: "225494730938493804". -- `siteId` [query, string] — Site id. Example: "225494730938493804". +- `accountId` [query, string]: Account id. Example: "225494730938493804". +- `siteId` [query, string]: Site id. Example: "225494730938493804". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -78,7 +78,7 @@ Post onboarding cloud funnel rule. Required permissions: `Cloud Funnel.create, Cloud Funnel.edit` Parameters: -- `body` [body, v2_1.cloud_funnel.schemas_OnboardingPostSchema] — +- `body` [body, v2_1.cloud_funnel.schemas_OnboardingPostSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -91,7 +91,7 @@ Validates bucket permissions. Required permissions: `Cloud Funnel.create, Cloud Funnel.edit` Parameters: -- `body` [body, v2_1.cloud_funnel.schemas_BucketValidationSchema] — +- `body` [body, v2_1.cloud_funnel.schemas_BucketValidationSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -104,6 +104,6 @@ Verifies that a query is valid before using it as filterfor a Cloud Funnel onboa Required permissions: `Cloud Funnel.create, Cloud Funnel.edit` Parameters: -- `body` [body, v2_1.cloud_funnel.schemas_QueryValidationSchema] — +- `body` [body, v2_1.cloud_funnel.schemas_QueryValidationSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Resources.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Resources.md index 6fe6d0e..a4f0733 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Resources.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Cloud_Resources.md @@ -11,27 +11,27 @@ Returns the cloud rogue resources for given filter Required permissions: `cloudRogues.view` Parameters: -- `cloudProviderAccountName` [query, array] — Filter by cloud account (supports multiple values) -- `sortBy` [query, string] (enum: id, createdTime, resourceType, name, region, virtualNetworkId, imageId, osType, cloudProviderAccountName, cloudProviderAccountId, cloudProviderOrganization, cloudProviderName) — The column to sort the results by. Example: "id". -- `name__contains` [query, array] — Free-text filter by resource name (supports multiple values) -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `virtualNetworkId__contains` [query, array] — Free-text filter by network id (supports multiple values) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `cloudProviderName` [query, array] — Filter by cloud provider name (supports multiple values) -- `region` [query, array] — Filter by region (supports multiple values) -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `imageId__contains` [query, array] — Free-text filter by image (supports multiple values) -- `osTypes` [query, array] — Included OS types -- `region__contains` [query, array] — Free-text filter by region (supports multiple values) -- `concatenatedTags__contains` [query, array] — Free-text filter by tags (supports multiple values) -- `id__contains` [query, array] — Free-text filter by id (supports multiple values) -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `cloudProviderAccountId__contains` [query, array] — Free-text filter by cloud account id (supports multiple values) -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `cloudProviderAccountName__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `cloudProviderAccountName` [query, array]: Filter by cloud account (supports multiple values) +- `sortBy` [query, string] (enum: id, createdTime, resourceType, name, region, virtualNetworkId, imageId, osType, cloudProviderAccountName, cloudProviderAccountId, cloudProviderOrganization, cloudProviderName): The column to sort the results by. Example: "id". +- `name__contains` [query, array]: Free-text filter by resource name (supports multiple values) +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `virtualNetworkId__contains` [query, array]: Free-text filter by network id (supports multiple values) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `cloudProviderName` [query, array]: Filter by cloud provider name (supports multiple values) +- `region` [query, array]: Filter by region (supports multiple values) +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `imageId__contains` [query, array]: Free-text filter by image (supports multiple values) +- `osTypes` [query, array]: Included OS types +- `region__contains` [query, array]: Free-text filter by region (supports multiple values) +- `concatenatedTags__contains` [query, array]: Free-text filter by tags (supports multiple values) +- `id__contains` [query, array]: Free-text filter by id (supports multiple values) +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `cloudProviderAccountId__contains` [query, array]: Free-text filter by cloud account id (supports multiple values) +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `cloudProviderAccountName__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -44,27 +44,27 @@ Returns the results for given cloud rogues filter in a csv (default) or json for Required permissions: `cloudRogues.view` Parameters: -- `cloudProviderAccountName` [query, array] — Filter by cloud account (supports multiple values) -- `sortBy` [query, string] (enum: id, createdTime) — The column to sort the results by. Example: "id". -- `name__contains` [query, array] — Free-text filter by resource name (supports multiple values) -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `virtualNetworkId__contains` [query, array] — Free-text filter by network id (supports multiple values) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `cloudProviderName` [query, array] — Filter by cloud provider name (supports multiple values) -- `region` [query, array] — Filter by region (supports multiple values) -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `imageId__contains` [query, array] — Free-text filter by image (supports multiple values) -- `osTypes` [query, array] — Included OS types -- `region__contains` [query, array] — Free-text filter by region (supports multiple values) -- `concatenatedTags__contains` [query, array] — Free-text filter by tags (supports multiple values) -- `id__contains` [query, array] — Free-text filter by id (supports multiple values) -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `cloudProviderAccountId__contains` [query, array] — Free-text filter by cloud account id (supports multiple values) -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `exportFormat` [query, string] (enum: csv, json) — Export format. Example: "csv". -- `cloudProviderAccountName__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `cloudProviderAccountName` [query, array]: Filter by cloud account (supports multiple values) +- `sortBy` [query, string] (enum: id, createdTime): The column to sort the results by. Example: "id". +- `name__contains` [query, array]: Free-text filter by resource name (supports multiple values) +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `virtualNetworkId__contains` [query, array]: Free-text filter by network id (supports multiple values) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `cloudProviderName` [query, array]: Filter by cloud provider name (supports multiple values) +- `region` [query, array]: Filter by region (supports multiple values) +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `imageId__contains` [query, array]: Free-text filter by image (supports multiple values) +- `osTypes` [query, array]: Included OS types +- `region__contains` [query, array]: Free-text filter by region (supports multiple values) +- `concatenatedTags__contains` [query, array]: Free-text filter by tags (supports multiple values) +- `id__contains` [query, array]: Free-text filter by id (supports multiple values) +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `cloudProviderAccountId__contains` [query, array]: Free-text filter by cloud account id (supports multiple values) +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `exportFormat` [query, string] (enum: csv, json): Export format. Example: "csv". +- `cloudProviderAccountName__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Config_Overrides.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Config_Overrides.md index 63e87de..f986eca 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Config_Overrides.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Config_Overrides.md @@ -11,7 +11,7 @@ Delete overrides value. To get the required IDs, run "config-override". Required permissions: `Policy Override.delete` Parameters: -- `body` [body, config_overrides_ConfigOverrideDeleteSchema] — +- `body` [body, config_overrides_ConfigOverrideDeleteSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,30 +24,30 @@ There are different ways to override the configuration of an Agent, and the prio Required permissions: `Policy Override.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, name, description, scope, osType, agentVersion, versionOption, config, agentId) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `agentIds` [query, array] — List of Agent IDs to filter by. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Config Overrides created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Config Overrides created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Config Overrides created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Config Overrides created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `name__like` [query, string] — Match name partially (substring) -- `description__like` [query, string] — Match description partially (substring) -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `agentVersions` [query, array] — Included agent versions. Example: "2.5.1.1320". -- `versionOption` [query, string] (enum: ALL, SPECIFIC) — Version option. Example: "ALL". -- `query` [query, string] — Free text search on fields name, description, agent_version, os_type, config +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, name, description, scope, osType, agentVersion, versionOption, config, agentId): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `agentIds` [query, array]: List of Agent IDs to filter by. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Config Overrides created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Config Overrides created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Config Overrides created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Config Overrides created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `name__like` [query, string]: Match name partially (substring) +- `description__like` [query, string]: Match description partially (substring) +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `agentVersions` [query, array]: Included agent versions. Example: "2.5.1.1320". +- `versionOption` [query, string] (enum: ALL, SPECIFIC): Version option. Example: "ALL". +- `query` [query, string]: Free text search on fields name, description, agent_version, os_type, config Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -60,7 +60,7 @@ Override the configuration of Agents that match the filter. Best practice: Run Required permissions: `Policy Override.create` Parameters: -- `body` [body, config_overrides_CreateConfigOverrideSchema] — +- `body` [body, config_overrides_CreateConfigOverrideSchema]: Responses: 400 Invalid user input received. See error details for further i, 404 Scope not found., 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -73,7 +73,7 @@ Delete an override value. To get the required ID, run "config-override". Required permissions: `Policy Override.delete` Parameters: -- `override_id` [path, string] **required** — Config override object ID. Example: "225494730938493804". +- `override_id` [path, string] **required**: Config override object ID. Example: "225494730938493804". Responses: 404 Override not found., 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -86,7 +86,7 @@ Use this command to change the value of one configuration value. To get the requ Required permissions: `Policy Override.edit` Parameters: -- `override_id` [path, string] **required** — Config override object ID. Example: "225494730938493804". -- `body` [body, config_overrides_PutConfigOverrideSchema] — +- `override_id` [path, string] **required**: Config override object ID. Example: "225494730938493804". +- `body` [body, config_overrides_PutConfigOverrideSchema]: Responses: 404 Override not found., 403 Insufficient permissions., 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Custom_Detection_Rule.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Custom_Detection_Rule.md index e7c1fdb..ada6349 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Custom_Detection_Rule.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Custom_Detection_Rule.md @@ -11,7 +11,7 @@ Deletes Custom Detection Rules that match a filter. Required permissions: `Custom Rules.manage` Parameters: -- `body` [body, v2_1.rules.schemas_RuleDeleteSchema] — +- `body` [body, v2_1.rules.schemas_RuleDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -23,7 +23,7 @@ Get a list of Custom Detection Rules for a given scope.
      Note: You can creat > **⚠️ CRITICAL: pass `isLegacy=false` whenever you want to see scheduled rules.** > The default behaviour of this endpoint is to OMIT `queryType=scheduled` rules from the response. -> No error is returned, no warning is logged — the response simply lists 0 scheduled rules. +> No error is returned, no warning is logged: the response simply lists 0 scheduled rules. > If you ever want to claim "this tenant has no scheduled detections", you MUST have called this endpoint with `isLegacy=false` first. Without it, the absence of evidence is meaningless. > > Correct invocations (re-verified 2026-05): @@ -37,44 +37,44 @@ Get a list of Custom Detection Rules for a given scope.
      Note: You can creat Required permissions: `Custom Rules.view` Parameters: -- `statuses` [query, array] — Statuses. Example: "Activating". -- `name__contains` [query, array] — Free-text filter by rule name. You can enter multiple values, separated by commas. Example: "Service Pack 1". -- `description__contains` [query, array] — Free-text filter by rule description. You can enter multiple values, separated by commas. Example: "Service Pack 1". -- `expirationMode` [query, string] (enum: Permanent, Temporary) — The expiration mode. Example: "Permanent". -- `query` [query, array] — Free-text filter by S1 query. You can enter multiple values, separated by commas. Example: "Service Pack 1". -- `severities` [query, array] — Severities. Example: "Low". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `descriptionSubstring` [query, string] — To filter by a substring of the rule description -- `scopeLevel` [query, string] (enum: global, group, account, site) — To filter by scope, enter one or more scopes, separated by commas. Example: "global". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `scopeId` [query, string] — The Account, Site, or Group ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `sources` [query, array] — To filter by sources associated with the rule. -- `isLegacy` [query, boolean] — If True, alertsCount will be retrieved from Star and not from UAM. -- `expired` [query, boolean] — Rule expired or not. -- `s1qlSubstring` [query, string] — To filter by a substring of the query content -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `excludeIds` [query, array] — List of entity ids to exclude from select_all. Example: "225494730938493804,225494730938493915". -- `s1ql__contains` [query, array] — Free-text filter by S1 query. You can enter multiple values, separated by commas. Example: "Service Pack 1". -- `mitreTactics` [query, array] — To filter by sources associated with the rule. -- `creator__contains` [query, array] — Free-text filter by rule creator. You can enter multiple values, separated by commas. Example: "Service Pack 1". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `filterBy` [query, string] (enum: Template, Platform) — To filter by Rule type. Example: "Template". -- `activeResponse` [query, boolean] — The active response status for the rule. -- `ids` [query, array] — To filter by Rule ID, enter one or more Rule IDs, separated by commas. Example: "225494730938493804,225494730938493915". -- `attackSurfaces` [query, array] — To filter by attack surfaces associated with the rule. -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `disablePagination` [query, boolean] — If True, all rules for the requested scope will be returned. -- `reachedLimit` [query, boolean] — Rule reached limit or not. -- `scopes` [query, array] — To filter by scope, enter one or more scopes, separated by commas. Example: "global". -- `queryType` [query, array] — Enter a list of query types. Example: "events". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `status` [query, array] — To filter by status, enter one or more statuses, separated by commas. Example: "Draft". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `platformRuleIds` [query, array] — platform rule ids. Example: "225494730938493804,225494730938493915". -- `sortBy` [query, string] (enum: id, name, status, expirationMode, expired, queryType, reachedLimit, statusReason, severity, expiration, createdAt, updatedAt, generatedAlerts, description, scopeHierarchy, scope, activeResponse, lastAlertTime, queryLang) — The column to sort the results by. Example: "id". -- `nameSubstring` [query, string] — To filter by a substring of the rule name +- `statuses` [query, array]: Statuses. Example: "Activating". +- `name__contains` [query, array]: Free-text filter by rule name. You can enter multiple values, separated by commas. Example: "Service Pack 1". +- `description__contains` [query, array]: Free-text filter by rule description. You can enter multiple values, separated by commas. Example: "Service Pack 1". +- `expirationMode` [query, string] (enum: Permanent, Temporary): The expiration mode. Example: "Permanent". +- `query` [query, array]: Free-text filter by S1 query. You can enter multiple values, separated by commas. Example: "Service Pack 1". +- `severities` [query, array]: Severities. Example: "Low". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `descriptionSubstring` [query, string]: To filter by a substring of the rule description +- `scopeLevel` [query, string] (enum: global, group, account, site): To filter by scope, enter one or more scopes, separated by commas. Example: "global". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `scopeId` [query, string]: The Account, Site, or Group ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `sources` [query, array]: To filter by sources associated with the rule. +- `isLegacy` [query, boolean]: If True, alertsCount will be retrieved from Star and not from UAM. +- `expired` [query, boolean]: Rule expired or not. +- `s1qlSubstring` [query, string]: To filter by a substring of the query content +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `excludeIds` [query, array]: List of entity ids to exclude from select_all. Example: "225494730938493804,225494730938493915". +- `s1ql__contains` [query, array]: Free-text filter by S1 query. You can enter multiple values, separated by commas. Example: "Service Pack 1". +- `mitreTactics` [query, array]: To filter by sources associated with the rule. +- `creator__contains` [query, array]: Free-text filter by rule creator. You can enter multiple values, separated by commas. Example: "Service Pack 1". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `filterBy` [query, string] (enum: Template, Platform): To filter by Rule type. Example: "Template". +- `activeResponse` [query, boolean]: The active response status for the rule. +- `ids` [query, array]: To filter by Rule ID, enter one or more Rule IDs, separated by commas. Example: "225494730938493804,225494730938493915". +- `attackSurfaces` [query, array]: To filter by attack surfaces associated with the rule. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `disablePagination` [query, boolean]: If True, all rules for the requested scope will be returned. +- `reachedLimit` [query, boolean]: Rule reached limit or not. +- `scopes` [query, array]: To filter by scope, enter one or more scopes, separated by commas. Example: "global". +- `queryType` [query, array]: Enter a list of query types. Example: "events". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `status` [query, array]: To filter by status, enter one or more statuses, separated by commas. Example: "Draft". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `platformRuleIds` [query, array]: platform rule ids. Example: "225494730938493804,225494730938493915". +- `sortBy` [query, string] (enum: id, name, status, expirationMode, expired, queryType, reachedLimit, statusReason, severity, expiration, createdAt, updatedAt, generatedAlerts, description, scopeHierarchy, scope, activeResponse, lastAlertTime, queryLang): The column to sort the results by. Example: "id". +- `nameSubstring` [query, string]: To filter by a substring of the rule name Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -88,7 +88,7 @@ Required permissions: `Custom Rules.manage` Optional permissions: `Threats.markSuspicious, Threats.markThreat, Endpoints.disconnectFromNetwork` Parameters: -- `body` [body, v2_1.rules.schemas_PostRuleSchema] — +- `body` [body, v2_1.rules.schemas_PostRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -101,7 +101,7 @@ Disable Custom Detection Rules based on a filter. Required permissions: `Custom Rules.manage` Parameters: -- `body` [body, v2_1.rules.schemas_FilterRuleSchema] — +- `body` [body, v2_1.rules.schemas_FilterRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -114,7 +114,7 @@ Activate Custom Detection Rules based on a filter. Required permissions: `Custom Rules.manage` Parameters: -- `body` [body, v2_1.rules.schemas_FilterRuleSchema] — +- `body` [body, v2_1.rules.schemas_FilterRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -128,8 +128,8 @@ Required permissions: `Custom Rules.manage` Optional permissions: `Threats.markSuspicious, Threats.markThreat, Endpoints.disconnectFromNetwork` Parameters: -- `rule_id` [path, string] **required** — The Rule ID in the URL path. Example: "225494730938493804". -- `body` [body, v2_1.rules.schemas_PostRuleSchema] — +- `rule_id` [path, string] **required**: The Rule ID in the URL path. Example: "225494730938493804". +- `body` [body, v2_1.rules.schemas_PostRuleSchema]: Responses: 404 Custom Detection rule not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Datalake_Unified_Actions.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Datalake_Unified_Actions.md index 47a812a..c04aafa 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Datalake_Unified_Actions.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Datalake_Unified_Actions.md @@ -11,10 +11,10 @@ Fetch surface ids in case of select all with filters Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.action_controller.schemas_FetchSurfaceIdsRequestSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.action_controller.schemas_FetchSurfaceIdsRequestSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -27,10 +27,10 @@ Get Available Actions by Asset/Entity Type Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.action_controller.schemas_AffectedEntitiesSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.action_controller.schemas_AffectedEntitiesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -43,10 +43,10 @@ Perform an Action on selected assets/entities Required permissions: `XDR Inventory.create, XDR Inventory.edit` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.action_controller.schemas_PerformActionRequestSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.action_controller.schemas_PerformActionRequestSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -59,9 +59,9 @@ Internal api only to notify action was triggered without actually performing it Required permissions: `XDR Inventory.create, XDR Inventory.edit` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.action_controller.schemas_PerformActionNotificationSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.action_controller.schemas_PerformActionNotificationSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Deep_Visibility.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Deep_Visibility.md index 7ddb513..3c77c86 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Deep_Visibility.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Deep_Visibility.md @@ -13,7 +13,7 @@ Stop a Deep Visibility Query by queryId. The body is {"queryID":"string_ID"}. Ge Required permissions: `SDL Data.viewEdr` Parameters: -- `body` [body, deep_visibility.deep_visibility_v2_schemas_DeepVisibilityQueryIdRequestSchema] — +- `body` [body, deep_visibility.deep_visibility_v2_schemas_DeepVisibilityQueryIdRequestSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -26,13 +26,13 @@ Get all Deep Visibility events from a queryId. You can use this command to send Required permissions: `SDL Data.viewEdr` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Should be used instead of skip. cursor currently supports sort by with createdAt, pid, processStartTime -- `subQuery` [query, string] — Create a sub query to run on the data that was already pulled -- `queryId` [query, string] **required** — QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". -- `sortBy` [query, string] — Events sorted by field. Example: "createdAt". -- `sortOrder` [query, string] (enum: asc, desc) — Event sorting order. Example: "asc". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Should be used instead of skip. cursor currently supports sort by with createdAt, pid, processStartTime +- `subQuery` [query, string]: Create a sub query to run on the data that was already pulled +- `queryId` [query, string] **required**: QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". +- `sortBy` [query, string]: Events sorted by field. Example: "createdAt". +- `sortOrder` [query, string] (enum: asc, desc): Event sorting order. Example: "asc". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -45,7 +45,7 @@ Start a Deep Visibility Power Query, get back status and potential results (ping Required permissions: `SDL Data.viewEdr` Parameters: -- `body` [body, deep_visibility.deep_visibility_v2_schemas_DeepVisibilityPQRequestSchema] — +- `body` [body, deep_visibility.deep_visibility_v2_schemas_DeepVisibilityPQRequestSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -58,7 +58,7 @@ Ping a Deep Visibility Power Query using the queryId if results have not returne Required permissions: `SDL Data.viewEdr` Parameters: -- `queryId` [query, string] — QueryId query param +- `queryId` [query, string]: QueryId query param Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -71,14 +71,14 @@ Get Deep Visibility results from the query that matches the given event type. Va Required permissions: `SDL Data.viewEdr` Parameters: -- `event_type` [path, string] **required** — Event type for Autocomplete -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Should be used instead of skip. cursor currently supports sort by with createdAt, pid, processStartTime -- `subQuery` [query, string] — Create a sub query to run on the data that was already pulled -- `queryId` [query, string] **required** — QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". -- `sortBy` [query, string] — Events sorted by field. Example: "createdAt". -- `sortOrder` [query, string] (enum: asc, desc) — Event sorting order. Example: "asc". +- `event_type` [path, string] **required**: Event type for Autocomplete +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Should be used instead of skip. cursor currently supports sort by with createdAt, pid, processStartTime +- `subQuery` [query, string]: Create a sub query to run on the data that was already pulled +- `queryId` [query, string] **required**: QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". +- `sortBy` [query, string]: Events sorted by field. Example: "createdAt". +- `sortOrder` [query, string] (enum: asc, desc): Event sorting order. Example: "asc". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -91,7 +91,7 @@ Download the source process file associated with a Deep Visibility event. Required permissions: `Deep Visibility.fileFetch` Parameters: -- `downloadToken` [query, string] **required** — Download token +- `downloadToken` [query, string] **required**: Download token Responses: 404 File not found, 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -104,7 +104,7 @@ Start a Deep Visibility Query and get the queryId. You can use the queryId for o Required permissions: `SDL Data.viewEdr` Parameters: -- `body` [body, deep_visibility.deep_visibility_v2_schemas_DeepVisibilityApiRequestSchema] — +- `body` [body, deep_visibility.deep_visibility_v2_schemas_DeepVisibilityApiRequestSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -117,12 +117,12 @@ Get details of all Deep Visibility processes from a queryId.To get the ID from " Required permissions: `SDL Data.viewEdr` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `queryId` [query, string] **required** — QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". -- `sortBy` [query, string] — Events sorted by field. Example: "SrcProcStartTime". -- `sortOrder` [query, string] (enum: asc, desc) — Event sorting order. Example: "asc". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `queryId` [query, string] **required**: QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". +- `sortBy` [query, string]: Events sorted by field. Example: "SrcProcStartTime". +- `sortOrder` [query, string] (enum: asc, desc): Event sorting order. Example: "asc". Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -135,6 +135,6 @@ Get that status of a Deep Visibility Query. When the status is FINISHED, you can Required permissions: `SDL Data.viewEdr` Parameters: -- `queryId` [query, string] **required** — QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". +- `queryId` [query, string] **required**: QueryId obtained when creating a query under Create Query. Example: "q1xx2xx3". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Default_Reports.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Default_Reports.md index fa501c6..99b10d5 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Default_Reports.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Default_Reports.md @@ -11,27 +11,27 @@ Get the tasks that were done to generate default reports and to schedule future Required permissions: `Reports Page.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, sites, frequency, day, scope, createdAt, scheduleType, status) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `id` [query, string] — Id. Example: "225494730938493804". -- `createdAt__lte` [query, string] — Created at lte. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created at gte. Example: "2018-02-27T04:49:26.257525Z". -- `name` [query, string] — Name -- `scope` [query, string] (enum: group, site, account, tenant) — Scope. Example: "group". -- `frequency` [query, string] (enum: manually, weekly, monthly) — Frequency. Example: "manually". -- `day` [query, string] — Day -- `creatorId` [query, string] — Creator id. Example: "225494730938493804". -- `creatorName` [query, string] — Creator name -- `query` [query, string] — Query -- `scheduleType` [query, string] (enum: manually, scheduled) — Report type. Example: "manually". -- `ids` [query, array] — Id in. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, sites, frequency, day, scope, createdAt, scheduleType, status): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `id` [query, string]: Id. Example: "225494730938493804". +- `createdAt__lte` [query, string]: Created at lte. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created at gte. Example: "2018-02-27T04:49:26.257525Z". +- `name` [query, string]: Name +- `scope` [query, string] (enum: group, site, account, tenant): Scope. Example: "group". +- `frequency` [query, string] (enum: manually, weekly, monthly): Frequency. Example: "manually". +- `day` [query, string]: Day +- `creatorId` [query, string]: Creator id. Example: "225494730938493804". +- `creatorName` [query, string]: Creator name +- `query` [query, string]: Query +- `scheduleType` [query, string] (enum: manually, scheduled): Report type. Example: "manually". +- `ids` [query, array]: Id in. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -44,7 +44,7 @@ Create a task to generate a default report immediately, one time in the future, Required permissions: `Reports Page.create` Parameters: -- `body` [body, reports_ReportTasksPostSchema] — +- `body` [body, reports_ReportTasksPostSchema]: Responses: 404 Validation errors, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -57,8 +57,8 @@ Update the default report task of the given ID. Default Reports require Reports Required permissions: `Reports Page.edit` Parameters: -- `task_id` [path, string] **required** — Task ID. Example: "225494730938493804". -- `body` [body, reports_ReportTasksPutSchema] — +- `task_id` [path, string] **required**: Task ID. Example: "225494730938493804". +- `body` [body, reports_ReportTasksPutSchema]: Responses: 404 Validation errors, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -71,28 +71,28 @@ Get the default reports that match the filter and the data of the reports. Defau Required permissions: `Reports Page.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, sites, frequency, interval, scope, createdAt, scheduleType, status) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `id` [query, string] — Id. Example: "225494730938493804". -- `createdAt__lte` [query, string] — Created at lte. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created at gte. Example: "2018-02-27T04:49:26.257525Z". -- `name` [query, string] — Name -- `scope` [query, string] (enum: group, site, account, tenant) — Scope. Example: "group". -- `frequency` [query, string] (enum: manually, weekly, monthly) — Frequency. Example: "manually". -- `interval` [query, string] — Interval -- `fromDate` [query, string] — From date. Example: "2018-02-27T04:49:26.257525Z". -- `toDate` [query, string] — To date. Example: "2018-02-27T04:49:26.257525Z". -- `query` [query, string] — Query -- `scheduleType` [query, string] (enum: manually, scheduled) — Report type. Example: "manually". -- `taskId` [query, string] — Task id. Example: "225494730938493804". -- `ids` [query, array] — Id in. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, sites, frequency, interval, scope, createdAt, scheduleType, status): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `id` [query, string]: Id. Example: "225494730938493804". +- `createdAt__lte` [query, string]: Created at lte. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created at gte. Example: "2018-02-27T04:49:26.257525Z". +- `name` [query, string]: Name +- `scope` [query, string] (enum: group, site, account, tenant): Scope. Example: "group". +- `frequency` [query, string] (enum: manually, weekly, monthly): Frequency. Example: "manually". +- `interval` [query, string]: Interval +- `fromDate` [query, string]: From date. Example: "2018-02-27T04:49:26.257525Z". +- `toDate` [query, string]: To date. Example: "2018-02-27T04:49:26.257525Z". +- `query` [query, string]: Query +- `scheduleType` [query, string] (enum: manually, scheduled): Report type. Example: "manually". +- `taskId` [query, string]: Task id. Example: "225494730938493804". +- `ids` [query, array]: Id in. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -105,7 +105,7 @@ Delete the default reports that match the filter. Default Reports require Report Required permissions: `Reports Page.delete` Parameters: -- `body` [body, reports_ReportDeleteSchema] — +- `body` [body, reports_ReportDeleteSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,7 +118,7 @@ You can schedule a default report to be generated on a routine. Default Reports Required permissions: `Reports Page.delete` Parameters: -- `body` [body, reports_ReportTaskDeleteSchema] — +- `body` [body, reports_ReportTaskDeleteSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -131,10 +131,10 @@ Get the Insight Report types for Default Reports. Default Reports require Report Required permissions: `Reports Page.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `forceUpdate` [query, boolean] — Force update +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `forceUpdate` [query, boolean]: Force update Responses: 404 Package not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -147,8 +147,8 @@ When the Management generates a default report, it is uploaded to the Management Required permissions: `Reports Page.view` Parameters: -- `report_id` [path, string] **required** — Report ID. Example: "225494730938493804". -- `report_format` [path, string] **required** (enum: pdf, html) — Report format. Example: "pdf". +- `report_id` [path, string] **required**: Report ID. Example: "225494730938493804". +- `report_format` [path, string] **required** (enum: pdf, html): Report format. Example: "pdf". Responses: 404 Report not found, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Device_Control.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Device_Control.md index e1a5c26..fe44d62 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Device_Control.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Device_Control.md @@ -11,7 +11,7 @@ Delete Device Control rules that match the filter. Required permissions: `Device Control.delete` Parameters: -- `body` [body, device_control.schemas_RuleDeleteSchema] — +- `body` [body, device_control.schemas_RuleDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,44 +24,44 @@ Get the Device Control rules of a specified Account, Site, Group or Global (tena Required permissions: `Device Control.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, interface, deviceClass, ruleName, action, status, order, version) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — A free-text search term, will match applicable attributes. -- `scopes` [query, array] — Return only device rules in this scope. Example: "site". -- `interfaces` [query, array] — Return device rules with the filtered interface. Example: "USB". -- `deviceClasses` [query, array] — Return device rules with the filtered device class. Example: "02h". -- `serviceClasses` [query, array] — Return device rules with the filtered service class. Example: "02". -- `ruleName` [query, string] — Return device rules with the filtered rule name. -- `vendorIds` [query, array] — Return device rules with the filtered vendor id. -- `productIds` [query, array] — Return device rules with the filtered product id. Example: "02". -- `uids` [query, array] — Return device rules with the filtered uId. -- `actions` [query, array] — Return device rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return device rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return device rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return device rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return device rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return device rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return device rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `versions` [query, array] — Return device rules with the filtered versions. -- `minorClasses` [query, array] — Return device rules with the filtered minor classes. -- `accessPermissions` [query, array] — Access permission in. Example: "Read-Only". -- `bluetoothAddresses` [query, array] — Return device rules with the filtered bluetooth addresses. -- `gattServices` [query, array] — Return device rules with the filtered GATT services. -- `manufacturerNames` [query, array] — Return device rules with the filtered manufacturer names. -- `deviceNames` [query, array] — Return device rules with the filtered device names. -- `deviceInformationServiceInfoKeys` [query, array] — Return device rules with the filtered device information service info keys. -- `deviceIds` [query, array] — Return device rules with the filtered device id. Example: "02". -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, interface, deviceClass, ruleName, action, status, order, version): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: A free-text search term, will match applicable attributes. +- `scopes` [query, array]: Return only device rules in this scope. Example: "site". +- `interfaces` [query, array]: Return device rules with the filtered interface. Example: "USB". +- `deviceClasses` [query, array]: Return device rules with the filtered device class. Example: "02h". +- `serviceClasses` [query, array]: Return device rules with the filtered service class. Example: "02". +- `ruleName` [query, string]: Return device rules with the filtered rule name. +- `vendorIds` [query, array]: Return device rules with the filtered vendor id. +- `productIds` [query, array]: Return device rules with the filtered product id. Example: "02". +- `uids` [query, array]: Return device rules with the filtered uId. +- `actions` [query, array]: Return device rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return device rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return device rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return device rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return device rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return device rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return device rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `versions` [query, array]: Return device rules with the filtered versions. +- `minorClasses` [query, array]: Return device rules with the filtered minor classes. +- `accessPermissions` [query, array]: Access permission in. Example: "Read-Only". +- `bluetoothAddresses` [query, array]: Return device rules with the filtered bluetooth addresses. +- `gattServices` [query, array]: Return device rules with the filtered GATT services. +- `manufacturerNames` [query, array]: Return device rules with the filtered manufacturer names. +- `deviceNames` [query, array]: Return device rules with the filtered device names. +- `deviceInformationServiceInfoKeys` [query, array]: Return device rules with the filtered device information service info keys. +- `deviceIds` [query, array]: Return device rules with the filtered device id. Example: "02". +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -74,7 +74,7 @@ Use this command to create a new Device Control rule. These rules allow or block Required permissions: `Device Control.create` Parameters: -- `body` [body, device_control.schemas_PostDeviceSchema] — +- `body` [body, device_control.schemas_PostDeviceSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -87,10 +87,10 @@ Get Device Control configuration for a given scope.
      To filter the results for Required permissions: `Device Control.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,13 +98,13 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f **Update Configuration** `operationId`: `_web_api_device-control_configuration_put` -Use this command to change the Device Control configuration. Enter a Group ID, Site ID, Account ID, or "tenant = true". If you select only tenant, and the other scopes are empty, the change is applied to the Global policy. +Use this command to change the Device Control configuration. Enter a Group ID, Site ID, Account ID, or "tenant = true". If you select only tenant, and the other scopes are empty, the change is applied to the Global policy. Device Control requires Control SKU. It is not supported on Linux. Required permissions: `Device Control.edit` Parameters: -- `body` [body, device_control.schemas_PostDeviceSettingsSchema] — +- `body` [body, device_control.schemas_PostDeviceSettingsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -116,7 +116,7 @@ You can copy a set of Device Control rules to use in other Accounts, Sites, or G Optional permissions: `Device Control.view, Device Control.create` Parameters: -- `body` [body, device_control.schemas_CopyRuleSchema] — +- `body` [body, device_control.schemas_CopyRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -129,7 +129,7 @@ It is best practice to disable a rule rather than delete it. Use this command to Required permissions: `Device Control.edit` Parameters: -- `body` [body, device_control.schemas_EnableRuleSchema] — +- `body` [body, device_control.schemas_EnableRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -137,41 +137,41 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f **Get Device Control Events** `operationId`: `_web_api_device-control_events_get` -Get the data of Device Control events on Windows and macOS endpoints with Device Control-enabled Agents that match the filter. +Get the data of Device Control events on Windows and macOS endpoints with Device Control-enabled Agents that match the filter. Device Control requires Control SKU. Linux Agents do not support Device Control. Required permissions: `Device Control.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, eventTime, eventType, agentId) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — A free-text search term, will match applicable attributes. -- `eventTime__gt` [query, string] — Return events generated after this time. Example: "2018-02-27T04:49:26.257525Z". -- `eventTime__lt` [query, string] — Return events generated before this time. Example: "2018-02-27T04:49:26.257525Z". -- `eventTime__gte` [query, string] — Return events generated after or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `eventTime__lte` [query, string] — Return events generated before or at this time. Example: "2018-02-27T04:49:26.257525Z". -- `eventTime__between` [query, string] — Return events created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `eventIds` [query, array] — List of event IDs to filter by -- `interfaces` [query, array] — List of interfaces to filter by. Example: "USB". -- `deviceClasses` [query, array] — List of device classes to filter by. Example: "02h". -- `serviceClasses` [query, array] — List of service classes to filter by. Example: "02". -- `vendorIds` [query, array] — List of vendor IDs to filter by. -- `productIds` [query, array] — List of product IDs to filter by. Example: "02". -- `uids` [query, array] — List of uIds to filter by. -- `eventTypes` [query, array] — List of event types to filter by. -- `accessPermissions` [query, array] — Access permission in. Example: "Read-Only". -- `agentIds` [query, array] — List of agent Ids to filter by -- `deviceIds` [query, array] — List of device IDs to filter by +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, eventTime, eventType, agentId): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: A free-text search term, will match applicable attributes. +- `eventTime__gt` [query, string]: Return events generated after this time. Example: "2018-02-27T04:49:26.257525Z". +- `eventTime__lt` [query, string]: Return events generated before this time. Example: "2018-02-27T04:49:26.257525Z". +- `eventTime__gte` [query, string]: Return events generated after or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `eventTime__lte` [query, string]: Return events generated before or at this time. Example: "2018-02-27T04:49:26.257525Z". +- `eventTime__between` [query, string]: Return events created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `eventIds` [query, array]: List of event IDs to filter by +- `interfaces` [query, array]: List of interfaces to filter by. Example: "USB". +- `deviceClasses` [query, array]: List of device classes to filter by. Example: "02h". +- `serviceClasses` [query, array]: List of service classes to filter by. Example: "02". +- `vendorIds` [query, array]: List of vendor IDs to filter by. +- `productIds` [query, array]: List of product IDs to filter by. Example: "02". +- `uids` [query, array]: List of uIds to filter by. +- `eventTypes` [query, array]: List of event types to filter by. +- `accessPermissions` [query, array]: Access permission in. Example: "Read-Only". +- `agentIds` [query, array]: List of agent Ids to filter by +- `deviceIds` [query, array]: List of device IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -184,36 +184,36 @@ Export Device Control rules to a CSV file. Required permissions: `Device Control.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — A free-text search term, will match applicable attributes. -- `scopes` [query, array] — Return only device rules in this scope. Example: "site". -- `interfaces` [query, array] — Return device rules with the filtered interface. Example: "USB". -- `deviceClasses` [query, array] — Return device rules with the filtered device class. Example: "02h". -- `serviceClasses` [query, array] — Return device rules with the filtered service class. Example: "02". -- `ruleName` [query, string] — Return device rules with the filtered rule name. -- `vendorIds` [query, array] — Return device rules with the filtered vendor id. -- `productIds` [query, array] — Return device rules with the filtered product id. Example: "02". -- `uids` [query, array] — Return device rules with the filtered uId. -- `actions` [query, array] — Return device rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return device rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return device rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return device rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return device rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return device rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return device rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `versions` [query, array] — Return device rules with the filtered versions. -- `minorClasses` [query, array] — Return device rules with the filtered minor classes. -- `accessPermissions` [query, array] — Access permission in. Example: "Read-Only". -- `bluetoothAddresses` [query, array] — Return device rules with the filtered bluetooth addresses. -- `gattServices` [query, array] — Return device rules with the filtered GATT services. -- `manufacturerNames` [query, array] — Return device rules with the filtered manufacturer names. -- `deviceNames` [query, array] — Return device rules with the filtered device names. -- `deviceInformationServiceInfoKeys` [query, array] — Return device rules with the filtered device information service info keys. -- `deviceIds` [query, array] — Return device rules with the filtered device id. Example: "02". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: A free-text search term, will match applicable attributes. +- `scopes` [query, array]: Return only device rules in this scope. Example: "site". +- `interfaces` [query, array]: Return device rules with the filtered interface. Example: "USB". +- `deviceClasses` [query, array]: Return device rules with the filtered device class. Example: "02h". +- `serviceClasses` [query, array]: Return device rules with the filtered service class. Example: "02". +- `ruleName` [query, string]: Return device rules with the filtered rule name. +- `vendorIds` [query, array]: Return device rules with the filtered vendor id. +- `productIds` [query, array]: Return device rules with the filtered product id. Example: "02". +- `uids` [query, array]: Return device rules with the filtered uId. +- `actions` [query, array]: Return device rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return device rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return device rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return device rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return device rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return device rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return device rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `versions` [query, array]: Return device rules with the filtered versions. +- `minorClasses` [query, array]: Return device rules with the filtered minor classes. +- `accessPermissions` [query, array]: Access permission in. Example: "Read-Only". +- `bluetoothAddresses` [query, array]: Return device rules with the filtered bluetooth addresses. +- `gattServices` [query, array]: Return device rules with the filtered GATT services. +- `manufacturerNames` [query, array]: Return device rules with the filtered manufacturer names. +- `deviceNames` [query, array]: Return device rules with the filtered device names. +- `deviceInformationServiceInfoKeys` [query, array]: Return device rules with the filtered device information service info keys. +- `deviceIds` [query, array]: Return device rules with the filtered device id. Example: "02". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -221,13 +221,13 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f **Move rules** `operationId`: `_web_api_device-control_move-rules_post` -You can move a set of Device Control rules to other Accounts, Sites, or Groups. This command removes the rule from the source and copies to the targets. -Define the rules to copy with the filters. To get the values for devices, run "unscoped". To get Account IDs, run "accounts". To get Site IDs, run "sites". +You can move a set of Device Control rules to other Accounts, Sites, or Groups. This command removes the rule from the source and copies to the targets. +Define the rules to copy with the filters. To get the values for devices, run "unscoped". To get Account IDs, run "accounts". To get Site IDs, run "sites". Device Control requires Control SKU. Linux Agents do not support Device Control. Optional permissions: `Device Control.delete, Device Control.create, Device Control.view` Parameters: -- `body` [body, device_control.schemas_CopyRuleSchema] — +- `body` [body, device_control.schemas_CopyRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -235,14 +235,14 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f **Reorder Rules** `operationId`: `_web_api_device-control_reorder_put` -When an external device connects to an endpoint, the SentinelOne Agent looks at the rules based on their order in the Device Control policy, from the top to the bottom. When the Agent finds a rule that matches the device identifiers of a connected device, that rule is applied. The Agent does not continue to the lower rules in the list. -Use this command to change the order of rules for a specific scope. +When an external device connects to an endpoint, the SentinelOne Agent looks at the rules based on their order in the Device Control policy, from the top to the bottom. When the Agent finds a rule that matches the device identifiers of a connected device, that rule is applied. The Agent does not continue to the lower rules in the list. +Use this command to change the order of rules for a specific scope. Device Control requires Control SKU. Linux Agents do not support Device Control. Required permissions: `Device Control.edit` Parameters: -- `body` [body, device_control.schemas_ReorderSchema] — +- `body` [body, device_control.schemas_ReorderSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -255,7 +255,7 @@ Change the Device Control rule that matches the filter. To learn more about the Required permissions: `Device Control.edit` Parameters: -- `rule_id` [path, string] **required** — Rule ID. Example: "225494730938493804". -- `body` [body, device_control.schemas_PutDeviceSchema] — +- `rule_id` [path, string] **required**: Rule ID. Example: "225494730938493804". +- `body` [body, device_control.schemas_PutDeviceSchema]: Responses: 404 Device rule not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Dynamic_tag_rules.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Dynamic_tag_rules.md index d5e7bbf..013b985 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Dynamic_tag_rules.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Dynamic_tag_rules.md @@ -11,10 +11,10 @@ Delete tag rules Required permissions: `XDR Inventory.delete` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `ids` [query, array] — The list of tag rule ID identifiers to be removed. -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `ids` [query, array]: The list of tag rule ID identifiers to be removed. +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -27,27 +27,27 @@ Get all tags rules Required permissions: `XDR Inventory.view` Parameters: -- `createdByEmail` [query, array] — Filter by created by emails of the tag rules. -- `tagIds` [query, array] — The list of tag identifiers that the rule is associated with. -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `createdByEmail__nin` [query, array] — Negative filter by created by emails of the tag rules. -- `status` [query, string] (enum: enabled, disabled) — Status -- `name` [query, array] — Filter by names of the tag rules. -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `updatedByEmail__nin` [query, array] — Negative filter by updated by emails of the tag rules. -- `accountIds` [query, array] — List of Account IDs to filter by -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `description` [query, array] — Filter by description of the tag rules. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `name__nin` [query, array] — Negative filter by names of the tag rules. -- `groupIds` [query, array] — List of Group IDs to filter by -- `description__nin` [query, array] — Negative filter by descriptions of the tag rules. -- `updatedByEmail` [query, array] — Filter by updated by emails of the tag rules. -- `siteIds` [query, array] — List of Site IDs to filter by -- `ids` [query, array] — The list of tag rule ID identifiers. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `sortBy` [query, string] (enum: id, name, status, createdBy, createdByEmail, createdAt, updatedBy, updatedByEmail, updatedAt) — The column to sort the results by. +- `createdByEmail` [query, array]: Filter by created by emails of the tag rules. +- `tagIds` [query, array]: The list of tag identifiers that the rule is associated with. +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `createdByEmail__nin` [query, array]: Negative filter by created by emails of the tag rules. +- `status` [query, string] (enum: enabled, disabled): Status +- `name` [query, array]: Filter by names of the tag rules. +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `updatedByEmail__nin` [query, array]: Negative filter by updated by emails of the tag rules. +- `accountIds` [query, array]: List of Account IDs to filter by +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `description` [query, array]: Filter by description of the tag rules. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `name__nin` [query, array]: Negative filter by names of the tag rules. +- `groupIds` [query, array]: List of Group IDs to filter by +- `description__nin` [query, array]: Negative filter by descriptions of the tag rules. +- `updatedByEmail` [query, array]: Filter by updated by emails of the tag rules. +- `siteIds` [query, array]: List of Site IDs to filter by +- `ids` [query, array]: The list of tag rule ID identifiers. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `sortBy` [query, string] (enum: id, name, status, createdBy, createdByEmail, createdAt, updatedBy, updatedByEmail, updatedAt): The column to sort the results by. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -60,10 +60,10 @@ Create new tag rule Required permissions: `XDR Inventory.create` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.tags.rules.schemas_TagRuleSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.tags.rules.schemas_TagRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -76,10 +76,10 @@ Update tag rule Required permissions: `XDR Inventory.edit` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.tags.rules.schemas_TagRuleSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.tags.rules.schemas_TagRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -92,16 +92,16 @@ Check how many assets this tag rule matches Required permissions: `XDR Inventory.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `groupIds` [query, array] — List of Group IDs to filter by -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `accountIds` [query, array] — List of Account IDs to filter by -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `siteIds` [query, array] — List of Site IDs to filter by -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: s1UpdatedAt, name) — The column to sort the results by. -- `body` [body, v2_1.inventory.tags.rules.schemas_TagRuleSchema] — +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `groupIds` [query, array]: List of Group IDs to filter by +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `accountIds` [query, array]: List of Account IDs to filter by +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `siteIds` [query, array]: List of Site IDs to filter by +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: s1UpdatedAt, name): The column to sort the results by. +- `body` [body, v2_1.inventory.tags.rules.schemas_TagRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_and_Blocklist.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_and_Blocklist.md index b6e7c97..0bb709e 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_and_Blocklist.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_and_Blocklist.md @@ -11,7 +11,7 @@ Every Exclusion opens a possible security hole. If you decide that an Exclusion Required permissions: `Exclusions.delete` Parameters: -- `body` [body, exclusions.schemas_DeleteExclusionSchema] — +- `body` [body, exclusions.schemas_DeleteExclusionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,56 +24,56 @@ Get a list of all the Exclusions that match the filter.
      Note: To filter the Required permissions: `Exclusions.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, mode, source, description, pathExclusionType, osType, scope, subfolders, type, userName, scopePath, value, actions, imported, applicationName, inAppInventory) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `unified` [query, boolean] — Unified -- `value` [query, string] — Value -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `query` [query, string] — A free-text search term, will match applicable attributes -- `type` [query, string] (enum: path, certificate, browser, file_type, white_hash, dv_exclusions) — Type. Example: "path". -- `osTypes` [query, array] — List of Os types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user ids to filter by. Example: "225494730938493804,225494730938493915". -- `recommendations` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `value__contains` [query, array] — Free-text filter by value -- `description__contains` [query, array] — Free-text filter by description -- `user__contains` [query, array] — Free-text filter by user name -- `types` [query, array] — Type in. Example: "path". -- `modes` [query, array] — List of modes to filter by (Path exclusions only). Example: "suppress". -- `pathExclusionTypes` [query, array] — List of excluded paths in an exclusion (Path exclusions only). Example: "file". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `imported` [query, array] — Filter by import status: true (imported), false (not imported), or both for multiselect -- `applicationName__contains` [query, array] — Free-text filter by application name -- `inAppInventory` [query, boolean] — Found or Not found - indicates if this exclusion is related to an application found in the scope's Application Inventory. -- `modeType` [query, string] (enum: all, suppression, agent_interoperability, binary_vault) — Mode type. Example: "all". -- `childProcess` [query, boolean] — Child process -- `threatType` [query, array] — Threat type in. Example: "EDR". -- `engines` [query, array] — Engine in. Example: "suppress". -- `interactionLevel` [query, array] — Interaction level in. Example: "disable_all_monitors". -- `conditions` [query, array] — Conditions in. Example: "white_hash". -- `exclusionName__contains` [query, array] — Exclusion name like any -- `notRecommended` [query, array] — Not recommended in. Example: "Not recommended". -- `scopePath__contains` [query, array] — Scope path like any +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, mode, source, description, pathExclusionType, osType, scope, subfolders, type, userName, scopePath, value, actions, imported, applicationName, inAppInventory): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `unified` [query, boolean]: Unified +- `value` [query, string]: Value +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `query` [query, string]: A free-text search term, will match applicable attributes +- `type` [query, string] (enum: path, certificate, browser, file_type, white_hash, dv_exclusions): Type. Example: "path". +- `osTypes` [query, array]: List of Os types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user ids to filter by. Example: "225494730938493804,225494730938493915". +- `recommendations` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `value__contains` [query, array]: Free-text filter by value +- `description__contains` [query, array]: Free-text filter by description +- `user__contains` [query, array]: Free-text filter by user name +- `types` [query, array]: Type in. Example: "path". +- `modes` [query, array]: List of modes to filter by (Path exclusions only). Example: "suppress". +- `pathExclusionTypes` [query, array]: List of excluded paths in an exclusion (Path exclusions only). Example: "file". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `imported` [query, array]: Filter by import status: true (imported), false (not imported), or both for multiselect +- `applicationName__contains` [query, array]: Free-text filter by application name +- `inAppInventory` [query, boolean]: Found or Not found - indicates if this exclusion is related to an application found in the scope's Application Inventory. +- `modeType` [query, string] (enum: all, suppression, agent_interoperability, binary_vault): Mode type. Example: "all". +- `childProcess` [query, boolean]: Child process +- `threatType` [query, array]: Threat type in. Example: "EDR". +- `engines` [query, array]: Engine in. Example: "suppress". +- `interactionLevel` [query, array]: Interaction level in. Example: "disable_all_monitors". +- `conditions` [query, array]: Conditions in. Example: "white_hash". +- `exclusionName__contains` [query, array]: Exclusion name like any +- `notRecommended` [query, array]: Not recommended in. Example: "Not recommended". +- `scopePath__contains` [query, array]: Scope path like any Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -86,7 +86,7 @@ Create Exclusions to make your Agents suppress alerts and mitigation for items t Required permissions: `Exclusions.create` Parameters: -- `body` [body, exclusions.schemas_PostExclusionSchema] — +- `body` [body, exclusions.schemas_PostExclusionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -99,7 +99,7 @@ Change the properties of an Exclusion through the data fields. To get the origin Required permissions: `Exclusions.edit` Parameters: -- `body` [body, exclusions.schemas_PutExclusionSchema] — +- `body` [body, exclusions.schemas_PutExclusionSchema]: Responses: 404 Exclusion not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -112,8 +112,8 @@ Upload a CSV file that contains exclusion entries to import to a scope in your M Required permissions: `Exclusions.create` Parameters: -- `filter` [formData, string] — The details of the scope where the entities will be imported, for example: For Global - '{"tenant":true}' For an Account - '{"accountIds": ["225494730938493804"]}' For a Site - '{"siteIds": ["225494730938493804"]}' For a Group - '{"groupIds": ["225494730938493804"]}' -- `file` [formData, file] **required** — The input CSV file +- `filter` [formData, string]: The details of the scope where the entities will be imported, for example: For Global - '{"tenant":true}' For an Account - '{"accountIds": ["225494730938493804"]}' For a Site - '{"siteIds": ["225494730938493804"]}' For a Group - '{"groupIds": ["225494730938493804"]}' +- `file` [formData, file] **required**: The input CSV file Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -126,7 +126,7 @@ Get the Validation Report generated for the import to help you fix entries that Required permissions: `Exclusions.view` Parameters: -- `report_id` [path, string] **required** — The ID of the requested Validation Report. Example: "225494730938493804". +- `report_id` [path, string] **required**: The ID of the requested Validation Report. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -139,7 +139,7 @@ Check if an exclusion is on the list of SentinelOne items that are "Not Allowed" Required permissions: `Exclusions.create` Parameters: -- `body` [body, exclusions.schemas_ValidateExclusionSchema] — +- `body` [body, exclusions.schemas_ValidateExclusionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -152,49 +152,49 @@ Get a csv of all the items in the Exclusions that match the filter.
      Note: To Required permissions: `Exclusions.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `unified` [query, boolean] — Unified -- `value` [query, string] — Value -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `query` [query, string] — A free-text search term, will match applicable attributes -- `type` [query, string] (enum: path, certificate, browser, file_type, white_hash, dv_exclusions) — Type. Example: "path". -- `osTypes` [query, array] — List of Os types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user ids to filter by. Example: "225494730938493804,225494730938493915". -- `recommendations` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `value__contains` [query, array] — Free-text filter by value -- `description__contains` [query, array] — Free-text filter by description -- `user__contains` [query, array] — Free-text filter by user name -- `types` [query, array] — Type in. Example: "path". -- `modes` [query, array] — List of modes to filter by (Path exclusions only). Example: "suppress". -- `pathExclusionTypes` [query, array] — List of excluded paths in an exclusion (Path exclusions only). Example: "file". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `imported` [query, array] — Filter by import status: true (imported), false (not imported), or both for multiselect -- `applicationName__contains` [query, array] — Free-text filter by application name -- `inAppInventory` [query, boolean] — Found or Not found - indicates if this exclusion is related to an application found in the scope's Application Inventory. -- `modeType` [query, string] (enum: all, suppression, agent_interoperability, binary_vault) — Mode type. Example: "all". -- `childProcess` [query, boolean] — Child process -- `threatType` [query, array] — Threat type in. Example: "EDR". -- `engines` [query, array] — Engine in. Example: "suppress". -- `interactionLevel` [query, array] — Interaction level in. Example: "disable_all_monitors". -- `conditions` [query, array] — Conditions in. Example: "white_hash". -- `exclusionName__contains` [query, array] — Exclusion name like any -- `notRecommended` [query, array] — Not recommended in. Example: "Not recommended". -- `scopePath__contains` [query, array] — Scope path like any +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `unified` [query, boolean]: Unified +- `value` [query, string]: Value +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `query` [query, string]: A free-text search term, will match applicable attributes +- `type` [query, string] (enum: path, certificate, browser, file_type, white_hash, dv_exclusions): Type. Example: "path". +- `osTypes` [query, array]: List of Os types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user ids to filter by. Example: "225494730938493804,225494730938493915". +- `recommendations` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `value__contains` [query, array]: Free-text filter by value +- `description__contains` [query, array]: Free-text filter by description +- `user__contains` [query, array]: Free-text filter by user name +- `types` [query, array]: Type in. Example: "path". +- `modes` [query, array]: List of modes to filter by (Path exclusions only). Example: "suppress". +- `pathExclusionTypes` [query, array]: List of excluded paths in an exclusion (Path exclusions only). Example: "file". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `imported` [query, array]: Filter by import status: true (imported), false (not imported), or both for multiselect +- `applicationName__contains` [query, array]: Free-text filter by application name +- `inAppInventory` [query, boolean]: Found or Not found - indicates if this exclusion is related to an application found in the scope's Application Inventory. +- `modeType` [query, string] (enum: all, suppression, agent_interoperability, binary_vault): Mode type. Example: "all". +- `childProcess` [query, boolean]: Child process +- `threatType` [query, array]: Threat type in. Example: "EDR". +- `engines` [query, array]: Engine in. Example: "suppress". +- `interactionLevel` [query, array]: Interaction level in. Example: "disable_all_monitors". +- `conditions` [query, array]: Conditions in. Example: "white_hash". +- `exclusionName__contains` [query, array]: Exclusion name like any +- `notRecommended` [query, array]: Not recommended in. Example: "Not recommended". +- `scopePath__contains` [query, array]: Scope path like any Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -207,36 +207,36 @@ Get a csv of all the items in the Blocklist that match the filter.
      Note: To Required permissions: `Blacklist.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `unified` [query, boolean] — Unified -- `value` [query, string] — Value -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `query` [query, string] — A free-text search term, will match applicable attributes -- `type` [query, string] (enum: black_hash) — Type. Example: "black_hash". -- `osTypes` [query, array] — List of Os types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user ids to filter by. Example: "225494730938493804,225494730938493915". -- `recommendations` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `value__contains` [query, array] — Free-text filter by value -- `description__contains` [query, array] — Free-text filter by description -- `user__contains` [query, array] — Free-text filter by user name -- `types` [query, array] — Type in. Example: "black_hash". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `imported` [query, array] — Filter by import status: true (imported), false (not imported), or both for multiselect +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `unified` [query, boolean]: Unified +- `value` [query, string]: Value +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `query` [query, string]: A free-text search term, will match applicable attributes +- `type` [query, string] (enum: black_hash): Type. Example: "black_hash". +- `osTypes` [query, array]: List of Os types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user ids to filter by. Example: "225494730938493804,225494730938493915". +- `recommendations` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `value__contains` [query, array]: Free-text filter by value +- `description__contains` [query, array]: Free-text filter by description +- `user__contains` [query, array]: Free-text filter by user name +- `types` [query, array]: Type in. Example: "black_hash". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `imported` [query, array]: Filter by import status: true (imported), false (not imported), or both for multiselect Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -249,7 +249,7 @@ Agents immediately identify files on the blocklist and block them from executing Required permissions: `Blacklist.delete` Parameters: -- `body` [body, exclusions.schemas_DeleteRestrictionSchema] — +- `body` [body, exclusions.schemas_DeleteRestrictionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -262,44 +262,44 @@ Get a list of all the items in the Blocklist that match the filter.
      To filte Required permissions: `Blacklist.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, osType, description, scope, value, userName, source, scopePath, imported) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `unified` [query, boolean] — Unified -- `value` [query, string] — Value -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `query` [query, string] — A free-text search term, will match applicable attributes -- `type` [query, string] (enum: black_hash) — Type. Example: "black_hash". -- `osTypes` [query, array] — List of Os types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user ids to filter by. Example: "225494730938493804,225494730938493915". -- `recommendations` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `value__contains` [query, array] — Free-text filter by value -- `description__contains` [query, array] — Free-text filter by description -- `user__contains` [query, array] — Free-text filter by user name -- `types` [query, array] — Type in. Example: "black_hash". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `imported` [query, array] — Filter by import status: true (imported), false (not imported), or both for multiselect -- `modes` [query, array] — List of modes to filter by (Path exclusions only). Example: "suppress". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, osType, description, scope, value, userName, source, scopePath, imported): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `unified` [query, boolean]: Unified +- `value` [query, string]: Value +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `query` [query, string]: A free-text search term, will match applicable attributes +- `type` [query, string] (enum: black_hash): Type. Example: "black_hash". +- `osTypes` [query, array]: List of Os types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user ids to filter by. Example: "225494730938493804,225494730938493915". +- `recommendations` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `value__contains` [query, array]: Free-text filter by value +- `description__contains` [query, array]: Free-text filter by description +- `user__contains` [query, array]: Free-text filter by user name +- `types` [query, array]: Type in. Example: "black_hash". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `imported` [query, array]: Filter by import status: true (imported), false (not imported), or both for multiselect +- `modes` [query, array]: List of modes to filter by (Path exclusions only). Example: "suppress". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -312,7 +312,7 @@ Create a blocklist item for a SHA1 or SHA256 hash or both, for the scopes you en Required permissions: `Blacklist.create` Parameters: -- `body` [body, exclusions.schemas_PostRestrictionSchema] — +- `body` [body, exclusions.schemas_PostRestrictionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -325,7 +325,7 @@ Change the properties of a Blocklist item through the data fields. To get the or Required permissions: `Blacklist.edit` Parameters: -- `body` [body, exclusions.schemas_PutRestrictionSchema] — +- `body` [body, exclusions.schemas_PutRestrictionSchema]: Responses: 404 Blocklist not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -338,8 +338,8 @@ Upload a CSV file that contains blocklist entries to import to a scope in your M Required permissions: `Blacklist.create` Parameters: -- `filter` [formData, string] — The details of the scope where the entities will be imported, for example: For Global - '{"tenant":true}' For an Account - '{"accountIds": ["225494730938493804"]}' For a Site - '{"siteIds": ["225494730938493804"]}' For a Group - '{"groupIds": ["225494730938493804"]}' -- `file` [formData, file] **required** — The input CSV file +- `filter` [formData, string]: The details of the scope where the entities will be imported, for example: For Global - '{"tenant":true}' For an Account - '{"accountIds": ["225494730938493804"]}' For a Site - '{"siteIds": ["225494730938493804"]}' For a Group - '{"groupIds": ["225494730938493804"]}' +- `file` [formData, file] **required**: The input CSV file Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -352,7 +352,7 @@ Get the Validation Report generated for the import to help you fix entries that Required permissions: `Exclusions.view` Parameters: -- `report_id` [path, string] **required** — The ID of the requested Validation Report. Example: "225494730938493804". +- `report_id` [path, string] **required**: The ID of the requested Validation Report. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -365,6 +365,6 @@ Check if a hash is on the list of SentinelOne items that are "Not Allowed" or "N Required permissions: `Blacklist.create` Parameters: -- `body` [body, exclusions.schemas_ValidateRestrictionSchema] — +- `body` [body, exclusions.schemas_ValidateRestrictionSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_v2_1.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_v2_1.md index 117aecc..6aab56f 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_v2_1.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Exclusions_v2_1.md @@ -9,7 +9,7 @@ Required permissions: `Exclusions.delete` Parameters: -- `body` [body, exclusions.delete_schema_UnifiedExclusionSchemaDeleteRequest] — +- `body` [body, exclusions.delete_schema_UnifiedExclusionSchemaDeleteRequest]: Responses: 403 User is not allowed to perform this operation., 200 Exclusions successfully deleted., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -22,66 +22,66 @@ Get a list of all the Exclusions that match the filter.
      Note: To filter the Required permissions: `Exclusions.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, source, description, osType, scope, userName, scopePath, notRecommended, interactionLevel, childProcess, reason, user, threatType, engines, exclusionName, modeType, inAppInventory) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — List of IDs to exclude from filter. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `osTypes` [query, array] — List of OS types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `modeType` [query, array] — List of Exclusion Type to filter by: suppression, agent_interoperability, or binary_vault . Example: "all". -- `notRecommended` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `warnings` [query, array] — List of warnings to filter by. Example: "Not allowed". -- `pathExclusionTypes` [query, array] — List of excluded paths in an exclusion to filter by. Applies only to EDR exclusions of type path. Example: "file". -- `threatType` [query, array] — List of threat types to filter by. Example: "EDR". -- `engines` [query, array] — List of engines to filter by. Example: "suppress". -- `interactionLevel` [query, array] — List of interaction levels to filter by. Example: "disable_all_monitors". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false). -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false). -- `imported` [query, boolean] — Indicates if the exclusion was imported by a bulk operation or not. You can filter by this. -- `conditions` [query, array] — List of conditions to filter by. Example: "white_hash". -- `childProcess` [query, boolean] — Indicates if the exclusion applies to child processes or not. You can filter by this. -- `inAppInventory` [query, boolean] — Indicates if the exclusion is related to an application found in the scope's Application Inventory or not. You can filter by this. -- `exclusionName__contains` [query, array] — Free-text filter by exclusion name. -- `applicationName__contains` [query, array] — Free-text filter by application name. -- `value__contains` [query, array] — Free-text filter by value. -- `podName__contains` [query, array] — Free-text filter by pod name. -- `containerName__contains` [query, array] — Free-text filter by container name. -- `namespace__contains` [query, array] — Free-text filter by namespace. -- `sha256Image__contains` [query, array] — Free-text filter by SHA-256 of an image. -- `fullImageName__contains` [query, array] — Free-text filter by full image URI. -- `labelsKey__contains` [query, array] — Free-text filter by label key. -- `labelsValue__contains` [query, array] — Free-text filter by label value. -- `cmdlineValue__contains` [query, array] — Free-text filter by nested cmdline value. -- `pathValue__contains` [query, array] — Free-text filter by nested path value. -- `description__contains` [query, array] — Free-text filter by description. -- `user__contains` [query, array] — Free-text filter by username. -- `scopePath__contains` [query, array] — Free-text filter by scope path. -- `tags` [query, string] — Filter exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Exclusions that have any tags assigned if True, or none if False -- `tagIds` [query, array] — List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". -- `countsFor` [query, string] — comma-separated list of fields to be shown. Example: "threatType,interactionLevel". -- `tagsByGroup` [query, string] — Group exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. . Example: "{"key1": ["value1_1", "value1_2"], "key2": ["value2"]}". -- `hasTagsByGroup` [query, boolean] — Include Exclusions that have any tags assigned if True, or none if False +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, source, description, osType, scope, userName, scopePath, notRecommended, interactionLevel, childProcess, reason, user, threatType, engines, exclusionName, modeType, inAppInventory): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: List of IDs to exclude from filter. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `osTypes` [query, array]: List of OS types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `modeType` [query, array]: List of Exclusion Type to filter by: suppression, agent_interoperability, or binary_vault . Example: "all". +- `notRecommended` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `warnings` [query, array]: List of warnings to filter by. Example: "Not allowed". +- `pathExclusionTypes` [query, array]: List of excluded paths in an exclusion to filter by. Applies only to EDR exclusions of type path. Example: "file". +- `threatType` [query, array]: List of threat types to filter by. Example: "EDR". +- `engines` [query, array]: List of engines to filter by. Example: "suppress". +- `interactionLevel` [query, array]: List of interaction levels to filter by. Example: "disable_all_monitors". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false). +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false). +- `imported` [query, boolean]: Indicates if the exclusion was imported by a bulk operation or not. You can filter by this. +- `conditions` [query, array]: List of conditions to filter by. Example: "white_hash". +- `childProcess` [query, boolean]: Indicates if the exclusion applies to child processes or not. You can filter by this. +- `inAppInventory` [query, boolean]: Indicates if the exclusion is related to an application found in the scope's Application Inventory or not. You can filter by this. +- `exclusionName__contains` [query, array]: Free-text filter by exclusion name. +- `applicationName__contains` [query, array]: Free-text filter by application name. +- `value__contains` [query, array]: Free-text filter by value. +- `podName__contains` [query, array]: Free-text filter by pod name. +- `containerName__contains` [query, array]: Free-text filter by container name. +- `namespace__contains` [query, array]: Free-text filter by namespace. +- `sha256Image__contains` [query, array]: Free-text filter by SHA-256 of an image. +- `fullImageName__contains` [query, array]: Free-text filter by full image URI. +- `labelsKey__contains` [query, array]: Free-text filter by label key. +- `labelsValue__contains` [query, array]: Free-text filter by label value. +- `cmdlineValue__contains` [query, array]: Free-text filter by nested cmdline value. +- `pathValue__contains` [query, array]: Free-text filter by nested path value. +- `description__contains` [query, array]: Free-text filter by description. +- `user__contains` [query, array]: Free-text filter by username. +- `scopePath__contains` [query, array]: Free-text filter by scope path. +- `tags` [query, string]: Filter exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Exclusions that have any tags assigned if True, or none if False +- `tagIds` [query, array]: List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". +- `countsFor` [query, string]: comma-separated list of fields to be shown. Example: "threatType,interactionLevel". +- `tagsByGroup` [query, string]: Group exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. . Example: "{"key1": ["value1_1", "value1_2"], "key2": ["value2"]}". +- `hasTagsByGroup` [query, boolean]: Include Exclusions that have any tags assigned if True, or none if False Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -94,7 +94,7 @@ Create Exclusions to make your Agents suppress alerts and mitigation for items t Required permissions: `Exclusions.create` Parameters: -- `body` [body, object] — +- `body` [body, object]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -107,7 +107,7 @@ Change the properties of an Exclusion through the data fields. To get the origin Required permissions: `Exclusions.edit` Parameters: -- `body` [body, object] — +- `body` [body, object]: Responses: 404 Exclusion not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -120,68 +120,68 @@ Get a list of available actions for exclusions that match the filter criteria. Required permissions: `Exclusions.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, source, description, osType, scope, userName, scopePath, notRecommended, interactionLevel, childProcess, reason, user, threatType, engines, exclusionName, modeType, inAppInventory) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — List of IDs to exclude from filter. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `osTypes` [query, array] — List of OS types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `modeType` [query, array] — List of Exclusion Type to filter by: suppression, agent_interoperability, or binary_vault . Example: "all". -- `notRecommended` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `warnings` [query, array] — List of warnings to filter by. Example: "Not allowed". -- `pathExclusionTypes` [query, array] — List of excluded paths in an exclusion to filter by. Applies only to EDR exclusions of type path. Example: "file". -- `threatType` [query, array] — List of threat types to filter by. Example: "EDR". -- `engines` [query, array] — List of engines to filter by. Example: "suppress". -- `interactionLevel` [query, array] — List of interaction levels to filter by. Example: "disable_all_monitors". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false). -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false). -- `imported` [query, boolean] — Indicates if the exclusion was imported by a bulk operation or not. You can filter by this. -- `conditions` [query, array] — List of conditions to filter by. Example: "white_hash". -- `childProcess` [query, boolean] — Indicates if the exclusion applies to child processes or not. You can filter by this. -- `inAppInventory` [query, boolean] — Indicates if the exclusion is related to an application found in the scope's Application Inventory or not. You can filter by this. -- `exclusionName__contains` [query, array] — Free-text filter by exclusion name. -- `applicationName__contains` [query, array] — Free-text filter by application name. -- `value__contains` [query, array] — Free-text filter by value. -- `podName__contains` [query, array] — Free-text filter by pod name. -- `containerName__contains` [query, array] — Free-text filter by container name. -- `namespace__contains` [query, array] — Free-text filter by namespace. -- `sha256Image__contains` [query, array] — Free-text filter by SHA-256 of an image. -- `fullImageName__contains` [query, array] — Free-text filter by full image URI. -- `labelsKey__contains` [query, array] — Free-text filter by label key. -- `labelsValue__contains` [query, array] — Free-text filter by label value. -- `cmdlineValue__contains` [query, array] — Free-text filter by nested cmdline value. -- `pathValue__contains` [query, array] — Free-text filter by nested path value. -- `description__contains` [query, array] — Free-text filter by description. -- `user__contains` [query, array] — Free-text filter by username. -- `scopePath__contains` [query, array] — Free-text filter by scope path. -- `tags` [query, string] — Filter exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Exclusions that have any tags assigned if True, or none if False -- `tagIds` [query, array] — List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". -- `countsFor` [query, string] — comma-separated list of fields to be shown. Example: "threatType,interactionLevel". -- `tagsByGroup` [query, string] — Group exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. . Example: "{"key1": ["value1_1", "value1_2"], "key2": ["value2"]}". -- `hasTagsByGroup` [query, boolean] — Include Exclusions that have any tags assigned if True, or none if False -- `create` [query, boolean] **required** — Create -- `selectAll` [query, boolean] — When true, calculate actions for all exclusions matching filters (not just selected IDs). +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, source, description, osType, scope, userName, scopePath, notRecommended, interactionLevel, childProcess, reason, user, threatType, engines, exclusionName, modeType, inAppInventory): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: List of IDs to exclude from filter. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `osTypes` [query, array]: List of OS types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `modeType` [query, array]: List of Exclusion Type to filter by: suppression, agent_interoperability, or binary_vault . Example: "all". +- `notRecommended` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `warnings` [query, array]: List of warnings to filter by. Example: "Not allowed". +- `pathExclusionTypes` [query, array]: List of excluded paths in an exclusion to filter by. Applies only to EDR exclusions of type path. Example: "file". +- `threatType` [query, array]: List of threat types to filter by. Example: "EDR". +- `engines` [query, array]: List of engines to filter by. Example: "suppress". +- `interactionLevel` [query, array]: List of interaction levels to filter by. Example: "disable_all_monitors". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false). +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false). +- `imported` [query, boolean]: Indicates if the exclusion was imported by a bulk operation or not. You can filter by this. +- `conditions` [query, array]: List of conditions to filter by. Example: "white_hash". +- `childProcess` [query, boolean]: Indicates if the exclusion applies to child processes or not. You can filter by this. +- `inAppInventory` [query, boolean]: Indicates if the exclusion is related to an application found in the scope's Application Inventory or not. You can filter by this. +- `exclusionName__contains` [query, array]: Free-text filter by exclusion name. +- `applicationName__contains` [query, array]: Free-text filter by application name. +- `value__contains` [query, array]: Free-text filter by value. +- `podName__contains` [query, array]: Free-text filter by pod name. +- `containerName__contains` [query, array]: Free-text filter by container name. +- `namespace__contains` [query, array]: Free-text filter by namespace. +- `sha256Image__contains` [query, array]: Free-text filter by SHA-256 of an image. +- `fullImageName__contains` [query, array]: Free-text filter by full image URI. +- `labelsKey__contains` [query, array]: Free-text filter by label key. +- `labelsValue__contains` [query, array]: Free-text filter by label value. +- `cmdlineValue__contains` [query, array]: Free-text filter by nested cmdline value. +- `pathValue__contains` [query, array]: Free-text filter by nested path value. +- `description__contains` [query, array]: Free-text filter by description. +- `user__contains` [query, array]: Free-text filter by username. +- `scopePath__contains` [query, array]: Free-text filter by scope path. +- `tags` [query, string]: Filter exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Exclusions that have any tags assigned if True, or none if False +- `tagIds` [query, array]: List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". +- `countsFor` [query, string]: comma-separated list of fields to be shown. Example: "threatType,interactionLevel". +- `tagsByGroup` [query, string]: Group exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. . Example: "{"key1": ["value1_1", "value1_2"], "key2": ["value2"]}". +- `hasTagsByGroup` [query, boolean]: Include Exclusions that have any tags assigned if True, or none if False +- `create` [query, boolean] **required**: Create +- `selectAll` [query, boolean]: When true, calculate actions for all exclusions matching filters (not just selected IDs). Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -194,7 +194,7 @@ Create Bulk Exclusions to make your Agents suppress alerts and mitigation for it Required permissions: `Exclusions.create` Parameters: -- `body` [body, exclusions.post_schema_PostUnifiedExclusionSchema_many] — +- `body` [body, exclusions.post_schema_PostUnifiedExclusionSchema_many]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -207,59 +207,59 @@ Export the currently filtered exclusions to a JSON file. You can use the export Required permissions: `Exclusions.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `idsNin` [query, array] — List of IDs to exclude from filter. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `osTypes` [query, array] — List of OS types to filter by. Example: "macos". -- `source` [query, array] — List sources to filter by. Example: "user". -- `userIds` [query, array] — List of user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `modeType` [query, array] — List of Exclusion Type to filter by: suppression, agent_interoperability, or binary_vault . Example: "all". -- `notRecommended` [query, array] — List of recommendations to filter by. Example: "Not recommended". -- `warnings` [query, array] — List of warnings to filter by. Example: "Not allowed". -- `pathExclusionTypes` [query, array] — List of excluded paths in an exclusion to filter by. Applies only to EDR exclusions of type path. Example: "file". -- `threatType` [query, array] — List of threat types to filter by. Example: "EDR". -- `engines` [query, array] — List of engines to filter by. Example: "suppress". -- `interactionLevel` [query, array] — List of interaction levels to filter by. Example: "disable_all_monitors". -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false). -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false). -- `imported` [query, boolean] — Indicates if the exclusion was imported by a bulk operation or not. You can filter by this. -- `conditions` [query, array] — List of conditions to filter by. Example: "white_hash". -- `childProcess` [query, boolean] — Indicates if the exclusion applies to child processes or not. You can filter by this. -- `inAppInventory` [query, boolean] — Indicates if the exclusion is related to an application found in the scope's Application Inventory or not. You can filter by this. -- `exclusionName__contains` [query, array] — Free-text filter by exclusion name. -- `applicationName__contains` [query, array] — Free-text filter by application name. -- `value__contains` [query, array] — Free-text filter by value. -- `podName__contains` [query, array] — Free-text filter by pod name. -- `containerName__contains` [query, array] — Free-text filter by container name. -- `namespace__contains` [query, array] — Free-text filter by namespace. -- `sha256Image__contains` [query, array] — Free-text filter by SHA-256 of an image. -- `fullImageName__contains` [query, array] — Free-text filter by full image URI. -- `labelsKey__contains` [query, array] — Free-text filter by label key. -- `labelsValue__contains` [query, array] — Free-text filter by label value. -- `cmdlineValue__contains` [query, array] — Free-text filter by nested cmdline value. -- `pathValue__contains` [query, array] — Free-text filter by nested path value. -- `description__contains` [query, array] — Free-text filter by description. -- `user__contains` [query, array] — Free-text filter by username. -- `scopePath__contains` [query, array] — Free-text filter by scope path. -- `tags` [query, string] — Filter exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasTags` [query, boolean] — Include only Exclusions that have any tags assigned if True, or none if False -- `tagIds` [query, array] — List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". -- `countsFor` [query, string] — comma-separated list of fields to be shown. Example: "threatType,interactionLevel". -- `tagsByGroup` [query, string] — Group exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. . Example: "{"key1": ["value1_1", "value1_2"], "key2": ["value2"]}". -- `hasTagsByGroup` [query, boolean] — Include Exclusions that have any tags assigned if True, or none if False +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `idsNin` [query, array]: List of IDs to exclude from filter. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `osTypes` [query, array]: List of OS types to filter by. Example: "macos". +- `source` [query, array]: List sources to filter by. Example: "user". +- `userIds` [query, array]: List of user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `modeType` [query, array]: List of Exclusion Type to filter by: suppression, agent_interoperability, or binary_vault . Example: "all". +- `notRecommended` [query, array]: List of recommendations to filter by. Example: "Not recommended". +- `warnings` [query, array]: List of warnings to filter by. Example: "Not allowed". +- `pathExclusionTypes` [query, array]: List of excluded paths in an exclusion to filter by. Applies only to EDR exclusions of type path. Example: "file". +- `threatType` [query, array]: List of threat types to filter by. Example: "EDR". +- `engines` [query, array]: List of engines to filter by. Example: "suppress". +- `interactionLevel` [query, array]: List of interaction levels to filter by. Example: "disable_all_monitors". +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false). +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false). +- `imported` [query, boolean]: Indicates if the exclusion was imported by a bulk operation or not. You can filter by this. +- `conditions` [query, array]: List of conditions to filter by. Example: "white_hash". +- `childProcess` [query, boolean]: Indicates if the exclusion applies to child processes or not. You can filter by this. +- `inAppInventory` [query, boolean]: Indicates if the exclusion is related to an application found in the scope's Application Inventory or not. You can filter by this. +- `exclusionName__contains` [query, array]: Free-text filter by exclusion name. +- `applicationName__contains` [query, array]: Free-text filter by application name. +- `value__contains` [query, array]: Free-text filter by value. +- `podName__contains` [query, array]: Free-text filter by pod name. +- `containerName__contains` [query, array]: Free-text filter by container name. +- `namespace__contains` [query, array]: Free-text filter by namespace. +- `sha256Image__contains` [query, array]: Free-text filter by SHA-256 of an image. +- `fullImageName__contains` [query, array]: Free-text filter by full image URI. +- `labelsKey__contains` [query, array]: Free-text filter by label key. +- `labelsValue__contains` [query, array]: Free-text filter by label value. +- `cmdlineValue__contains` [query, array]: Free-text filter by nested cmdline value. +- `pathValue__contains` [query, array]: Free-text filter by nested path value. +- `description__contains` [query, array]: Free-text filter by description. +- `user__contains` [query, array]: Free-text filter by username. +- `scopePath__contains` [query, array]: Free-text filter by scope path. +- `tags` [query, string]: Filter exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasTags` [query, boolean]: Include only Exclusions that have any tags assigned if True, or none if False +- `tagIds` [query, array]: List of tag IDs to filter by. Example: "225494730938493804,225494730938493915". +- `countsFor` [query, string]: comma-separated list of fields to be shown. Example: "threatType,interactionLevel". +- `tagsByGroup` [query, string]: Group exclusions by their assigned tags. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. . Example: "{"key1": ["value1_1", "value1_2"], "key2": ["value2"]}". +- `hasTagsByGroup` [query, boolean]: Include Exclusions that have any tags assigned if True, or none if False Responses: 403 User is not allowed to perform this operation., 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -272,7 +272,7 @@ Import exclusions to a specified scope in the Console. Use an exclusion JSON fil Required permissions: `Exclusions.create` Parameters: -- `filter` [formData, object] **required** — Filter -- `file` [formData, file] **required** — The input JSON or CSV file +- `filter` [formData, object] **required**: Filter +- `file` [formData, file] **required**: The input JSON or CSV file Responses: 403 User is not allowed to perform this operation., 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Filters.md index 9d08592..ed09d47 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Filters.md @@ -11,20 +11,20 @@ Get the list of saved filters. See Save Filter. The response includes the ID of Required permissions: `Endpoints.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Text query for filter's name. Example: "MyFilter". -- `includeGlobal` [query, boolean] — [DEPRECATED] Return global filters even when specific sites are selected -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `ids` [query, array] — A list of Filter IDs. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Text query for filter's name. Example: "MyFilter". +- `includeGlobal` [query, boolean]: [DEPRECATED] Return global filters even when specific sites are selected +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `ids` [query, array]: A list of Filter IDs. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -32,13 +32,13 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f **Save Filter** `operationId`: `_web_api_filters_post` -Save a new filter to get a list of matching endpoints. When you save a filter, you can run actions on the Agents as a set of objects or create a dynamic group (automatically adds new Agents that match the filter and drops Agents if they change to not match). +Save a new filter to get a list of matching endpoints. When you save a filter, you can run actions on the Agents as a set of objects or create a dynamic group (automatically adds new Agents that match the filter and drops Agents if they change to not match). For example, you can save a filter with {"data":{"filterFields":{"infected":true}}} to run kill and quarantine commands on all the Agents at once, or to create a group that holds currently infected endpoints. Best Practice: Set a scope for the new Saved Filter. Run "accounts", "sites", or "groups" to get the IDs for the scope. Required permissions: `Endpoints.edit` Parameters: -- `body` [body, filters.filters_NewFilterSchema] — +- `body` [body, filters.filters_NewFilterSchema]: Responses: 403 User is not allowed to perform this operation., 200 Filter successfully saved. Returns created object., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -51,9 +51,9 @@ Upload CSV file Required permissions: `Endpoints.view` Parameters: -- `agentFilterField` [formData, string] **required** — The property of the endpoint to filter by -- `excludeHeader` [formData, boolean] **required** — Set to True to exclude the column header -- `file` [formData, file] **required** — File +- `agentFilterField` [formData, string] **required**: The property of the endpoint to filter by +- `excludeHeader` [formData, boolean] **required**: Set to True to exclude the column header +- `file` [formData, file] **required**: File Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -66,21 +66,21 @@ Get saved Deep Visibility queries with full data. See Save Deep Visibility Filte Required permissions: `Deep Visibility.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Text query for filter's name. Example: "MyFilter". -- `includeGlobal` [query, boolean] — [DEPRECATED] Return global filters even when specific sites are selected -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `ids` [query, array] — A list of Filter IDs. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Text query for filter's name. Example: "MyFilter". +- `includeGlobal` [query, boolean]: [DEPRECATED] Return global filters even when specific sites are selected +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `ids` [query, array]: A list of Filter IDs. Example: "225494730938493804,225494730938493915". Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -88,13 +88,13 @@ Responses: 400 Invalid user input received. See error details for further i, 401 **[DEPRECATED] Save Deep Visibility Filter** `operationId`: `_web_api_filters_dv_post` -Save a Deep Visibility query with data as a filter, to get notifications of specific events sent to named recipients on a given frequency. The recipients must be Console users with permissions on the scope of the query. Notifications are sent through email: you must have an SMTP server configured in the SentinelOne solution (/settings/smtp see Set SMTP Settings). +Save a Deep Visibility query with data as a filter, to get notifications of specific events sent to named recipients on a given frequency. The recipients must be Console users with permissions on the scope of the query. Notifications are sent through email: you must have an SMTP server configured in the SentinelOne solution (/settings/smtp see Set SMTP Settings). Deep Visibility requires a Complete SKU. Required permissions: `Deep Visibility.create` Parameters: -- `body` [body, filters.filters_NewDeepVisibilityFilterSchema] — +- `body` [body, filters.filters_NewDeepVisibilityFilterSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -107,7 +107,7 @@ Delete a saved Deep Visibility query. Required permissions: `Deep Visibility.delete` Parameters: -- `filter_id` [path, string] **required** — Filter ID. Example: "225494730938493804". +- `filter_id` [path, string] **required**: Filter ID. Example: "225494730938493804". Responses: 404 Filter not found, 403 User is not allowed to perform this operation., 200 Filter successfully deleted., 401 Unauthorized access - please sign in and retry. @@ -120,8 +120,8 @@ Change a saved Deep Visibility filter. To get the ID and fields to change, run G Required permissions: `Deep Visibility.edit` Parameters: -- `filter_id` [path, string] **required** — Filter ID. Example: "225494730938493804". -- `body` [body, filters.filters_NewDeepVisibilityFilterSchema] — +- `filter_id` [path, string] **required**: Filter ID. Example: "225494730938493804". +- `body` [body, filters.filters_NewDeepVisibilityFilterSchema]: Responses: 404 Filter not found, 403 User is not allowed to perform this operation., 200 Filter successfully updated. Returns updated object., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -134,7 +134,7 @@ Delete a saved filter. Required permissions: `Endpoints.edit` Parameters: -- `filter_id` [path, string] **required** — Filter ID. Example: "225494730938493804". +- `filter_id` [path, string] **required**: Filter ID. Example: "225494730938493804". Responses: 404 Filter not found, 403 User is not allowed to perform this operation., 200 Filter successfully deleted., 401 Unauthorized access - please sign in and retry. @@ -147,8 +147,8 @@ Update an existing filter Required permissions: `Endpoints.edit` Parameters: -- `filter_id` [path, string] **required** — Filter ID. Example: "225494730938493804". -- `body` [body, filters.filters_UpdateFilterSchema] — +- `filter_id` [path, string] **required**: Filter ID. Example: "225494730938493804". +- `body` [body, filters.filters_UpdateFilterSchema]: Responses: 404 Filter not found, 403 User is not allowed to perform this operation., 200 Filter successfully updated. Returns updated object., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -161,19 +161,19 @@ Get the list of saved filters. See Save Filter. The response includes the ID of Required permissions: `XDR Inventory.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `accountIds` [query, array] — List of Account IDs to filter by -- `query` [query, string] — Text query for filter's name -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `ids` [query, array] — A list of Filter IDs -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `siteIds` [query, array] — List of Site IDs to filter by -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt) — The column to sort the results by. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `accountIds` [query, array]: List of Account IDs to filter by +- `query` [query, string]: Text query for filter's name +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `ids` [query, array]: A list of Filter IDs +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `siteIds` [query, array]: List of Site IDs to filter by +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt): The column to sort the results by. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -181,13 +181,13 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f **Save Filter** `operationId`: `_web_api_xdr_filters_post` -Save a new filter to get a list of matching endpoints. When you save a filter, you can run actions on the Agents as a set of objects or create a dynamic group (automatically adds new Agents that match the filter and drops Agents if they change to not match). +Save a new filter to get a list of matching endpoints. When you save a filter, you can run actions on the Agents as a set of objects or create a dynamic group (automatically adds new Agents that match the filter and drops Agents if they change to not match). For example, you can save a filter with {"data":{"filterFields":{"infected":true}}} to run kill and quarantine commands on all the Agents at once, or to create a group that holds currently infected endpoints. Best Practice: Set a scope for the new Saved Filter. Run "accounts", "sites", or "groups" to get the IDs for the scope. Required permissions: `XDR Inventory.edit` Parameters: -- `body` [body, v2_1.config.schemas_NewFilterSchema] — +- `body` [body, v2_1.config.schemas_NewFilterSchema]: Responses: 403 User is not allowed to perform this operation., 200 Filter successfully saved. Returns created object., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -200,7 +200,7 @@ Delete a saved filter. Required permissions: `XDR Inventory.edit` Parameters: -- `filter_id` [path, string] **required** — Filter ID +- `filter_id` [path, string] **required**: Filter ID Responses: 404 Filter not found, 403 User is not allowed to perform this operation., 200 Filter successfully deleted., 401 Unauthorized access - please sign in and retry. @@ -213,8 +213,8 @@ Update an existing filter Required permissions: `XDR Inventory.edit` Parameters: -- `filter_id` [path, string] **required** — Filter ID -- `body` [body, v2_1.config.schemas_UpdateFilterSchema] — +- `filter_id` [path, string] **required**: Filter ID +- `body` [body, v2_1.config.schemas_UpdateFilterSchema]: Responses: 404 Filter not found, 403 User is not allowed to perform this operation., 200 Filter successfully updated. Returns updated object., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -227,18 +227,18 @@ Get a list of saved endpoint filters, with enriched data. One of the fields in t Required permissions: `XDR Inventory.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `accountIds` [query, array] — List of Account IDs to filter by -- `query` [query, string] — Text query for filter's name -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `includeChildren` [query, boolean] — Return filters from children scope levels (Default: false) -- `ids` [query, array] — A list of Filter IDs -- `includeParents` [query, boolean] — Return filters from parent scope levels (Default: false) -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `siteIds` [query, array] — List of Site IDs to filter by -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt) — The column to sort the results by. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `accountIds` [query, array]: List of Account IDs to filter by +- `query` [query, string]: Text query for filter's name +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `includeChildren` [query, boolean]: Return filters from children scope levels (Default: false) +- `ids` [query, array]: A list of Filter IDs +- `includeParents` [query, boolean]: Return filters from parent scope levels (Default: false) +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `siteIds` [query, array]: List of Site IDs to filter by +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, createdAt, updatedAt): The column to sort the results by. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Firewall_Control.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Firewall_Control.md index ea27086..0c77f96 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Firewall_Control.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Firewall_Control.md @@ -10,7 +10,7 @@ Delete Firewall Control rules that match the filter. Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_RuleDeleteSchema] — +- `body` [body, firewall_control.schemas_RuleDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -22,40 +22,40 @@ Get the Firewall Control rules for a scope specified by ID (run "accounts", "sit Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, action, status, order) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — Free text search on name, tag, application, protocol -- `scopes` [query, array] — Return only firewall rules in this scope. Example: "site". -- `applications` [query, array] — Return firewall rules with the filtered firewall class. -- `name` [query, string] — Return firewall rules with the filtered name. -- `protocols` [query, array] — Return firewall rules with the filtered protocols. -- `osTypes` [query, array] — Return firewall rules with the filtered os_type. Example: "macos". -- `directions` [query, array] — Return firewall rules with the filtered directions. Example: "any". -- `actions` [query, array] — Return firewall rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return firewall rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `locationIds` [query, array] — Filter by associated locations. Example: "225494730938493804,225494730938493915". -- `tagIds` [query, array] — Filter by associated tags. Example: "225494730938493804,225494730938493915". -- `name__contains` [query, array] — Free-text filter by the Rule name (supports multiple values) -- `tagName__contains` [query, array] — Free-text filter by the Tag name (supports multiple values) -- `application__contains` [query, array] — Free-text filter by application (supports multiple values) -- `protocol__contains` [query, array] — Free-text filter by protocol (supports multiple values) -- `service__contains` [query, array] — Free-text filter by service (supports multiple values) -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, action, status, order): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: Free text search on name, tag, application, protocol +- `scopes` [query, array]: Return only firewall rules in this scope. Example: "site". +- `applications` [query, array]: Return firewall rules with the filtered firewall class. +- `name` [query, string]: Return firewall rules with the filtered name. +- `protocols` [query, array]: Return firewall rules with the filtered protocols. +- `osTypes` [query, array]: Return firewall rules with the filtered os_type. Example: "macos". +- `directions` [query, array]: Return firewall rules with the filtered directions. Example: "any". +- `actions` [query, array]: Return firewall rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return firewall rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `locationIds` [query, array]: Filter by associated locations. Example: "225494730938493804,225494730938493915". +- `tagIds` [query, array]: Filter by associated tags. Example: "225494730938493804,225494730938493915". +- `name__contains` [query, array]: Free-text filter by the Rule name (supports multiple values) +- `tagName__contains` [query, array]: Free-text filter by the Tag name (supports multiple values) +- `application__contains` [query, array]: Free-text filter by application (supports multiple values) +- `protocol__contains` [query, array]: Free-text filter by protocol (supports multiple values) +- `service__contains` [query, array]: Free-text filter by service (supports multiple values) +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -67,7 +67,7 @@ Create a Firewall Control rule for a scope specified by ID (run "accounts", "sit Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_PostFirewallSchema] — +- `body` [body, firewall_control.schemas_PostFirewallSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -79,7 +79,7 @@ Create a Firewall Rule tag.
      Create tags to represent Firewall policies - a s Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema] — +- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -91,10 +91,10 @@ Get the Firewall Control configuration for a given scope.
      To filter the resul Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -106,7 +106,7 @@ Change the Firewall Control configuration for a given scope.
      To get the ID Optional permissions: `Firewall Control.modifySettings(preferencesTab), Network Quarantine Control.modifySettings(preferencesTab), Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_PostFirewallSettingsSchema] — +- `body` [body, firewall_control.schemas_PostFirewallSettingsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,7 +118,7 @@ Copy a set of rules to other scopes.
      In the filter of the body, enter the pr Optional permissions: `Firewall Control.view, Network Quarantine Control.view, Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_CopyRuleSchema] — +- `body` [body, firewall_control.schemas_CopyRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -130,7 +130,7 @@ Change the status of a set of Firewall Control rules that match the filter to "E Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_EnableRuleSchema] — +- `body` [body, firewall_control.schemas_EnableRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -142,32 +142,32 @@ Export Firewall Control rules that match the filter to a JSON file from a scope Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — Free text search on name, tag, application, protocol -- `scopes` [query, array] — Return only firewall rules in this scope. Example: "site". -- `applications` [query, array] — Return firewall rules with the filtered firewall class. -- `name` [query, string] — Return firewall rules with the filtered name. -- `protocols` [query, array] — Return firewall rules with the filtered protocols. -- `osTypes` [query, array] — Return firewall rules with the filtered os_type. Example: "macos". -- `directions` [query, array] — Return firewall rules with the filtered directions. Example: "any". -- `actions` [query, array] — Return firewall rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return firewall rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `locationIds` [query, array] — Filter by associated locations. Example: "225494730938493804,225494730938493915". -- `tagIds` [query, array] — Filter by associated tags. Example: "225494730938493804,225494730938493915". -- `name__contains` [query, array] — Free-text filter by the Rule name (supports multiple values) -- `tagName__contains` [query, array] — Free-text filter by the Tag name (supports multiple values) -- `application__contains` [query, array] — Free-text filter by application (supports multiple values) -- `protocol__contains` [query, array] — Free-text filter by protocol (supports multiple values) -- `service__contains` [query, array] — Free-text filter by service (supports multiple values) +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: Free text search on name, tag, application, protocol +- `scopes` [query, array]: Return only firewall rules in this scope. Example: "site". +- `applications` [query, array]: Return firewall rules with the filtered firewall class. +- `name` [query, string]: Return firewall rules with the filtered name. +- `protocols` [query, array]: Return firewall rules with the filtered protocols. +- `osTypes` [query, array]: Return firewall rules with the filtered os_type. Example: "macos". +- `directions` [query, array]: Return firewall rules with the filtered directions. Example: "any". +- `actions` [query, array]: Return firewall rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return firewall rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `locationIds` [query, array]: Filter by associated locations. Example: "225494730938493804,225494730938493915". +- `tagIds` [query, array]: Filter by associated tags. Example: "225494730938493804,225494730938493915". +- `name__contains` [query, array]: Free-text filter by the Rule name (supports multiple values) +- `tagName__contains` [query, array]: Free-text filter by the Tag name (supports multiple values) +- `application__contains` [query, array]: Free-text filter by application (supports multiple values) +- `protocol__contains` [query, array]: Free-text filter by protocol (supports multiple values) +- `service__contains` [query, array]: Free-text filter by service (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -179,11 +179,11 @@ Import Firewall Control rules from an exported JSON file to scopes specified by Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `accountIds` [formData, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [formData, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [formData, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [formData, boolean] — Indicates a tenant scope request -- `file` [formData, file] **required** — File +- `accountIds` [formData, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [formData, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [formData, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [formData, boolean]: Indicates a tenant scope request +- `file` [formData, file] **required**: File Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -195,7 +195,7 @@ Remove Firewall Rules, defined with the ID of the rules (run 'firewall-control') Optional permissions: `Firewall Control.view, Network Quarantine Control.view, Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_CopyRuleSchema] — +- `body` [body, firewall_control.schemas_CopyRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -207,15 +207,15 @@ Get a list of protocols that can be used in Firewall Control rules. Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: name) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `query` [query, string] — Full text search on protocols -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: name): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `query` [query, string]: Full text search on protocols +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -227,7 +227,7 @@ Remove firewall tags from rules matching the filter.
      Tags represent Firewall Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema] — +- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -239,7 +239,7 @@ Change the order of rules for a scope specified by ID (run "accounts", "sites", Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_ReorderSchema] — +- `body` [body, firewall_control.schemas_ReorderSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -251,7 +251,7 @@ Set location attributes for a Location Aware Firewall Control rule. These rules Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `body` [body, firewall_control.schemas_SetLocationSchema] — +- `body` [body, firewall_control.schemas_SetLocationSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -263,41 +263,41 @@ Get all Firewall rules linked to tag, regardless of inheritance mode.
      To get Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `tag_id` [path, string] **required** — Rule ID. Example: "225494730938493804". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, action, status, order) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — Free text search on name, tag, application, protocol -- `scopes` [query, array] — Return only firewall rules in this scope. Example: "site". -- `applications` [query, array] — Return firewall rules with the filtered firewall class. -- `name` [query, string] — Return firewall rules with the filtered name. -- `protocols` [query, array] — Return firewall rules with the filtered protocols. -- `osTypes` [query, array] — Return firewall rules with the filtered os_type. Example: "macos". -- `directions` [query, array] — Return firewall rules with the filtered directions. Example: "any". -- `actions` [query, array] — Return firewall rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return firewall rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `locationIds` [query, array] — Filter by associated locations. Example: "225494730938493804,225494730938493915". -- `tagIds` [query, array] — Filter by associated tags. Example: "225494730938493804,225494730938493915". -- `name__contains` [query, array] — Free-text filter by the Rule name (supports multiple values) -- `tagName__contains` [query, array] — Free-text filter by the Tag name (supports multiple values) -- `application__contains` [query, array] — Free-text filter by application (supports multiple values) -- `protocol__contains` [query, array] — Free-text filter by protocol (supports multiple values) -- `service__contains` [query, array] — Free-text filter by service (supports multiple values) -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned +- `tag_id` [path, string] **required**: Rule ID. Example: "225494730938493804". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, action, status, order): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: Free text search on name, tag, application, protocol +- `scopes` [query, array]: Return only firewall rules in this scope. Example: "site". +- `applications` [query, array]: Return firewall rules with the filtered firewall class. +- `name` [query, string]: Return firewall rules with the filtered name. +- `protocols` [query, array]: Return firewall rules with the filtered protocols. +- `osTypes` [query, array]: Return firewall rules with the filtered os_type. Example: "macos". +- `directions` [query, array]: Return firewall rules with the filtered directions. Example: "any". +- `actions` [query, array]: Return firewall rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return firewall rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `locationIds` [query, array]: Filter by associated locations. Example: "225494730938493804,225494730938493915". +- `tagIds` [query, array]: Filter by associated tags. Example: "225494730938493804,225494730938493915". +- `name__contains` [query, array]: Free-text filter by the Rule name (supports multiple values) +- `tagName__contains` [query, array]: Free-text filter by the Tag name (supports multiple values) +- `application__contains` [query, array]: Free-text filter by application (supports multiple values) +- `protocol__contains` [query, array]: Free-text filter by protocol (supports multiple values) +- `service__contains` [query, array]: Free-text filter by service (supports multiple values) +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -309,7 +309,7 @@ Change a Firewall Control rule.
      This command requires the rule ID, which you Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — Rule ID. Example: "225494730938493804". -- `body` [body, firewall_control.schemas_PutFirewallSchema] — +- `firewall_rule_category` [path, string] **required**: Rule ID. Example: "225494730938493804". +- `body` [body, firewall_control.schemas_PutFirewallSchema]: Responses: 404 Firewall rule not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Forensics.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Forensics.md index f854b67..2beaad9 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Forensics.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Forensics.md @@ -11,10 +11,10 @@ DEPRECATED Required permissions: `Threats.view, Applications Page.view` Parameters: -- `application_id` [path, string] **required** — Application ID. Example: "56ee72a79c7e5c62dd36e6b1". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `application_id` [path, string] **required**: Application ID. Example: "56ee72a79c7e5c62dd36e6b1". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -27,11 +27,11 @@ Responses: 404 Not found, 200 Success, 400 Invalid user input received. See erro Required permissions: `Threats.view, Applications Page.view` Parameters: -- `application_id` [path, string] **required** — Application ID. Example: "56ee72a79c7e5c62dd36e6b1". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `country_code` [query, string] — Country code +- `application_id` [path, string] **required**: Application ID. Example: "56ee72a79c7e5c62dd36e6b1". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `country_code` [query, string]: Country code Responses: 404 Not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -44,10 +44,10 @@ Responses: 404 Not found, 200 Success, 400 Invalid user input received. See erro Required permissions: `Threats.view, Applications Page.view` Parameters: -- `application_id` [path, string] **required** — Application ID. Example: "56ee72a79c7e5c62dd36e6b1". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `application_id` [path, string] **required**: Application ID. Example: "56ee72a79c7e5c62dd36e6b1". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -60,10 +60,10 @@ Responses: 404 Not found, 200 Success, 400 Invalid user input received. See erro Required permissions: `Threats.view, Applications Page.view` Parameters: -- `application_id` [path, string] **required** — Application ID. Example: "56ee72a79c7e5c62dd36e6b1". -- `export_format` [path, string] **required** (enum: csv, json) — Export format. Example: "csv". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `application_id` [path, string] **required**: Application ID. Example: "56ee72a79c7e5c62dd36e6b1". +- `export_format` [path, string] **required** (enum: csv, json): Export format. Example: "csv". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Gateways.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Gateways.md index df14fb6..8c41714 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Gateways.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Gateways.md @@ -6,78 +6,78 @@ **Get Gateways** `operationId`: `_web_api_ranger_gateways_get` -Get the gateways in your deployment that match the filter from a Network Discovery scan. +Get the gateways in your deployment that match the filter from a Network Discovery scan. Network Discovery requires a Network Discovery license. Required permissions: `Ranger.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, ip, macAddress, externalIp, allowScan, networkName, totalAgents, agentPercentage, createdAt, numberOfAgents, numberOfRangers, expiryDate, connectedRangers) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Free text query -- `ip` [query, string] — Search ip using a CIDR expression exact IP -- `macAddress` [query, string] — The gateway mac address -- `externalIp` [query, string] — Search external ip using a CIDR expression or exact IP -- `allowScan` [query, string] — Do we allow scanning in this network -- `ids` [query, array] — List of gateway ids. Example: "225494730938493804,225494730938493915". -- `scanOnlyLocalSubnets` [query, boolean] — Allow remote tasks form this network -- `new` [query, boolean] — True if this is network was first seen some days ago, 3 by default -- `archived` [query, boolean] — Archived network -- `numberOfAgents__lt` [query, integer] — Agent count (less than) -- `numberOfAgents__lte` [query, integer] — Agent count (less than or equal) -- `numberOfAgents__gt` [query, integer] — Agent count (more than) -- `numberOfAgents__gte` [query, integer] — Agent count (more than or equal) -- `numberOfAgents__between` [query, string] — The number of non decommissioned agents in this network. Example: "2-8". -- `numberOfRangers__lt` [query, integer] — Network Discovery count (less than) -- `numberOfRangers__lte` [query, integer] — Network Discovery count (less than or equal) -- `numberOfRangers__gt` [query, integer] — Network Discovery count (more than) -- `numberOfRangers__gte` [query, integer] — Network Discovery count (more than or equal) -- `numberOfRangers__between` [query, string] — The number of non decommissioned agents in this network. Example: "2-8". -- `agentPercentage__lt` [query, number] — Agent percentage (less than) -- `agentPercentage__lte` [query, number] — Agent percentage (less than or equal) -- `agentPercentage__gt` [query, number] — Agent percentage (more than) -- `agentPercentage__gte` [query, number] — Agent percentage (more than or equal) -- `agentPercentage__between` [query, string] — Percentage of agents of the account in this network calculated as numberOfAgents/totalAgents * 100. Example: "70-80". -- `totalAgents__lt` [query, integer] — Total agents (less than) -- `totalAgents__lte` [query, integer] — Total agents (less than or equal) -- `totalAgents__gt` [query, integer] — Total agents (more than) -- `totalAgents__gte` [query, integer] — Total agents (more than or equal) -- `totalAgents__between` [query, string] — The total of non decommissioned agents in the account. Example: "2-8". -- `connectedRangers__lt` [query, integer] — Total agents (less than) -- `connectedRangers__lte` [query, integer] — Total agents (less than or equal) -- `connectedRangers__gt` [query, integer] — Total agents (more than) -- `connectedRangers__gte` [query, integer] — Total agents (more than or equal) -- `connectedRangers__between` [query, string] — The total of non decommissioned agents in the account. Example: "2-8". -- `createdAt__lt` [query, string] — Gateway created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Gateway created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Gateway created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Gateway created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__lt` [query, string] — Gateway updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Gateway updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Gateway updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Gateway updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `smbScan` [query, boolean] — SMB scan enabled -- `icmpScan` [query, boolean] — ICMP scan enabled -- `mdnsScan` [query, boolean] — MDNS scan enabled -- `snmpScan` [query, boolean] — SNMP scan enabled -- `rdnsScan` [query, boolean] — RDNS scan enabled -- `manufacturer` [query, string] — The gateway manufacturer obtained from the mac address -- `networkName__contains` [query, array] — Free-text filter by network name (supports multiple values). Example: "Network1". -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". -- `ip__contains` [query, array] — Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `manufacturer__contains` [query, array] — Free-text filter by manufacturer (supports multiple values). Example: "Company". -- `macAddress__contains` [query, array] — Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". -- `tcpPorts__contains` [query, array] — Free-text filter by tcp port (supports multiple values). Example: "80,24". -- `udpPorts__contains` [query, array] — Free-text filter by udp port (supports multiple values). Example: "137,2002". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, ip, macAddress, externalIp, allowScan, networkName, totalAgents, agentPercentage, createdAt, numberOfAgents, numberOfRangers, expiryDate, connectedRangers): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Free text query +- `ip` [query, string]: Search ip using a CIDR expression exact IP +- `macAddress` [query, string]: The gateway mac address +- `externalIp` [query, string]: Search external ip using a CIDR expression or exact IP +- `allowScan` [query, string]: Do we allow scanning in this network +- `ids` [query, array]: List of gateway ids. Example: "225494730938493804,225494730938493915". +- `scanOnlyLocalSubnets` [query, boolean]: Allow remote tasks form this network +- `new` [query, boolean]: True if this is network was first seen some days ago, 3 by default +- `archived` [query, boolean]: Archived network +- `numberOfAgents__lt` [query, integer]: Agent count (less than) +- `numberOfAgents__lte` [query, integer]: Agent count (less than or equal) +- `numberOfAgents__gt` [query, integer]: Agent count (more than) +- `numberOfAgents__gte` [query, integer]: Agent count (more than or equal) +- `numberOfAgents__between` [query, string]: The number of non decommissioned agents in this network. Example: "2-8". +- `numberOfRangers__lt` [query, integer]: Network Discovery count (less than) +- `numberOfRangers__lte` [query, integer]: Network Discovery count (less than or equal) +- `numberOfRangers__gt` [query, integer]: Network Discovery count (more than) +- `numberOfRangers__gte` [query, integer]: Network Discovery count (more than or equal) +- `numberOfRangers__between` [query, string]: The number of non decommissioned agents in this network. Example: "2-8". +- `agentPercentage__lt` [query, number]: Agent percentage (less than) +- `agentPercentage__lte` [query, number]: Agent percentage (less than or equal) +- `agentPercentage__gt` [query, number]: Agent percentage (more than) +- `agentPercentage__gte` [query, number]: Agent percentage (more than or equal) +- `agentPercentage__between` [query, string]: Percentage of agents of the account in this network calculated as numberOfAgents/totalAgents * 100. Example: "70-80". +- `totalAgents__lt` [query, integer]: Total agents (less than) +- `totalAgents__lte` [query, integer]: Total agents (less than or equal) +- `totalAgents__gt` [query, integer]: Total agents (more than) +- `totalAgents__gte` [query, integer]: Total agents (more than or equal) +- `totalAgents__between` [query, string]: The total of non decommissioned agents in the account. Example: "2-8". +- `connectedRangers__lt` [query, integer]: Total agents (less than) +- `connectedRangers__lte` [query, integer]: Total agents (less than or equal) +- `connectedRangers__gt` [query, integer]: Total agents (more than) +- `connectedRangers__gte` [query, integer]: Total agents (more than or equal) +- `connectedRangers__between` [query, string]: The total of non decommissioned agents in the account. Example: "2-8". +- `createdAt__lt` [query, string]: Gateway created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Gateway created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Gateway created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Gateway created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__lt` [query, string]: Gateway updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Gateway updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Gateway updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Gateway updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Date range for update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `smbScan` [query, boolean]: SMB scan enabled +- `icmpScan` [query, boolean]: ICMP scan enabled +- `mdnsScan` [query, boolean]: MDNS scan enabled +- `snmpScan` [query, boolean]: SNMP scan enabled +- `rdnsScan` [query, boolean]: RDNS scan enabled +- `manufacturer` [query, string]: The gateway manufacturer obtained from the mac address +- `networkName__contains` [query, array]: Free-text filter by network name (supports multiple values). Example: "Network1". +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". +- `ip__contains` [query, array]: Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `manufacturer__contains` [query, array]: Free-text filter by manufacturer (supports multiple values). Example: "Company". +- `macAddress__contains` [query, array]: Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". +- `tcpPorts__contains` [query, array]: Free-text filter by tcp port (supports multiple values). Example: "80,24". +- `udpPorts__contains` [query, array]: Free-text filter by udp port (supports multiple values). Example: "137,2002". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -90,7 +90,7 @@ Change the status of filtered gateways discovered by Network Discovery. You can Required permissions: `Ranger.manageDiscoveredNetworks` Parameters: -- `body` [body, ranger.gateway_schema_PostUpdateGatewayData] — +- `body` [body, ranger.gateway_schema_PostUpdateGatewayData]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -103,7 +103,7 @@ Change the Network Discovery scan configuration for a gateway that Network Disco Required permissions: `Ranger.manageDiscoveredNetworks` Parameters: -- `gateway_id` [path, string] **required** — Gateway ID. Example: "225494730938493804". -- `body` [body, ranger.gateway_schema_PutGatewayData] — +- `gateway_id` [path, string] **required**: Gateway ID. Example: "225494730938493804". +- `body` [body, ranger.gateway_schema_PutGatewayData]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph.md index 132e1e5..421f4b2 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph.md @@ -11,13 +11,13 @@ Query the graph Required permissions: `XDR Inventory.view` Parameters: -- `mock` [query, boolean] — Mock -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `limit` [query, integer] — Limit -- `continuationToken` [query, string] — Continuation token -- `siteIds` [query, array] — List of Site IDs to filter by -- `body` [body, v2_1.graph.query.schemas_QueryGraphInputSchema] — +- `mock` [query, boolean]: Mock +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `limit` [query, integer]: Limit +- `continuationToken` [query, string]: Continuation token +- `siteIds` [query, array]: List of Site IDs to filter by +- `body` [body, v2_1.graph.query.schemas_QueryGraphInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -30,13 +30,13 @@ Query the graph Required permissions: `XDR Inventory.view` Parameters: -- `mock` [query, boolean] — Mock -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `limit` [query, integer] — Limit -- `continuationToken` [query, string] — Continuation token -- `siteIds` [query, array] — List of Site IDs to filter by -- `body` [body, v2_1.graph.query.schemas_QueryGraphInputSchemaV2] — +- `mock` [query, boolean]: Mock +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `limit` [query, integer]: Limit +- `continuationToken` [query, string]: Continuation token +- `siteIds` [query, array]: List of Site IDs to filter by +- `body` [body, v2_1.graph.query.schemas_QueryGraphInputSchemaV2]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -49,9 +49,9 @@ Query the sub graph of an asset type and id Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.graph.query.schemas_QuerySubGrapInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.graph.query.schemas_QuerySubGrapInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Builder.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Builder.md index dfdd398..620fde4 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Builder.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Builder.md @@ -11,9 +11,9 @@ Get graph query builder initial metadata Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -26,16 +26,16 @@ This api is now deprecated use /xdr/graph-explorer/query/builder/autocomplete/v2 Required permissions: `XDR Inventory.view` Parameters: -- `ids` [query, array] — List of asset type ids -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `text` [query, string] — Search term text -- `version` [query, string] — Version -- `limit` [query, integer] — Limit number of returned items -- `subCategoriesIds` [query, array] — List of subCategory ids -- `key` [query, string] **required** — Search field key -- `categoryIds` [query, array] — List of category ids -- `siteIds` [query, array] — List of Site IDs to filter by +- `ids` [query, array]: List of asset type ids +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `text` [query, string]: Search term text +- `version` [query, string]: Version +- `limit` [query, integer]: Limit number of returned items +- `subCategoriesIds` [query, array]: List of subCategory ids +- `key` [query, string] **required**: Search field key +- `categoryIds` [query, array]: List of category ids +- `siteIds` [query, array]: List of Site IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -48,16 +48,16 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `ids` [query, array] — List of asset type ids -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `text` [query, string] — Search term text -- `version` [query, string] — Version -- `limit` [query, integer] — Limit number of returned items -- `subCategoriesIds` [query, array] — List of subCategory ids -- `key` [query, string] **required** — Search field key -- `categoryIds` [query, array] — List of category ids -- `siteIds` [query, array] — List of Site IDs to filter by +- `ids` [query, array]: List of asset type ids +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `text` [query, string]: Search term text +- `version` [query, string]: Version +- `limit` [query, integer]: Limit number of returned items +- `subCategoriesIds` [query, array]: List of subCategory ids +- `key` [query, string] **required**: Search field key +- `categoryIds` [query, array]: List of category ids +- `siteIds` [query, array]: List of Site IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -70,9 +70,9 @@ Get graph query builder initial metadata Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -85,13 +85,13 @@ Get query builder metadata for requested cloud asset types Required permissions: `XDR Inventory.view` Parameters: -- `ids` [query, array] — List of asset type ids -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `version` [query, string] — Version -- `subCategoriesIds` [query, array] — List of subCategory ids -- `categoryIds` [query, array] — List of category ids -- `siteIds` [query, array] — List of Site IDs to filter by +- `ids` [query, array]: List of asset type ids +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `version` [query, string]: Version +- `subCategoriesIds` [query, array]: List of subCategory ids +- `categoryIds` [query, array]: List of category ids +- `siteIds` [query, array]: List of Site IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -104,9 +104,9 @@ Get the available relations Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -119,16 +119,16 @@ Use this command to get tag keys or values. When you send this command with inpu Required permissions: `XDR Inventory.view` Parameters: -- `ids` [query, array] — List of asset type ids -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `field` [query, string] **required** (enum: key, value) — Search in keys or values -- `version` [query, string] — Version -- `value` [query, string] — Search term value -- `limit` [query, integer] — Limit number of returned items -- `subCategoriesIds` [query, array] — List of subCategory ids -- `categoryIds` [query, array] — List of category ids -- `siteIds` [query, array] — List of Site IDs to filter by +- `ids` [query, array]: List of asset type ids +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `field` [query, string] **required** (enum: key, value): Search in keys or values +- `version` [query, string]: Version +- `value` [query, string]: Search term value +- `limit` [query, integer]: Limit number of returned items +- `subCategoriesIds` [query, array]: List of subCategory ids +- `categoryIds` [query, array]: List of category ids +- `siteIds` [query, array]: List of Site IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -141,8 +141,8 @@ Get all of the feature toggles for graph services Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Management.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Management.md index 1d82fa0..d9ca27e 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Management.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Graph_Query_Management.md @@ -11,19 +11,19 @@ Get graph query list Required permissions: `XDR Inventory.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `groupIds` [query, array] — List of Group IDs to filter by -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `accountIds` [query, array] — List of Account IDs to filter by -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `version` [query, string] — Version -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `queryType` [query, string] (enum: saved, shared, suggested) — Query type -- `name__contains` [query, string] — Free-text search filter by query name -- `siteIds` [query, array] — List of Site IDs to filter by -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: name) — The column to sort the results by. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `groupIds` [query, array]: List of Group IDs to filter by +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `accountIds` [query, array]: List of Account IDs to filter by +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `version` [query, string]: Version +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `queryType` [query, string] (enum: saved, shared, suggested): Query type +- `name__contains` [query, string]: Free-text search filter by query name +- `siteIds` [query, array]: List of Site IDs to filter by +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: name): The column to sort the results by. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -36,10 +36,10 @@ Save graph query Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.graph.query.schemas_QueryManagementUpdateSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.graph.query.schemas_QueryManagementUpdateSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -52,9 +52,9 @@ Get graph query counts by type Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -67,10 +67,10 @@ Delete graph query Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `query_id` [path, string] **required** — Query ID +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `query_id` [path, string] **required**: Query ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -83,11 +83,11 @@ Update graph query Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `query_id` [path, string] **required** — Query ID -- `body` [body, v2_1.graph.query.schemas_QueryManagementUpdateSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `query_id` [path, string] **required**: Query ID +- `body` [body, v2_1.graph.query.schemas_QueryManagementUpdateSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -100,9 +100,9 @@ Get graph recent query list Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `limit` [query, integer] — Limit number of returned items -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `limit` [query, integer]: Limit number of returned items +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Groups.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Groups.md index 4122782..51fc131 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Groups.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Groups.md @@ -11,29 +11,29 @@ Get data of groups that match the filter. Best practice: use as narrow a filter Required permissions: `Groups.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, type, rank, siteId, createdAt, updatedAt, description) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `type` [query, string] (enum: static, dynamic, pinned) — Group type. Example: "static". -- `types` [query, array] — A list of Group types. Example: "static". -- `query` [query, string] — Free text search on fields name, description -- `id` [query, string] — Id. Example: "225494730938493804". -- `name` [query, string] — Name -- `description` [query, string] — The description for the Group -- `rank` [query, integer] — The rank sets the priority of a dynamic group over others. Example: "1". -- `isDefault` [query, boolean] — Is this the default group? -- `updatedAt__lt` [query, string] — Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `registrationToken` [query, string] — Registration token. Example: "eyJ1cmwiOiAiaHR0cHM6Ly9jb25zb2xlLnNlbnRpbmVsb25lLm5ldCIsICJzaXRlX2tleSI6ICIwNzhkYjliMWUyOTA1Y2NhIn0=". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, type, rank, siteId, createdAt, updatedAt, description): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `type` [query, string] (enum: static, dynamic, pinned): Group type. Example: "static". +- `types` [query, array]: A list of Group types. Example: "static". +- `query` [query, string]: Free text search on fields name, description +- `id` [query, string]: Id. Example: "225494730938493804". +- `name` [query, string]: Name +- `description` [query, string]: The description for the Group +- `rank` [query, integer]: The rank sets the priority of a dynamic group over others. Example: "1". +- `isDefault` [query, boolean]: Is this the default group? +- `updatedAt__lt` [query, string]: Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `registrationToken` [query, string]: Registration token. Example: "eyJ1cmwiOiAiaHR0cHM6Ly9jb25zb2xlLnNlbnRpbmVsb25lLm5ldCIsICJzaXRlX2tleSI6ICIwNzhkYjliMWUyOTA1Y2NhIn0=". Responses: 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -46,7 +46,7 @@ Create a new group. You must create the Group in a Site (run "sites" to get the Required permissions: `Groups.create` Parameters: -- `body` [body, groups_PostGroupSchema] — +- `body` [body, groups_PostGroupSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -59,7 +59,7 @@ An Agent can belong to only one Group. If the Agent matches multiple Dynamic Gro Required permissions: `Groups.edit` Parameters: -- `body` [body, groups_PutRanksSchema] — +- `body` [body, groups_PutRanksSchema]: Responses: 403 Insufficient permissions, 204 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -72,7 +72,7 @@ Delete a Group given by the required Group ID (run "groups"). If there are Agent Required permissions: `Groups.delete` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". Responses: 404 Group not found., 200 Success, 401 Unauthorized access - please sign in and retry. @@ -85,7 +85,7 @@ Get data of a given Group. To get a Group ID, run "groups". This command respond Required permissions: `Groups.view` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". Responses: 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -98,8 +98,8 @@ Change properties of a Group specified by its ID (run "groups"). The body of the Required permissions: `Groups.edit` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". -- `body` [body, groups_PutGroupSchema] — +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". +- `body` [body, groups_PutGroupSchema]: Responses: 404 Group not found., 403 Insufficient permissions., 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -112,8 +112,8 @@ Move Agents that match the filter to a Group. The Group ID (run "groups") is req Required permissions: `Groups.moveToGroup` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". -- `body` [body, groups_PutAddAgentsSchema] — +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". +- `body` [body, groups_PutAddAgentsSchema]: Responses: 409 Conflict, 403 Insufficient permissions, 204 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -126,7 +126,7 @@ Get a new Group Token for a static Group. This command requires the Group ID ("g Required permissions: `Groups.edit` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". Responses: 403 No permission for regenerating a key., 404 Group not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -139,8 +139,8 @@ A Group can have a policy that is different from its Site policy. Use this comma Required permissions: `Policy.edit` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". -- `body` [body, policies_schemas_RevertPolicySchema] — +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". +- `body` [body, policies_schemas_RevertPolicySchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -153,6 +153,6 @@ Get the registration token of the Group of the ID. Required permissions: `Groups.view` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". Responses: 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hashes.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hashes.md index 182d1ea..853dd9d 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hashes.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hashes.md @@ -6,13 +6,13 @@ **Hash Reputation verdict** `operationId`: `_web_api_hashes_{hash}_verdict_get` -[DEPRECATED] Get the verdict of the of a hash, given the required SHA1. +[DEPRECATED] Get the verdict of the of a hash, given the required SHA1. A hash, either malicious or non-malicious, means it has been marked as such by the Reputation's sources. An unknown answer is given for hashes that are not yet known by Reputation. Required permissions: `Blacklist.view` Parameters: -- `hash` [path, string] **required** — Hash +- `hash` [path, string] **required**: Hash Responses: 200 Verdict of the hash known to the management, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hyperautomation.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hyperautomation.md index dafecc8..ed20e41 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hyperautomation.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Hyperautomation.md @@ -7,12 +7,12 @@ `operationId`: `_web_api_hyper-automate_api_public_workflow-action-expressions_{base_action_id}_evaluate-expression_post` Parameters: -- `base_action_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, S1ApiBody_ExpressionEvaluationInput_] **required** — +- `base_action_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, S1ApiBody_ExpressionEvaluationInput_] **required**: Responses: 200 Successful Response, 422 Validation Error @@ -21,12 +21,12 @@ Responses: 200 Successful Response, 422 Validation Error `operationId`: `_web_api_hyper-automate_api_public_workflow-action-expressions_{base_action_id}_expression-breakdown_post` Parameters: -- `base_action_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, S1ApiBody_ExpressionEvaluationInput_] **required** — +- `base_action_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, S1ApiBody_ExpressionEvaluationInput_] **required**: Responses: 200 Successful Response, 422 Validation Error @@ -37,25 +37,25 @@ Responses: 200 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.view` Parameters: -- `trigger_types` [query, string] — -- `states` [query, string] — -- `scope_ids` [query, string] — -- `versions_count` [query, string] — -- `created_at__gte` [query, object] — -- `created_at__lt` [query, object] — -- `limit` [query, integer] — -- `skip` [query, integer] — -- `workflow_name__contains` [query, object] — -- `integrations` [query, object] — -- `workflow_id` [query, object] — -- `is_snippet` [query, boolean] — -- `tags` [query, string] — -- `sortBy` [query, object] — -- `sortOrder` [query, object] — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — +- `trigger_types` [query, string]: +- `states` [query, string]: +- `scope_ids` [query, string]: +- `versions_count` [query, string]: +- `created_at__gte` [query, object]: +- `created_at__lt` [query, object]: +- `limit` [query, integer]: +- `skip` [query, integer]: +- `workflow_name__contains` [query, object]: +- `integrations` [query, object]: +- `workflow_id` [query, object]: +- `is_snippet` [query, boolean]: +- `tags` [query, string]: +- `sortBy` [query, object]: +- `sortOrder` [query, object]: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: Responses: 200 Successful Response, 422 Validation Error @@ -66,13 +66,13 @@ Responses: 200 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.workflowsRun` Parameters: -- `workflow_id` [path, string] **required** — -- `version_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, S1ApiBody_WorkflowExecutionCreate_] **required** — +- `workflow_id` [path, string] **required**: +- `version_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, S1ApiBody_WorkflowExecutionCreate_] **required**: Responses: 201 Successful Response, 422 Validation Error @@ -83,11 +83,11 @@ Responses: 201 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.view` Parameters: -- `workflow_execution_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — +- `workflow_execution_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: Responses: 200 Successful Response, 422 Validation Error @@ -98,21 +98,21 @@ Responses: 200 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.workflowsExport` Parameters: -- `workflow_ids` [query, string] — -- `integrations` [query, string] — -- `trigger_types` [query, string] — -- `core_actions` [query, string] — -- `states` [query, string] — -- `scope_ids` [query, string] — -- `name__contains` [query, object] — -- `description__contains` [query, object] — -- `name__eq` [query, object] — -- `oversight` [query, boolean] — -- `tags` [query, string] — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — +- `workflow_ids` [query, string]: +- `integrations` [query, string]: +- `trigger_types` [query, string]: +- `core_actions` [query, string]: +- `states` [query, string]: +- `scope_ids` [query, string]: +- `name__contains` [query, object]: +- `description__contains` [query, object]: +- `name__eq` [query, object]: +- `oversight` [query, boolean]: +- `tags` [query, string]: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: Responses: 200 Successful Response, 422 Validation Error @@ -125,12 +125,12 @@ Export a specific workflow version. Required permissions: `Hyper Automate.workflowsExport` Parameters: -- `workflow_id` [path, string] **required** — -- `version_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — +- `workflow_id` [path, string] **required**: +- `version_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: Responses: 200 Successful Response, 422 Validation Error @@ -143,11 +143,11 @@ Import workflows that have been previously exported from Hyperautomation. Required permissions: `Hyper Automate.workflowsCreateEdit` Parameters: -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, S1ApiBody_WorkflowImportExport_] **required** — +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, S1ApiBody_WorkflowImportExport_] **required**: Responses: 200 Successful Response, 422 Validation Error @@ -160,11 +160,11 @@ Import workflows that have been previously exported from Hyperautomation. Required permissions: `Hyper Automate.workflowsCreateEdit` Parameters: -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, Body_import_workflow_batch_web_api_v2_1_hyper_automate_api_public_workflow_import_export_import_batch_post] **required** — +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, Body_import_workflow_batch_web_api_v2_1_hyper_automate_api_public_workflow_import_export_import_batch_post] **required**: Responses: 201 Successful Response, 422 Validation Error @@ -175,26 +175,26 @@ Responses: 201 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.view` Parameters: -- `integrations` [query, string] — -- `trigger_types` [query, string] — -- `core_actions` [query, string] — -- `states` [query, string] — -- `scope_ids` [query, string] — -- `limit` [query, integer] — -- `skip` [query, integer] — -- `is_snippet` [query, boolean] — -- `name__contains` [query, object] — -- `description__contains` [query, object] — -- `name__eq` [query, object] — -- `tags` [query, string] — -- `sortBy` [query, object] — -- `sortOrder` [query, object] — -- `oversight` [query, boolean] — -- `workflow_ids` [query, object] — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — +- `integrations` [query, string]: +- `trigger_types` [query, string]: +- `core_actions` [query, string]: +- `states` [query, string]: +- `scope_ids` [query, string]: +- `limit` [query, integer]: +- `skip` [query, integer]: +- `is_snippet` [query, boolean]: +- `name__contains` [query, object]: +- `description__contains` [query, object]: +- `name__eq` [query, object]: +- `tags` [query, string]: +- `sortBy` [query, object]: +- `sortOrder` [query, object]: +- `oversight` [query, boolean]: +- `workflow_ids` [query, object]: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: Responses: 200 Successful Response, 422 Validation Error @@ -205,11 +205,11 @@ Responses: 200 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.view` Parameters: -- `workflow_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — +- `workflow_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: Responses: 200 Successful Response, 422 Validation Error @@ -220,13 +220,13 @@ Responses: 200 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.workflowsActivateDeactivate` Parameters: -- `workflow_id` [path, string] **required** — -- `version_id` [query, string] — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, S1ApiBody] — +- `workflow_id` [path, string] **required**: +- `version_id` [query, string]: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, S1ApiBody]: Responses: 204 Successful Response, 422 Validation Error @@ -237,12 +237,12 @@ Responses: 204 Successful Response, 422 Validation Error Required permissions: `Hyper Automate.workflowsActivateDeactivate` Parameters: -- `workflow_id` [path, string] **required** — -- `version_id` [path, string] **required** — -- `groupIds` [query, object] — -- `siteIds` [query, object] — -- `accountIds` [query, object] — -- `cicdschema` [header, object] — -- `body` [body, S1ApiBody_WorkflowPatch_] — +- `workflow_id` [path, string] **required**: +- `version_id` [path, string] **required**: +- `groupIds` [query, object]: +- `siteIds` [query, object]: +- `accountIds` [query, object]: +- `cicdschema` [header, object]: +- `body` [body, S1ApiBody_WorkflowPatch_]: Responses: 204 Successful Response, 422 Validation Error diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/ISPM.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/ISPM.md index a50f808..388c074 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/ISPM.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/ISPM.md @@ -11,8 +11,8 @@ Use the below Cloud API to get the status of the AD Assessment status for that a Required permissions: `AD Exposures.View` Parameters: -- `siteIds` [query, string] — List of site IDs separated by comma -- `accountIds` [query, string] — List of account IDs separated by comma +- `siteIds` [query, string]: List of site IDs separated by comma +- `accountIds` [query, string]: List of account IDs separated by comma Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -25,11 +25,11 @@ Use the below Cloud API to get all the affected objects based on the selected fi Required permissions: `AD Exposures.View` Parameters: -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `accountIds` [query, string] — List of account IDs separated by comma -- `siteIds` [query, string] — List of site IDs separated by comma -- `body` [body, v2_1.public_api.schemas_GetAffectedObjectsRequestSchema] — +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `accountIds` [query, string]: List of account IDs separated by comma +- `siteIds` [query, string]: List of site IDs separated by comma +- `body` [body, v2_1.public_api.schemas_GetAffectedObjectsRequestSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -42,11 +42,11 @@ Use the below Cloud API to get all the exposures based on the selected filters Required permissions: `AD Exposures.View` Parameters: -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `accountIds` [query, string] — List of account IDs separated by comma -- `siteIds` [query, string] — List of site IDs separated by comma -- `body` [body, v2_1.public_api.schemas_GetExposuresRequestSchema] — +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `accountIds` [query, string]: List of account IDs separated by comma +- `siteIds` [query, string]: List of site IDs separated by comma +- `body` [body, v2_1.public_api.schemas_GetExposuresRequestSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -59,9 +59,9 @@ Use the below Cloud API to set acknowledgement status Required permissions: `AD Exposures.Ack or Unack AD Assessment` Parameters: -- `siteIds` [query, string] — List of site IDs separated by comma -- `accountIds` [query, string] — List of account IDs separated by comma -- `body` [body, v2_1.public_api.schemas_SetAckExposuresRequestSchema] — +- `siteIds` [query, string]: List of site IDs separated by comma +- `accountIds` [query, string]: List of account IDs separated by comma +- `body` [body, v2_1.public_api.schemas_SetAckExposuresRequestSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -74,9 +74,9 @@ Use the below Cloud API to set the list of exposures to be skipped Required permissions: `AD Exposure Exclusions.Edit` Parameters: -- `siteIds` [query, string] — List of site IDs separated by comma -- `accountIds` [query, string] — List of account IDs separated by comma -- `body` [body, v2_1.public_api.schemas_SetSkippedExposuresRequestSchema] — +- `siteIds` [query, string]: List of site IDs separated by comma +- `accountIds` [query, string]: List of account IDs separated by comma +- `body` [body, v2_1.public_api.schemas_SetSkippedExposuresRequestSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -89,8 +89,8 @@ Use the below Cloud API to trigger ADAssessment Required permissions: `AD Exposures.Trigger Assessment` Parameters: -- `siteIds` [query, string] — List of site IDs separated by comma -- `accountIds` [query, string] — List of account IDs separated by comma -- `body` [body, v2_1.public_api.schemas_TriggerAssessmentRequestSchema] — +- `siteIds` [query, string]: List of site IDs separated by comma +- `accountIds` [query, string]: List of account IDs separated by comma +- `body` [body, v2_1.public_api.schemas_TriggerAssessmentRequestSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory.md index 07e6729..6dc9d86 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory.md @@ -11,94 +11,94 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, s1ManagementId, isAdConnector, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, cloudResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, identityAdMachineDistinguishedName, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, lastUpdateDt, agentDiskEncryption) — The column to sort the results by. -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, s1ManagementId, isAdConnector, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, cloudResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, identityAdMachineDistinguishedName, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, lastUpdateDt, agentDiskEncryption): The column to sort the results by. +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -111,10 +111,10 @@ POST API to get assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.schemas_InventoryViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.schemas_InventoryViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -127,88 +127,88 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_InventoryActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_InventoryActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -221,9 +221,9 @@ Get inventory counts categories, subcategories and surfaces Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -236,88 +236,88 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -330,9 +330,9 @@ Get inventory categories and their asset counts Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -345,11 +345,11 @@ Returns the tags for given id in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `id` [query, array] — List of resource ids to filter by -- `siteIds` [query, array] — List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `id` [query, array]: List of resource ids to filter by +- `siteIds` [query, array]: List of Site IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -362,95 +362,95 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, s1ManagementId, isAdConnector, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, cloudResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, identityAdMachineDistinguishedName, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, lastUpdateDt, agentDiskEncryption) — The column to sort the results by. -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, s1ManagementId, isAdConnector, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, cloudResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, identityAdMachineDistinguishedName, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, lastUpdateDt, agentDiskEncryption): The column to sort the results by. +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -463,8 +463,8 @@ Get asset counts per subcategory for each category Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML.md index 3ca53e5..a812dcd 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cnsEnableNetworkIsolation, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsStatus, s1ScopeType, cnsInterContainerTrafficEncryptionEnabled, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cnsEnableNetworkIsolation, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsStatus, s1ScopeType, cnsInterContainerTrafficEncryptionEnabled, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.ai_ml.schemas_AIMLViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.ai_ml.schemas_AIMLViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.ai_ml.schemas_AIMLActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.ai_ml.schemas_AIMLActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cnsEnableNetworkIsolation, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsStatus, s1ScopeType, cnsInterContainerTrafficEncryptionEnabled, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cnsEnableNetworkIsolation, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsStatus, s1ScopeType, cnsInterContainerTrafficEncryptionEnabled, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML_Filters.md index d26b516..96bc319 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_AI_ML_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account.md index ecf5ffc..ff97f32 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cnsOsLoginTrue, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsAllowBlobPublicAccess, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cnsOsLoginTrue, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsAllowBlobPublicAccess, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.account.schemas_AccountsViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.account.schemas_AccountsViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.account.schemas_AccountActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.account.schemas_AccountActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cnsOsLoginTrue, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsAllowBlobPublicAccess, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cnsOsLoginTrue, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, cnsAllowBlobPublicAccess, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account_Filters.md index 05ba823..33b2888 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Account_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration.md index 8c4c796..1748ef5 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cnsConfirmedSubscriptionCount, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cnsConfirmedSubscriptionCount, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.application_integration.schemas_ApplicationIntegrationsViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.application_integration.schemas_ApplicationIntegrationsViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.application_integration.schemas_ApplicationIntegrationActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.application_integration.schemas_ApplicationIntegrationActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cnsConfirmedSubscriptionCount, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cnsConfirmedSubscriptionCount, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration_Filters.md index 70175e0..bbfd871 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Application_Integration_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application.md index ce7245b..d077a56 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.cloud_application.schemas_CloudApplicationViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.cloud_application.schemas_CloudApplicationViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.cloud_application.schemas_CloudApplicationActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.cloud_application.schemas_CloudApplicationActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cnsIsPublic, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application_Filters.md index 7af5c60..539c30a 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Application_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface.md index 3426024..6b29aad 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface.md @@ -11,160 +11,160 @@ Get Cloud assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `state` [query, array] — The state of the instance -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `os` [query, array] — The operating system of the device -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `region__nin` [query, array] — The region (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, k8sCwsEnabled, k8sNamespace, k8sType, cloudProviderUrlString, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, realtimeMalwareProtectionEnabledTime, s1GroupId, s1OnboardedScopeLevel, createdTime, cloudProviderAccountId, isRogue, cloudProviderAccountName, subCategory, k8sHelperAgentDeployed, cloudProviderResourceGroup, s1OnboardedScopeId, deviceReview, region, cloudProviderOrganization, virtualNetworkId, s1ManagementId, name, k8sCluster, k8sCnsEnabled, instanceType, state, s1OnboardedAccountId, assetCriticality, s1ScopePath, cloudResourceUid, s1OnboardedScopePath, s1OnboardedGroupName, k8sNode, cloudProviderSubscriptionId, instanceId, imageId, k8sClusterId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, k8sResourceId, policyDocument, assetContactEmail, assetStatus, s1ScopeType, assetEnvironment, objectCount, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, allowsUnencryptedObjectUploads, s1AccountName, k8sVersion, infectionStatus, s1ScopeLevel, s1OnboardedSiteId, instanceRole) — The column to sort the results by. -- `state__contains` [query, array] — The state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `osVersion` [query, array] — The operating system version of the device -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `k8sNode` [query, array] — The Kubernetes Node -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The domain of the device (not in) -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `state` [query, array]: The state of the instance +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `os` [query, array]: The operating system of the device +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `region__nin` [query, array]: The region (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, k8sCwsEnabled, k8sNamespace, k8sType, cloudProviderUrlString, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, realtimeMalwareProtectionEnabledTime, s1GroupId, s1OnboardedScopeLevel, createdTime, cloudProviderAccountId, isRogue, cloudProviderAccountName, subCategory, k8sHelperAgentDeployed, cloudProviderResourceGroup, s1OnboardedScopeId, deviceReview, region, cloudProviderOrganization, virtualNetworkId, s1ManagementId, name, k8sCluster, k8sCnsEnabled, instanceType, state, s1OnboardedAccountId, assetCriticality, s1ScopePath, cloudResourceUid, s1OnboardedScopePath, s1OnboardedGroupName, k8sNode, cloudProviderSubscriptionId, instanceId, imageId, k8sClusterId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, k8sResourceId, policyDocument, assetContactEmail, assetStatus, s1ScopeType, assetEnvironment, objectCount, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, allowsUnencryptedObjectUploads, s1AccountName, k8sVersion, infectionStatus, s1ScopeLevel, s1OnboardedSiteId, instanceRole): The column to sort the results by. +- `state__contains` [query, array]: The state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `osVersion` [query, array]: The operating system version of the device +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `k8sNode` [query, array]: The Kubernetes Node +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The domain of the device (not in) +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -177,154 +177,154 @@ Perform action on selected assets Required permissions: `XDR Inventory.edit, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `state` [query, array] — The state of the instance -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `os` [query, array] — The operating system of the device -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `region__nin` [query, array] — The region (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `state__contains` [query, array] — The state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `osVersion` [query, array] — The operating system version of the device -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The domain of the device (not in) -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.surfaces.cloud.schemas_CloudActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `state` [query, array]: The state of the instance +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `os` [query, array]: The operating system of the device +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `region__nin` [query, array]: The region (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `state__contains` [query, array]: The state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `osVersion` [query, array]: The operating system version of the device +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The domain of the device (not in) +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.surfaces.cloud.schemas_CloudActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -337,154 +337,154 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `state` [query, array] — The state of the instance -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `os` [query, array] — The operating system of the device -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `region__nin` [query, array] — The region (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `state__contains` [query, array] — The state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `osVersion` [query, array] — The operating system version of the device -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The domain of the device (not in) -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `state` [query, array]: The state of the instance +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `os` [query, array]: The operating system of the device +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `region__nin` [query, array]: The region (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `state__contains` [query, array]: The state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `osVersion` [query, array]: The operating system version of the device +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The domain of the device (not in) +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -497,160 +497,160 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `state` [query, array] — The state of the instance -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `os` [query, array] — The operating system of the device -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `region__nin` [query, array] — The region (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, k8sCwsEnabled, k8sNamespace, k8sType, cloudProviderUrlString, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, realtimeMalwareProtectionEnabledTime, s1GroupId, s1OnboardedScopeLevel, createdTime, cloudProviderAccountId, isRogue, cloudProviderAccountName, subCategory, k8sHelperAgentDeployed, cloudProviderResourceGroup, s1OnboardedScopeId, deviceReview, region, cloudProviderOrganization, virtualNetworkId, s1ManagementId, name, k8sCluster, k8sCnsEnabled, instanceType, state, s1OnboardedAccountId, assetCriticality, s1ScopePath, cloudResourceUid, s1OnboardedScopePath, s1OnboardedGroupName, k8sNode, cloudProviderSubscriptionId, instanceId, imageId, k8sClusterId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, k8sResourceId, policyDocument, assetContactEmail, assetStatus, s1ScopeType, assetEnvironment, objectCount, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, allowsUnencryptedObjectUploads, s1AccountName, k8sVersion, infectionStatus, s1ScopeLevel, s1OnboardedSiteId, instanceRole) — The column to sort the results by. -- `state__contains` [query, array] — The state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `osVersion` [query, array] — The operating system version of the device -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `k8sNode` [query, array] — The Kubernetes Node -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The domain of the device (not in) -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `state` [query, array]: The state of the instance +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `os` [query, array]: The operating system of the device +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `region__nin` [query, array]: The region (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, k8sCwsEnabled, k8sNamespace, k8sType, cloudProviderUrlString, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, realtimeMalwareProtectionEnabledTime, s1GroupId, s1OnboardedScopeLevel, createdTime, cloudProviderAccountId, isRogue, cloudProviderAccountName, subCategory, k8sHelperAgentDeployed, cloudProviderResourceGroup, s1OnboardedScopeId, deviceReview, region, cloudProviderOrganization, virtualNetworkId, s1ManagementId, name, k8sCluster, k8sCnsEnabled, instanceType, state, s1OnboardedAccountId, assetCriticality, s1ScopePath, cloudResourceUid, s1OnboardedScopePath, s1OnboardedGroupName, k8sNode, cloudProviderSubscriptionId, instanceId, imageId, k8sClusterId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, k8sResourceId, policyDocument, assetContactEmail, assetStatus, s1ScopeType, assetEnvironment, objectCount, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, allowsUnencryptedObjectUploads, s1AccountName, k8sVersion, infectionStatus, s1ScopeLevel, s1OnboardedSiteId, instanceRole): The column to sort the results by. +- `state__contains` [query, array]: The state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `osVersion` [query, array]: The operating system version of the device +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `k8sNode` [query, array]: The Kubernetes Node +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The domain of the device (not in) +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface_Filters.md index 52aa152..ac1ce97 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Cloud_Surface_Filters.md @@ -11,156 +11,156 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `state` [query, array] — The state of the instance -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `os` [query, array] — The operating system of the device -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, imageName__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains) — Search field key -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `region__nin` [query, array] — The region (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `state__contains` [query, array] — The state -- `text` [query, string] **required** — Search term text -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `osVersion` [query, array] — The operating system version of the device -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The domain of the device (not in) -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `state` [query, array]: The state of the instance +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `os` [query, array]: The operating system of the device +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, imageName__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains): Search field key +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `region__nin` [query, array]: The region (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `state__contains` [query, array]: The state +- `text` [query, string] **required**: Search term text +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `osVersion` [query, array]: The operating system version of the device +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The domain of the device (not in) +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -173,153 +173,153 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `state` [query, array] — The state of the instance -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `os` [query, array] — The operating system of the device -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `region__nin` [query, array] — The region (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `state__contains` [query, array] — The state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `osVersion` [query, array] — The operating system version of the device -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The domain of the device (not in) -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `state` [query, array]: The state of the instance +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `os` [query, array]: The operating system of the device +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `region__nin` [query, array]: The region (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `state__contains` [query, array]: The state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `osVersion` [query, array]: The operating system version of the device +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The domain of the device (not in) +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container.md index 948acbf..f326a59 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container.md @@ -11,228 +11,228 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sDeploymentStrategy` [query, array] — Deployment Strategy -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, k8sAutoMountToken, agentIdrConnectivity, agentUpToDate, s1SiteId, s1SiteName, k8sDeploymentStrategy, serialNumber, k8sCwsEnabled, agentInstallerType, identityAdUserDistinguishedName, cnsName, category, s1GroupId, cloudProviderAccountName, k8sServiceType, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sUpdateStrategy, k8sResourceId, k8sReplicas, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, k8sServiceName, imageRepository, cnsIsEncrypted, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, k8sSchedule, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, k8sCluster, agentVssServiceStatus, k8sTimeZone, agentPendingUninstall, assetCriticality, s1ScopePath, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, k8sNode, identityAdMachineDistinguishedName, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, imageDigest, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, imageSizeMb, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sServiceType` [query, array] — Service Type -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sUpdateStrategy` [query, array] — Update Strategy -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `k8sServiceName` [query, array] — Service Name -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `instanceType__contains` [query, array] — The instance type -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `osVersion` [query, array] — The operating system version of the device -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `k8sPolicyType` [query, array] — Policy Type -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `k8sType` [query, array] — The Kubernetes Type -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `agentRangerStatus` [query, array] — The agent network scanner status -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sDeploymentStrategy` [query, array]: Deployment Strategy +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, k8sAutoMountToken, agentIdrConnectivity, agentUpToDate, s1SiteId, s1SiteName, k8sDeploymentStrategy, serialNumber, k8sCwsEnabled, agentInstallerType, identityAdUserDistinguishedName, cnsName, category, s1GroupId, cloudProviderAccountName, k8sServiceType, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sUpdateStrategy, k8sResourceId, k8sReplicas, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, k8sServiceName, imageRepository, cnsIsEncrypted, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, k8sSchedule, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, k8sCluster, agentVssServiceStatus, k8sTimeZone, agentPendingUninstall, assetCriticality, s1ScopePath, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, k8sNode, identityAdMachineDistinguishedName, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, imageDigest, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, imageSizeMb, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sServiceType` [query, array]: Service Type +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sUpdateStrategy` [query, array]: Update Strategy +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `k8sServiceName` [query, array]: Service Name +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `instanceType__contains` [query, array]: The instance type +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `osVersion` [query, array]: The operating system version of the device +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `k8sPolicyType` [query, array]: Policy Type +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `k8sType` [query, array]: The Kubernetes Type +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `agentRangerStatus` [query, array]: The agent network scanner status +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -245,10 +245,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.container.schemas_ContainerViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.container.schemas_ContainerViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -261,222 +261,222 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sDeploymentStrategy` [query, array] — Deployment Strategy -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sServiceType` [query, array] — Service Type -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sUpdateStrategy` [query, array] — Update Strategy -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `k8sServiceName` [query, array] — Service Name -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `instanceType__contains` [query, array] — The instance type -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `osVersion` [query, array] — The operating system version of the device -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sPolicyType` [query, array] — Policy Type -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `k8sType` [query, array] — The Kubernetes Type -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `agentRangerStatus` [query, array] — The agent network scanner status -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.container.schemas_ContainerActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sDeploymentStrategy` [query, array]: Deployment Strategy +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sServiceType` [query, array]: Service Type +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sUpdateStrategy` [query, array]: Update Strategy +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `k8sServiceName` [query, array]: Service Name +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `instanceType__contains` [query, array]: The instance type +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `osVersion` [query, array]: The operating system version of the device +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sPolicyType` [query, array]: Policy Type +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `k8sType` [query, array]: The Kubernetes Type +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `agentRangerStatus` [query, array]: The agent network scanner status +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.container.schemas_ContainerActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -489,222 +489,222 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sDeploymentStrategy` [query, array] — Deployment Strategy -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sServiceType` [query, array] — Service Type -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sUpdateStrategy` [query, array] — Update Strategy -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `k8sServiceName` [query, array] — Service Name -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `instanceType__contains` [query, array] — The instance type -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `osVersion` [query, array] — The operating system version of the device -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sPolicyType` [query, array] — Policy Type -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `k8sType` [query, array] — The Kubernetes Type -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `agentRangerStatus` [query, array] — The agent network scanner status -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sDeploymentStrategy` [query, array]: Deployment Strategy +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sServiceType` [query, array]: Service Type +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sUpdateStrategy` [query, array]: Update Strategy +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `k8sServiceName` [query, array]: Service Name +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `instanceType__contains` [query, array]: The instance type +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `osVersion` [query, array]: The operating system version of the device +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sPolicyType` [query, array]: Policy Type +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `k8sType` [query, array]: The Kubernetes Type +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `agentRangerStatus` [query, array]: The agent network scanner status +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -717,228 +717,228 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sDeploymentStrategy` [query, array] — Deployment Strategy -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, k8sAutoMountToken, agentIdrConnectivity, agentUpToDate, s1SiteId, s1SiteName, k8sDeploymentStrategy, serialNumber, k8sCwsEnabled, agentInstallerType, identityAdUserDistinguishedName, cnsName, category, s1GroupId, cloudProviderAccountName, k8sServiceType, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sUpdateStrategy, k8sResourceId, k8sReplicas, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, k8sServiceName, imageRepository, cnsIsEncrypted, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, k8sSchedule, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, k8sCluster, agentVssServiceStatus, k8sTimeZone, agentPendingUninstall, assetCriticality, s1ScopePath, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, k8sNode, identityAdMachineDistinguishedName, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, imageDigest, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, imageSizeMb, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sServiceType` [query, array] — Service Type -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sUpdateStrategy` [query, array] — Update Strategy -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `k8sServiceName` [query, array] — Service Name -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `instanceType__contains` [query, array] — The instance type -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `osVersion` [query, array] — The operating system version of the device -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `k8sPolicyType` [query, array] — Policy Type -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `k8sType` [query, array] — The Kubernetes Type -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `agentRangerStatus` [query, array] — The agent network scanner status -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sDeploymentStrategy` [query, array]: Deployment Strategy +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, k8sAutoMountToken, agentIdrConnectivity, agentUpToDate, s1SiteId, s1SiteName, k8sDeploymentStrategy, serialNumber, k8sCwsEnabled, agentInstallerType, identityAdUserDistinguishedName, cnsName, category, s1GroupId, cloudProviderAccountName, k8sServiceType, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sUpdateStrategy, k8sResourceId, k8sReplicas, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, k8sServiceName, imageRepository, cnsIsEncrypted, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, k8sSchedule, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, k8sCluster, agentVssServiceStatus, k8sTimeZone, agentPendingUninstall, assetCriticality, s1ScopePath, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, k8sNode, identityAdMachineDistinguishedName, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, imageDigest, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, imageSizeMb, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sServiceType` [query, array]: Service Type +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sUpdateStrategy` [query, array]: Update Strategy +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `k8sServiceName` [query, array]: Service Name +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `instanceType__contains` [query, array]: The instance type +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `osVersion` [query, array]: The operating system version of the device +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `k8sPolicyType` [query, array]: Policy Type +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `k8sType` [query, array]: The Kubernetes Type +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `agentRangerStatus` [query, array]: The agent network scanner status +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container_Filters.md index 30fa34f..f31fb4c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Container_Filters.md @@ -11,224 +11,224 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, imageId__contains, instanceId__contains, instanceType__contains, instanceRole__contains, subnetId__contains, virtualNetworkId__contains, networkSecurityGroups__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, k8sCluster__contains, k8sNode__contains, k8sClusterId__contains, k8sNamespace__contains, k8sResourceId__contains, k8sRunningOnNodes__contains, k8sAnnotationsUnifiedKey__contains, k8sAnnotationsUnifiedKeyValue__contains, k8sLabelsUnifiedKey__contains, k8sLabelsUnifiedKeyValue__contains, k8sServiceType__contains, k8sServiceName__contains, k8sDeploymentStrategy__contains, k8sUpdateStrategy__contains, k8sPolicyType__contains, imageName__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains) — Search field key -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sDeploymentStrategy` [query, array] — Deployment Strategy -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `text` [query, string] **required** — Search term text -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sServiceType` [query, array] — Service Type -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sUpdateStrategy` [query, array] — Update Strategy -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `k8sServiceName` [query, array] — Service Name -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `instanceType__contains` [query, array] — The instance type -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `osVersion` [query, array] — The operating system version of the device -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sPolicyType` [query, array] — Policy Type -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `k8sType` [query, array] — The Kubernetes Type -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `agentRangerStatus` [query, array] — The agent network scanner status -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, imageId__contains, instanceId__contains, instanceType__contains, instanceRole__contains, subnetId__contains, virtualNetworkId__contains, networkSecurityGroups__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, k8sCluster__contains, k8sNode__contains, k8sClusterId__contains, k8sNamespace__contains, k8sResourceId__contains, k8sRunningOnNodes__contains, k8sAnnotationsUnifiedKey__contains, k8sAnnotationsUnifiedKeyValue__contains, k8sLabelsUnifiedKey__contains, k8sLabelsUnifiedKeyValue__contains, k8sServiceType__contains, k8sServiceName__contains, k8sDeploymentStrategy__contains, k8sUpdateStrategy__contains, k8sPolicyType__contains, imageName__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains): Search field key +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sDeploymentStrategy` [query, array]: Deployment Strategy +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `text` [query, string] **required**: Search term text +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sServiceType` [query, array]: Service Type +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sUpdateStrategy` [query, array]: Update Strategy +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `k8sServiceName` [query, array]: Service Name +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `instanceType__contains` [query, array]: The instance type +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `osVersion` [query, array]: The operating system version of the device +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sPolicyType` [query, array]: Policy Type +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `k8sType` [query, array]: The Kubernetes Type +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `agentRangerStatus` [query, array]: The agent network scanner status +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -241,221 +241,221 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `k8sPolicyType__contains` [query, array] — Policy Type -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `k8sServiceType__contains` [query, array] — Service Type -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `k8sDeploymentStrategy` [query, array] — Deployment Strategy -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sServiceType` [query, array] — Service Type -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sUpdateStrategy` [query, array] — Update Strategy -- `k8sNamespace__contains` [query, array] — Namespace Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `k8sServiceName` [query, array] — Service Name -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `k8sUpdateStrategy__contains` [query, array] — Update Strategy -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `instanceType__contains` [query, array] — The instance type -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `osVersion` [query, array] — The operating system version of the device -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sNode` [query, array] — The Kubernetes Node -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sPolicyType` [query, array] — Policy Type -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `k8sDeploymentStrategy__contains` [query, array] — Deployment Strategy -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `networkSecurityGroups__contains` [query, array] — The network security group -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `k8sType` [query, array] — The Kubernetes Type -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `agentRangerStatus` [query, array] — The agent network scanner status -- `imageId__contains` [query, array] — The image ID -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sServiceName__contains` [query, array] — Service Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `k8sPolicyType__contains` [query, array]: Policy Type +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `k8sServiceType__contains` [query, array]: Service Type +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `k8sDeploymentStrategy` [query, array]: Deployment Strategy +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sServiceType` [query, array]: Service Type +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sUpdateStrategy` [query, array]: Update Strategy +- `k8sNamespace__contains` [query, array]: Namespace Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `k8sServiceName` [query, array]: Service Name +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `k8sUpdateStrategy__contains` [query, array]: Update Strategy +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `instanceType__contains` [query, array]: The instance type +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `osVersion` [query, array]: The operating system version of the device +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sNode` [query, array]: The Kubernetes Node +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sPolicyType` [query, array]: Policy Type +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `k8sDeploymentStrategy__contains` [query, array]: Deployment Strategy +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `networkSecurityGroups__contains` [query, array]: The network security group +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `k8sType` [query, array]: The Kubernetes Type +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `agentRangerStatus` [query, array]: The agent network scanner status +- `imageId__contains` [query, array]: The image ID +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sServiceName__contains` [query, array]: Service Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis.md index 242fc89..2ebf915 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cnsEncryptionAtRest, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, cnsEncryptionAtTransit, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, cnsHasKerberosAuth, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, cnsEncryptionKeyProviderType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, cnsEncryptionMode, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cnsEncryptionAtRest, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, cnsEncryptionAtTransit, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, cnsHasKerberosAuth, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, cnsEncryptionKeyProviderType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, cnsEncryptionMode, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.data_analysis.schemas_DataAnalysisViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.data_analysis.schemas_DataAnalysisViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.data_analysis.schemas_DataAnalysisActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.data_analysis.schemas_DataAnalysisActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cnsEncryptionAtRest, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, cnsEncryptionAtTransit, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, cnsHasKerberosAuth, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, cnsEncryptionKeyProviderType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, cnsEncryptionMode, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cnsEncryptionAtRest, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, cnsEncryptionAtTransit, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, cnsHasKerberosAuth, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, cnsEncryptionKeyProviderType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, cnsEncryptionMode, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis_Filters.md index ded682b..8cc0ec0 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Analysis_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store.md index 9cac231..f40fff9 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store.md @@ -11,110 +11,110 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, monitoringEnabled, cnsMonitorTargetEnabled, loggingEnabled, encryptionEnabled, s1UpdatedAt, cnsVolumeGroupIdExists, cnsRetentionDays, cloudProviderResourceGroup, cnsReadReplicaSourceDbInstanceIdentifierExists, cnsHasRecurringScansEmails, replicationEnabled, region, cloudProviderOrganization, cnsAccessLevel, s1ManagementId, storageType, enabledBlobAuditingPolicy, instanceCount, enabledVulnerabilityAssessmentSetting, cloudProviderOrganizationUnit, cnsStatus, cnsSseDescriptionEnabled, s1SiteId, s1SiteName, cnsKmsKeyId, cnsMfaRequiredForDelete, category, realtimeMalwareProtectionEnabledTime, s1GroupId, threatDetectionPolicyStatus, cnsGrant, multiAzEnabled, cnsEmailAdmins, cloudProviderAccountName, engineVersion, cnsFlexibleEndIpAddress, firewallRulesEnabled, cnsValue, softDeleteEnabled, s1OnboardedAccountId, accessTier, backupRetentionPeriodDays, cloudResourceId, cnsPricingTier, assetContactEmail, immutableStorageEnabled, s1ScopeType, assetEnvironment, objectCount, s1AccountId, enabledAlertPolicy, cnsLocked, id, allowsUnencryptedObjectUploads, cnsHasOwnerOrAdminRoles, s1AccountName, backupEnabled, s1ScopeLevel, cloudProviderUrlString, cnsHasSecurityContactsEmails, highAvailabilityEnabled, geoRedundantBackupEnabled, isPublic, cnsCopyTagsToSnapshot, cnsEncryptedStorage, serverAdminLogin, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, dataClassificationScanStatus, cnsDefenderNotificationByRoleState, cnsHasEmailConfigured, name, assetCriticality, s1ScopePath, isSynapseCreatedServer, cloudProviderSubscriptionId, s1OnboardedGroupName, engineType, cnsGetObjectAccess, lastScanDt, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsEmailAdmin, cnsState, cnsExportCloudwatchLogs, cnsFlexibleStartIpAddress, cnsEndIpAddress, infectionStatus, connectivityStatus, s1OnboardedSiteId, cnsStartIpAddress, threatDetectionStatus, storageSize, backupRetentionPeriod, storageClass, dataClassificationPolicyStatus, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, deviceReview, dataClassificationStatus, cnsDeletionProtectionEnabled, computeMode, cloudResourceUid, s1OnboardedScopePath, cnsHasRecurringScanEnabled, policyDocument, assetStatus, scannerStatus, virtualNetworkRulesEnabled, cnsObjectVersioningEnabled, versioningEnabled, s1OnboardedGroupId, machineType, cnsAutoMinorVersionUpgrade, dataClassificationLastScanDt, scanStatus) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, monitoringEnabled, cnsMonitorTargetEnabled, loggingEnabled, encryptionEnabled, s1UpdatedAt, cnsVolumeGroupIdExists, cnsRetentionDays, cloudProviderResourceGroup, cnsReadReplicaSourceDbInstanceIdentifierExists, cnsHasRecurringScansEmails, replicationEnabled, region, cloudProviderOrganization, cnsAccessLevel, s1ManagementId, storageType, enabledBlobAuditingPolicy, instanceCount, enabledVulnerabilityAssessmentSetting, cloudProviderOrganizationUnit, cnsStatus, cnsSseDescriptionEnabled, s1SiteId, s1SiteName, cnsKmsKeyId, cnsMfaRequiredForDelete, category, realtimeMalwareProtectionEnabledTime, s1GroupId, threatDetectionPolicyStatus, cnsGrant, multiAzEnabled, cnsEmailAdmins, cloudProviderAccountName, engineVersion, cnsFlexibleEndIpAddress, firewallRulesEnabled, cnsValue, softDeleteEnabled, s1OnboardedAccountId, accessTier, backupRetentionPeriodDays, cloudResourceId, cnsPricingTier, assetContactEmail, immutableStorageEnabled, s1ScopeType, assetEnvironment, objectCount, s1AccountId, enabledAlertPolicy, cnsLocked, id, allowsUnencryptedObjectUploads, cnsHasOwnerOrAdminRoles, s1AccountName, backupEnabled, s1ScopeLevel, cloudProviderUrlString, cnsHasSecurityContactsEmails, highAvailabilityEnabled, geoRedundantBackupEnabled, isPublic, cnsCopyTagsToSnapshot, cnsEncryptedStorage, serverAdminLogin, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, dataClassificationScanStatus, cnsDefenderNotificationByRoleState, cnsHasEmailConfigured, name, assetCriticality, s1ScopePath, isSynapseCreatedServer, cloudProviderSubscriptionId, s1OnboardedGroupName, engineType, cnsGetObjectAccess, lastScanDt, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsEmailAdmin, cnsState, cnsExportCloudwatchLogs, cnsFlexibleStartIpAddress, cnsEndIpAddress, infectionStatus, connectivityStatus, s1OnboardedSiteId, cnsStartIpAddress, threatDetectionStatus, storageSize, backupRetentionPeriod, storageClass, dataClassificationPolicyStatus, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, deviceReview, dataClassificationStatus, cnsDeletionProtectionEnabled, computeMode, cloudResourceUid, s1OnboardedScopePath, cnsHasRecurringScanEnabled, policyDocument, assetStatus, scannerStatus, virtualNetworkRulesEnabled, cnsObjectVersioningEnabled, versioningEnabled, s1OnboardedGroupId, machineType, cnsAutoMinorVersionUpgrade, dataClassificationLastScanDt, scanStatus): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -127,10 +127,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.data_store.schemas_DataStoreViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.data_store.schemas_DataStoreViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -143,104 +143,104 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.data_store.schemas_DataStoreActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.data_store.schemas_DataStoreActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -253,104 +253,104 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -363,110 +363,110 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, monitoringEnabled, cnsMonitorTargetEnabled, loggingEnabled, encryptionEnabled, s1UpdatedAt, cnsVolumeGroupIdExists, cnsRetentionDays, cloudProviderResourceGroup, cnsReadReplicaSourceDbInstanceIdentifierExists, cnsHasRecurringScansEmails, replicationEnabled, region, cloudProviderOrganization, cnsAccessLevel, s1ManagementId, storageType, enabledBlobAuditingPolicy, instanceCount, enabledVulnerabilityAssessmentSetting, cloudProviderOrganizationUnit, cnsStatus, cnsSseDescriptionEnabled, s1SiteId, s1SiteName, cnsKmsKeyId, cnsMfaRequiredForDelete, category, realtimeMalwareProtectionEnabledTime, s1GroupId, threatDetectionPolicyStatus, cnsGrant, multiAzEnabled, cnsEmailAdmins, cloudProviderAccountName, engineVersion, cnsFlexibleEndIpAddress, firewallRulesEnabled, cnsValue, softDeleteEnabled, s1OnboardedAccountId, accessTier, backupRetentionPeriodDays, cloudResourceId, cnsPricingTier, assetContactEmail, immutableStorageEnabled, s1ScopeType, assetEnvironment, objectCount, s1AccountId, enabledAlertPolicy, cnsLocked, id, allowsUnencryptedObjectUploads, cnsHasOwnerOrAdminRoles, s1AccountName, backupEnabled, s1ScopeLevel, cloudProviderUrlString, cnsHasSecurityContactsEmails, highAvailabilityEnabled, geoRedundantBackupEnabled, isPublic, cnsCopyTagsToSnapshot, cnsEncryptedStorage, serverAdminLogin, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, dataClassificationScanStatus, cnsDefenderNotificationByRoleState, cnsHasEmailConfigured, name, assetCriticality, s1ScopePath, isSynapseCreatedServer, cloudProviderSubscriptionId, s1OnboardedGroupName, engineType, cnsGetObjectAccess, lastScanDt, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsEmailAdmin, cnsState, cnsExportCloudwatchLogs, cnsFlexibleStartIpAddress, cnsEndIpAddress, infectionStatus, connectivityStatus, s1OnboardedSiteId, cnsStartIpAddress, threatDetectionStatus, storageSize, backupRetentionPeriod, storageClass, dataClassificationPolicyStatus, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, deviceReview, dataClassificationStatus, cnsDeletionProtectionEnabled, computeMode, cloudResourceUid, s1OnboardedScopePath, cnsHasRecurringScanEnabled, policyDocument, assetStatus, scannerStatus, virtualNetworkRulesEnabled, cnsObjectVersioningEnabled, versioningEnabled, s1OnboardedGroupId, machineType, cnsAutoMinorVersionUpgrade, dataClassificationLastScanDt, scanStatus) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, monitoringEnabled, cnsMonitorTargetEnabled, loggingEnabled, encryptionEnabled, s1UpdatedAt, cnsVolumeGroupIdExists, cnsRetentionDays, cloudProviderResourceGroup, cnsReadReplicaSourceDbInstanceIdentifierExists, cnsHasRecurringScansEmails, replicationEnabled, region, cloudProviderOrganization, cnsAccessLevel, s1ManagementId, storageType, enabledBlobAuditingPolicy, instanceCount, enabledVulnerabilityAssessmentSetting, cloudProviderOrganizationUnit, cnsStatus, cnsSseDescriptionEnabled, s1SiteId, s1SiteName, cnsKmsKeyId, cnsMfaRequiredForDelete, category, realtimeMalwareProtectionEnabledTime, s1GroupId, threatDetectionPolicyStatus, cnsGrant, multiAzEnabled, cnsEmailAdmins, cloudProviderAccountName, engineVersion, cnsFlexibleEndIpAddress, firewallRulesEnabled, cnsValue, softDeleteEnabled, s1OnboardedAccountId, accessTier, backupRetentionPeriodDays, cloudResourceId, cnsPricingTier, assetContactEmail, immutableStorageEnabled, s1ScopeType, assetEnvironment, objectCount, s1AccountId, enabledAlertPolicy, cnsLocked, id, allowsUnencryptedObjectUploads, cnsHasOwnerOrAdminRoles, s1AccountName, backupEnabled, s1ScopeLevel, cloudProviderUrlString, cnsHasSecurityContactsEmails, highAvailabilityEnabled, geoRedundantBackupEnabled, isPublic, cnsCopyTagsToSnapshot, cnsEncryptedStorage, serverAdminLogin, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, dataClassificationScanStatus, cnsDefenderNotificationByRoleState, cnsHasEmailConfigured, name, assetCriticality, s1ScopePath, isSynapseCreatedServer, cloudProviderSubscriptionId, s1OnboardedGroupName, engineType, cnsGetObjectAccess, lastScanDt, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsEmailAdmin, cnsState, cnsExportCloudwatchLogs, cnsFlexibleStartIpAddress, cnsEndIpAddress, infectionStatus, connectivityStatus, s1OnboardedSiteId, cnsStartIpAddress, threatDetectionStatus, storageSize, backupRetentionPeriod, storageClass, dataClassificationPolicyStatus, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, deviceReview, dataClassificationStatus, cnsDeletionProtectionEnabled, computeMode, cloudResourceUid, s1OnboardedScopePath, cnsHasRecurringScanEnabled, policyDocument, assetStatus, scannerStatus, virtualNetworkRulesEnabled, cnsObjectVersioningEnabled, versioningEnabled, s1OnboardedGroupId, machineType, cnsAutoMinorVersionUpgrade, dataClassificationLastScanDt, scanStatus): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store_Filters.md index b2c29d8..10f27ce 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Data_Store_Filters.md @@ -11,106 +11,106 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `key` [query, string] **required** (enum: resourceType__contains, scanStatus__contains, threatDetectionStatus__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, dataClassificationStatus__contains, dataTypes__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `text` [query, string] **required** — Search term text -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `key` [query, string] **required** (enum: resourceType__contains, scanStatus__contains, threatDetectionStatus__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, dataClassificationStatus__contains, dataTypes__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `text` [query, string] **required**: Search term text +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -123,103 +123,103 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool.md index 5fb0e31..5e29d59 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, vcsIntegrationId, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, vcsIntegrationId, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.developer_tool.schemas_DeveloperToolsViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.developer_tool.schemas_DeveloperToolsViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.developer_tool.schemas_DeveloperToolActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.developer_tool.schemas_DeveloperToolActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, vcsIntegrationId, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, vcsIntegrationId, assetCriticality, s1OnboardedAccountId, s1ScopePath, s1OnboardedScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool_Filters.md index d66f5b4..d301fab 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Developer_Tool_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device.md index 3a442c4..b570d10 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device.md @@ -11,112 +11,112 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, memory, detectedFromSite, previousOsType, previousOsVersion, eppUnsupportedUnknown, s1OnboardedAccountName, category, s1UpdatedAt, s1GroupId, s1OnboardedScopeLevel, subCategory, s1OnboardedScopeId, deviceReview, memoryReadable, s1ManagementId, ipAddress, name, assetCriticality, osVersion, s1ScopePath, s1OnboardedAccountId, architecture, s1OnboardedScopePath, s1OnboardedGroupName, os, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, manufacturer, s1ScopeType, assetEnvironment, previousDeviceFunction, resourceType, networkName, osFamily, s1OnboardedGroupId, s1SiteId, s1AccountId, firstSeenDt, coreCount, id, domain, s1SiteName, s1AccountName, infectionStatus, lastUpdateDt, s1ScopeLevel, s1OnboardedSiteId, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, memory, detectedFromSite, previousOsType, previousOsVersion, eppUnsupportedUnknown, s1OnboardedAccountName, category, s1UpdatedAt, s1GroupId, s1OnboardedScopeLevel, subCategory, s1OnboardedScopeId, deviceReview, memoryReadable, s1ManagementId, ipAddress, name, assetCriticality, osVersion, s1ScopePath, s1OnboardedAccountId, architecture, s1OnboardedScopePath, s1OnboardedGroupName, os, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, manufacturer, s1ScopeType, assetEnvironment, previousDeviceFunction, resourceType, networkName, osFamily, s1OnboardedGroupId, s1SiteId, s1AccountId, firstSeenDt, coreCount, id, domain, s1SiteName, s1AccountName, infectionStatus, lastUpdateDt, s1ScopeLevel, s1OnboardedSiteId, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -129,10 +129,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.device.schemas_DeviceViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.device.schemas_DeviceViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -145,106 +145,106 @@ Perform action on selected assets Required permissions: `XDR Inventory.edit, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.device.schemas_DeviceActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.device.schemas_DeviceActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -257,106 +257,106 @@ Get cloud inventory device available-actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -369,112 +369,112 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, memory, detectedFromSite, previousOsType, previousOsVersion, eppUnsupportedUnknown, s1OnboardedAccountName, category, s1UpdatedAt, s1GroupId, s1OnboardedScopeLevel, subCategory, s1OnboardedScopeId, deviceReview, memoryReadable, s1ManagementId, ipAddress, name, assetCriticality, osVersion, s1ScopePath, s1OnboardedAccountId, architecture, s1OnboardedScopePath, s1OnboardedGroupName, os, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, manufacturer, s1ScopeType, assetEnvironment, previousDeviceFunction, resourceType, networkName, osFamily, s1OnboardedGroupId, s1SiteId, s1AccountId, firstSeenDt, coreCount, id, domain, s1SiteName, s1AccountName, infectionStatus, lastUpdateDt, s1ScopeLevel, s1OnboardedSiteId, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, memory, detectedFromSite, previousOsType, previousOsVersion, eppUnsupportedUnknown, s1OnboardedAccountName, category, s1UpdatedAt, s1GroupId, s1OnboardedScopeLevel, subCategory, s1OnboardedScopeId, deviceReview, memoryReadable, s1ManagementId, ipAddress, name, assetCriticality, osVersion, s1ScopePath, s1OnboardedAccountId, architecture, s1OnboardedScopePath, s1OnboardedGroupName, os, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, manufacturer, s1ScopeType, assetEnvironment, previousDeviceFunction, resourceType, networkName, osFamily, s1OnboardedGroupId, s1SiteId, s1AccountId, firstSeenDt, coreCount, id, domain, s1SiteName, s1AccountName, infectionStatus, lastUpdateDt, s1ScopeLevel, s1OnboardedSiteId, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device_Filters.md index a6d0262..6b6c960 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Device_Filters.md @@ -11,108 +11,108 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains) — Search field key -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `text` [query, string] **required** — Search term text -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains): Search field key +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `text` [query, string] **required**: Search term text +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -125,105 +125,105 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface.md index 0a3f389..4ec3487 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface.md @@ -11,169 +11,169 @@ Get inventory endpoint assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `os` [query, array] — The operating system of the device -- `isAdConnector` [query, array] — Is AD Connector -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, osVersion, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `os` [query, array]: The operating system of the device +- `isAdConnector` [query, array]: Is AD Connector +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, osVersion, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -186,10 +186,10 @@ POST API to get endpoint assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.surfaces.endpoint.schemas_EndpointViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.surfaces.endpoint.schemas_EndpointViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -202,163 +202,163 @@ Perform action on selected assets Required permissions: `XDR Inventory.edit, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `os` [query, array] — The operating system of the device -- `isAdConnector` [query, array] — Is AD Connector -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.surfaces.endpoint.schemas_EndpointActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `os` [query, array]: The operating system of the device +- `isAdConnector` [query, array]: Is AD Connector +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.surfaces.endpoint.schemas_EndpointActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -371,163 +371,163 @@ Get endpoint available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `os` [query, array] — The operating system of the device -- `isAdConnector` [query, array] — Is AD Connector -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `os` [query, array]: The operating system of the device +- `isAdConnector` [query, array]: Is AD Connector +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -540,169 +540,169 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `os` [query, array] — The operating system of the device -- `isAdConnector` [query, array] — Is AD Connector -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, osVersion, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `os` [query, array]: The operating system of the device +- `isAdConnector` [query, array]: Is AD Connector +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, osVersion, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface_Filters.md index 77ddcd4..35ea903 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Endpoint_Surface_Filters.md @@ -11,165 +11,165 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `os` [query, array] — The operating system of the device -- `isAdConnector` [query, array] — Is AD Connector -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, imageName__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains) — Search field key -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `text` [query, string] **required** — Search term text -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `os` [query, array]: The operating system of the device +- `isAdConnector` [query, array]: Is AD Connector +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, imageName__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains): Search field key +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `text` [query, string] **required**: Search term text +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -182,162 +182,162 @@ Get Endpoint filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `os` [query, array] — The operating system of the device -- `isAdConnector` [query, array] — Is AD Connector -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `firstSeenDt__between` [query, string] — The first seen date -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `os` [query, array]: The operating system of the device +- `isAdConnector` [query, array]: Is AD Connector +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `firstSeenDt__between` [query, string]: The first seen date +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Filters.md index c4c1f85..70f89ed 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Filters.md @@ -11,90 +11,90 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `text` [query, string] **required** — Search term text -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `text` [query, string] **required**: Search term text +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -107,87 +107,87 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -200,11 +200,11 @@ Upload CSV file Required permissions: `XDR Inventory.view` Parameters: -- `surface` [formData, string] (enum: Cloud, Identity, Network Discovery, Endpoint) — The surface that each resource belongs to -- `category` [formData, string] (enum: All, Account, AI ML, Application Integration, Cloud Application, Code, Container, Data Analysis, Data Store, Developer Tool, Device, Function, Identity, Secrets, Server, Storage, Network, Governance, Workstation) — The category that each resource belongs to -- `excludeHeader` [formData, boolean] **required** — Set to True to exclude the column header -- `assetFilterField` [formData, string] — The property of the asset to filter by -- `file` [formData, file] **required** — File +- `surface` [formData, string] (enum: Cloud, Identity, Network Discovery, Endpoint): The surface that each resource belongs to +- `category` [formData, string] (enum: All, Account, AI ML, Application Integration, Cloud Application, Code, Container, Data Analysis, Data Store, Developer Tool, Device, Function, Identity, Secrets, Server, Storage, Network, Governance, Workstation): The category that each resource belongs to +- `excludeHeader` [formData, boolean] **required**: Set to True to exclude the column header +- `assetFilterField` [formData, string]: The property of the asset to filter by +- `file` [formData, file] **required**: File Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function.md index f233d79..bbf26f2 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.function.schemas_FunctionsViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.function.schemas_FunctionsViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.function.schemas_FunctionActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.function.schemas_FunctionActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function_Filters.md index 48f24b5..bacb23f 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Function_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance.md index 7f272ec..0937f50 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.governance.schemas_GovernanceViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.governance.schemas_GovernanceViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.governance.schemas_GovernanceActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.governance.schemas_GovernanceActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get cloud inventory governance available-actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1OnboardedAccountName, cloudProviderProjectId, category, s1UpdatedAt, s1GroupId, cloudProviderAccountId, s1OnboardedScopeLevel, createdTime, subCategory, cloudProviderAccountName, s1OnboardedScopeId, cloudProviderResourceGroup, deviceReview, region, cloudProviderOrganization, s1ManagementId, name, assetCriticality, s1OnboardedAccountId, s1OnboardedScopePath, s1ScopePath, cloudResourceUid, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudResourceId, cloudProviderOrganizationUnit, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, s1ScopeType, assetEnvironment, resourceType, s1OnboardedGroupId, s1SiteId, s1AccountId, id, s1SiteName, infectionStatus, s1AccountName, s1ScopeLevel, s1OnboardedSiteId, cloudProviderUrlString): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance_Filters.md index bef16f5..13975b7 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Governance_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity.md index c73acd8..30b0262 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity.md @@ -11,132 +11,132 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, recycled, groupType, s1UpdatedAt, objectCategory, cloudProviderResourceGroup, resultantPso, region, cloudProviderOrganization, logonCount, s1ManagementId, userPrincipalName, distinguishedName, creatorSid, entraidGroupType, classification, cloudProviderOrganizationUnit, mail, accountStatus, lastLogonTime, objectSid, consistencyGuid, s1SiteId, samAccountName, onPremisesLastSyncTime, s1SiteName, forest, privileged, onPremisesSecurityIdentifier, passwordNeverExpire, category, s1GroupId, cloudProviderAccountName, deleted, securityEnabled, onPremisesSyncEnabled, officeLocation, displayName, lastModifiedTime, parentDistName, primaryGroupId, lastKnownParent, s1OnboardedAccountId, expirationTime, onPremisesDistinguishedName, cn, cloudResourceId, onPremisesUserPrincipalName, passwordLastSetTime, assetContactEmail, s1ScopeType, assetEnvironment, s1AccountId, badPasswordCount, givenName, id, s1AccountName, s1ScopeLevel, cloudProviderUrlString, forceChangePasswordNextSigninWithMfa, accountExpires, badPasswordTime, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, jobTitle, userAccountControl, name, ageGroup, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, deletedTime, resourceType, serviceAccount, infectionStatus, objectGuid, s1OnboardedSiteId, ntSecurityDescriptor, allowedToActOnBehalfOfOtherIdentity, cloudProviderProjectId, onPremisesSamAccountName, uniqueName, lastPasswordChangeTime, cloudProviderAccountId, subCategory, s1OnboardedScopeId, onPremisesImmutableId, deviceReview, usnChanged, department, logonHours, samAccountType, principalName, visibility, cloudResourceUid, s1OnboardedScopePath, employeeType, lockOutTime, assetStatus, whenChanged, surname, s1OnboardedGroupId, forceChangePasswordNextSignin, userPasswordExpiryTimeComputed, adminCount, usnCreated, domain, onPremisesDomainName, enabled) — The column to sort the results by. -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, recycled, groupType, s1UpdatedAt, objectCategory, cloudProviderResourceGroup, resultantPso, region, cloudProviderOrganization, logonCount, s1ManagementId, userPrincipalName, distinguishedName, creatorSid, entraidGroupType, classification, cloudProviderOrganizationUnit, mail, accountStatus, lastLogonTime, objectSid, consistencyGuid, s1SiteId, samAccountName, onPremisesLastSyncTime, s1SiteName, forest, privileged, onPremisesSecurityIdentifier, passwordNeverExpire, category, s1GroupId, cloudProviderAccountName, deleted, securityEnabled, onPremisesSyncEnabled, officeLocation, displayName, lastModifiedTime, parentDistName, primaryGroupId, lastKnownParent, s1OnboardedAccountId, expirationTime, onPremisesDistinguishedName, cn, cloudResourceId, onPremisesUserPrincipalName, passwordLastSetTime, assetContactEmail, s1ScopeType, assetEnvironment, s1AccountId, badPasswordCount, givenName, id, s1AccountName, s1ScopeLevel, cloudProviderUrlString, forceChangePasswordNextSigninWithMfa, accountExpires, badPasswordTime, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, jobTitle, userAccountControl, name, ageGroup, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, deletedTime, resourceType, serviceAccount, infectionStatus, objectGuid, s1OnboardedSiteId, ntSecurityDescriptor, allowedToActOnBehalfOfOtherIdentity, cloudProviderProjectId, onPremisesSamAccountName, uniqueName, lastPasswordChangeTime, cloudProviderAccountId, subCategory, s1OnboardedScopeId, onPremisesImmutableId, deviceReview, usnChanged, department, logonHours, samAccountType, principalName, visibility, cloudResourceUid, s1OnboardedScopePath, employeeType, lockOutTime, assetStatus, whenChanged, surname, s1OnboardedGroupId, forceChangePasswordNextSignin, userPasswordExpiryTimeComputed, adminCount, usnCreated, domain, onPremisesDomainName, enabled): The column to sort the results by. +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -149,10 +149,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.identity.schemas_IdentityViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.identity.schemas_IdentityViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -165,126 +165,126 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.identity.schemas_IdentityActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.identity.schemas_IdentityActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -297,126 +297,126 @@ Get cloud inventory identity available-actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -429,132 +429,132 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, recycled, groupType, s1UpdatedAt, objectCategory, cloudProviderResourceGroup, resultantPso, region, cloudProviderOrganization, logonCount, s1ManagementId, userPrincipalName, distinguishedName, creatorSid, entraidGroupType, classification, cloudProviderOrganizationUnit, mail, accountStatus, lastLogonTime, objectSid, consistencyGuid, s1SiteId, samAccountName, onPremisesLastSyncTime, s1SiteName, forest, privileged, onPremisesSecurityIdentifier, passwordNeverExpire, category, s1GroupId, cloudProviderAccountName, deleted, securityEnabled, onPremisesSyncEnabled, officeLocation, displayName, lastModifiedTime, parentDistName, primaryGroupId, lastKnownParent, s1OnboardedAccountId, expirationTime, onPremisesDistinguishedName, cn, cloudResourceId, onPremisesUserPrincipalName, passwordLastSetTime, assetContactEmail, s1ScopeType, assetEnvironment, s1AccountId, badPasswordCount, givenName, id, s1AccountName, s1ScopeLevel, cloudProviderUrlString, forceChangePasswordNextSigninWithMfa, accountExpires, badPasswordTime, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, jobTitle, userAccountControl, name, ageGroup, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, deletedTime, resourceType, serviceAccount, infectionStatus, objectGuid, s1OnboardedSiteId, ntSecurityDescriptor, allowedToActOnBehalfOfOtherIdentity, cloudProviderProjectId, onPremisesSamAccountName, uniqueName, lastPasswordChangeTime, cloudProviderAccountId, subCategory, s1OnboardedScopeId, onPremisesImmutableId, deviceReview, usnChanged, department, logonHours, samAccountType, principalName, visibility, cloudResourceUid, s1OnboardedScopePath, employeeType, lockOutTime, assetStatus, whenChanged, surname, s1OnboardedGroupId, forceChangePasswordNextSignin, userPasswordExpiryTimeComputed, adminCount, usnCreated, domain, onPremisesDomainName, enabled) — The column to sort the results by. -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, recycled, groupType, s1UpdatedAt, objectCategory, cloudProviderResourceGroup, resultantPso, region, cloudProviderOrganization, logonCount, s1ManagementId, userPrincipalName, distinguishedName, creatorSid, entraidGroupType, classification, cloudProviderOrganizationUnit, mail, accountStatus, lastLogonTime, objectSid, consistencyGuid, s1SiteId, samAccountName, onPremisesLastSyncTime, s1SiteName, forest, privileged, onPremisesSecurityIdentifier, passwordNeverExpire, category, s1GroupId, cloudProviderAccountName, deleted, securityEnabled, onPremisesSyncEnabled, officeLocation, displayName, lastModifiedTime, parentDistName, primaryGroupId, lastKnownParent, s1OnboardedAccountId, expirationTime, onPremisesDistinguishedName, cn, cloudResourceId, onPremisesUserPrincipalName, passwordLastSetTime, assetContactEmail, s1ScopeType, assetEnvironment, s1AccountId, badPasswordCount, givenName, id, s1AccountName, s1ScopeLevel, cloudProviderUrlString, forceChangePasswordNextSigninWithMfa, accountExpires, badPasswordTime, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, jobTitle, userAccountControl, name, ageGroup, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, deletedTime, resourceType, serviceAccount, infectionStatus, objectGuid, s1OnboardedSiteId, ntSecurityDescriptor, allowedToActOnBehalfOfOtherIdentity, cloudProviderProjectId, onPremisesSamAccountName, uniqueName, lastPasswordChangeTime, cloudProviderAccountId, subCategory, s1OnboardedScopeId, onPremisesImmutableId, deviceReview, usnChanged, department, logonHours, samAccountType, principalName, visibility, cloudResourceUid, s1OnboardedScopePath, employeeType, lockOutTime, assetStatus, whenChanged, surname, s1OnboardedGroupId, forceChangePasswordNextSignin, userPasswordExpiryTimeComputed, adminCount, usnCreated, domain, onPremisesDomainName, enabled): The column to sort the results by. +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Filters.md index b108460..f2445d7 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Filters.md @@ -11,128 +11,128 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `key` [query, string] **required** (enum: cn__contains, displayName__contains, distinguishedName__contains, domain__contains, objectGuid__contains, objectSid__contains, servicePrincipalName__contains, forest__contains, resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, givenName__contains, onPremisesDistinguishedName__contains, onPremisesDomainName__contains, onPremisesSamAccountName__contains, onPremisesUserPrincipalName__contains, otherMails__contains, proxyAddresses__contains, onPremisesSecurityIdentifier__contains, mail__contains, userPrincipalName__contains, imageName__contains) — Search field key -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `text` [query, string] **required** — Search term text -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `limit` [query, integer] — Limit number of returned items -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `key` [query, string] **required** (enum: cn__contains, displayName__contains, distinguishedName__contains, domain__contains, objectGuid__contains, objectSid__contains, servicePrincipalName__contains, forest__contains, resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, givenName__contains, onPremisesDistinguishedName__contains, onPremisesDomainName__contains, onPremisesSamAccountName__contains, onPremisesUserPrincipalName__contains, otherMails__contains, proxyAddresses__contains, onPremisesSecurityIdentifier__contains, mail__contains, userPrincipalName__contains, imageName__contains): Search field key +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `text` [query, string] **required**: Search term text +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `limit` [query, integer]: Limit number of returned items +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -145,125 +145,125 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface.md index 7e2f2b6..06e70cf 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface.md @@ -11,132 +11,132 @@ Get identity surface assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, ntSecurityDescriptor, recycled, privileged, groupType, accountExpires, badPasswordTime, allowedToActOnBehalfOfOtherIdentity, passwordNeverExpire, s1OnboardedAccountName, category, s1UpdatedAt, objectCategory, s1GroupId, s1OnboardedScopeLevel, createdTime, subCategory, s1OnboardedScopeId, deleted, resultantPso, deviceReview, usnChanged, displayName, lastModifiedTime, logonCount, s1ManagementId, parentDistName, primaryGroupId, userPrincipalName, userAccountControl, lastKnownParent, name, logonHours, samAccountType, principalName, assetCriticality, s1OnboardedAccountId, s1ScopePath, distinguishedName, s1OnboardedScopePath, s1OnboardedGroupName, creatorSid, cn, lockOutTime, s1OnboardedSiteName, mail, s1ScopeId, passwordLastSetTime, assetStatus, assetContactEmail, whenChanged, objectGuid, s1ScopeType, lastLogonTime, assetEnvironment, resourceType, objectSid, s1OnboardedGroupId, s1SiteId, consistencyGuid, samAccountName, s1AccountId, badPasswordCount, userPasswordExpiryTimeComputed, adminCount, serviceAccount, id, s1SiteName, forest, s1AccountName, infectionStatus, usnCreated, domain, s1ScopeLevel, s1OnboardedSiteId, enabled) — The column to sort the results by. -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, ntSecurityDescriptor, recycled, privileged, groupType, accountExpires, badPasswordTime, allowedToActOnBehalfOfOtherIdentity, passwordNeverExpire, s1OnboardedAccountName, category, s1UpdatedAt, objectCategory, s1GroupId, s1OnboardedScopeLevel, createdTime, subCategory, s1OnboardedScopeId, deleted, resultantPso, deviceReview, usnChanged, displayName, lastModifiedTime, logonCount, s1ManagementId, parentDistName, primaryGroupId, userPrincipalName, userAccountControl, lastKnownParent, name, logonHours, samAccountType, principalName, assetCriticality, s1OnboardedAccountId, s1ScopePath, distinguishedName, s1OnboardedScopePath, s1OnboardedGroupName, creatorSid, cn, lockOutTime, s1OnboardedSiteName, mail, s1ScopeId, passwordLastSetTime, assetStatus, assetContactEmail, whenChanged, objectGuid, s1ScopeType, lastLogonTime, assetEnvironment, resourceType, objectSid, s1OnboardedGroupId, s1SiteId, consistencyGuid, samAccountName, s1AccountId, badPasswordCount, userPasswordExpiryTimeComputed, adminCount, serviceAccount, id, s1SiteName, forest, s1AccountName, infectionStatus, usnCreated, domain, s1ScopeLevel, s1OnboardedSiteId, enabled): The column to sort the results by. +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -149,126 +149,126 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.identity.schemas_IdentityActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.identity.schemas_IdentityActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -281,126 +281,126 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -413,132 +413,132 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, ntSecurityDescriptor, recycled, privileged, groupType, accountExpires, badPasswordTime, allowedToActOnBehalfOfOtherIdentity, passwordNeverExpire, s1OnboardedAccountName, category, s1UpdatedAt, objectCategory, s1GroupId, s1OnboardedScopeLevel, createdTime, subCategory, s1OnboardedScopeId, deleted, resultantPso, deviceReview, usnChanged, displayName, lastModifiedTime, logonCount, s1ManagementId, parentDistName, primaryGroupId, userPrincipalName, userAccountControl, lastKnownParent, name, logonHours, samAccountType, principalName, assetCriticality, s1OnboardedAccountId, s1ScopePath, distinguishedName, s1OnboardedScopePath, s1OnboardedGroupName, creatorSid, cn, lockOutTime, s1OnboardedSiteName, mail, s1ScopeId, passwordLastSetTime, assetStatus, assetContactEmail, whenChanged, objectGuid, s1ScopeType, lastLogonTime, assetEnvironment, resourceType, objectSid, s1OnboardedGroupId, s1SiteId, consistencyGuid, samAccountName, s1AccountId, badPasswordCount, userPasswordExpiryTimeComputed, adminCount, serviceAccount, id, s1SiteName, forest, s1AccountName, infectionStatus, usnCreated, domain, s1ScopeLevel, s1OnboardedSiteId, enabled) — The column to sort the results by. -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, ntSecurityDescriptor, recycled, privileged, groupType, accountExpires, badPasswordTime, allowedToActOnBehalfOfOtherIdentity, passwordNeverExpire, s1OnboardedAccountName, category, s1UpdatedAt, objectCategory, s1GroupId, s1OnboardedScopeLevel, createdTime, subCategory, s1OnboardedScopeId, deleted, resultantPso, deviceReview, usnChanged, displayName, lastModifiedTime, logonCount, s1ManagementId, parentDistName, primaryGroupId, userPrincipalName, userAccountControl, lastKnownParent, name, logonHours, samAccountType, principalName, assetCriticality, s1OnboardedAccountId, s1ScopePath, distinguishedName, s1OnboardedScopePath, s1OnboardedGroupName, creatorSid, cn, lockOutTime, s1OnboardedSiteName, mail, s1ScopeId, passwordLastSetTime, assetStatus, assetContactEmail, whenChanged, objectGuid, s1ScopeType, lastLogonTime, assetEnvironment, resourceType, objectSid, s1OnboardedGroupId, s1SiteId, consistencyGuid, samAccountName, s1AccountId, badPasswordCount, userPasswordExpiryTimeComputed, adminCount, serviceAccount, id, s1SiteName, forest, s1AccountName, infectionStatus, usnCreated, domain, s1ScopeLevel, s1OnboardedSiteId, enabled): The column to sort the results by. +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface_Filters.md index 4cdcd85..ac613fa 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Identity_Surface_Filters.md @@ -11,128 +11,128 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `key` [query, string] **required** (enum: cn__contains, displayName__contains, distinguishedName__contains, domain__contains, objectGuid__contains, objectSid__contains, servicePrincipalName__contains, forest__contains, resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, givenName__contains, onPremisesDistinguishedName__contains, onPremisesDomainName__contains, onPremisesSamAccountName__contains, onPremisesUserPrincipalName__contains, otherMails__contains, proxyAddresses__contains, onPremisesSecurityIdentifier__contains, mail__contains, userPrincipalName__contains, imageName__contains) — Search field key -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `text` [query, string] **required** — Search term text -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `limit` [query, integer] — Limit number of returned items -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `key` [query, string] **required** (enum: cn__contains, displayName__contains, distinguishedName__contains, domain__contains, objectGuid__contains, objectSid__contains, servicePrincipalName__contains, forest__contains, resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, givenName__contains, onPremisesDistinguishedName__contains, onPremisesDomainName__contains, onPremisesSamAccountName__contains, onPremisesUserPrincipalName__contains, otherMails__contains, proxyAddresses__contains, onPremisesSecurityIdentifier__contains, mail__contains, userPrincipalName__contains, imageName__contains): Search field key +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `text` [query, string] **required**: Search term text +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `limit` [query, integer]: Limit number of returned items +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -145,125 +145,125 @@ Get identity filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `userPrincipalName` [query, array] — The User Principal Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `forest` [query, array] — The Forest Name -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `accountIds` [query, array] — List of Account IDs to filter by -- `onPremisesDistinguishedName__contains` [query, array] — -- `domain__contains` [query, array] — The AD Domain Name -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `cn` [query, array] — The LDAP Common Name -- `cn__contains` [query, array] — The LDAP Common Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `forest__nin` [query, array] — The Forest Name (not in) -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `objectSid__contains` [query, array] — The Object SID -- `groupType__nin` [query, array] — The Group Type (not in) -- `userAccountControl` [query, array] — The User Account Control -- `names` [query, array] — Name -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `objectGuid__contains` [query, array] — The Object GUID -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `lockOutTime__between` [query, string] — Lock-out Time -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `serviceAccount` [query, array] — The Service Account -- `infectionStatus` [query, array] — The status alerts of the asset -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `otherMails__contains` [query, array] — Other Mails -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `badPasswordTime__between` [query, string] — Bad Password Time -- `last_modified_time__between` [query, string] — Lock-out Time -- `displayName__contains` [query, array] — The Display Name -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `domain__nin` [query, array] — The AD Domain Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `domain` [query, array] — The AD Domain Name -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `userPrincipalName` [query, array]: The User Principal Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `forest` [query, array]: The Forest Name +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `accountIds` [query, array]: List of Account IDs to filter by +- `onPremisesDistinguishedName__contains` [query, array]: +- `domain__contains` [query, array]: The AD Domain Name +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `cn` [query, array]: The LDAP Common Name +- `cn__contains` [query, array]: The LDAP Common Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `forest__nin` [query, array]: The Forest Name (not in) +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `objectSid__contains` [query, array]: The Object SID +- `groupType__nin` [query, array]: The Group Type (not in) +- `userAccountControl` [query, array]: The User Account Control +- `names` [query, array]: Name +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `objectGuid__contains` [query, array]: The Object GUID +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `lockOutTime__between` [query, string]: Lock-out Time +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `serviceAccount` [query, array]: The Service Account +- `infectionStatus` [query, array]: The status alerts of the asset +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `otherMails__contains` [query, array]: Other Mails +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `badPasswordTime__between` [query, string]: Bad Password Time +- `last_modified_time__between` [query, string]: Lock-out Time +- `displayName__contains` [query, array]: The Display Name +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `domain__nin` [query, array]: The AD Domain Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `domain` [query, array]: The AD Domain Name +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network.md index 06611ea..8f5616a 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network.md @@ -11,85 +11,85 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1UpdatedAt, cnsIsDefault, cloudProviderResourceGroup, cnsHasEgressPermissionsRules, region, dnsStatus, cloudProviderOrganization, s1ManagementId, cnsDefaultActionType, cloudProviderOrganizationUnit, cnsStatus, cnsHasIpPermissionsEgressRules, s1SiteId, cnsDefault, s1SiteName, cnsPublicIpOnLaunch, cnsSkuType, cnsName, cnsAllowed, category, s1GroupId, cnsHasPublicSourceRange, cloudProviderAccountName, cnsIsEbsOrigin, cnsHasIpPermissionsIngressRules, s1OnboardedAccountId, cloudResourceId, assetContactEmail, cnsDirection, s1ScopeType, assetEnvironment, dnsName, s1AccountId, id, s1AccountName, s1ScopeLevel, cnsHasIngressPermissionsRules, cloudProviderUrlString, cnsSslPolicyOutdated, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, cnsSslPolicy, cnsProtocol, name, cnsElbScheme, dnsType, assetCriticality, s1ScopePath, cnsType, cloudProviderSubscriptionId, s1OnboardedGroupName, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsState, cnsIsMainRouteTable, infectionStatus, cnsRedirectProtocol, cnsEnabled, s1OnboardedSiteId, cnsProfile, dnsValue, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, cnsIsPrivate, deviceReview, cloudResourceUid, s1OnboardedScopePath, cnsSecurityPolicyExists, cnsIsS3Origin, assetStatus, s1OnboardedGroupId) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1UpdatedAt, cnsIsDefault, cloudProviderResourceGroup, cnsHasEgressPermissionsRules, region, dnsStatus, cloudProviderOrganization, s1ManagementId, cnsDefaultActionType, cloudProviderOrganizationUnit, cnsStatus, cnsHasIpPermissionsEgressRules, s1SiteId, cnsDefault, s1SiteName, cnsPublicIpOnLaunch, cnsSkuType, cnsName, cnsAllowed, category, s1GroupId, cnsHasPublicSourceRange, cloudProviderAccountName, cnsIsEbsOrigin, cnsHasIpPermissionsIngressRules, s1OnboardedAccountId, cloudResourceId, assetContactEmail, cnsDirection, s1ScopeType, assetEnvironment, dnsName, s1AccountId, id, s1AccountName, s1ScopeLevel, cnsHasIngressPermissionsRules, cloudProviderUrlString, cnsSslPolicyOutdated, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, cnsSslPolicy, cnsProtocol, name, cnsElbScheme, dnsType, assetCriticality, s1ScopePath, cnsType, cloudProviderSubscriptionId, s1OnboardedGroupName, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsState, cnsIsMainRouteTable, infectionStatus, cnsRedirectProtocol, cnsEnabled, s1OnboardedSiteId, cnsProfile, dnsValue, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, cnsIsPrivate, deviceReview, cloudResourceUid, s1OnboardedScopePath, cnsSecurityPolicyExists, cnsIsS3Origin, assetStatus, s1OnboardedGroupId): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -102,10 +102,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.network.schemas_NetworkViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.network.schemas_NetworkViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,79 +118,79 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.network.schemas_NetworkActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.network.schemas_NetworkActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -203,79 +203,79 @@ Get cloud inventory network available-actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -288,85 +288,85 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, s1UpdatedAt, cnsIsDefault, cloudProviderResourceGroup, cnsHasEgressPermissionsRules, region, dnsStatus, cloudProviderOrganization, s1ManagementId, cnsDefaultActionType, cloudProviderOrganizationUnit, cnsStatus, cnsHasIpPermissionsEgressRules, s1SiteId, cnsDefault, s1SiteName, cnsPublicIpOnLaunch, cnsSkuType, cnsName, cnsAllowed, category, s1GroupId, cnsHasPublicSourceRange, cloudProviderAccountName, cnsIsEbsOrigin, cnsHasIpPermissionsIngressRules, s1OnboardedAccountId, cloudResourceId, assetContactEmail, cnsDirection, s1ScopeType, assetEnvironment, dnsName, s1AccountId, id, s1AccountName, s1ScopeLevel, cnsHasIngressPermissionsRules, cloudProviderUrlString, cnsSslPolicyOutdated, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, cnsSslPolicy, cnsProtocol, name, cnsElbScheme, dnsType, assetCriticality, s1ScopePath, cnsType, cloudProviderSubscriptionId, s1OnboardedGroupName, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsState, cnsIsMainRouteTable, infectionStatus, cnsRedirectProtocol, cnsEnabled, s1OnboardedSiteId, cnsProfile, dnsValue, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, cnsIsPrivate, deviceReview, cloudResourceUid, s1OnboardedScopePath, cnsSecurityPolicyExists, cnsIsS3Origin, assetStatus, s1OnboardedGroupId) — The column to sort the results by. -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, s1UpdatedAt, cnsIsDefault, cloudProviderResourceGroup, cnsHasEgressPermissionsRules, region, dnsStatus, cloudProviderOrganization, s1ManagementId, cnsDefaultActionType, cloudProviderOrganizationUnit, cnsStatus, cnsHasIpPermissionsEgressRules, s1SiteId, cnsDefault, s1SiteName, cnsPublicIpOnLaunch, cnsSkuType, cnsName, cnsAllowed, category, s1GroupId, cnsHasPublicSourceRange, cloudProviderAccountName, cnsIsEbsOrigin, cnsHasIpPermissionsIngressRules, s1OnboardedAccountId, cloudResourceId, assetContactEmail, cnsDirection, s1ScopeType, assetEnvironment, dnsName, s1AccountId, id, s1AccountName, s1ScopeLevel, cnsHasIngressPermissionsRules, cloudProviderUrlString, cnsSslPolicyOutdated, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, cnsSslPolicy, cnsProtocol, name, cnsElbScheme, dnsType, assetCriticality, s1ScopePath, cnsType, cloudProviderSubscriptionId, s1OnboardedGroupName, cloudProviderOrganizationUnitPath, s1OnboardedSiteName, s1ScopeId, resourceType, cnsState, cnsIsMainRouteTable, infectionStatus, cnsRedirectProtocol, cnsEnabled, s1OnboardedSiteId, cnsProfile, dnsValue, cnsLoggingEnabled, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, subCategory, s1OnboardedScopeId, cnsIsPrivate, deviceReview, cloudResourceUid, s1OnboardedScopePath, cnsSecurityPolicyExists, cnsIsS3Origin, assetStatus, s1OnboardedGroupId): The column to sort the results by. +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface.md index 5b1c4d3..413ef9a 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface.md @@ -11,113 +11,113 @@ Get inventory of Network Discovery surface assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, osVersion, s1ScopePath, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, osVersion, s1ScopePath, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -130,107 +130,107 @@ Perform action on selected assets Required permissions: `XDR Inventory.edit, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.surfaces.network_discovery.schemas_NetworkDiscoveryActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.surfaces.network_discovery.schemas_NetworkDiscoveryActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -243,107 +243,107 @@ Get inventory network discovery available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -356,112 +356,112 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, memory, detectedFromSite, previousOsType, previousOsVersion, eppUnsupportedUnknown, s1OnboardedAccountName, category, s1UpdatedAt, s1GroupId, s1OnboardedScopeLevel, subCategory, s1OnboardedScopeId, deviceReview, memoryReadable, s1ManagementId, ipAddress, name, assetCriticality, osVersion, s1ScopePath, s1OnboardedAccountId, architecture, s1OnboardedScopePath, s1OnboardedGroupName, os, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, manufacturer, s1ScopeType, assetEnvironment, previousDeviceFunction, resourceType, networkName, osFamily, s1OnboardedGroupId, s1SiteId, s1AccountId, firstSeenDt, coreCount, id, domain, s1SiteName, s1AccountName, infectionStatus, lastUpdateDt, s1ScopeLevel, s1OnboardedSiteId, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, memory, detectedFromSite, previousOsType, previousOsVersion, eppUnsupportedUnknown, s1OnboardedAccountName, category, s1UpdatedAt, s1GroupId, s1OnboardedScopeLevel, subCategory, s1OnboardedScopeId, deviceReview, memoryReadable, s1ManagementId, ipAddress, name, assetCriticality, osVersion, s1ScopePath, s1OnboardedAccountId, architecture, s1OnboardedScopePath, s1OnboardedGroupName, os, s1OnboardedSiteName, s1ScopeId, assetStatus, assetContactEmail, manufacturer, s1ScopeType, assetEnvironment, previousDeviceFunction, resourceType, networkName, osFamily, s1OnboardedGroupId, s1SiteId, s1AccountId, firstSeenDt, coreCount, id, domain, s1SiteName, s1AccountName, infectionStatus, lastUpdateDt, s1ScopeLevel, s1OnboardedSiteId, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface_Filters.md index 72702e6..a345594 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Discovery_Surface_Filters.md @@ -11,109 +11,109 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains) — Search field key -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `text` [query, string] **required** — Search term text -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `limit` [query, integer] — Limit number of returned items -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains): Search field key +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `text` [query, string] **required**: Search term text +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `limit` [query, integer]: Limit number of returned items +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -126,106 +126,106 @@ Get Network Discovery filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `tagsKey__exists` [query, array] — Tag Keys exists -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `imageName__contains` [query, array] — Free-text filter by the image name -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `detectedFromSite` [query, array] — The site from which the device was detected -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `osNameVersion__contains` [query, array] — The OS names and versions -- `domain__contains` [query, array] — The domain -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `id__in` [query, array] — The ID -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `names` [query, array] — Name -- `macAddresses__contains` [query, array] — The MAC addresses -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `manufacturer` [query, array] — The manufacturer of the device -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `hostnames__contains` [query, array] — The hostnames -- `architecture` [query, array] — The architecture of the device -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `domain` [query, array] — The domain of the device -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `tagsKey__exists` [query, array]: Tag Keys exists +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `imageName__contains` [query, array]: Free-text filter by the image name +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `detectedFromSite` [query, array]: The site from which the device was detected +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `osNameVersion__contains` [query, array]: The OS names and versions +- `domain__contains` [query, array]: The domain +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `id__in` [query, array]: The ID +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `names` [query, array]: Name +- `macAddresses__contains` [query, array]: The MAC addresses +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `manufacturer` [query, array]: The manufacturer of the device +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `hostnames__contains` [query, array]: The hostnames +- `architecture` [query, array]: The architecture of the device +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `domain` [query, array]: The domain of the device +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Filters.md index 7c71838..939f80f 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Network_Filters.md @@ -11,81 +11,81 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `text` [query, string] **required** — Search term text -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `limit` [query, integer] — Limit number of returned items -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains) — Search field key -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `text` [query, string] **required**: Search term text +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `limit` [query, integer]: Limit number of returned items +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `key` [query, string] **required** (enum: resourceType__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, imageName__contains): Search field key +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,78 +98,78 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `tagsKeyValue` [query, array] — Tags -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `deviceReview__nin` [query, array] — The asset review (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `deviceReview` [query, array] — The asset review -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `allTagsKey` [query, array] — User and cloud tag keys -- `region` [query, array] — The region -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `names` [query, array] — Name -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `id__contains` [query, array] — The ID -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `siteIds` [query, array] — List of Site IDs to filter by -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `surfaces` [query, array] — The Surface that each asset belongs to -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `id__in` [query, array] — The ID -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `tagsKeyValue` [query, array]: Tags +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `deviceReview__nin` [query, array]: The asset review (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `deviceReview` [query, array]: The asset review +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `allTagsKey` [query, array]: User and cloud tag keys +- `region` [query, array]: The region +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `names` [query, array]: Name +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `id__contains` [query, array]: The ID +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `siteIds` [query, array]: List of Site IDs to filter by +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `surfaces` [query, array]: The Surface that each asset belongs to +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `id__in` [query, array]: The ID +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Notes.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Notes.md index fb32384..6f558a8 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Notes.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Notes.md @@ -11,10 +11,10 @@ Delete note Required permissions: `XDR Inventory.delete` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.notes.schemas_InventoryNotesPayloadSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.notes.schemas_InventoryNotesPayloadSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -27,9 +27,9 @@ create or update note Required permissions: `XDR Inventory.create` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.notes.schemas_InventoryNotesPayloadSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.notes.schemas_InventoryNotesPayloadSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server.md index 5185858..971ac02 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server.md @@ -11,242 +11,242 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cnsVpcAttributeExists, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, state, cnsEnableOsLoginVm, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, k8sCwsEnabled, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, cnsName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, lastUpdateDt, previousDeviceFunction, cnsIsEncrypted, osFamily, cnsSshKeyName, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, k8sCluster, agentPendingUninstall, assetCriticality, s1ScopePath, cnsType, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, identityAdMachineDistinguishedName, k8sNode, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, cnsIpAddress, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, isRogue, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cnsStateCode, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `manufacturer__contains` [query, array] — The manufacturer -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `k8sNode` [query, array] — The Kubernetes Node -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `networkSecurityGroups__contains` [query, array] — The network security group -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `imageId__contains` [query, array] — The image ID -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cnsVpcAttributeExists, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, state, cnsEnableOsLoginVm, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, k8sCwsEnabled, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, cnsName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, lastUpdateDt, previousDeviceFunction, cnsIsEncrypted, osFamily, cnsSshKeyName, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, k8sCluster, agentPendingUninstall, assetCriticality, s1ScopePath, cnsType, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, identityAdMachineDistinguishedName, k8sNode, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, cnsIpAddress, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, isRogue, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cnsStateCode, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `manufacturer__contains` [query, array]: The manufacturer +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `k8sNode` [query, array]: The Kubernetes Node +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `networkSecurityGroups__contains` [query, array]: The network security group +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `imageId__contains` [query, array]: The image ID +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -259,10 +259,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.server.schemas_ServerViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.server.schemas_ServerViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -275,236 +275,236 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `manufacturer__contains` [query, array] — The manufacturer -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `k8sNode` [query, array] — The Kubernetes Node -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `networkSecurityGroups__contains` [query, array] — The network security group -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `imageId__contains` [query, array] — The image ID -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.server.schemas_ServerActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `manufacturer__contains` [query, array]: The manufacturer +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `k8sNode` [query, array]: The Kubernetes Node +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `networkSecurityGroups__contains` [query, array]: The network security group +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `imageId__contains` [query, array]: The image ID +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.server.schemas_ServerActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -517,236 +517,236 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `manufacturer__contains` [query, array] — The manufacturer -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `k8sNode` [query, array] — The Kubernetes Node -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `networkSecurityGroups__contains` [query, array] — The network security group -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `imageId__contains` [query, array] — The image ID -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `manufacturer__contains` [query, array]: The manufacturer +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `k8sNode` [query, array]: The Kubernetes Node +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `networkSecurityGroups__contains` [query, array]: The network security group +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `imageId__contains` [query, array]: The image ID +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -759,242 +759,242 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cnsVpcAttributeExists, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, state, cnsEnableOsLoginVm, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, k8sCwsEnabled, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, cnsName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, lastUpdateDt, previousDeviceFunction, cnsIsEncrypted, osFamily, cnsSshKeyName, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, k8sCluster, agentPendingUninstall, assetCriticality, s1ScopePath, cnsType, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, identityAdMachineDistinguishedName, k8sNode, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, cnsIpAddress, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, isRogue, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cnsStateCode, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `manufacturer__contains` [query, array] — The manufacturer -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `k8sNode` [query, array] — The Kubernetes Node -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `networkSecurityGroups__contains` [query, array] — The network security group -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `imageId__contains` [query, array] — The image ID -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cnsVpcAttributeExists, cloudProviderResourceGroup, region, cloudProviderOrganization, memoryReadable, s1ManagementId, state, cnsEnableOsLoginVm, imageId, isAdConnector, os, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, k8sCwsEnabled, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, cnsName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, instanceType, lastActiveDt, s1OnboardedAccountId, k8sPodCidr, cloudResourceId, k8sResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, lastUpdateDt, previousDeviceFunction, cnsIsEncrypted, osFamily, cnsSshKeyName, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, instanceRole, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, k8sHelperAgentDeployed, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, k8sCluster, agentPendingUninstall, assetCriticality, s1ScopePath, cnsType, agentAntiTamperingStatus, osVersion, cloudProviderSubscriptionId, s1OnboardedGroupName, identityAdMachineDistinguishedName, k8sNode, k8sClusterId, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, k8sVersion, infectionStatus, cnsIpAddress, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, k8sNamespace, k8sType, cloudProviderProjectId, cnsIsPublic, cloudProviderAccountId, isRogue, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cnsStateCode, k8sCnsEnabled, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, instanceId, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, virtualNetworkId, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `manufacturer__contains` [query, array]: The manufacturer +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `k8sNode` [query, array]: The Kubernetes Node +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `networkSecurityGroups__contains` [query, array]: The network security group +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `imageId__contains` [query, array]: The image ID +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server_Filters.md index 629b319..ed8445c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Server_Filters.md @@ -11,238 +11,238 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `key` [query, string] **required** (enum: resourceType__contains, state__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, imageId__contains, instanceId__contains, instanceType__contains, instanceRole__contains, subnetId__contains, virtualNetworkId__contains, networkSecurityGroups__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, k8sCluster__contains, k8sNode__contains, k8sClusterId__contains, k8sNamespace__contains, k8sResourceId__contains, k8sRunningOnNodes__contains, k8sAnnotationsUnifiedKey__contains, k8sAnnotationsUnifiedKeyValue__contains, k8sLabelsUnifiedKey__contains, k8sLabelsUnifiedKeyValue__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains) — Search field key -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `text` [query, string] **required** — Search term text -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `manufacturer__contains` [query, array] — The manufacturer -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `k8sNode` [query, array] — The Kubernetes Node -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `networkSecurityGroups__contains` [query, array] — The network security group -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `imageId__contains` [query, array] — The image ID -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `key` [query, string] **required** (enum: resourceType__contains, state__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, imageId__contains, instanceId__contains, instanceType__contains, instanceRole__contains, subnetId__contains, virtualNetworkId__contains, networkSecurityGroups__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, k8sCluster__contains, k8sNode__contains, k8sClusterId__contains, k8sNamespace__contains, k8sResourceId__contains, k8sRunningOnNodes__contains, k8sAnnotationsUnifiedKey__contains, k8sAnnotationsUnifiedKeyValue__contains, k8sLabelsUnifiedKey__contains, k8sLabelsUnifiedKeyValue__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains): Search field key +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `text` [query, string] **required**: Search term text +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `manufacturer__contains` [query, array]: The manufacturer +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `k8sNode` [query, array]: The Kubernetes Node +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `networkSecurityGroups__contains` [query, array]: The network security group +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `imageId__contains` [query, array]: The image ID +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -255,235 +255,235 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `state__nin` [query, array] — The state of the instance (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `instanceRole__contains` [query, array] — The instance role -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `k8sNamespace__contains` [query, array] — Namespace Name -- `manufacturer__contains` [query, array] — The manufacturer -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `macAddresses__contains` [query, array] — The MAC addresses -- `instanceType__contains` [query, array] — The instance type -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `k8sNode` [query, array] — The Kubernetes Node -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `virtualNetworkId__contains` [query, array] — The virtual network ID -- `instanceId__contains` [query, array] — The instance ID -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `k8sVersion` [query, array] — The Kubernetes Version -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `networkSecurityGroups__contains` [query, array] — The network security group -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `imageId__contains` [query, array] — The image ID -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `subnetId__contains` [query, array] — The subnet ID -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `state__nin` [query, array]: The state of the instance (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `instanceRole__contains` [query, array]: The instance role +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `k8sNamespace__contains` [query, array]: Namespace Name +- `manufacturer__contains` [query, array]: The manufacturer +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `macAddresses__contains` [query, array]: The MAC addresses +- `instanceType__contains` [query, array]: The instance type +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `k8sNode` [query, array]: The Kubernetes Node +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `virtualNetworkId__contains` [query, array]: The virtual network ID +- `instanceId__contains` [query, array]: The instance ID +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `k8sVersion` [query, array]: The Kubernetes Version +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `networkSecurityGroups__contains` [query, array]: The network security group +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `imageId__contains` [query, array]: The image ID +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `subnetId__contains` [query, array]: The subnet ID +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage.md index 7c948b8..53126bb 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage.md @@ -11,108 +11,108 @@ Get assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -125,10 +125,10 @@ POST API to get Assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.storage.schemas_StorageViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.storage.schemas_StorageViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -141,104 +141,104 @@ Perform action on selected assets Required permissions: `XDR Inventory.create, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.storage.schemas_StorageActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.storage.schemas_StorageActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -251,104 +251,104 @@ Get available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -361,108 +361,108 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage_Filters.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage_Filters.md index 87c1c9f..0a3c972 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage_Filters.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Storage_Filters.md @@ -11,106 +11,106 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `key` [query, string] **required** (enum: resourceType__contains, scanStatus__contains, threatDetectionStatus__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, dataClassificationStatus__contains, dataTypes__contains, imageName__contains) — Search field key -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `text` [query, string] **required** — Search term text -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `key` [query, string] **required** (enum: resourceType__contains, scanStatus__contains, threatDetectionStatus__contains, cloudProviderOrganization__contains, cloudProviderOrganizationUnit__contains, cloudProviderProjectId__contains, cloudProviderSubscriptionId__contains, cloudProviderAccountName__contains, cloudProviderAccountId__contains, cloudTagsKey__contains, cloudTagsKeyValue__contains, cloudResourceId__contains, region__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, dataClassificationStatus__contains, dataTypes__contains, imageName__contains): Search field key +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `text` [query, string] **required**: Search term text +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -123,103 +123,103 @@ Get filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `data_types__contains` [query, array] — Data types contains -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `region` [query, array] — The region -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `groupIds` [query, array] — List of Group IDs to filter by -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `data_classification_status__contains` [query, array] — Data classification status -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `data_classification_scan_status__contains` [query, array] — Data classification scan status -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `objectCount` [query, array] — The number of objects in the bucket -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `dataTypes` [query, array] — Data Types -- `encryptionType` [query, array] — The encryption type -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `tagsKeyValue` [query, array] — Tags -- `isPublic` [query, array] — Whether there is public access or not -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `dataClassificationScanStatus` [query, array] — Data classification scan status to exclude -- `isPublic__nin` [query, array] — Whether there is public access or not (not in) -- `dataTypes__nin` [query, array] — Data Types (not in) -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `connectivityStatus` [query, array] — Connectivity -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `dataClassificationPolicyStatus` [query, array] — Data Classification Policy -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `dataClassificationStatus` [query, array] — Data Classification Status -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `scannerStatus` [query, array] — Scanner -- `assetStatus` [query, array] — The status of the asset -- `versioningEnabled` [query, array] — Whether there is versioning enabled or not -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `dataClassificationStatus__nin` [query, array] — Data Classification Status (not in) -- `scanStatus` [query, array] — The CDS malware scan status -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `data_types__contains` [query, array]: Data types contains +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `region` [query, array]: The region +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `groupIds` [query, array]: List of Group IDs to filter by +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `data_classification_status__contains` [query, array]: Data classification status +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `data_classification_scan_status__contains` [query, array]: Data classification scan status +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `objectCount` [query, array]: The number of objects in the bucket +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `dataTypes` [query, array]: Data Types +- `encryptionType` [query, array]: The encryption type +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `tagsKeyValue` [query, array]: Tags +- `isPublic` [query, array]: Whether there is public access or not +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `dataClassificationScanStatus` [query, array]: Data classification scan status to exclude +- `isPublic__nin` [query, array]: Whether there is public access or not (not in) +- `dataTypes__nin` [query, array]: Data Types (not in) +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `connectivityStatus` [query, array]: Connectivity +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `dataClassificationPolicyStatus` [query, array]: Data Classification Policy +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `dataClassificationStatus` [query, array]: Data Classification Status +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `scannerStatus` [query, array]: Scanner +- `assetStatus` [query, array]: The status of the asset +- `versioningEnabled` [query, array]: Whether there is versioning enabled or not +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `dataClassificationStatus__nin` [query, array]: Data Classification Status (not in) +- `scanStatus` [query, array]: The CDS malware scan status +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Tags.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Tags.md index ec918dc..b95e038 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Tags.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Tags.md @@ -11,95 +11,95 @@ Get tags info for all assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__exists` [query, array] — Tag Keys exists -- `region` [query, array] — The region -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `tagsKey` [query, array] — Tag Keys -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `groupIds` [query, array] — List of Group IDs to filter by -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `region__nin` [query, array] — The region (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, s1ManagementId, isAdConnector, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, cloudResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, identityAdMachineDistinguishedName, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, lastUpdateDt, agentDiskEncryption) — The column to sort the results by. -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `category` [query, array] — The category that each resource belongs to -- `deviceReview__nin` [query, array] — The asset review (not in) -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `id__in` [query, array] — The ID -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `tagsKeyValue` [query, array] — Tags -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `agentOperationalState` [query, array] — The agent operational state -- `names` [query, array] — Name -- `name__contains` [query, array] — The name -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `cloudTagsKey` [query, array] — The cloud tags key -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `infectionStatus` [query, array] — The status alerts of the asset -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `assetStatus` [query, array] — The status of the asset -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.unified_actions.schemas_AffectedEntitiesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__exists` [query, array]: Tag Keys exists +- `region` [query, array]: The region +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `tagsKey` [query, array]: Tag Keys +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `groupIds` [query, array]: List of Group IDs to filter by +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `region__nin` [query, array]: The region (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, cloudProviderResourceGroup, region, cloudProviderOrganization, s1ManagementId, isAdConnector, cloudProviderOrganizationUnit, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, cloudProviderAccountName, agentLastLoggedInUser, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, cloudResourceId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, cloudProviderUrlString, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, createdTime, isDcServer, agentOperationalState, agentNetworkStatus, name, agentVssServiceStatus, agentPendingUninstall, agentAntiTamperingStatus, assetCriticality, s1ScopePath, s1OnboardedGroupName, cloudProviderSubscriptionId, identityAdMachineDistinguishedName, cloudProviderOrganizationUnitPath, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, cloudProviderProjectId, cloudProviderAccountId, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, cloudResourceUid, s1OnboardedScopePath, agentConsoleMigrationStatus, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, lastUpdateDt, agentDiskEncryption): The column to sort the results by. +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `category` [query, array]: The category that each resource belongs to +- `deviceReview__nin` [query, array]: The asset review (not in) +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `id__in` [query, array]: The ID +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `tagsKeyValue` [query, array]: Tags +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `agentOperationalState` [query, array]: The agent operational state +- `names` [query, array]: Name +- `name__contains` [query, array]: The name +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `cloudTagsKey` [query, array]: The cloud tags key +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `infectionStatus` [query, array]: The status alerts of the asset +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `assetStatus` [query, array]: The status of the asset +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.unified_actions.schemas_AffectedEntitiesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -112,23 +112,23 @@ Fetch all tags removing duplicates Required permissions: `XDR Inventory.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `includeParent` [query, boolean] — Include parent -- `groupIds` [query, array] — List of Group IDs to filter by -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `accountIds` [query, array] — List of Account IDs to filter by -- `query` [query, string] — Query -- `source` [query, array] — The source that tag belongs to -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `readOnly` [query, boolean] — Read only -- `category` [query, array] — The category that each resource belongs to -- `key__contains` [query, array] — Free-text filter by tag key -- `value__contains` [query, array] — Free-text filter by tag value -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `siteIds` [query, array] — List of Site IDs to filter by -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, key, value, source, readOnly, reserved) — The column to sort the results by. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `includeParent` [query, boolean]: Include parent +- `groupIds` [query, array]: List of Group IDs to filter by +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `accountIds` [query, array]: List of Account IDs to filter by +- `query` [query, string]: Query +- `source` [query, array]: The source that tag belongs to +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `readOnly` [query, boolean]: Read only +- `category` [query, array]: The category that each resource belongs to +- `key__contains` [query, array]: Free-text filter by tag key +- `value__contains` [query, array]: Free-text filter by tag value +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `siteIds` [query, array]: List of Site IDs to filter by +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, key, value, source, readOnly, reserved): The column to sort the results by. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -141,10 +141,10 @@ Get asset count for given tag ids Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.tags.schemas_InventoryTagsCountPayloadSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.tags.schemas_InventoryTagsCountPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -157,15 +157,15 @@ Get asset tags filters count Required permissions: `XDR Inventory.view` Parameters: -- `includeParent` [query, boolean] — Include parent -- `groupIds` [query, array] — List of Group IDs to filter by -- `accountIds` [query, array] — List of Account IDs to filter by -- `query` [query, string] — Query -- `source` [query, array] — The source that tag belongs to -- `readOnly` [query, boolean] — Read only -- `category` [query, array] — The category that each resource belongs to -- `key__contains` [query, array] — Free-text filter by tag key -- `value__contains` [query, array] — Free-text filter by tag value -- `siteIds` [query, array] — List of Site IDs to filter by +- `includeParent` [query, boolean]: Include parent +- `groupIds` [query, array]: List of Group IDs to filter by +- `accountIds` [query, array]: List of Account IDs to filter by +- `query` [query, string]: Query +- `source` [query, array]: The source that tag belongs to +- `readOnly` [query, boolean]: Read only +- `category` [query, array]: The category that each resource belongs to +- `key__contains` [query, array]: Free-text filter by tag key +- `value__contains` [query, array]: Free-text filter by tag value +- `siteIds` [query, array]: List of Site IDs to filter by Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Unified_Actions.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Unified_Actions.md index 8553766..49ceb31 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Unified_Actions.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Unified_Actions.md @@ -11,307 +11,307 @@ Loads all agent ids for the unified actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osVersion` [query, array] — The operating system version of the device -- `state__nin` [query, array] — The state of the instance (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `userPrincipalName` [query, array] — The User Principal Name -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `entraidGroupType` [query, array] — Entra ID Group Type -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `classification` [query, array] — Classification -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `onPremisesLastSyncTime__between` [query, array] — On Premises Last Sync Time -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `onPremisesDomainName` [query, array] — On Premises Domain Name -- `forest` [query, array] — The Forest Name -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `agentInstallerType` [query, array] — The agent installer type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `onPremisesSecurityIdentifier` [query, array] — On Premises Security Identifier -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `securityEnabled` [query, array] — Security Enabled -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `onPremisesSyncEnabled` [query, array] — On Premises Sync Enabled -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `onPremisesDistinguishedName__contains` [query, array] — -- `expirationTime__between` [query, array] — Expiration Time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `names` [query, array] — Name -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `onPremisesDistinguishedName` [query, array] — On Premises Distinguished Name -- `cn` [query, array] — The LDAP Common Name -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `cn__contains` [query, array] — The LDAP Common Name -- `onPremisesUserPrincipalName` [query, array] — On Premises User Principal Name -- `k8sNamespace__contains` [query, array] — Namespace Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `udpPorts` [query, array] — The UDP ports -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `objectCount` [query, array] — The number of objects in the bucket -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `entraidGroupType__nin` [query, array] — Entra ID Group Type (not in) -- `givenName` [query, array] — Given Name -- `forest__nin` [query, array] — The Forest Name (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `encryptionType` [query, array] — The encryption type -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `proxyAddresses` [query, array] — Proxy Addresses -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `objectSid__contains` [query, array] — The Object SID -- `jobTitle` [query, array] — Job Title -- `groupType__nin` [query, array] — The Group Type (not in) -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `userAccountControl` [query, array] — The User Account Control -- `agentNetworkStatus` [query, array] — The agent network status -- `ageGroup` [query, array] — Age Group -- `macAddresses__contains` [query, array] — The MAC addresses -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `objectGuid__contains` [query, array] — The Object GUID -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `lockOutTime__between` [query, string] — Lock-out Time -- `k8sNode` [query, array] — The Kubernetes Node -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `deletedTime__between` [query, array] — Deleted Time -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `serviceAccount` [query, array] — The Service Account -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `onPremisesSamAccountName` [query, array] — On Premises SAM Account Name -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `uniqueName` [query, array] — Unique Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `onPremisesImmutableId` [query, array] — On Premises Immutable Id -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `department` [query, array] — Department -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `otherMails__contains` [query, array] — Other Mails -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `otherMails` [query, array] — Other Mails -- `visibility` [query, array] — Visibility -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `badPasswordTime__between` [query, string] — Bad Password Time -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `displayName__contains` [query, array] — The Display Name -- `last_modified_time__between` [query, string] — Lock-out Time -- `employeeType` [query, array] — Employee Type -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `surname` [query, array] — Surname -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `scanStatus` [query, array] — The CDS malware scan status -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.unified_actions.schemas_AffectedEntitiesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osVersion` [query, array]: The operating system version of the device +- `state__nin` [query, array]: The state of the instance (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `userPrincipalName` [query, array]: The User Principal Name +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `entraidGroupType` [query, array]: Entra ID Group Type +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `classification` [query, array]: Classification +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `onPremisesLastSyncTime__between` [query, array]: On Premises Last Sync Time +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `onPremisesDomainName` [query, array]: On Premises Domain Name +- `forest` [query, array]: The Forest Name +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `agentInstallerType` [query, array]: The agent installer type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `onPremisesSecurityIdentifier` [query, array]: On Premises Security Identifier +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `securityEnabled` [query, array]: Security Enabled +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `onPremisesSyncEnabled` [query, array]: On Premises Sync Enabled +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `onPremisesDistinguishedName__contains` [query, array]: +- `expirationTime__between` [query, array]: Expiration Time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `names` [query, array]: Name +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `onPremisesDistinguishedName` [query, array]: On Premises Distinguished Name +- `cn` [query, array]: The LDAP Common Name +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `cn__contains` [query, array]: The LDAP Common Name +- `onPremisesUserPrincipalName` [query, array]: On Premises User Principal Name +- `k8sNamespace__contains` [query, array]: Namespace Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `udpPorts` [query, array]: The UDP ports +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `objectCount` [query, array]: The number of objects in the bucket +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `entraidGroupType__nin` [query, array]: Entra ID Group Type (not in) +- `givenName` [query, array]: Given Name +- `forest__nin` [query, array]: The Forest Name (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `encryptionType` [query, array]: The encryption type +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `proxyAddresses` [query, array]: Proxy Addresses +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `objectSid__contains` [query, array]: The Object SID +- `jobTitle` [query, array]: Job Title +- `groupType__nin` [query, array]: The Group Type (not in) +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `userAccountControl` [query, array]: The User Account Control +- `agentNetworkStatus` [query, array]: The agent network status +- `ageGroup` [query, array]: Age Group +- `macAddresses__contains` [query, array]: The MAC addresses +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `objectGuid__contains` [query, array]: The Object GUID +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `lockOutTime__between` [query, string]: Lock-out Time +- `k8sNode` [query, array]: The Kubernetes Node +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `deletedTime__between` [query, array]: Deleted Time +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `serviceAccount` [query, array]: The Service Account +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `onPremisesSamAccountName` [query, array]: On Premises SAM Account Name +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `uniqueName` [query, array]: Unique Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `onPremisesImmutableId` [query, array]: On Premises Immutable Id +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `department` [query, array]: Department +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `otherMails__contains` [query, array]: Other Mails +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `otherMails` [query, array]: Other Mails +- `visibility` [query, array]: Visibility +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `badPasswordTime__between` [query, string]: Bad Password Time +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `displayName__contains` [query, array]: The Display Name +- `last_modified_time__between` [query, string]: Lock-out Time +- `employeeType` [query, array]: Employee Type +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `surname` [query, array]: Surname +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `scanStatus` [query, array]: The CDS malware scan status +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.unified_actions.schemas_AffectedEntitiesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -324,307 +324,307 @@ Get Available Actions by Asset/Entity Type Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osVersion` [query, array] — The operating system version of the device -- `state__nin` [query, array] — The state of the instance (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `userPrincipalName` [query, array] — The User Principal Name -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `entraidGroupType` [query, array] — Entra ID Group Type -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `classification` [query, array] — Classification -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `onPremisesLastSyncTime__between` [query, array] — On Premises Last Sync Time -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `onPremisesDomainName` [query, array] — On Premises Domain Name -- `forest` [query, array] — The Forest Name -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `agentInstallerType` [query, array] — The agent installer type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `onPremisesSecurityIdentifier` [query, array] — On Premises Security Identifier -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `securityEnabled` [query, array] — Security Enabled -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `onPremisesSyncEnabled` [query, array] — On Premises Sync Enabled -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `onPremisesDistinguishedName__contains` [query, array] — -- `expirationTime__between` [query, array] — Expiration Time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `names` [query, array] — Name -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `onPremisesDistinguishedName` [query, array] — On Premises Distinguished Name -- `cn` [query, array] — The LDAP Common Name -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `cn__contains` [query, array] — The LDAP Common Name -- `onPremisesUserPrincipalName` [query, array] — On Premises User Principal Name -- `k8sNamespace__contains` [query, array] — Namespace Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `udpPorts` [query, array] — The UDP ports -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `objectCount` [query, array] — The number of objects in the bucket -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `entraidGroupType__nin` [query, array] — Entra ID Group Type (not in) -- `givenName` [query, array] — Given Name -- `forest__nin` [query, array] — The Forest Name (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `encryptionType` [query, array] — The encryption type -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `proxyAddresses` [query, array] — Proxy Addresses -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `objectSid__contains` [query, array] — The Object SID -- `jobTitle` [query, array] — Job Title -- `groupType__nin` [query, array] — The Group Type (not in) -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `userAccountControl` [query, array] — The User Account Control -- `agentNetworkStatus` [query, array] — The agent network status -- `ageGroup` [query, array] — Age Group -- `macAddresses__contains` [query, array] — The MAC addresses -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `objectGuid__contains` [query, array] — The Object GUID -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `lockOutTime__between` [query, string] — Lock-out Time -- `k8sNode` [query, array] — The Kubernetes Node -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `deletedTime__between` [query, array] — Deleted Time -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `serviceAccount` [query, array] — The Service Account -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `onPremisesSamAccountName` [query, array] — On Premises SAM Account Name -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `uniqueName` [query, array] — Unique Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `onPremisesImmutableId` [query, array] — On Premises Immutable Id -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `department` [query, array] — Department -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `otherMails__contains` [query, array] — Other Mails -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `otherMails` [query, array] — Other Mails -- `visibility` [query, array] — Visibility -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `badPasswordTime__between` [query, string] — Bad Password Time -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `displayName__contains` [query, array] — The Display Name -- `last_modified_time__between` [query, string] — Lock-out Time -- `employeeType` [query, array] — Employee Type -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `surname` [query, array] — Surname -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `scanStatus` [query, array] — The CDS malware scan status -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.unified_actions.schemas_AffectedEntitiesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osVersion` [query, array]: The operating system version of the device +- `state__nin` [query, array]: The state of the instance (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `userPrincipalName` [query, array]: The User Principal Name +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `entraidGroupType` [query, array]: Entra ID Group Type +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `classification` [query, array]: Classification +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `onPremisesLastSyncTime__between` [query, array]: On Premises Last Sync Time +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `onPremisesDomainName` [query, array]: On Premises Domain Name +- `forest` [query, array]: The Forest Name +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `agentInstallerType` [query, array]: The agent installer type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `onPremisesSecurityIdentifier` [query, array]: On Premises Security Identifier +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `securityEnabled` [query, array]: Security Enabled +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `onPremisesSyncEnabled` [query, array]: On Premises Sync Enabled +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `onPremisesDistinguishedName__contains` [query, array]: +- `expirationTime__between` [query, array]: Expiration Time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `names` [query, array]: Name +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `onPremisesDistinguishedName` [query, array]: On Premises Distinguished Name +- `cn` [query, array]: The LDAP Common Name +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `cn__contains` [query, array]: The LDAP Common Name +- `onPremisesUserPrincipalName` [query, array]: On Premises User Principal Name +- `k8sNamespace__contains` [query, array]: Namespace Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `udpPorts` [query, array]: The UDP ports +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `objectCount` [query, array]: The number of objects in the bucket +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `entraidGroupType__nin` [query, array]: Entra ID Group Type (not in) +- `givenName` [query, array]: Given Name +- `forest__nin` [query, array]: The Forest Name (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `encryptionType` [query, array]: The encryption type +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `proxyAddresses` [query, array]: Proxy Addresses +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `objectSid__contains` [query, array]: The Object SID +- `jobTitle` [query, array]: Job Title +- `groupType__nin` [query, array]: The Group Type (not in) +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `userAccountControl` [query, array]: The User Account Control +- `agentNetworkStatus` [query, array]: The agent network status +- `ageGroup` [query, array]: Age Group +- `macAddresses__contains` [query, array]: The MAC addresses +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `objectGuid__contains` [query, array]: The Object GUID +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `lockOutTime__between` [query, string]: Lock-out Time +- `k8sNode` [query, array]: The Kubernetes Node +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `deletedTime__between` [query, array]: Deleted Time +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `serviceAccount` [query, array]: The Service Account +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `onPremisesSamAccountName` [query, array]: On Premises SAM Account Name +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `uniqueName` [query, array]: Unique Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `onPremisesImmutableId` [query, array]: On Premises Immutable Id +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `department` [query, array]: Department +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `otherMails__contains` [query, array]: Other Mails +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `otherMails` [query, array]: Other Mails +- `visibility` [query, array]: Visibility +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `badPasswordTime__between` [query, string]: Bad Password Time +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `displayName__contains` [query, array]: The Display Name +- `last_modified_time__between` [query, string]: Lock-out Time +- `employeeType` [query, array]: Employee Type +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `surname` [query, array]: Surname +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `scanStatus` [query, array]: The CDS malware scan status +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.unified_actions.schemas_AffectedEntitiesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -637,306 +637,306 @@ Perform an Action on selected assets/entities Required permissions: `XDR Inventory.create, XDR Inventory.delete, XDR Inventory.edit` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osVersion` [query, array] — The operating system version of the device -- `state__nin` [query, array] — The state of the instance (not in) -- `groupType` [query, array] — The Group Type -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `cloudProviderAccountName__nin` [query, array] — The cloud provider account name (not in) -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `k8sRunningOnNodes__contains` [query, array] — Running on nodes -- `objectCategory` [query, array] — The Object Category -- `cloudResourceId__contains` [query, array] — The cloud resource ID -- `cloudProviderSubscriptionId__contains` [query, array] — The cloud provider subscription ID -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `scanStatus__nin` [query, array] — The CDS malware scan status (not in) -- `cpu__contains` [query, array] — The CPU -- `region` [query, array] — The region -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `encryptionType__nin` [query, array] — The encryption type (not in) -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `userPrincipalName` [query, array] — The User Principal Name -- `cloudTagsKey__nin` [query, array] — The cloud tags key (not in) -- `k8sRunningOnNodes` [query, array] — Running on Nodes -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `state` [query, array] — The state of the instance -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `entraidGroupType` [query, array] — Entra ID Group Type -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `classification` [query, array] — Classification -- `cloudProviderAccountId__contains` [query, array] — The cloud provider account ID -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `mail` [query, array] — The Email Address -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `threatDetectionStatus__nin` [query, array] — Threat Detection Status (not in) -- `onPremisesSamAccountName__contains` [query, array] — On Premises SAM Account Name -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `region__nin` [query, array] — The region (not in) -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `samAccountName` [query, array] — The SAM Account Name -- `onPremisesLastSyncTime__between` [query, array] — On Premises Last Sync Time -- `cloudTagsKeyValue__nin` [query, array] — The cloud tags key value (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `objectCount__nin` [query, array] — The number of objects in the bucket (not in) -- `onPremisesDomainName` [query, array] — On Premises Domain Name -- `forest` [query, array] — The Forest Name -- `k8sResourceId__contains` [query, array] — Kubernetes Resource ID -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `serialNumber` [query, array] — The serial number -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `state__contains` [query, array] — The state -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `onPremisesUserPrincipalName__contains` [query, array] — On Premises User Principal Name -- `agentInstallerType` [query, array] — The agent installer type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `onPremisesSecurityIdentifier` [query, array] — On Premises Security Identifier -- `privileged` [query, array] — Whether the AD Entity is privileged or not -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `passwordNeverExpire` [query, array] — Whether the password never expires -- `region__contains` [query, array] — The geographical area where cloud resources are hosted -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `threatDetectionPolicyStatus` [query, array] — Threat Detection Policy -- `cloudProviderAccountName` [query, array] — The cloud provider account name -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `deleted` [query, array] — Whether the AD Entity is deleted or not -- `securityEnabled` [query, array] — Security Enabled -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `onPremisesSyncEnabled` [query, array] — On Premises Sync Enabled -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `k8sNode__contains` [query, array] — The Kubernetes node -- `alertSeverity` [query, array] — The severity of the alert -- `mail__contains` [query, array] — The Email Address -- `cloudTagsKeyValue` [query, array] — The cloud tags key value -- `k8sNode__nin` [query, array] — The Kubernetes Node (not in) -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `onPremisesDistinguishedName__contains` [query, array] — -- `expirationTime__between` [query, array] — Expiration Time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `names` [query, array] — Name -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `onPremisesDistinguishedName` [query, array] — On Premises Distinguished Name -- `cn` [query, array] — The LDAP Common Name -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `k8sCluster__nin` [query, array] — The Kubernetes Cluster (not in) -- `cn__contains` [query, array] — The LDAP Common Name -- `onPremisesUserPrincipalName` [query, array] — On Premises User Principal Name -- `k8sNamespace__contains` [query, array] — Namespace Name -- `cn__nin` [query, array] — The LDAP Common Name (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `onPremisesDomainName__contains` [query, array] — On Premises Distinguished Name -- `k8sResourceId` [query, array] — The Kubernetes Resource ID -- `lastLogonTime__between` [query, string] — The Last time of User Login -- `udpPorts` [query, array] — The UDP ports -- `assetContactEmail` [query, array] — Asset Contact Email -- `riskFactors` [query, array] — The risk factors associated with the asset -- `objectClass__nin` [query, array] — The Object Class (not in) -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `k8sLabelsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Labels key (supports multiple values) -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `objectCount` [query, array] — The number of objects in the bucket -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `entraidGroupType__nin` [query, array] — Entra ID Group Type (not in) -- `givenName` [query, array] — Given Name -- `forest__nin` [query, array] — The Forest Name (not in) -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `encryptionType` [query, array] — The encryption type -- `onPremisesSecurityIdentifier__contains` [query, array] — -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `proxyAddresses` [query, array] — Proxy Addresses -- `cloudTagsKeyValue__contains` [query, array] — Free-text filter by cloud tag key value (supports multiple values) -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `k8sLabelsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Labels key value (supports multiple values) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `k8sCluster__contains` [query, array] — The Kubernetes cluster -- `cloudProviderOrganizationUnit__contains` [query, array] — The cloud provider organization unit -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `cloudProviderOrganization__contains` [query, array] — The cloud provider organization -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `isDcServer` [query, array] — Is DC Server -- `samAccountName__nin` [query, array] — The SAM Account Name (not in) -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `objectSid__contains` [query, array] — The Object SID -- `jobTitle` [query, array] — Job Title -- `groupType__nin` [query, array] — The Group Type (not in) -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `userAccountControl` [query, array] — The User Account Control -- `agentNetworkStatus` [query, array] — The agent network status -- `ageGroup` [query, array] — Age Group -- `macAddresses__contains` [query, array] — The MAC addresses -- `k8sCluster` [query, array] — The Kubernetes Cluster -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `proxyAddresses__contains` [query, array] — Proxy Addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `objectGuid__contains` [query, array] — The Object GUID -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `k8sAnnotationsUnifiedKey__contains` [query, array] — Free-text filter by Kubernetes Annotations key (supports multiple values) -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `threatDetectionStatus__contains` [query, array] — The threat detection status -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `lockOutTime__between` [query, string] — Lock-out Time -- `k8sNode` [query, array] — The Kubernetes Node -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `cloudProviderAccountId__nin` [query, array] — The cloud provider account id (not in) -- `k8sClusterId` [query, array] — The Kubernetes Cluster ID -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `servicePrincipalName__contains` [query, array] — The Service Principal Name -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `deletedTime__between` [query, array] — Deleted Time -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `k8sVersion__nin` [query, array] — The Kubernetes Version (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `cloudTagsKey` [query, array] — The cloud tags key -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `serviceAccount` [query, array] — The Service Account -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `k8sVersion` [query, array] — The Kubernetes Version -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `givenName__contains` [query, array] — Given Name -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `threatDetectionStatus` [query, array] — Threat Detection Status -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `k8sNamespace` [query, array] — The Kubernetes Namespace Name -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `k8sType` [query, array] — The Kubernetes Type -- `onPremisesSamAccountName` [query, array] — On Premises SAM Account Name -- `userPrincipalName__contains` [query, array] — The User Principal Name -- `uniqueName` [query, array] — Unique Name -- `cloudProviderAccountId` [query, array] — The cloud provider account id -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `isRogues` [query, array] — Whether the instance is a rogue or not -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `osNameVersion` [query, array] — The operating system name and version of the device -- `onPremisesImmutableId` [query, array] — On Premises Immutable Id -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `department` [query, array] — Department -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `otherMails__contains` [query, array] — Other Mails -- `k8sType__nin` [query, array] — The Kubernetes Type (not in) -- `distinguishedName__contains` [query, array] — The Distinguished Name -- `objectClass` [query, array] — The Object Class -- `forest__contains` [query, array] — The Forest Name -- `k8sAnnotationsUnifiedKeyValue__contains` [query, array] — Free-text filter by Kubernetes Annotations key value (supports multiple values) -- `otherMails` [query, array] — Other Mails -- `visibility` [query, array] — Visibility -- `scanStatus__contains` [query, array] — The CDS malware scan status -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `badPasswordTime__between` [query, string] — Bad Password Time -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `displayName__contains` [query, array] — The Display Name -- `last_modified_time__between` [query, string] — Lock-out Time -- `employeeType` [query, array] — Employee Type -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `cloudProviderAccountName__contains` [query, array] — The cloud provider account name -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `surname` [query, array] — Surname -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `k8sClusterId__contains` [query, array] — Kubernetes Cluster ID -- `cloudTagsKey__contains` [query, array] — Free-text filter by cloud tag key (supports multiple values) -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `objectCategory__nin` [query, array] — The Object Category (not in) -- `userAccountControl__nin` [query, array] — The User Account Control (not in) -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `userPasswordExpiryTimeComputed__between` [query, string] — The User Password Expiry Time -- `scanStatus` [query, array] — The CDS malware scan status -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `enabled` [query, array] — Whether the Identity Group is enabled or not -- `userPrincipalName__nin` [query, array] — The User Principal Name (not in) -- `cloudProviderProjectId__contains` [query, array] — The cloud provider project ID -- `body` [body, v2_1.inventory.unified_actions.schemas_PerformActionRequestSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osVersion` [query, array]: The operating system version of the device +- `state__nin` [query, array]: The state of the instance (not in) +- `groupType` [query, array]: The Group Type +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `cloudProviderAccountName__nin` [query, array]: The cloud provider account name (not in) +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `k8sRunningOnNodes__contains` [query, array]: Running on nodes +- `objectCategory` [query, array]: The Object Category +- `cloudResourceId__contains` [query, array]: The cloud resource ID +- `cloudProviderSubscriptionId__contains` [query, array]: The cloud provider subscription ID +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `scanStatus__nin` [query, array]: The CDS malware scan status (not in) +- `cpu__contains` [query, array]: The CPU +- `region` [query, array]: The region +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `encryptionType__nin` [query, array]: The encryption type (not in) +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `userPrincipalName` [query, array]: The User Principal Name +- `cloudTagsKey__nin` [query, array]: The cloud tags key (not in) +- `k8sRunningOnNodes` [query, array]: Running on Nodes +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `state` [query, array]: The state of the instance +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `entraidGroupType` [query, array]: Entra ID Group Type +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `classification` [query, array]: Classification +- `cloudProviderAccountId__contains` [query, array]: The cloud provider account ID +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `mail` [query, array]: The Email Address +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `threatDetectionStatus__nin` [query, array]: Threat Detection Status (not in) +- `onPremisesSamAccountName__contains` [query, array]: On Premises SAM Account Name +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `region__nin` [query, array]: The region (not in) +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `samAccountName` [query, array]: The SAM Account Name +- `onPremisesLastSyncTime__between` [query, array]: On Premises Last Sync Time +- `cloudTagsKeyValue__nin` [query, array]: The cloud tags key value (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `objectCount__nin` [query, array]: The number of objects in the bucket (not in) +- `onPremisesDomainName` [query, array]: On Premises Domain Name +- `forest` [query, array]: The Forest Name +- `k8sResourceId__contains` [query, array]: Kubernetes Resource ID +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `serialNumber` [query, array]: The serial number +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `state__contains` [query, array]: The state +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `onPremisesUserPrincipalName__contains` [query, array]: On Premises User Principal Name +- `agentInstallerType` [query, array]: The agent installer type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `onPremisesSecurityIdentifier` [query, array]: On Premises Security Identifier +- `privileged` [query, array]: Whether the AD Entity is privileged or not +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `passwordNeverExpire` [query, array]: Whether the password never expires +- `region__contains` [query, array]: The geographical area where cloud resources are hosted +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `threatDetectionPolicyStatus` [query, array]: Threat Detection Policy +- `cloudProviderAccountName` [query, array]: The cloud provider account name +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `deleted` [query, array]: Whether the AD Entity is deleted or not +- `securityEnabled` [query, array]: Security Enabled +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `onPremisesSyncEnabled` [query, array]: On Premises Sync Enabled +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `k8sNode__contains` [query, array]: The Kubernetes node +- `alertSeverity` [query, array]: The severity of the alert +- `mail__contains` [query, array]: The Email Address +- `cloudTagsKeyValue` [query, array]: The cloud tags key value +- `k8sNode__nin` [query, array]: The Kubernetes Node (not in) +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `onPremisesDistinguishedName__contains` [query, array]: +- `expirationTime__between` [query, array]: Expiration Time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `names` [query, array]: Name +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `onPremisesDistinguishedName` [query, array]: On Premises Distinguished Name +- `cn` [query, array]: The LDAP Common Name +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `k8sCluster__nin` [query, array]: The Kubernetes Cluster (not in) +- `cn__contains` [query, array]: The LDAP Common Name +- `onPremisesUserPrincipalName` [query, array]: On Premises User Principal Name +- `k8sNamespace__contains` [query, array]: Namespace Name +- `cn__nin` [query, array]: The LDAP Common Name (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `onPremisesDomainName__contains` [query, array]: On Premises Distinguished Name +- `k8sResourceId` [query, array]: The Kubernetes Resource ID +- `lastLogonTime__between` [query, string]: The Last time of User Login +- `udpPorts` [query, array]: The UDP ports +- `assetContactEmail` [query, array]: Asset Contact Email +- `riskFactors` [query, array]: The risk factors associated with the asset +- `objectClass__nin` [query, array]: The Object Class (not in) +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `k8sLabelsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Labels key (supports multiple values) +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `objectCount` [query, array]: The number of objects in the bucket +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `entraidGroupType__nin` [query, array]: Entra ID Group Type (not in) +- `givenName` [query, array]: Given Name +- `forest__nin` [query, array]: The Forest Name (not in) +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `encryptionType` [query, array]: The encryption type +- `onPremisesSecurityIdentifier__contains` [query, array]: +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `proxyAddresses` [query, array]: Proxy Addresses +- `cloudTagsKeyValue__contains` [query, array]: Free-text filter by cloud tag key value (supports multiple values) +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `k8sLabelsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Labels key value (supports multiple values) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `k8sCluster__contains` [query, array]: The Kubernetes cluster +- `cloudProviderOrganizationUnit__contains` [query, array]: The cloud provider organization unit +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `cloudProviderOrganization__contains` [query, array]: The cloud provider organization +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `isDcServer` [query, array]: Is DC Server +- `samAccountName__nin` [query, array]: The SAM Account Name (not in) +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `objectSid__contains` [query, array]: The Object SID +- `jobTitle` [query, array]: Job Title +- `groupType__nin` [query, array]: The Group Type (not in) +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `userAccountControl` [query, array]: The User Account Control +- `agentNetworkStatus` [query, array]: The agent network status +- `ageGroup` [query, array]: Age Group +- `macAddresses__contains` [query, array]: The MAC addresses +- `k8sCluster` [query, array]: The Kubernetes Cluster +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `proxyAddresses__contains` [query, array]: Proxy Addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `objectGuid__contains` [query, array]: The Object GUID +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `k8sAnnotationsUnifiedKey__contains` [query, array]: Free-text filter by Kubernetes Annotations key (supports multiple values) +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `threatDetectionStatus__contains` [query, array]: The threat detection status +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `lockOutTime__between` [query, string]: Lock-out Time +- `k8sNode` [query, array]: The Kubernetes Node +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `cloudProviderAccountId__nin` [query, array]: The cloud provider account id (not in) +- `k8sClusterId` [query, array]: The Kubernetes Cluster ID +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `servicePrincipalName__contains` [query, array]: The Service Principal Name +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `deletedTime__between` [query, array]: Deleted Time +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `k8sVersion__nin` [query, array]: The Kubernetes Version (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `cloudTagsKey` [query, array]: The cloud tags key +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `serviceAccount` [query, array]: The Service Account +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `k8sVersion` [query, array]: The Kubernetes Version +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `givenName__contains` [query, array]: Given Name +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `threatDetectionStatus` [query, array]: Threat Detection Status +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `k8sNamespace` [query, array]: The Kubernetes Namespace Name +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `k8sType` [query, array]: The Kubernetes Type +- `onPremisesSamAccountName` [query, array]: On Premises SAM Account Name +- `userPrincipalName__contains` [query, array]: The User Principal Name +- `uniqueName` [query, array]: Unique Name +- `cloudProviderAccountId` [query, array]: The cloud provider account id +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `isRogues` [query, array]: Whether the instance is a rogue or not +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `osNameVersion` [query, array]: The operating system name and version of the device +- `onPremisesImmutableId` [query, array]: On Premises Immutable Id +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `department` [query, array]: Department +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `otherMails__contains` [query, array]: Other Mails +- `k8sType__nin` [query, array]: The Kubernetes Type (not in) +- `distinguishedName__contains` [query, array]: The Distinguished Name +- `objectClass` [query, array]: The Object Class +- `forest__contains` [query, array]: The Forest Name +- `k8sAnnotationsUnifiedKeyValue__contains` [query, array]: Free-text filter by Kubernetes Annotations key value (supports multiple values) +- `otherMails` [query, array]: Other Mails +- `visibility` [query, array]: Visibility +- `scanStatus__contains` [query, array]: The CDS malware scan status +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `badPasswordTime__between` [query, string]: Bad Password Time +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `displayName__contains` [query, array]: The Display Name +- `last_modified_time__between` [query, string]: Lock-out Time +- `employeeType` [query, array]: Employee Type +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `cloudProviderAccountName__contains` [query, array]: The cloud provider account name +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `surname` [query, array]: Surname +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `k8sClusterId__contains` [query, array]: Kubernetes Cluster ID +- `cloudTagsKey__contains` [query, array]: Free-text filter by cloud tag key (supports multiple values) +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `objectCategory__nin` [query, array]: The Object Category (not in) +- `userAccountControl__nin` [query, array]: The User Account Control (not in) +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `userPasswordExpiryTimeComputed__between` [query, string]: The User Password Expiry Time +- `scanStatus` [query, array]: The CDS malware scan status +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `enabled` [query, array]: Whether the Identity Group is enabled or not +- `userPrincipalName__nin` [query, array]: The User Principal Name (not in) +- `cloudProviderProjectId__contains` [query, array]: The cloud provider project ID +- `body` [body, v2_1.inventory.unified_actions.schemas_PerformActionRequestSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Workstation.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Workstation.md index 50da08b..14b4960 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Workstation.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Inventory_Workstation.md @@ -11,189 +11,189 @@ Get inventory workstation assets Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, assetCriticality, s1ScopePath, osVersion, agentPendingUninstall, agentAntiTamperingStatus, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, assetCriticality, s1ScopePath, osVersion, agentPendingUninstall, agentAntiTamperingStatus, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -206,10 +206,10 @@ POST API to get workstation assets Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.workstation.schemas_WorkstationViewInputSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.workstation.schemas_WorkstationViewInputSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -222,183 +222,183 @@ Perform action on selected assets Required permissions: `XDR Inventory.edit, XDR Inventory.delete` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.workstation.schemas_WorkstationActionPayloadSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.workstation.schemas_WorkstationActionPayloadSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -411,183 +411,183 @@ Get inventory workstation available actions Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device -- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema] — +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device +- `body` [body, v2_1.inventory.schemas_AffectedResourcesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -600,190 +600,190 @@ Returns the results for given inventory filter in a CSV or JSON format Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, assetCriticality, s1ScopePath, osVersion, agentPendingUninstall, agentAntiTamperingStatus, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion) — The column to sort the results by. -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `exportFormat` [query, string] **required** (enum: csv, json) — Export format -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items (1-1000) -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `sortBy` [query, string] (enum: s1GroupName, cpu, legacyIdentityPolicyName, previousOsType, previousOsVersion, agentFirewallStatus, s1UpdatedAt, memoryReadable, s1ManagementId, isAdConnector, os, agentLocationAwareness, agentDetectionState, agentCustomerIdentifier, agentDvConnectivity, agentConsoleConnectivity, agentIdrConnectivity, agentUpToDate, networkName, s1SiteId, s1SiteName, serialNumber, detectedFromSite, agentInstallerType, identityAdUserDistinguishedName, eppUnsupportedUnknown, category, s1GroupId, agentLastLoggedInUser, ipAddress, agentK8sPod, agentDecommissioned, lastActiveDt, s1OnboardedAccountId, assetContactEmail, s1ScopeType, agentSubscribeOnDt, assetEnvironment, previousDeviceFunction, osFamily, s1AccountId, adsEnabled, id, s1AccountName, agentUninstalled, s1ScopeLevel, memory, agentId, s1OnboardedAccountName, s1OnboardedScopeLevel, isDcServer, agentOperationalState, name, agentNetworkStatus, agentVssServiceStatus, assetCriticality, s1ScopePath, osVersion, agentPendingUninstall, agentAntiTamperingStatus, s1OnboardedGroupName, identityAdMachineDistinguishedName, lastRebootDt, s1OnboardedSiteName, s1ScopeId, agentHasLocalConfig, agentPendingUpgrade, manufacturer, agentK8sNamespace, agentVssRollbackStatus, resourceType, agentUuid, agentOperationalStateExpirationTimeDt, coreCount, infectionStatus, s1OnboardedSiteId, agentVssLastSnapshotDt, agentDvConnectivityLastUpdatedDt, subCategory, s1OnboardedScopeId, agentRangerStatus, deviceReview, s1OnboardedScopePath, agentConsoleMigrationStatus, architecture, agentVssProtectionStatus, assetStatus, agentConfigurableNetworkQuarantine, agentRangerVersion, agentHealthStatus, agentFullDiskScanDt, s1OnboardedGroupId, agentAgentVersion, firstSeenDt, domain, lastUpdateDt, agentDiskEncryption, osNameVersion): The column to sort the results by. +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `sortOrder` [query, string] (enum: asc, desc): Sort direction +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `exportFormat` [query, string] **required** (enum: csv, json): Export format +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items (1-1000) +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -796,185 +796,185 @@ Use this command to get values for other fields. When you send this command with Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains) — Search field key -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `text` [query, string] **required** — Search term text -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `limit` [query, integer] — Limit number of returned items -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `key` [query, string] **required** (enum: resourceType__contains, id__contains, name__contains, tagsKey__contains, tagsKeyValue__contains, domain__contains, gatewayMacs__contains, gatewayIps__contains, internalIps__contains, macAddresses__contains, ipAddress__contains, hostnames__contains, osVersion__contains, osNameVersion__contains, subnets__contains, agentCustomerIdentifier__contains, agentLocationAwareness__contains, agentS1AgentLiveUpdatesVersion__contains, agentAgentVersion__contains, agentUuid__contains, agentLastLoggedInUser__contains, cpu__contains, serialNumber__contains, legacyIdentityPolicyName__contains, manufacturer__contains, tcpPorts__contains, udpPorts__contains, rangerTagsKey__contains, rangerTagsKeyValue__contains, imageName__contains, identityAd__contains, identityAdMachine__contains, identityAdUser__contains, identityAdMachineDistinguishedName__contains, identityAdMachineMembership__contains, identityAdUserDistinguishedName__contains, identityAdUserMembership__contains): Search field key +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `text` [query, string] **required**: Search term text +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `limit` [query, integer]: Limit number of returned items +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -987,182 +987,182 @@ Get workstation filter counts Required permissions: `XDR Inventory.view` Parameters: -- `tagsKey__contains` [query, array] — Free-text filter by tag key (supports multiple values) -- `agentOperationalState__nin` [query, array] — The agent operational state (not in) -- `assetCriticality__nin` [query, array] — The criticality that each asset belongs to (not in) -- `legacyIdentityPolicyName` [query, array] — Legacy Identity Policy Name -- `missingCoverage` [query, array] — The missing coverage for the asset -- `allTagsKeyValue` [query, array] — User and cloud tags -- `agentConsoleMigrationStatus__nin` [query, array] — The agent console migration status (not in) -- `tagsKey__nin` [query, array] — Tag Keys (not in) -- `agentDiskMetricsFreePercentage__between` [query, string] — The agent free disk percentage on any of the disks -- `tagsKey__exists` [query, array] — Tag Keys exists -- `cpu__contains` [query, array] — The CPU -- `memoryReadable` [query, array] — The memory of the device in human readable format -- `ipAddress__contains` [query, array] — The IP addresses -- `tagsKeyValue__contains` [query, array] — Free-text filter by tag key value (supports multiple values) -- `tagsKey` [query, array] — Tag Keys -- `agentVssProtectionStatus__nin` [query, array] — The agent VSS protection status (not in) -- `riskFactors__nin` [query, array] — The risk factors associated with the asset (not in) -- `tagsKey__nexists` [query, array] — Tag Keys not exists -- `identityAdMachine__contains` [query, array] — AD machine or its groups -- `isAdConnector` [query, array] — Is AD Connector -- `agentLocation__nin` [query, array] — The agent location (not in) -- `imageName__contains` [query, array] — Free-text filter by the image name -- `agentMissingPermissions` [query, array] — The agent missing permissions -- `os` [query, array] — The operating system of the device -- `groupIds` [query, array] — List of Group IDs to filter by -- `agentDvConnectivityLastUpdatedDt__between` [query, string] — The SDL connectivity last active -- `subnets__contains` [query, array] — The subnets -- `rangerTagsKey` [query, array] — The ranger tags key -- `networkName__nin` [query, array] — The network name (not in) -- `agentDvConnectivity` [query, array] — The connection status between the agent and the SDL service -- `activeCoverage__nin` [query, array] — The active coverage for the asset (not in) -- `agentConsoleConnectivity` [query, array] — The agent console connectivity -- `agentIdrConnectivity` [query, array] — The agent Idr connectivity -- `allTagsKeyValue__nin` [query, array] — User and cloud tags (not in) -- `networkName` [query, array] — The network name -- `agentConfigurableNetworkQuarantine__nin` [query, array] — Whether the agent can configure network quarantine (not in) -- `allTagsKey__nin` [query, array] — User and cloud tag keys (not in) -- `gatewayIps__contains` [query, array] — The gateway IPs -- `manufacturer__nin` [query, array] — The manufacturer of the device (not in) -- `surfaces` [query, array] — The Surface that each asset belongs to -- `agentPendingActions` [query, array] — The agent pending actions -- `osNameVersion__nin` [query, array] — The operating system name and version of the device (not in) -- `missingCoverage__nin` [query, array] — The missing coverage for the asset (not in) -- `serialNumber` [query, array] — The serial number -- `assetStatus__nin` [query, array] — The status of the asset (not in) -- `lastActiveDt__between` [query, string] — The last active date -- `detectedFromSite` [query, array] — The site from which the device was detected -- `identityAd__contains` [query, array] — Any AD string -- `agentInstallerType` [query, array] — The agent installer type -- `agentDiskMetricsVolumeType` [query, array] — The agent disk metrics volume type -- `legacy_identity_policy_name__contains` [query, array] — The legacy identity policy name -- `eppUnsupportedUnknown` [query, array] — The agent supported or unknown state -- `agentHealthStatus__nin` [query, array] — The agent health status (not in) -- `agentRangerVersion__nin` [query, array] — The agent network scanner version (not in) -- `deviceReview__nin` [query, array] — The asset review (not in) -- `rangerTagKeyValue__contains` [query, array] — Free-text filter by Ranger tag key value (supports multiple values) -- `assetContactEmail__nin` [query, array] — Asset Contact Email (not in) -- `agentDiskMetricsFreePercentage__lte` [query, number] — The agent free disk percentage on any of the disks -- `alertSeverity` [query, array] — The severity of the alert -- `accountIds` [query, array] — List of Account IDs to filter by -- `serialNumber__nin` [query, array] — The serial number (not in) -- `agentDecommissioned` [query, array] — Whether the agent is decommissioned -- `agentSubscribeOnDt__between` [query, string] — The agent subscribe time -- `domain__contains` [query, array] — The domain -- `osNameVersion__contains` [query, array] — The OS names and versions -- `resourceType__nin` [query, array] — The canonical name for the resource type (not in) -- `gatewayMacs__contains` [query, array] — The gateway MACs -- `agentCustomerIdentifier__contains` [query, array] — The customer identifier -- `os__nin` [query, array] — The operating system of the device (not in) -- `manufacturer__contains` [query, array] — The manufacturer -- `assetContactEmail` [query, array] — Asset Contact Email -- `udpPorts` [query, array] — The UDP ports -- `riskFactors` [query, array] — The risk factors associated with the asset -- `agentFullDiskScanDt__between` [query, string] — The agent full disk scan date -- `agentAntiTamperingStatus__nin` [query, array] — The agent anti tampering status (not in) -- `assetEnvironment` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory -- `osFamily` [query, array] — The operating system family of the device -- `identityAdUser__contains` [query, array] — AD user or their groups -- `surfaces__nin` [query, array] — The Surface that each asset belongs to (not in) -- `adsEnabled` [query, array] — ADS Enabled -- `rangerTagsKey__nin` [query, array] — The ranger tags key (not in) -- `agentLocation` [query, array] — The agent location -- `agentPendingActions__nin` [query, array] — The agent pending actions (not in) -- `id__in` [query, array] — The ID -- `agentUninstalled` [query, array] — Whether the agent is uninstalled -- `resourceType__contains` [query, array] — The Asset Type -- `memoryReadable__nin` [query, array] — The memory of the device in human readable format (not in) -- `agentUuid__contains` [query, array] — The UUID -- `tagsKeyValue` [query, array] — Tags -- `rangerTagsKeyValue` [query, array] — The ranger tags key value -- `isDcServer` [query, array] — Is DC Server -- `agentLocationAwareness__contains` [query, array] — The location awareness -- `identityAdUserDistinguishedName__contains` [query, array] — AD user DN -- `osFamily__nin` [query, array] — The operating system family of the device (not in) -- `agentOperationalState` [query, array] — The agent operational state -- `agentNetworkStatus` [query, array] — The agent network status -- `names` [query, array] — Name -- `agentVssServiceStatus` [query, array] — The agent VSS service status -- `macAddresses__contains` [query, array] — The MAC addresses -- `agentRangerStatus__nin` [query, array] — The agent network scanner status (not in) -- `detectedFromSite__nin` [query, array] — The site from which the device was detected (not in) -- `name__contains` [query, array] — The name -- `applicationName` [query, array] — The name of the application installed on a workstation or a server -- `agentPendingUninstall` [query, array] — Whether the agent is pending uninstall -- `firstSeenDt__between` [query, string] — The first seen date -- `lastUpdateDt__between` [query, string] — The last update date -- `agentAntiTamperingStatus` [query, array] — The agent anti tampering status -- `agentAgentVersion__nin` [query, array] — The agent version (not in) -- `osVersion` [query, array] — The operating system version of the device -- `assetCriticality` [query, array] — The criticality that each asset belongs to -- `discoveryMethods__nin` [query, array] — The discovery methods (not in) -- `agentVssServiceStatus__nin` [query, array] — The agent VSS service status (not in) -- `agentVssLastSnapshotDt__between` [query, string] — The agent VSS last snapshot date -- `agentHasLocalConfig` [query, array] — Whether the agent has local configuration -- `allTagsKey__nexists` [query, array] — User and cloud tag keys not exists -- `agentMissingPermissions__nin` [query, array] — The agent missing permissions (not in) -- `agentPendingUpgrade` [query, array] — Whether the agent is pending upgrade -- `manufacturer` [query, array] — The manufacturer of the device -- `agentVssRollbackStatus` [query, array] — The agent VSS rollback status -- `siteIds` [query, array] — List of Site IDs to filter by -- `agentInstallerType__nin` [query, array] — The agent installer type (not in) -- `s1UpdatedAt__between` [query, string] — The Last Seen date and time for the asset -- `resourceType` [query, array] — The canonical name for the resource type -- `assetEnvironment__nin` [query, array] — The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) -- `names__nin` [query, array] — Name (not in) -- `agentUuid` [query, array] — Match by the agent UUID -- `coreCount` [query, array] — The number of cores -- `osVersion__nin` [query, array] — The operating system version of the device (not in) -- `subCategory__nin` [query, array] — The sub-category that each resource belongs to (not in) -- `discoveryMethods` [query, array] — The discovery methods -- `infectionStatus` [query, array] — The status alerts of the asset -- `tcpPorts` [query, array] — The TCP ports -- `activeCoverage` [query, array] — The active coverage for the asset -- `countsFor` [query, array] — The columns for which filter count would be returned for -- `coreCount__nin` [query, array] — The number of cores (not in) -- `csvFilterId` [query, integer] — The ID of the CSV file to filter by -- `rangerTagKey__contains` [query, array] — Free-text filter by Ranger tag key (supports multiple values) -- `rangerTagsKeyValue__nin` [query, array] — The ranger tags key value (not in) -- `architecture__nin` [query, array] — The architecture of the device (not in) -- `identityAdMachineDistinguishedName__contains` [query, array] — AD machine DN -- `agentS1AgentLiveUpdatesVersion__contains` [query, array] — Live update ID -- `agentNetworkStatus__nin` [query, array] — The agent network status (not in) -- `subCategory` [query, array] — The sub-category that each resource belongs to -- `agentRangerStatus` [query, array] — The agent network scanner status -- `osVersion__contains` [query, array] — The OS versions -- `deviceReview` [query, array] — The asset review -- `allTagsKey` [query, array] — User and cloud tag keys -- `serialNumber__contains` [query, array] — The serial number -- `hostnames__contains` [query, array] — The hostnames -- `identityAdMachineMembership__contains` [query, array] — AD machine groups -- `agentVssRollbackStatus__nin` [query, array] — The agent VSS rollback status (not in) -- `agentConsoleMigrationStatus` [query, array] — The agent console migration status -- `architecture` [query, array] — The architecture of the device -- `identityAdUserMembership__contains` [query, array] — AD user groups -- `agentDvConnectivity__nin` [query, array] — The connection status between the agent and the SDL service (not in) -- `agentVssProtectionStatus` [query, array] — The agent VSS protection status -- `id__contains` [query, array] — The ID -- `internalIps__contains` [query, array] — The internal IPs -- `assetStatus` [query, array] — The status of the asset -- `eppUnsupportedUnknown__nin` [query, array] — The agent supported or unknown state (not in) -- `agentConfigurableNetworkQuarantine` [query, array] — Whether the agent can configure network quarantine -- `agentHealthStatus` [query, array] — The agent health status -- `agentRangerVersion` [query, array] — The agent network scanner version -- `agentDiskMetricsVolumeType__nin` [query, array] — The agent disk metrics volume type (not in) -- `domain__nin` [query, array] — The domain of the device (not in) -- `agentLastLoggedInUser__contains` [query, array] — The last logged in user -- `tagsKeyValue__nin` [query, array] — Tags (not in) -- `agentAgentVersion` [query, array] — The agent version -- `allTagsKey__exists` [query, array] — User and cloud tag keys exists -- `agentDiskMetricsFreePercentage__gte` [query, number] — The agent free disk percentage on any of the disks -- `agentAgentVersion__contains` [query, array] — The agent version -- `domain` [query, array] — The domain of the device -- `agentVssVolumesDiffAreaFreePercentage__between` [query, string] — The agent free VSS volume percentage on any of the volumes -- `agentDiskEncryption` [query, array] — The agent disk encryption -- `infectionStatus__nin` [query, array] — The status alerts of the asset (not in) -- `osNameVersion` [query, array] — The operating system name and version of the device +- `tagsKey__contains` [query, array]: Free-text filter by tag key (supports multiple values) +- `agentOperationalState__nin` [query, array]: The agent operational state (not in) +- `assetCriticality__nin` [query, array]: The criticality that each asset belongs to (not in) +- `legacyIdentityPolicyName` [query, array]: Legacy Identity Policy Name +- `missingCoverage` [query, array]: The missing coverage for the asset +- `allTagsKeyValue` [query, array]: User and cloud tags +- `agentConsoleMigrationStatus__nin` [query, array]: The agent console migration status (not in) +- `tagsKey__nin` [query, array]: Tag Keys (not in) +- `agentDiskMetricsFreePercentage__between` [query, string]: The agent free disk percentage on any of the disks +- `tagsKey__exists` [query, array]: Tag Keys exists +- `cpu__contains` [query, array]: The CPU +- `memoryReadable` [query, array]: The memory of the device in human readable format +- `ipAddress__contains` [query, array]: The IP addresses +- `tagsKeyValue__contains` [query, array]: Free-text filter by tag key value (supports multiple values) +- `tagsKey` [query, array]: Tag Keys +- `agentVssProtectionStatus__nin` [query, array]: The agent VSS protection status (not in) +- `riskFactors__nin` [query, array]: The risk factors associated with the asset (not in) +- `tagsKey__nexists` [query, array]: Tag Keys not exists +- `identityAdMachine__contains` [query, array]: AD machine or its groups +- `isAdConnector` [query, array]: Is AD Connector +- `agentLocation__nin` [query, array]: The agent location (not in) +- `imageName__contains` [query, array]: Free-text filter by the image name +- `agentMissingPermissions` [query, array]: The agent missing permissions +- `os` [query, array]: The operating system of the device +- `groupIds` [query, array]: List of Group IDs to filter by +- `agentDvConnectivityLastUpdatedDt__between` [query, string]: The SDL connectivity last active +- `subnets__contains` [query, array]: The subnets +- `rangerTagsKey` [query, array]: The ranger tags key +- `networkName__nin` [query, array]: The network name (not in) +- `agentDvConnectivity` [query, array]: The connection status between the agent and the SDL service +- `activeCoverage__nin` [query, array]: The active coverage for the asset (not in) +- `agentConsoleConnectivity` [query, array]: The agent console connectivity +- `agentIdrConnectivity` [query, array]: The agent Idr connectivity +- `allTagsKeyValue__nin` [query, array]: User and cloud tags (not in) +- `networkName` [query, array]: The network name +- `agentConfigurableNetworkQuarantine__nin` [query, array]: Whether the agent can configure network quarantine (not in) +- `allTagsKey__nin` [query, array]: User and cloud tag keys (not in) +- `gatewayIps__contains` [query, array]: The gateway IPs +- `manufacturer__nin` [query, array]: The manufacturer of the device (not in) +- `surfaces` [query, array]: The Surface that each asset belongs to +- `agentPendingActions` [query, array]: The agent pending actions +- `osNameVersion__nin` [query, array]: The operating system name and version of the device (not in) +- `missingCoverage__nin` [query, array]: The missing coverage for the asset (not in) +- `serialNumber` [query, array]: The serial number +- `assetStatus__nin` [query, array]: The status of the asset (not in) +- `lastActiveDt__between` [query, string]: The last active date +- `detectedFromSite` [query, array]: The site from which the device was detected +- `identityAd__contains` [query, array]: Any AD string +- `agentInstallerType` [query, array]: The agent installer type +- `agentDiskMetricsVolumeType` [query, array]: The agent disk metrics volume type +- `legacy_identity_policy_name__contains` [query, array]: The legacy identity policy name +- `eppUnsupportedUnknown` [query, array]: The agent supported or unknown state +- `agentHealthStatus__nin` [query, array]: The agent health status (not in) +- `agentRangerVersion__nin` [query, array]: The agent network scanner version (not in) +- `deviceReview__nin` [query, array]: The asset review (not in) +- `rangerTagKeyValue__contains` [query, array]: Free-text filter by Ranger tag key value (supports multiple values) +- `assetContactEmail__nin` [query, array]: Asset Contact Email (not in) +- `agentDiskMetricsFreePercentage__lte` [query, number]: The agent free disk percentage on any of the disks +- `alertSeverity` [query, array]: The severity of the alert +- `accountIds` [query, array]: List of Account IDs to filter by +- `serialNumber__nin` [query, array]: The serial number (not in) +- `agentDecommissioned` [query, array]: Whether the agent is decommissioned +- `agentSubscribeOnDt__between` [query, string]: The agent subscribe time +- `domain__contains` [query, array]: The domain +- `osNameVersion__contains` [query, array]: The OS names and versions +- `resourceType__nin` [query, array]: The canonical name for the resource type (not in) +- `gatewayMacs__contains` [query, array]: The gateway MACs +- `agentCustomerIdentifier__contains` [query, array]: The customer identifier +- `os__nin` [query, array]: The operating system of the device (not in) +- `manufacturer__contains` [query, array]: The manufacturer +- `assetContactEmail` [query, array]: Asset Contact Email +- `udpPorts` [query, array]: The UDP ports +- `riskFactors` [query, array]: The risk factors associated with the asset +- `agentFullDiskScanDt__between` [query, string]: The agent full disk scan date +- `agentAntiTamperingStatus__nin` [query, array]: The agent anti tampering status (not in) +- `assetEnvironment` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory +- `osFamily` [query, array]: The operating system family of the device +- `identityAdUser__contains` [query, array]: AD user or their groups +- `surfaces__nin` [query, array]: The Surface that each asset belongs to (not in) +- `adsEnabled` [query, array]: ADS Enabled +- `rangerTagsKey__nin` [query, array]: The ranger tags key (not in) +- `agentLocation` [query, array]: The agent location +- `agentPendingActions__nin` [query, array]: The agent pending actions (not in) +- `id__in` [query, array]: The ID +- `agentUninstalled` [query, array]: Whether the agent is uninstalled +- `resourceType__contains` [query, array]: The Asset Type +- `memoryReadable__nin` [query, array]: The memory of the device in human readable format (not in) +- `agentUuid__contains` [query, array]: The UUID +- `tagsKeyValue` [query, array]: Tags +- `rangerTagsKeyValue` [query, array]: The ranger tags key value +- `isDcServer` [query, array]: Is DC Server +- `agentLocationAwareness__contains` [query, array]: The location awareness +- `identityAdUserDistinguishedName__contains` [query, array]: AD user DN +- `osFamily__nin` [query, array]: The operating system family of the device (not in) +- `agentOperationalState` [query, array]: The agent operational state +- `agentNetworkStatus` [query, array]: The agent network status +- `names` [query, array]: Name +- `agentVssServiceStatus` [query, array]: The agent VSS service status +- `macAddresses__contains` [query, array]: The MAC addresses +- `agentRangerStatus__nin` [query, array]: The agent network scanner status (not in) +- `detectedFromSite__nin` [query, array]: The site from which the device was detected (not in) +- `name__contains` [query, array]: The name +- `applicationName` [query, array]: The name of the application installed on a workstation or a server +- `agentPendingUninstall` [query, array]: Whether the agent is pending uninstall +- `firstSeenDt__between` [query, string]: The first seen date +- `lastUpdateDt__between` [query, string]: The last update date +- `agentAntiTamperingStatus` [query, array]: The agent anti tampering status +- `agentAgentVersion__nin` [query, array]: The agent version (not in) +- `osVersion` [query, array]: The operating system version of the device +- `assetCriticality` [query, array]: The criticality that each asset belongs to +- `discoveryMethods__nin` [query, array]: The discovery methods (not in) +- `agentVssServiceStatus__nin` [query, array]: The agent VSS service status (not in) +- `agentVssLastSnapshotDt__between` [query, string]: The agent VSS last snapshot date +- `agentHasLocalConfig` [query, array]: Whether the agent has local configuration +- `allTagsKey__nexists` [query, array]: User and cloud tag keys not exists +- `agentMissingPermissions__nin` [query, array]: The agent missing permissions (not in) +- `agentPendingUpgrade` [query, array]: Whether the agent is pending upgrade +- `manufacturer` [query, array]: The manufacturer of the device +- `agentVssRollbackStatus` [query, array]: The agent VSS rollback status +- `siteIds` [query, array]: List of Site IDs to filter by +- `agentInstallerType__nin` [query, array]: The agent installer type (not in) +- `s1UpdatedAt__between` [query, string]: The Last Seen date and time for the asset +- `resourceType` [query, array]: The canonical name for the resource type +- `assetEnvironment__nin` [query, array]: The environment that the asset exists in - AWS | Azure | GCP | Active Directory (not in) +- `names__nin` [query, array]: Name (not in) +- `agentUuid` [query, array]: Match by the agent UUID +- `coreCount` [query, array]: The number of cores +- `osVersion__nin` [query, array]: The operating system version of the device (not in) +- `subCategory__nin` [query, array]: The sub-category that each resource belongs to (not in) +- `discoveryMethods` [query, array]: The discovery methods +- `infectionStatus` [query, array]: The status alerts of the asset +- `tcpPorts` [query, array]: The TCP ports +- `activeCoverage` [query, array]: The active coverage for the asset +- `countsFor` [query, array]: The columns for which filter count would be returned for +- `coreCount__nin` [query, array]: The number of cores (not in) +- `csvFilterId` [query, integer]: The ID of the CSV file to filter by +- `rangerTagKey__contains` [query, array]: Free-text filter by Ranger tag key (supports multiple values) +- `rangerTagsKeyValue__nin` [query, array]: The ranger tags key value (not in) +- `architecture__nin` [query, array]: The architecture of the device (not in) +- `identityAdMachineDistinguishedName__contains` [query, array]: AD machine DN +- `agentS1AgentLiveUpdatesVersion__contains` [query, array]: Live update ID +- `agentNetworkStatus__nin` [query, array]: The agent network status (not in) +- `subCategory` [query, array]: The sub-category that each resource belongs to +- `agentRangerStatus` [query, array]: The agent network scanner status +- `osVersion__contains` [query, array]: The OS versions +- `deviceReview` [query, array]: The asset review +- `allTagsKey` [query, array]: User and cloud tag keys +- `serialNumber__contains` [query, array]: The serial number +- `hostnames__contains` [query, array]: The hostnames +- `identityAdMachineMembership__contains` [query, array]: AD machine groups +- `agentVssRollbackStatus__nin` [query, array]: The agent VSS rollback status (not in) +- `agentConsoleMigrationStatus` [query, array]: The agent console migration status +- `architecture` [query, array]: The architecture of the device +- `identityAdUserMembership__contains` [query, array]: AD user groups +- `agentDvConnectivity__nin` [query, array]: The connection status between the agent and the SDL service (not in) +- `agentVssProtectionStatus` [query, array]: The agent VSS protection status +- `id__contains` [query, array]: The ID +- `internalIps__contains` [query, array]: The internal IPs +- `assetStatus` [query, array]: The status of the asset +- `eppUnsupportedUnknown__nin` [query, array]: The agent supported or unknown state (not in) +- `agentConfigurableNetworkQuarantine` [query, array]: Whether the agent can configure network quarantine +- `agentHealthStatus` [query, array]: The agent health status +- `agentRangerVersion` [query, array]: The agent network scanner version +- `agentDiskMetricsVolumeType__nin` [query, array]: The agent disk metrics volume type (not in) +- `domain__nin` [query, array]: The domain of the device (not in) +- `agentLastLoggedInUser__contains` [query, array]: The last logged in user +- `tagsKeyValue__nin` [query, array]: Tags (not in) +- `agentAgentVersion` [query, array]: The agent version +- `allTagsKey__exists` [query, array]: User and cloud tag keys exists +- `agentDiskMetricsFreePercentage__gte` [query, number]: The agent free disk percentage on any of the disks +- `agentAgentVersion__contains` [query, array]: The agent version +- `domain` [query, array]: The domain of the device +- `agentVssVolumesDiffAreaFreePercentage__between` [query, string]: The agent free VSS volume percentage on any of the volumes +- `agentDiskEncryption` [query, array]: The agent disk encryption +- `infectionStatus__nin` [query, array]: The status alerts of the asset (not in) +- `osNameVersion` [query, array]: The operating system name and version of the device Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Live_Updates.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Live_Updates.md index c77b214..1a2c83d 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Live_Updates.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Live_Updates.md @@ -11,13 +11,13 @@ Get Agent's merged updates. Required permissions: `Endpoints.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: appliedAt, agentId, assetFamilyType, version, displayName) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `agentId` [query, string] **required** — The ID of the Agent. Example: "225494730938493804". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: appliedAt, agentId, assetFamilyType, version, displayName): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `agentId` [query, string] **required**: The ID of the Agent. Example: "225494730938493804". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Locations.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Locations.md index dd6e720..09006e1 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Locations.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Locations.md @@ -11,7 +11,7 @@ Delete location definitions of a given location. To get location IDs, run "locat Required permissions: `Locations.delete` Parameters: -- `body` [body, locations.schemas_DeleteLocationsSchema] — +- `body` [body, locations.schemas_DeleteLocationsSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,26 +24,26 @@ Get the locations of Agents in a given scope that match the filter. Agent locat Required permissions: `Locations.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, scope) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — Filter results by location IDs. Example: "225494730938493804,225494730938493915". -- `scopes` [query, array] — Filter results by scope. Example: "site". -- `hasFirewallRules` [query, boolean] — Filter by locations with/without firewall rules associated to them -- `name__contains` [query, array] — Free-text filter by location name (supports multiple values). Example: "office". -- `description__contains` [query, array] — Free-text filter by description (supports multiple values). Example: "out of office". -- `creator__contains` [query, array] — Free-text filter by creator of the location (supports multiple values). Example: "max,mike". -- `scopeName__contains` [query, array] — Free-text filter by scope name (supports multiple values). Example: "my_group,my_site". -- `hostname__contains` [query, array] — Free-text filter by hostname (supports multiple values). Example: "sentinelone.com,localhost". -- `ipAddress__contains` [query, array] — Free-text filter by IP address (supports multiple values). Example: "29.213.22.17". -- `registryKey__contains` [query, array] — Free-text filter by registry key (supports multiple values). Example: "system\software,sentinel". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, scope): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: Filter results by location IDs. Example: "225494730938493804,225494730938493915". +- `scopes` [query, array]: Filter results by scope. Example: "site". +- `hasFirewallRules` [query, boolean]: Filter by locations with/without firewall rules associated to them +- `name__contains` [query, array]: Free-text filter by location name (supports multiple values). Example: "office". +- `description__contains` [query, array]: Free-text filter by description (supports multiple values). Example: "out of office". +- `creator__contains` [query, array]: Free-text filter by creator of the location (supports multiple values). Example: "max,mike". +- `scopeName__contains` [query, array]: Free-text filter by scope name (supports multiple values). Example: "my_group,my_site". +- `hostname__contains` [query, array]: Free-text filter by hostname (supports multiple values). Example: "sentinelone.com,localhost". +- `ipAddress__contains` [query, array]: Free-text filter by IP address (supports multiple values). Example: "29.213.22.17". +- `registryKey__contains` [query, array]: Free-text filter by registry key (supports multiple values). Example: "system\software,sentinel". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -56,7 +56,7 @@ Create a location that defines parameters of Agents in a scope filter. Parameter Required permissions: `Locations.create` Parameters: -- `body` [body, locations.schemas_NewLocationSchema] — +- `body` [body, locations.schemas_NewLocationSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -69,7 +69,7 @@ Change the parameter values of a location definition. See Create Location. Required permissions: `Locations.edit` Parameters: -- `location_id` [path, string] **required** — Location ID. Example: "225494730938493804". -- `body` [body, locations.schemas_UpdateLocationSchema] — +- `location_id` [path, string] **required**: Location ID. Example: "225494730938493804". +- `body` [body, locations.schemas_UpdateLocationSchema]: Responses: 404 Location not found, 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Log_Collection.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Log_Collection.md index 815b5d6..1796742 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Log_Collection.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Log_Collection.md @@ -11,12 +11,12 @@ Get the total number of log collection rules per agent type Required permissions: `Log Collection Rules.view` Parameters: -- `accountIds` [query, array] — List of account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `includeParents` [query, boolean] — Return rules from parent scope levels -- `includeChildren` [query, boolean] — Return filters from children scope levels +- `accountIds` [query, array]: List of account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `includeParents` [query, boolean]: Return rules from parent scope levels +- `includeChildren` [query, boolean]: Return filters from children scope levels Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -27,7 +27,7 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f Required permissions: `Log Collection Rules.delete` Parameters: -- `body` [body, log_collection.schemas.delete_schema_LogCollectionRulesDeleteSchema] — +- `body` [body, log_collection.schemas.delete_schema_LogCollectionRulesDeleteSchema]: Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -38,58 +38,58 @@ Responses: 400 Invalid user input received. See error details for further i, 200 Required permissions: `Log Collection Rules.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, createdBy, updatedAt, updatedBy, scopeId, scopeLevel, name, agentType, configurationType, collectionType, state, description, enabled, parser, scopePath, collectionPath, logPrefix, excludedLogs, collectionTags, excludedTags, uuid, eventIds, collectionPathOrChannel, levels, providers, welExcludedIds) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `scope` [query, string] (enum: group, site, account, tenant) — Scope. Example: "group". -- `scopes` [query, array] — List of scopes to filter by. Example: "group". -- `name` [query, string] — Name -- `names` [query, array] — List of names to filter by. -- `name__contains` [query, array] — Free-text filter by rule name (supports multiple) -- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers) — Agent type. Example: "windows". -- `agentTypes` [query, array] — List of agent types to filter by. Example: "windows". -- `configurationType` [query, string] (enum: collectionPath, predicate) — Configuration type. Example: "collectionPath". -- `configurationTypes` [query, array] — List of configuration types to filter by. Example: "collectionPath". -- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog) — Collection type. Example: "applicationLog". -- `collectionTypes` [query, array] — List of collection types to filter by. Example: "applicationLog". -- `state` [query, boolean] — State -- `enabled` [query, array] — Include enabled, disabled or both. Example: "True,False". -- `description__contains` [query, array] — Free-text filter by rule description (supports multiple) -- `collectionPath` [query, string] — Collection path -- `collectionPaths` [query, array] — List of collection paths to filter by. -- `collectionPath__contains` [query, array] — Free-text filter by rule collection path (supports multiple) -- `collectionTags` [query, array] — Exact match filter by collection tags (supports multiple) -- `collectionTags__contains` [query, array] — Free-text filter by rule collection tags (supports multiple) -- `excludedTags` [query, array] — Exact match filter by excluded tags (supports multiple) -- `excludedTags__contains` [query, array] — Free-text filter by rule exclued tags (supports multiple) -- `excludedLogs__contains` [query, array] — Free-text filter by rule exclued logs (supports multiple) -- `parser__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `createdBy__contains` [query, array] — Free-text filter by rule author (supports multiple) -- `updatedBy__contains` [query, array] — Free-text filter by rule last updater (supports multiple) -- `scopePath` [query, string] — Scope path -- `scopePaths` [query, array] — List of scope paths to filter by. -- `scopePath__contains` [query, array] — Free-text filter by scope path (supports multiple) -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__between` [query, string] — Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `excludedIds` [query, array] — List of IDs to exclude. Example: "225494730938493804,225494730938493915". -- `logPrefix__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `collectionPathOrChannel` [query, string] — Collection path or channel -- `collectionPathsOrChannel` [query, array] — List of collection paths to filter by. -- `collectionPathOrChannel__contains` [query, array] — Free-text filter by rule collection path or channel (supports multiple) -- `eventIds` [query, array] — Exact match filter by event Ids (supports multiple) -- `eventIds__contains` [query, array] — Free-text filter by rule eventIds (supports multiple) -- `welExcludedIds__contains` [query, array] — Free-text filter by rule exclued ids (supports multiple) -- `includeParents` [query, boolean] — Return rules from parent scope levels -- `includeChildren` [query, boolean] — Return filters from children scope levels +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, createdBy, updatedAt, updatedBy, scopeId, scopeLevel, name, agentType, configurationType, collectionType, state, description, enabled, parser, scopePath, collectionPath, logPrefix, excludedLogs, collectionTags, excludedTags, uuid, eventIds, collectionPathOrChannel, levels, providers, welExcludedIds): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `scope` [query, string] (enum: group, site, account, tenant): Scope. Example: "group". +- `scopes` [query, array]: List of scopes to filter by. Example: "group". +- `name` [query, string]: Name +- `names` [query, array]: List of names to filter by. +- `name__contains` [query, array]: Free-text filter by rule name (supports multiple) +- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers): Agent type. Example: "windows". +- `agentTypes` [query, array]: List of agent types to filter by. Example: "windows". +- `configurationType` [query, string] (enum: collectionPath, predicate): Configuration type. Example: "collectionPath". +- `configurationTypes` [query, array]: List of configuration types to filter by. Example: "collectionPath". +- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog): Collection type. Example: "applicationLog". +- `collectionTypes` [query, array]: List of collection types to filter by. Example: "applicationLog". +- `state` [query, boolean]: State +- `enabled` [query, array]: Include enabled, disabled or both. Example: "True,False". +- `description__contains` [query, array]: Free-text filter by rule description (supports multiple) +- `collectionPath` [query, string]: Collection path +- `collectionPaths` [query, array]: List of collection paths to filter by. +- `collectionPath__contains` [query, array]: Free-text filter by rule collection path (supports multiple) +- `collectionTags` [query, array]: Exact match filter by collection tags (supports multiple) +- `collectionTags__contains` [query, array]: Free-text filter by rule collection tags (supports multiple) +- `excludedTags` [query, array]: Exact match filter by excluded tags (supports multiple) +- `excludedTags__contains` [query, array]: Free-text filter by rule exclued tags (supports multiple) +- `excludedLogs__contains` [query, array]: Free-text filter by rule exclued logs (supports multiple) +- `parser__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `createdBy__contains` [query, array]: Free-text filter by rule author (supports multiple) +- `updatedBy__contains` [query, array]: Free-text filter by rule last updater (supports multiple) +- `scopePath` [query, string]: Scope path +- `scopePaths` [query, array]: List of scope paths to filter by. +- `scopePath__contains` [query, array]: Free-text filter by scope path (supports multiple) +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__between` [query, string]: Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `excludedIds` [query, array]: List of IDs to exclude. Example: "225494730938493804,225494730938493915". +- `logPrefix__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `collectionPathOrChannel` [query, string]: Collection path or channel +- `collectionPathsOrChannel` [query, array]: List of collection paths to filter by. +- `collectionPathOrChannel__contains` [query, array]: Free-text filter by rule collection path or channel (supports multiple) +- `eventIds` [query, array]: Exact match filter by event Ids (supports multiple) +- `eventIds__contains` [query, array]: Free-text filter by rule eventIds (supports multiple) +- `welExcludedIds__contains` [query, array]: Free-text filter by rule exclued ids (supports multiple) +- `includeParents` [query, boolean]: Return rules from parent scope levels +- `includeChildren` [query, boolean]: Return filters from children scope levels Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -100,7 +100,7 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f Required permissions: `Log Collection Rules.create` Parameters: -- `body` [body, log_collection.schemas.post_schema_LogCollectionRulesPostSchema] — +- `body` [body, log_collection.schemas.post_schema_LogCollectionRulesPostSchema]: Responses: 400 Invalid user input received. See error details for further i, 409 Conflict, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -111,7 +111,7 @@ Responses: 400 Invalid user input received. See error details for further i, 409 Required permissions: `Log Collection Rules.activate` Parameters: -- `body` [body, log_collection.schemas.post_schema_LogCollectionRulesActivationPostSchema] — +- `body` [body, log_collection.schemas.post_schema_LogCollectionRulesActivationPostSchema]: Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -124,51 +124,51 @@ Get a CSV file with all log collection rules according to the passed filters Required permissions: `Log Collection Rules.view` Parameters: -- `accountIds` [query, array] — List of account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `scope` [query, string] (enum: group, site, account, tenant) — Scope. Example: "group". -- `scopes` [query, array] — List of scopes to filter by. Example: "group". -- `name` [query, string] — Name -- `names` [query, array] — List of names to filter by. -- `name__contains` [query, array] — Free-text filter by rule name (supports multiple) -- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers) — Agent type. Example: "windows". -- `agentTypes` [query, array] — List of agent types to filter by. Example: "windows". -- `configurationType` [query, string] (enum: collectionPath, predicate) — Configuration type. Example: "collectionPath". -- `configurationTypes` [query, array] — List of configuration types to filter by. Example: "collectionPath". -- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog) — Collection type. Example: "applicationLog". -- `collectionTypes` [query, array] — List of collection types to filter by. Example: "applicationLog". -- `state` [query, boolean] — State -- `enabled` [query, array] — Include enabled, disabled or both. Example: "True,False". -- `description__contains` [query, array] — Free-text filter by rule description (supports multiple) -- `collectionPath` [query, string] — Collection path -- `collectionPaths` [query, array] — List of collection paths to filter by. -- `collectionPath__contains` [query, array] — Free-text filter by rule collection path (supports multiple) -- `collectionTags` [query, array] — Exact match filter by collection tags (supports multiple) -- `collectionTags__contains` [query, array] — Free-text filter by rule collection tags (supports multiple) -- `excludedTags` [query, array] — Exact match filter by excluded tags (supports multiple) -- `excludedTags__contains` [query, array] — Free-text filter by rule exclued tags (supports multiple) -- `excludedLogs__contains` [query, array] — Free-text filter by rule exclued logs (supports multiple) -- `parser__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `createdBy__contains` [query, array] — Free-text filter by rule author (supports multiple) -- `updatedBy__contains` [query, array] — Free-text filter by rule last updater (supports multiple) -- `scopePath` [query, string] — Scope path -- `scopePaths` [query, array] — List of scope paths to filter by. -- `scopePath__contains` [query, array] — Free-text filter by scope path (supports multiple) -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__between` [query, string] — Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `excludedIds` [query, array] — List of IDs to exclude. Example: "225494730938493804,225494730938493915". -- `logPrefix__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `collectionPathOrChannel` [query, string] — Collection path or channel -- `collectionPathsOrChannel` [query, array] — List of collection paths to filter by. -- `collectionPathOrChannel__contains` [query, array] — Free-text filter by rule collection path or channel (supports multiple) -- `eventIds` [query, array] — Exact match filter by event Ids (supports multiple) -- `eventIds__contains` [query, array] — Free-text filter by rule eventIds (supports multiple) -- `welExcludedIds__contains` [query, array] — Free-text filter by rule exclued ids (supports multiple) -- `includeParents` [query, boolean] — Return rules from parent scope levels -- `includeChildren` [query, boolean] — Return filters from children scope levels +- `accountIds` [query, array]: List of account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `scope` [query, string] (enum: group, site, account, tenant): Scope. Example: "group". +- `scopes` [query, array]: List of scopes to filter by. Example: "group". +- `name` [query, string]: Name +- `names` [query, array]: List of names to filter by. +- `name__contains` [query, array]: Free-text filter by rule name (supports multiple) +- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers): Agent type. Example: "windows". +- `agentTypes` [query, array]: List of agent types to filter by. Example: "windows". +- `configurationType` [query, string] (enum: collectionPath, predicate): Configuration type. Example: "collectionPath". +- `configurationTypes` [query, array]: List of configuration types to filter by. Example: "collectionPath". +- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog): Collection type. Example: "applicationLog". +- `collectionTypes` [query, array]: List of collection types to filter by. Example: "applicationLog". +- `state` [query, boolean]: State +- `enabled` [query, array]: Include enabled, disabled or both. Example: "True,False". +- `description__contains` [query, array]: Free-text filter by rule description (supports multiple) +- `collectionPath` [query, string]: Collection path +- `collectionPaths` [query, array]: List of collection paths to filter by. +- `collectionPath__contains` [query, array]: Free-text filter by rule collection path (supports multiple) +- `collectionTags` [query, array]: Exact match filter by collection tags (supports multiple) +- `collectionTags__contains` [query, array]: Free-text filter by rule collection tags (supports multiple) +- `excludedTags` [query, array]: Exact match filter by excluded tags (supports multiple) +- `excludedTags__contains` [query, array]: Free-text filter by rule exclued tags (supports multiple) +- `excludedLogs__contains` [query, array]: Free-text filter by rule exclued logs (supports multiple) +- `parser__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `createdBy__contains` [query, array]: Free-text filter by rule author (supports multiple) +- `updatedBy__contains` [query, array]: Free-text filter by rule last updater (supports multiple) +- `scopePath` [query, string]: Scope path +- `scopePaths` [query, array]: List of scope paths to filter by. +- `scopePath__contains` [query, array]: Free-text filter by scope path (supports multiple) +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__between` [query, string]: Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `excludedIds` [query, array]: List of IDs to exclude. Example: "225494730938493804,225494730938493915". +- `logPrefix__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `collectionPathOrChannel` [query, string]: Collection path or channel +- `collectionPathsOrChannel` [query, array]: List of collection paths to filter by. +- `collectionPathOrChannel__contains` [query, array]: Free-text filter by rule collection path or channel (supports multiple) +- `eventIds` [query, array]: Exact match filter by event Ids (supports multiple) +- `eventIds__contains` [query, array]: Free-text filter by rule eventIds (supports multiple) +- `welExcludedIds__contains` [query, array]: Free-text filter by rule exclued ids (supports multiple) +- `includeParents` [query, boolean]: Return rules from parent scope levels +- `includeChildren` [query, boolean]: Return filters from children scope levels Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -181,52 +181,52 @@ Get a CSV file with all log collection rules according to the passed filters Required permissions: `Log Collection Rules.view` Parameters: -- `agent_type` [path, string] **required** — Agent type -- `accountIds` [query, array] — List of account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `scope` [query, string] (enum: group, site, account, tenant) — Scope. Example: "group". -- `scopes` [query, array] — List of scopes to filter by. Example: "group". -- `name` [query, string] — Name -- `names` [query, array] — List of names to filter by. -- `name__contains` [query, array] — Free-text filter by rule name (supports multiple) -- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers) — Agent type. Example: "windows". -- `agentTypes` [query, array] — List of agent types to filter by. Example: "windows". -- `configurationType` [query, string] (enum: collectionPath, predicate) — Configuration type. Example: "collectionPath". -- `configurationTypes` [query, array] — List of configuration types to filter by. Example: "collectionPath". -- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog) — Collection type. Example: "applicationLog". -- `collectionTypes` [query, array] — List of collection types to filter by. Example: "applicationLog". -- `state` [query, boolean] — State -- `enabled` [query, array] — Include enabled, disabled or both. Example: "True,False". -- `description__contains` [query, array] — Free-text filter by rule description (supports multiple) -- `collectionPath` [query, string] — Collection path -- `collectionPaths` [query, array] — List of collection paths to filter by. -- `collectionPath__contains` [query, array] — Free-text filter by rule collection path (supports multiple) -- `collectionTags` [query, array] — Exact match filter by collection tags (supports multiple) -- `collectionTags__contains` [query, array] — Free-text filter by rule collection tags (supports multiple) -- `excludedTags` [query, array] — Exact match filter by excluded tags (supports multiple) -- `excludedTags__contains` [query, array] — Free-text filter by rule exclued tags (supports multiple) -- `excludedLogs__contains` [query, array] — Free-text filter by rule exclued logs (supports multiple) -- `parser__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `createdBy__contains` [query, array] — Free-text filter by rule author (supports multiple) -- `updatedBy__contains` [query, array] — Free-text filter by rule last updater (supports multiple) -- `scopePath` [query, string] — Scope path -- `scopePaths` [query, array] — List of scope paths to filter by. -- `scopePath__contains` [query, array] — Free-text filter by scope path (supports multiple) -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__between` [query, string] — Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `excludedIds` [query, array] — List of IDs to exclude. Example: "225494730938493804,225494730938493915". -- `logPrefix__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `collectionPathOrChannel` [query, string] — Collection path or channel -- `collectionPathsOrChannel` [query, array] — List of collection paths to filter by. -- `collectionPathOrChannel__contains` [query, array] — Free-text filter by rule collection path or channel (supports multiple) -- `eventIds` [query, array] — Exact match filter by event Ids (supports multiple) -- `eventIds__contains` [query, array] — Free-text filter by rule eventIds (supports multiple) -- `welExcludedIds__contains` [query, array] — Free-text filter by rule exclued ids (supports multiple) -- `includeParents` [query, boolean] — Return rules from parent scope levels -- `includeChildren` [query, boolean] — Return filters from children scope levels +- `agent_type` [path, string] **required**: Agent type +- `accountIds` [query, array]: List of account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `scope` [query, string] (enum: group, site, account, tenant): Scope. Example: "group". +- `scopes` [query, array]: List of scopes to filter by. Example: "group". +- `name` [query, string]: Name +- `names` [query, array]: List of names to filter by. +- `name__contains` [query, array]: Free-text filter by rule name (supports multiple) +- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers): Agent type. Example: "windows". +- `agentTypes` [query, array]: List of agent types to filter by. Example: "windows". +- `configurationType` [query, string] (enum: collectionPath, predicate): Configuration type. Example: "collectionPath". +- `configurationTypes` [query, array]: List of configuration types to filter by. Example: "collectionPath". +- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog): Collection type. Example: "applicationLog". +- `collectionTypes` [query, array]: List of collection types to filter by. Example: "applicationLog". +- `state` [query, boolean]: State +- `enabled` [query, array]: Include enabled, disabled or both. Example: "True,False". +- `description__contains` [query, array]: Free-text filter by rule description (supports multiple) +- `collectionPath` [query, string]: Collection path +- `collectionPaths` [query, array]: List of collection paths to filter by. +- `collectionPath__contains` [query, array]: Free-text filter by rule collection path (supports multiple) +- `collectionTags` [query, array]: Exact match filter by collection tags (supports multiple) +- `collectionTags__contains` [query, array]: Free-text filter by rule collection tags (supports multiple) +- `excludedTags` [query, array]: Exact match filter by excluded tags (supports multiple) +- `excludedTags__contains` [query, array]: Free-text filter by rule exclued tags (supports multiple) +- `excludedLogs__contains` [query, array]: Free-text filter by rule exclued logs (supports multiple) +- `parser__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `createdBy__contains` [query, array]: Free-text filter by rule author (supports multiple) +- `updatedBy__contains` [query, array]: Free-text filter by rule last updater (supports multiple) +- `scopePath` [query, string]: Scope path +- `scopePaths` [query, array]: List of scope paths to filter by. +- `scopePath__contains` [query, array]: Free-text filter by scope path (supports multiple) +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__between` [query, string]: Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `excludedIds` [query, array]: List of IDs to exclude. Example: "225494730938493804,225494730938493915". +- `logPrefix__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `collectionPathOrChannel` [query, string]: Collection path or channel +- `collectionPathsOrChannel` [query, array]: List of collection paths to filter by. +- `collectionPathOrChannel__contains` [query, array]: Free-text filter by rule collection path or channel (supports multiple) +- `eventIds` [query, array]: Exact match filter by event Ids (supports multiple) +- `eventIds__contains` [query, array]: Free-text filter by rule eventIds (supports multiple) +- `welExcludedIds__contains` [query, array]: Free-text filter by rule exclued ids (supports multiple) +- `includeParents` [query, boolean]: Return rules from parent scope levels +- `includeChildren` [query, boolean]: Return filters from children scope levels Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -237,59 +237,59 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f Required permissions: `Log Collection Rules.view` Parameters: -- `agent_type` [path, string] **required** — Agent type -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, createdBy, updatedAt, updatedBy, scopeId, scopeLevel, name, agentType, configurationType, collectionType, state, description, enabled, parser, scopePath, collectionPath, logPrefix, excludedLogs, collectionTags, excludedTags, uuid, eventIds, collectionPathOrChannel, levels, providers, welExcludedIds) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `scope` [query, string] (enum: group, site, account, tenant) — Scope. Example: "group". -- `scopes` [query, array] — List of scopes to filter by. Example: "group". -- `name` [query, string] — Name -- `names` [query, array] — List of names to filter by. -- `name__contains` [query, array] — Free-text filter by rule name (supports multiple) -- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers) — Agent type. Example: "windows". -- `agentTypes` [query, array] — List of agent types to filter by. Example: "windows". -- `configurationType` [query, string] (enum: collectionPath, predicate) — Configuration type. Example: "collectionPath". -- `configurationTypes` [query, array] — List of configuration types to filter by. Example: "collectionPath". -- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog) — Collection type. Example: "applicationLog". -- `collectionTypes` [query, array] — List of collection types to filter by. Example: "applicationLog". -- `state` [query, boolean] — State -- `enabled` [query, array] — Include enabled, disabled or both. Example: "True,False". -- `description__contains` [query, array] — Free-text filter by rule description (supports multiple) -- `collectionPath` [query, string] — Collection path -- `collectionPaths` [query, array] — List of collection paths to filter by. -- `collectionPath__contains` [query, array] — Free-text filter by rule collection path (supports multiple) -- `collectionTags` [query, array] — Exact match filter by collection tags (supports multiple) -- `collectionTags__contains` [query, array] — Free-text filter by rule collection tags (supports multiple) -- `excludedTags` [query, array] — Exact match filter by excluded tags (supports multiple) -- `excludedTags__contains` [query, array] — Free-text filter by rule exclued tags (supports multiple) -- `excludedLogs__contains` [query, array] — Free-text filter by rule exclued logs (supports multiple) -- `parser__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `createdBy__contains` [query, array] — Free-text filter by rule author (supports multiple) -- `updatedBy__contains` [query, array] — Free-text filter by rule last updater (supports multiple) -- `scopePath` [query, string] — Scope path -- `scopePaths` [query, array] — List of scope paths to filter by. -- `scopePath__contains` [query, array] — Free-text filter by scope path (supports multiple) -- `createdAt__between` [query, string] — Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `updatedAt__between` [query, string] — Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". -- `excludedIds` [query, array] — List of IDs to exclude. Example: "225494730938493804,225494730938493915". -- `logPrefix__contains` [query, array] — Free-text filter by rule parser (supports multiple) -- `collectionPathOrChannel` [query, string] — Collection path or channel -- `collectionPathsOrChannel` [query, array] — List of collection paths to filter by. -- `collectionPathOrChannel__contains` [query, array] — Free-text filter by rule collection path or channel (supports multiple) -- `eventIds` [query, array] — Exact match filter by event Ids (supports multiple) -- `eventIds__contains` [query, array] — Free-text filter by rule eventIds (supports multiple) -- `welExcludedIds__contains` [query, array] — Free-text filter by rule exclued ids (supports multiple) -- `includeParents` [query, boolean] — Return rules from parent scope levels -- `includeChildren` [query, boolean] — Return filters from children scope levels +- `agent_type` [path, string] **required**: Agent type +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, createdBy, updatedAt, updatedBy, scopeId, scopeLevel, name, agentType, configurationType, collectionType, state, description, enabled, parser, scopePath, collectionPath, logPrefix, excludedLogs, collectionTags, excludedTags, uuid, eventIds, collectionPathOrChannel, levels, providers, welExcludedIds): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `scope` [query, string] (enum: group, site, account, tenant): Scope. Example: "group". +- `scopes` [query, array]: List of scopes to filter by. Example: "group". +- `name` [query, string]: Name +- `names` [query, array]: List of names to filter by. +- `name__contains` [query, array]: Free-text filter by rule name (supports multiple) +- `agentType` [query, string] (enum: windows, linux, macos, k8s, k8sAndContainers): Agent type. Example: "windows". +- `agentTypes` [query, array]: List of agent types to filter by. Example: "windows". +- `configurationType` [query, string] (enum: collectionPath, predicate): Configuration type. Example: "collectionPath". +- `configurationTypes` [query, array]: List of configuration types to filter by. Example: "collectionPath". +- `collectionType` [query, string] (enum: applicationLog, unifiedLogging, windowsEventLog, flatFileLog): Collection type. Example: "applicationLog". +- `collectionTypes` [query, array]: List of collection types to filter by. Example: "applicationLog". +- `state` [query, boolean]: State +- `enabled` [query, array]: Include enabled, disabled or both. Example: "True,False". +- `description__contains` [query, array]: Free-text filter by rule description (supports multiple) +- `collectionPath` [query, string]: Collection path +- `collectionPaths` [query, array]: List of collection paths to filter by. +- `collectionPath__contains` [query, array]: Free-text filter by rule collection path (supports multiple) +- `collectionTags` [query, array]: Exact match filter by collection tags (supports multiple) +- `collectionTags__contains` [query, array]: Free-text filter by rule collection tags (supports multiple) +- `excludedTags` [query, array]: Exact match filter by excluded tags (supports multiple) +- `excludedTags__contains` [query, array]: Free-text filter by rule exclued tags (supports multiple) +- `excludedLogs__contains` [query, array]: Free-text filter by rule exclued logs (supports multiple) +- `parser__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `createdBy__contains` [query, array]: Free-text filter by rule author (supports multiple) +- `updatedBy__contains` [query, array]: Free-text filter by rule last updater (supports multiple) +- `scopePath` [query, string]: Scope path +- `scopePaths` [query, array]: List of scope paths to filter by. +- `scopePath__contains` [query, array]: Free-text filter by scope path (supports multiple) +- `createdAt__between` [query, string]: Date range for creation time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `updatedAt__between` [query, string]: Date range for last update time (format: -, inclusive). Example: "1514978890136-1514978650130". +- `excludedIds` [query, array]: List of IDs to exclude. Example: "225494730938493804,225494730938493915". +- `logPrefix__contains` [query, array]: Free-text filter by rule parser (supports multiple) +- `collectionPathOrChannel` [query, string]: Collection path or channel +- `collectionPathsOrChannel` [query, array]: List of collection paths to filter by. +- `collectionPathOrChannel__contains` [query, array]: Free-text filter by rule collection path or channel (supports multiple) +- `eventIds` [query, array]: Exact match filter by event Ids (supports multiple) +- `eventIds__contains` [query, array]: Free-text filter by rule eventIds (supports multiple) +- `welExcludedIds__contains` [query, array]: Free-text filter by rule exclued ids (supports multiple) +- `includeParents` [query, boolean]: Return rules from parent scope levels +- `includeChildren` [query, boolean]: Return filters from children scope levels Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -300,7 +300,7 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f Required permissions: `Log Collection Rules.edit` Parameters: -- `rule_id` [path, string] **required** — Rule id -- `body` [body, log_collection.schemas.post_schema_LogCollectionRulesPostSchema] — +- `rule_id` [path, string] **required**: Rule id +- `body` [body, log_collection.schemas.post_schema_LogCollectionRulesPostSchema]: Responses: 400 Invalid user input received. See error details for further i, 409 Conflict, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Long_Running_Query.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Long_Running_Query.md index 6e264db..63a219c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Long_Running_Query.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Long_Running_Query.md @@ -13,7 +13,7 @@ Returns a `QueryResult` containing the query identifier, status, and, if the que Required permissions: `Skylight Query API.view` Parameters: -- `body` [body, object] — +- `body` [body, object]: Responses: 200 Query launched successfully. @@ -26,8 +26,8 @@ Remove query from the list of launched queries. Clients are required to call thi Required permissions: `Skylight Query API.view` Parameters: -- `id` [path, string] **required** — The unique query identifier -- `X-Dataset-Query-Forward-Tag` [header, string] **required** — routing header +- `id` [path, string] **required**: The unique query identifier +- `X-Dataset-Query-Forward-Tag` [header, string] **required**: routing header Responses: 204 Query has been removed successfully @@ -40,8 +40,8 @@ Poll a previously launched query by its unique identifier. Responses will return Required permissions: `Skylight Query API.view` Parameters: -- `id` [path, string] **required** — The unique query identifier -- `lastStepSeen` [query, integer] **required** — The step to start return result from -- `X-Dataset-Query-Forward-Tag` [header, string] **required** — routing header +- `id` [path, string] **required**: The unique query identifier +- `lastStepSeen` [query, integer] **required**: The step to start return result from +- `X-Dataset-Query-Forward-Tag` [header, string] **required**: routing header Responses: 200 Results retrieved successfully., 404 If no launched query found for the combination of query id + diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Mobile_Integration.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Mobile_Integration.md index 40d64b8..b4f390c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Mobile_Integration.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Mobile_Integration.md @@ -11,27 +11,27 @@ Devices - Get list devices for specific scope Required permissions: `Mobile Endpoints.view` Parameters: -- `privileges__in` [query, array] — Include devices only with given privileges. Example: "none". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `model__contains` [query, string] — Include devices by models that contain text -- `trackingId1__contains` [query, string] — Include devices by external tracking IDs that contain text -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `osVersion__contains` [query, string] — Include devices by os version that contain text -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `user__contains` [query, string] — Include devices by users that contain text -- `trackingId2__contains` [query, string] — Include devices by another external tracking IDs that contain text -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `platform__in` [query, array] — Include devices only of given platforms. Example: "android". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `appVersion__in` [query, array] — Include devices with given app versions. Example: "2.5.1.1320". -- `healthState__in` [query, array] — Include devices only with given health state. Example: "normal". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `sortBy` [query, string] (enum: id, appVersion, registeredOn, lastActiveOn, healthState) — The column to sort the results by. Example: "id". -- `deviceId__contains` [query, string] — Include devices by device IDs that contain text +- `privileges__in` [query, array]: Include devices only with given privileges. Example: "none". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `model__contains` [query, string]: Include devices by models that contain text +- `trackingId1__contains` [query, string]: Include devices by external tracking IDs that contain text +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `osVersion__contains` [query, string]: Include devices by os version that contain text +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `user__contains` [query, string]: Include devices by users that contain text +- `trackingId2__contains` [query, string]: Include devices by another external tracking IDs that contain text +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `platform__in` [query, array]: Include devices only of given platforms. Example: "android". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `appVersion__in` [query, array]: Include devices with given app versions. Example: "2.5.1.1320". +- `healthState__in` [query, array]: Include devices only with given health state. Example: "normal". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `sortBy` [query, string] (enum: id, appVersion, registeredOn, lastActiveOn, healthState): The column to sort the results by. Example: "id". +- `deviceId__contains` [query, string]: Include devices by device IDs that contain text Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -44,26 +44,26 @@ Incidents - Get list of incidents Required permissions: `Mobile Alerts.view, Mobile Threats.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `user__contains` [query, string] — Include incidents by user email that contain text -- `deviceId__in` [query, array] — Include incidents only of given device ids. Example: "a,b,c,-,1,2,3,-,4,5,6". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `statusAction__in` [query, array] — Include incident only of given status actions. Example: "conditional_access". -- `incidentStatus__in` [query, array] — Include incident only of given incident statuses. Example: "unresolved". -- `severity__in` [query, array] — Include incident only of given severities. Example: "low". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `analystVerdict__in` [query, array] — Include incident only of given analyst verdicts. Example: "true_positive". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `status__in` [query, array] — Include incident only of given statuses. Example: "not_mitigated". -- `kind__in` [query, array] — Include incidents only of given kinds. Example: "t,h,r,e,a,t". -- `sortBy` [query, string] (enum: id, reportedTime, severity, status) — The column to sort the results by. Example: "id". -- `deviceId__contains` [query, string] — Include incidents by device IDs that contain text +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `user__contains` [query, string]: Include incidents by user email that contain text +- `deviceId__in` [query, array]: Include incidents only of given device ids. Example: "a,b,c,-,1,2,3,-,4,5,6". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `statusAction__in` [query, array]: Include incident only of given status actions. Example: "conditional_access". +- `incidentStatus__in` [query, array]: Include incident only of given incident statuses. Example: "unresolved". +- `severity__in` [query, array]: Include incident only of given severities. Example: "low". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `analystVerdict__in` [query, array]: Include incident only of given analyst verdicts. Example: "true_positive". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `status__in` [query, array]: Include incident only of given statuses. Example: "not_mitigated". +- `kind__in` [query, array]: Include incidents only of given kinds. Example: "t,h,r,e,a,t". +- `sortBy` [query, string] (enum: id, reportedTime, severity, status): The column to sort the results by. Example: "id". +- `deviceId__contains` [query, string]: Include incidents by device IDs that contain text Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -76,10 +76,10 @@ Gets MSSP partner with the first admin user by scope Required permissions: `Mobile Integrations.view` Parameters: -- `tenant` [query, boolean] — Indicates a tenant scope request -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 MSSP partner retrieved, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -92,7 +92,7 @@ Provision a new MSSP partner and create an admin user for the partner account Required permissions: `Mobile Integrations.manage` Parameters: -- `body` [body, v2_1.provisioning.schemas_ProvisionWithUserRequestWrapper] — +- `body` [body, v2_1.provisioning.schemas_ProvisionWithUserRequestWrapper]: Responses: 403 403 - You do not have authorization to complete request., 401 Unauthorized access - please sign in and retry., 400 Invalid user input received. See error details for further i, 201 MSSP partner provisioned and admin user created @@ -105,10 +105,10 @@ Checks if tenant can be provisioned by scope Required permissions: `Mobile Integrations.view` Parameters: -- `tenant` [query, boolean] — Indicates a tenant scope request -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Tenant retrieved, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -121,10 +121,10 @@ Gets MSSP partner key by scope Required permissions: `Mobile Integrations.view` Parameters: -- `tenant` [query, boolean] — Indicates a tenant scope request -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Partner key retrieved successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -137,7 +137,7 @@ Persists MSSP partner key - client ID and secret - for future customer provision Required permissions: `Mobile Integrations.manage` Parameters: -- `body` [body, v2_1.provisioning.schemas_PartnerKeyRequestWrapper] — +- `body` [body, v2_1.provisioning.schemas_PartnerKeyRequestWrapper]: Responses: 403 403 - You do not have authorization to complete request., 401 Unauthorized access - please sign in and retry., 400 Invalid user input received. See error details for further i, 201 Partner key persisted successfully. @@ -150,7 +150,7 @@ Updates MSSP partner key - client ID and secret - for future customer provisioni Required permissions: `Mobile Integrations.manage` Parameters: -- `body` [body, v2_1.provisioning.schemas_PartnerKeyRequestWrapper] — +- `body` [body, v2_1.provisioning.schemas_PartnerKeyRequestWrapper]: Responses: 404 404 - Partner key not found., 403 403 - You do not have authorization to complete request., 401 Unauthorized access - please sign in and retry., 400 Invalid user input received. See error details for further i, 201 Partner key updated successfully. @@ -163,8 +163,8 @@ Provision - Delete MSSP partner key Required permissions: `Mobile Integrations.manage` Parameters: -- `client_id` [path, string] **required** — Client id -- `body` [body, v2_1.provisioning.schemas_DeletePartnerKeyRequestSchema] — +- `client_id` [path, string] **required**: Client id +- `body` [body, v2_1.provisioning.schemas_DeletePartnerKeyRequestSchema]: Responses: 404 Partner key not found, 204 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -177,10 +177,10 @@ Gets tenant with users by scope Required permissions: `Mobile Integrations.view` Parameters: -- `tenant` [query, boolean] — Indicates a tenant scope request -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Tenant retrieved, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -193,6 +193,6 @@ Provision a new tenant and create an admin user for the tenant account Required permissions: `Mobile Integrations.manage` Parameters: -- `body` [body, v2_1.provisioning.schemas_ProvisionWithUserRequestWrapper] — +- `body` [body, v2_1.provisioning.schemas_ProvisionWithUserRequestWrapper]: Responses: 403 403 - You do not have authorization to complete request., 401 Unauthorized access - please sign in and retry., 400 Invalid user input received. See error details for further i, 201 Tenant provisioned and admin user created diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery.md index 17261dc..fd950a8 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery.md @@ -11,7 +11,7 @@ Change the review state of more than one device. Required permissions: `Ranger.applyDeviceReview` Parameters: -- `body` [body, schemas_DeviceReviewSchema] — +- `body` [body, schemas_DeviceReviewSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,8 +24,8 @@ Change the review state of one device. Required permissions: `Ranger.applyDeviceReview` Parameters: -- `inventory_id` [path, string] **required** — Inventory ID. Example: "225494730938493804". -- `body` [body, schemas_DeviceReviewSchemaPut] — +- `inventory_id` [path, string] **required**: Inventory ID. Example: "225494730938493804". +- `body` [body, schemas_DeviceReviewSchemaPut]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -38,55 +38,55 @@ Export Network Discovery data to csv. You can set filters to get only relevant d Required permissions: `Ranger.view` Parameters: -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `osType` [query, string] — OS type -- `osTypes` [query, array] — Included OS types -- `period` [query, string] (enum: latest, last12h, last24h, last3d, last7d) — Period. Example: "latest". -- `osName` [query, string] — Os name -- `osVersion` [query, string] — Os version -- `localIp` [query, string] — Search using local IP -- `externalIp` [query, string] — Search using external IP -- `networkName` [query, string] — Search using network name -- `ids` [query, array] — List of device ids. Example: "225494730938493804,225494730938493915". -- `deviceType` [query, string] — Device type. Example: "Server/Workstation/...". -- `deviceTypes` [query, array] — Device types -- `macAddress` [query, string] — A mac address to search for -- `gatewayMacAddress` [query, string] — A gateway mac address to search for -- `domains` [query, array] — Included network domains. Example: "mybusiness,workgroup". -- `siteNames` [query, array] — Included site names. Example: "Office,Test". -- `firstSeen__lt` [query, string] — Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__lte` [query, string] — Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gt` [query, string] — Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gte` [query, string] — Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__between` [query, string] — Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `lastSeen__lt` [query, string] — Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__lte` [query, string] — Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gt` [query, string] — Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gte` [query, string] — Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__between` [query, string] — Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `agentIds` [query, array] — List of agent ids. Example: "225494730938493804,225494730938493915". -- `managedState` [query, string] — Is the device managed -- `managedStates` [query, array] — Is the device managed -- `manufacturer` [query, string] — Manufacturer of the device or network interface -- `discoveryMethods` [query, array] — Discovery methods -- `knownFingerprintingData` [query, array] — Known fingerprinting data. Example: "Manufacturer". -- `hostnames` [query, array] — Hostnames -- `deviceReviews` [query, array] — The device review state -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". -- `localIp__contains` [query, array] — Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `subnetAddress__contains` [query, array] — Free-text filter by Subnet Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `manufacturer__contains` [query, array] — Free-text filter by manufacturer (supports multiple values). Example: "Company". -- `macAddress__contains` [query, array] — Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". -- `gatewayMacAddress__contains` [query, array] — Free-text filter by gateway mac address (supports multiple values). Example: "aa:ee:b1". -- `tcpPorts__contains` [query, array] — Free-text filter by tcp port (supports multiple values). Example: "80,24". -- `udpPorts__contains` [query, array] — Free-text filter by udp port (supports multiple values). Example: "137,2002". -- `hostnames__contains` [query, array] — Free-text filter by hostname (supports multiple values). Example: "s1_host,SomeHost". -- `networkName__contains` [query, array] — Free-text filter by network name (supports multiple values). Example: "Office". -- `deviceFunction__contains` [query, array] — Free-text filter by device function (supports multiple values). Example: "security,mobile". -- `tagName__contains` [query, array] — Free-text filter by tag name (supports multiple values). Example: "iot". -- `query` [query, string] — Query +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `osType` [query, string]: OS type +- `osTypes` [query, array]: Included OS types +- `period` [query, string] (enum: latest, last12h, last24h, last3d, last7d): Period. Example: "latest". +- `osName` [query, string]: Os name +- `osVersion` [query, string]: Os version +- `localIp` [query, string]: Search using local IP +- `externalIp` [query, string]: Search using external IP +- `networkName` [query, string]: Search using network name +- `ids` [query, array]: List of device ids. Example: "225494730938493804,225494730938493915". +- `deviceType` [query, string]: Device type. Example: "Server/Workstation/...". +- `deviceTypes` [query, array]: Device types +- `macAddress` [query, string]: A mac address to search for +- `gatewayMacAddress` [query, string]: A gateway mac address to search for +- `domains` [query, array]: Included network domains. Example: "mybusiness,workgroup". +- `siteNames` [query, array]: Included site names. Example: "Office,Test". +- `firstSeen__lt` [query, string]: Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__lte` [query, string]: Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gt` [query, string]: Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gte` [query, string]: Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__between` [query, string]: Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `lastSeen__lt` [query, string]: Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__lte` [query, string]: Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gt` [query, string]: Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gte` [query, string]: Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__between` [query, string]: Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `agentIds` [query, array]: List of agent ids. Example: "225494730938493804,225494730938493915". +- `managedState` [query, string]: Is the device managed +- `managedStates` [query, array]: Is the device managed +- `manufacturer` [query, string]: Manufacturer of the device or network interface +- `discoveryMethods` [query, array]: Discovery methods +- `knownFingerprintingData` [query, array]: Known fingerprinting data. Example: "Manufacturer". +- `hostnames` [query, array]: Hostnames +- `deviceReviews` [query, array]: The device review state +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". +- `localIp__contains` [query, array]: Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `subnetAddress__contains` [query, array]: Free-text filter by Subnet Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `manufacturer__contains` [query, array]: Free-text filter by manufacturer (supports multiple values). Example: "Company". +- `macAddress__contains` [query, array]: Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". +- `gatewayMacAddress__contains` [query, array]: Free-text filter by gateway mac address (supports multiple values). Example: "aa:ee:b1". +- `tcpPorts__contains` [query, array]: Free-text filter by tcp port (supports multiple values). Example: "80,24". +- `udpPorts__contains` [query, array]: Free-text filter by udp port (supports multiple values). Example: "137,2002". +- `hostnames__contains` [query, array]: Free-text filter by hostname (supports multiple values). Example: "s1_host,SomeHost". +- `networkName__contains` [query, array]: Free-text filter by network name (supports multiple values). Example: "Office". +- `deviceFunction__contains` [query, array]: Free-text filter by device function (supports multiple values). Example: "security,mobile". +- `tagName__contains` [query, array]: Free-text filter by tag name (supports multiple values). Example: "iot". +- `query` [query, string]: Query Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -99,8 +99,8 @@ Network Discovery gives full visibility of all devices connected to your network Required permissions: `Ranger.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -113,7 +113,7 @@ Change the Network Discovery Settings. Best Practice: Get the current settings b Required permissions: `Ranger.manageNetworkDiscoverySettings` Parameters: -- `body` [body, schemas_PutRangerSchema] — +- `body` [body, schemas_PutRangerSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -126,62 +126,62 @@ Get the data for each row in the Network Discovery Device Inventory Table. Best Required permissions: `Ranger.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: osType, osName, id, deviceType, osVersion, managedState, manufacturer, firstSeen, lastSeen, subnetAddress, gatewayMacAddress, macAddress, localIp, externalIp, archived, networkName, deviceReview, domain, hasUserLabel) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `osType` [query, string] — OS type -- `osTypes` [query, array] — Included OS types -- `period` [query, string] (enum: latest, last12h, last24h, last3d, last7d) — Period. Example: "latest". -- `osName` [query, string] — Os name -- `osVersion` [query, string] — Os version -- `localIp` [query, string] — Search using local IP -- `externalIp` [query, string] — Search using external IP -- `networkName` [query, string] — Search using network name -- `ids` [query, array] — List of device ids. Example: "225494730938493804,225494730938493915". -- `deviceType` [query, string] — Device type. Example: "Server/Workstation/...". -- `deviceTypes` [query, array] — Device types -- `macAddress` [query, string] — A mac address to search for -- `gatewayMacAddress` [query, string] — A gateway mac address to search for -- `domains` [query, array] — Included network domains. Example: "mybusiness,workgroup". -- `siteNames` [query, array] — Included site names. Example: "Office,Test". -- `firstSeen__lt` [query, string] — Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__lte` [query, string] — Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gt` [query, string] — Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gte` [query, string] — Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__between` [query, string] — Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `lastSeen__lt` [query, string] — Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__lte` [query, string] — Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gt` [query, string] — Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gte` [query, string] — Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__between` [query, string] — Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `agentIds` [query, array] — List of agent ids. Example: "225494730938493804,225494730938493915". -- `managedState` [query, string] — Is the device managed -- `managedStates` [query, array] — Is the device managed -- `manufacturer` [query, string] — Manufacturer of the device or network interface -- `discoveryMethods` [query, array] — Discovery methods -- `knownFingerprintingData` [query, array] — Known fingerprinting data. Example: "Manufacturer". -- `hostnames` [query, array] — Hostnames -- `deviceReviews` [query, array] — The device review state -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". -- `localIp__contains` [query, array] — Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `subnetAddress__contains` [query, array] — Free-text filter by Subnet Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `manufacturer__contains` [query, array] — Free-text filter by manufacturer (supports multiple values). Example: "Company". -- `macAddress__contains` [query, array] — Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". -- `gatewayMacAddress__contains` [query, array] — Free-text filter by gateway mac address (supports multiple values). Example: "aa:ee:b1". -- `tcpPorts__contains` [query, array] — Free-text filter by tcp port (supports multiple values). Example: "80,24". -- `udpPorts__contains` [query, array] — Free-text filter by udp port (supports multiple values). Example: "137,2002". -- `hostnames__contains` [query, array] — Free-text filter by hostname (supports multiple values). Example: "s1_host,SomeHost". -- `networkName__contains` [query, array] — Free-text filter by network name (supports multiple values). Example: "Office". -- `deviceFunction__contains` [query, array] — Free-text filter by device function (supports multiple values). Example: "security,mobile". -- `tagName__contains` [query, array] — Free-text filter by tag name (supports multiple values). Example: "iot". -- `query` [query, string] — Query +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: osType, osName, id, deviceType, osVersion, managedState, manufacturer, firstSeen, lastSeen, subnetAddress, gatewayMacAddress, macAddress, localIp, externalIp, archived, networkName, deviceReview, domain, hasUserLabel): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `osType` [query, string]: OS type +- `osTypes` [query, array]: Included OS types +- `period` [query, string] (enum: latest, last12h, last24h, last3d, last7d): Period. Example: "latest". +- `osName` [query, string]: Os name +- `osVersion` [query, string]: Os version +- `localIp` [query, string]: Search using local IP +- `externalIp` [query, string]: Search using external IP +- `networkName` [query, string]: Search using network name +- `ids` [query, array]: List of device ids. Example: "225494730938493804,225494730938493915". +- `deviceType` [query, string]: Device type. Example: "Server/Workstation/...". +- `deviceTypes` [query, array]: Device types +- `macAddress` [query, string]: A mac address to search for +- `gatewayMacAddress` [query, string]: A gateway mac address to search for +- `domains` [query, array]: Included network domains. Example: "mybusiness,workgroup". +- `siteNames` [query, array]: Included site names. Example: "Office,Test". +- `firstSeen__lt` [query, string]: Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__lte` [query, string]: Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gt` [query, string]: Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gte` [query, string]: Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__between` [query, string]: Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `lastSeen__lt` [query, string]: Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__lte` [query, string]: Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gt` [query, string]: Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gte` [query, string]: Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__between` [query, string]: Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `agentIds` [query, array]: List of agent ids. Example: "225494730938493804,225494730938493915". +- `managedState` [query, string]: Is the device managed +- `managedStates` [query, array]: Is the device managed +- `manufacturer` [query, string]: Manufacturer of the device or network interface +- `discoveryMethods` [query, array]: Discovery methods +- `knownFingerprintingData` [query, array]: Known fingerprinting data. Example: "Manufacturer". +- `hostnames` [query, array]: Hostnames +- `deviceReviews` [query, array]: The device review state +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". +- `localIp__contains` [query, array]: Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `subnetAddress__contains` [query, array]: Free-text filter by Subnet Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `manufacturer__contains` [query, array]: Free-text filter by manufacturer (supports multiple values). Example: "Company". +- `macAddress__contains` [query, array]: Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". +- `gatewayMacAddress__contains` [query, array]: Free-text filter by gateway mac address (supports multiple values). Example: "aa:ee:b1". +- `tcpPorts__contains` [query, array]: Free-text filter by tcp port (supports multiple values). Example: "80,24". +- `udpPorts__contains` [query, array]: Free-text filter by udp port (supports multiple values). Example: "137,2002". +- `hostnames__contains` [query, array]: Free-text filter by hostname (supports multiple values). Example: "s1_host,SomeHost". +- `networkName__contains` [query, array]: Free-text filter by network name (supports multiple values). Example: "Office". +- `deviceFunction__contains` [query, array]: Free-text filter by device function (supports multiple values). Example: "security,mobile". +- `tagName__contains` [query, array]: Free-text filter by tag name (supports multiple values). Example: "iot". +- `query` [query, string]: Query Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -194,7 +194,7 @@ Change the device tags. Required permissions: `Ranger.manageDeviceTags` Parameters: -- `body` [body, schemas_DeviceTagsSchema] — +- `body` [body, schemas_DeviceTagsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -207,7 +207,7 @@ Get a json string with the Network Discovery data for one device, by ID in the D Required permissions: `Ranger.view` Parameters: -- `inventory_id` [path, string] **required** — Inventory ID. Example: "225494730938493804". +- `inventory_id` [path, string] **required**: Inventory ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -220,6 +220,6 @@ Export the raw data for one device, by its ID in the Device Inventory Data. To g Required permissions: `Ranger.view` Parameters: -- `inventory_id` [path, string] **required** — Inventory ID. Example: "225494730938493804". +- `inventory_id` [path, string] **required**: Inventory ID. Example: "225494730938493804". Responses: 404 Not found, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery_Self_Enablement.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery_Self_Enablement.md index a12e8ae..b577a8c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery_Self_Enablement.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Discovery_Self_Enablement.md @@ -9,7 +9,7 @@ [DEPRECATED] Use the Update Account, Get Account, Get Sites, or the Update Site Add-ons APIs instead. Parameters: -- `body` [body, ranger.enablement.schemas_UpdateEnablementPostSchema] — +- `body` [body, ranger.enablement.schemas_UpdateEnablementPostSchema]: Responses: 404 , 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -20,30 +20,30 @@ Responses: 404 , 400 Invalid user input received. See error details for further [DEPRECATED] Use the Update Account, Get Account, Get Sites, or the Update Site Add-ons APIs instead. Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: siteName, activeAgents, rangerProEnabled, roguesEnabled, rangerEnabled) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `id` [query, string] — The enablement id. Example: "225494730938493804". -- `activeAgents` [query, integer] — The number of non-decommissioned agents in the site -- `rangerProEnabled` [query, boolean] — [DEPRECATED]. Use rangerEnabled instead. Network Discovery Pro Enabled true/false -- `rangerEnabled` [query, boolean] — Network Discovery Enabled true/false -- `roguesEnabled` [query, boolean] — Unprotected Endpoints Discovery Enabled true/false -- `activeAgents__lt` [query, integer] — Agent count (less than) -- `activeAgents__lte` [query, integer] — Agent count (less than or equal) -- `activeAgents__gt` [query, integer] — Agent count (more than) -- `activeAgents__gte` [query, integer] — Agent count (more than or equal) -- `activeAgents__between` [query, string] — Agent count (between). Example: "2-8". -- `siteName` [query, string] — The site name -- `ids` [query, array] — A list of ids to get. Example: "225494730938493804,225494730938493915". -- `siteName__contains` [query, array] — Free-text filter by site name (supports multiple values) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: siteName, activeAgents, rangerProEnabled, roguesEnabled, rangerEnabled): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `id` [query, string]: The enablement id. Example: "225494730938493804". +- `activeAgents` [query, integer]: The number of non-decommissioned agents in the site +- `rangerProEnabled` [query, boolean]: [DEPRECATED]. Use rangerEnabled instead. Network Discovery Pro Enabled true/false +- `rangerEnabled` [query, boolean]: Network Discovery Enabled true/false +- `roguesEnabled` [query, boolean]: Unprotected Endpoints Discovery Enabled true/false +- `activeAgents__lt` [query, integer]: Agent count (less than) +- `activeAgents__lte` [query, integer]: Agent count (less than or equal) +- `activeAgents__gt` [query, integer]: Agent count (more than) +- `activeAgents__gte` [query, integer]: Agent count (more than or equal) +- `activeAgents__between` [query, string]: Agent count (between). Example: "2-8". +- `siteName` [query, string]: The site name +- `ids` [query, array]: A list of ids to get. Example: "225494730938493804,225494730938493915". +- `siteName__contains` [query, array]: Free-text filter by site name (supports multiple values) Responses: 404 , 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -54,7 +54,7 @@ Responses: 404 , 400 Invalid user input received. See error details for further [DEPRECATED] Use the Update Account, Get Account, Get Sites, or the Update Site Add-ons APIs instead. Parameters: -- `body` [body, ranger.enablement.schemas_UpdateSelfEnablementFeaturesSchema] — +- `body` [body, ranger.enablement.schemas_UpdateSelfEnablementFeaturesSchema]: Responses: 404 , 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -65,7 +65,7 @@ Responses: 404 , 400 Invalid user input received. See error details for further [DEPRECATED] Use the Update Account, Get Account, Get Sites, or the Update Site Add-ons APIs instead.. Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 , 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -76,6 +76,6 @@ Responses: 404 , 400 Invalid user input received. See error details for further [DEPRECATED] Use the Update Account, Get Account, Get Sites, or the Update Site Add-ons APIs instead. Parameters: -- `body` [body, ranger.enablement.schemas_UpdateSelfEnablementFeaturesSchema] — +- `body` [body, ranger.enablement.schemas_UpdateSelfEnablementFeaturesSchema]: Responses: 404 , 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Quarantine_Control.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Quarantine_Control.md index e5c65d6..ca51551 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Quarantine_Control.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Network_Quarantine_Control.md @@ -10,8 +10,8 @@ Delete Firewall Control rules that match the filter. Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_RuleDeleteSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_RuleDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -23,41 +23,41 @@ Get the Firewall Control rules for a scope specified by ID (run "accounts", "sit Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, action, status, order) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — Free text search on name, tag, application, protocol -- `scopes` [query, array] — Return only firewall rules in this scope. Example: "site". -- `applications` [query, array] — Return firewall rules with the filtered firewall class. -- `name` [query, string] — Return firewall rules with the filtered name. -- `protocols` [query, array] — Return firewall rules with the filtered protocols. -- `osTypes` [query, array] — Return firewall rules with the filtered os_type. Example: "macos". -- `directions` [query, array] — Return firewall rules with the filtered directions. Example: "any". -- `actions` [query, array] — Return firewall rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return firewall rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `locationIds` [query, array] — Filter by associated locations. Example: "225494730938493804,225494730938493915". -- `tagIds` [query, array] — Filter by associated tags. Example: "225494730938493804,225494730938493915". -- `name__contains` [query, array] — Free-text filter by the Rule name (supports multiple values) -- `tagName__contains` [query, array] — Free-text filter by the Tag name (supports multiple values) -- `application__contains` [query, array] — Free-text filter by application (supports multiple values) -- `protocol__contains` [query, array] — Free-text filter by protocol (supports multiple values) -- `service__contains` [query, array] — Free-text filter by service (supports multiple values) -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, action, status, order): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: Free text search on name, tag, application, protocol +- `scopes` [query, array]: Return only firewall rules in this scope. Example: "site". +- `applications` [query, array]: Return firewall rules with the filtered firewall class. +- `name` [query, string]: Return firewall rules with the filtered name. +- `protocols` [query, array]: Return firewall rules with the filtered protocols. +- `osTypes` [query, array]: Return firewall rules with the filtered os_type. Example: "macos". +- `directions` [query, array]: Return firewall rules with the filtered directions. Example: "any". +- `actions` [query, array]: Return firewall rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return firewall rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `locationIds` [query, array]: Filter by associated locations. Example: "225494730938493804,225494730938493915". +- `tagIds` [query, array]: Filter by associated tags. Example: "225494730938493804,225494730938493915". +- `name__contains` [query, array]: Free-text filter by the Rule name (supports multiple values) +- `tagName__contains` [query, array]: Free-text filter by the Tag name (supports multiple values) +- `application__contains` [query, array]: Free-text filter by application (supports multiple values) +- `protocol__contains` [query, array]: Free-text filter by protocol (supports multiple values) +- `service__contains` [query, array]: Free-text filter by service (supports multiple values) +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -69,8 +69,8 @@ Create a Firewall Control rule for a scope specified by ID (run "accounts", "sit Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_PostFirewallSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_PostFirewallSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -82,8 +82,8 @@ Create a Firewall Rule tag.
      Create tags to represent Firewall policies - a s Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -95,11 +95,11 @@ Get the Firewall Control configuration for a given scope.
      To filter the resul Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -111,8 +111,8 @@ Change the Firewall Control configuration for a given scope.
      To get the ID Optional permissions: `Firewall Control.modifySettings(preferencesTab), Network Quarantine Control.modifySettings(preferencesTab), Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_PostFirewallSettingsSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_PostFirewallSettingsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -124,8 +124,8 @@ Copy a set of rules to other scopes.
      In the filter of the body, enter the pr Optional permissions: `Firewall Control.view, Network Quarantine Control.view, Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_CopyRuleSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_CopyRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -137,8 +137,8 @@ Change the status of a set of Firewall Control rules that match the filter to "E Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_EnableRuleSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_EnableRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -150,33 +150,33 @@ Export Firewall Control rules that match the filter to a JSON file from a scope Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `query` [query, string] — Free text search on name, tag, application, protocol -- `scopes` [query, array] — Return only firewall rules in this scope. Example: "site". -- `applications` [query, array] — Return firewall rules with the filtered firewall class. -- `name` [query, string] — Return firewall rules with the filtered name. -- `protocols` [query, array] — Return firewall rules with the filtered protocols. -- `osTypes` [query, array] — Return firewall rules with the filtered os_type. Example: "macos". -- `directions` [query, array] — Return firewall rules with the filtered directions. Example: "any". -- `actions` [query, array] — Return firewall rules with the filtered action. Example: "Allow". -- `statuses` [query, array] — Return firewall rules with the filtered status. Example: "Enabled". -- `createdAt__lt` [query, string] — Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `locationIds` [query, array] — Filter by associated locations. Example: "225494730938493804,225494730938493915". -- `tagIds` [query, array] — Filter by associated tags. Example: "225494730938493804,225494730938493915". -- `name__contains` [query, array] — Free-text filter by the Rule name (supports multiple values) -- `tagName__contains` [query, array] — Free-text filter by the Tag name (supports multiple values) -- `application__contains` [query, array] — Free-text filter by application (supports multiple values) -- `protocol__contains` [query, array] — Free-text filter by protocol (supports multiple values) -- `service__contains` [query, array] — Free-text filter by service (supports multiple values) +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `query` [query, string]: Free text search on name, tag, application, protocol +- `scopes` [query, array]: Return only firewall rules in this scope. Example: "site". +- `applications` [query, array]: Return firewall rules with the filtered firewall class. +- `name` [query, string]: Return firewall rules with the filtered name. +- `protocols` [query, array]: Return firewall rules with the filtered protocols. +- `osTypes` [query, array]: Return firewall rules with the filtered os_type. Example: "macos". +- `directions` [query, array]: Return firewall rules with the filtered directions. Example: "any". +- `actions` [query, array]: Return firewall rules with the filtered action. Example: "Allow". +- `statuses` [query, array]: Return firewall rules with the filtered status. Example: "Enabled". +- `createdAt__lt` [query, string]: Return firewall rules created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return firewall rules created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return firewall rules created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return firewall rules created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return firewall rules created within this range (inclusive). Example: "1514978764288-1514978999999". +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `locationIds` [query, array]: Filter by associated locations. Example: "225494730938493804,225494730938493915". +- `tagIds` [query, array]: Filter by associated tags. Example: "225494730938493804,225494730938493915". +- `name__contains` [query, array]: Free-text filter by the Rule name (supports multiple values) +- `tagName__contains` [query, array]: Free-text filter by the Tag name (supports multiple values) +- `application__contains` [query, array]: Free-text filter by application (supports multiple values) +- `protocol__contains` [query, array]: Free-text filter by protocol (supports multiple values) +- `service__contains` [query, array]: Free-text filter by service (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -188,12 +188,12 @@ Import Firewall Control rules from an exported JSON file to scopes specified by Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `accountIds` [formData, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [formData, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [formData, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [formData, boolean] — Indicates a tenant scope request -- `file` [formData, file] **required** — File +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `accountIds` [formData, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [formData, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [formData, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [formData, boolean]: Indicates a tenant scope request +- `file` [formData, file] **required**: File Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -205,8 +205,8 @@ Remove Firewall Rules, defined with the ID of the rules (run 'firewall-control') Optional permissions: `Firewall Control.view, Network Quarantine Control.view, Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_CopyRuleSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_CopyRuleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -218,16 +218,16 @@ Get a list of protocols that can be used in Firewall Control rules. Optional permissions: `Firewall Control.view, Network Quarantine Control.view` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: name) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `query` [query, string] — Full text search on protocols -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: name): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `query` [query, string]: Full text search on protocols +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -239,8 +239,8 @@ Remove firewall tags from rules matching the filter.
      Tags represent Firewall Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_ChangeRulesTagsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -252,8 +252,8 @@ Change the order of rules for a scope specified by ID (run "accounts", "sites", Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_ReorderSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_ReorderSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -265,7 +265,7 @@ Set location attributes for a Location Aware Firewall Control rule. These rules Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags` Parameters: -- `firewall_rule_category` [path, string] **required** — To affect Network Quarantine use network-quarantine -- `body` [body, firewall_control.schemas_SetLocationSchema] — +- `firewall_rule_category` [path, string] **required**: To affect Network Quarantine use network-quarantine +- `body` [body, firewall_control.schemas_SetLocationSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Platform_Detection_Rules.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Platform_Detection_Rules.md index 39b60c4..3711168 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Platform_Detection_Rules.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Platform_Detection_Rules.md @@ -42,23 +42,23 @@ Return Managed Detection Rules for the given scope Required permissions: `Custom Rules.view` Parameters: -- `statuses` [query, array] — Statuses. Example: "Activating". -- `attackSurfaces` [query, array] — To filter by attack surfaces associated with the rule. -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `description__contains` [query, string] — To filter by a substring of the rule description -- `ruleNameSubstring` [query, string] — To filter by a substring of the rule name -- `s1ql__contains` [query, string] — To filter by a substring of the query content -- `excludeIds` [query, array] — List of entity ids to exclude from select_all. Example: "225494730938493804,225494730938493915". -- `scopeLevel` [query, string] (enum: global, group, account, site) — To filter by scope, enter one or more scopes, separated by commas. Example: "global". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `scopeId` [query, string] — The Account, Site, or Group ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". -- `mitreTactics` [query, array] — To filter by sources associated with the rule. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `sources` [query, array] — To filter by sources associated with the rule. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `platformRuleIds` [query, array] — platform rule ids. Example: "225494730938493804,225494730938493915". -- `severities` [query, array] — Severities. Example: "Low". +- `statuses` [query, array]: Statuses. Example: "Activating". +- `attackSurfaces` [query, array]: To filter by attack surfaces associated with the rule. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `description__contains` [query, string]: To filter by a substring of the rule description +- `ruleNameSubstring` [query, string]: To filter by a substring of the rule name +- `s1ql__contains` [query, string]: To filter by a substring of the query content +- `excludeIds` [query, array]: List of entity ids to exclude from select_all. Example: "225494730938493804,225494730938493915". +- `scopeLevel` [query, string] (enum: global, group, account, site): To filter by scope, enter one or more scopes, separated by commas. Example: "global". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `scopeId` [query, string]: The Account, Site, or Group ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". +- `mitreTactics` [query, array]: To filter by sources associated with the rule. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `sources` [query, array]: To filter by sources associated with the rule. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `platformRuleIds` [query, array]: platform rule ids. Example: "225494730938493804,225494730938493915". +- `severities` [query, array]: Severities. Example: "Low". Responses: 404 Managed Detection Rules not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -69,7 +69,7 @@ Responses: 404 Managed Detection Rules not found, 200 Success, 400 Invalid user Required permissions: `Custom Rules.manage` Parameters: -- `body` [body, v2_1.gdl.schemas_PlatformRuleSchemaWithValidation] — +- `body` [body, v2_1.gdl.schemas_PlatformRuleSchemaWithValidation]: Responses: 404 Managed Detection Rule not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -82,7 +82,7 @@ Enable a Managed Detection Rule creates a new rule and activates it. Required permissions: `Custom Rules.manage` Parameters: -- `body` [body, v2_1.gdl.schemas_PlatformRuleSchemaWithValidation] — +- `body` [body, v2_1.gdl.schemas_PlatformRuleSchemaWithValidation]: Responses: 404 Managed Detection Rule not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -95,8 +95,8 @@ Get settings for Managed Detection Rules for the given scope Required permissions: `Custom Rules.view` Parameters: -- `scopeId` [query, string] — The Account or Site ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". -- `scopeLevel` [query, string] **required** (enum: global, group, account, site) — Scope level. Example: "global". +- `scopeId` [query, string]: The Account or Site ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". +- `scopeLevel` [query, string] **required** (enum: global, group, account, site): Scope level. Example: "global". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -109,7 +109,7 @@ Update settings for Managed Detection Rules Required permissions: `Custom Rules.manage` Parameters: -- `body` [body, v2_1.gdl.schemas_PlatformSettingsSchema] — +- `body` [body, v2_1.gdl.schemas_PlatformSettingsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -122,28 +122,28 @@ Return Catalog Rules for the given scope Required permissions: `Custom Rules.view` Parameters: -- `statuses` [query, array] — Statuses. Example: "Activating". -- `categories` [query, array] — Categories. Example: "Events". -- `customRuleIds` [query, array] — custom rule ids. Example: "225494730938493804,225494730938493915". -- `query` [query, array] — Free-text filter by All fields(name, description, query content). You can enter multiple values, separated by commas. Example: "Service Pack 1". -- `severities` [query, array] — Severities. Example: "Low". -- `siteIds` [query, string] — site scope level id. Example: "225494730938493804". -- `description__contains` [query, string] — To filter by a substring of the rule description -- `hideQuery` [query, string] (enum: Shown, Hidden) — To filter by hideQuery of the rule params. Example: "Shown". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `sources` [query, array] — To filter by sources associated with the rule. -- `s1ql__contains` [query, string] — To filter by a substring of the query content -- `mitreTactics` [query, array] — To filter by sources associated with the rule. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `accountIds` [query, string] — account scope level id. Example: "225494730938493804". -- `attackSurfaces` [query, array] — To filter by attack surfaces associated with the rule. -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `name__contains` [query, string] — To filter by a substring of the rule name -- `platformRuleIds` [query, array] — platform rule ids. Example: "225494730938493804,225494730938493915". -- `sortBy` [query, string] (enum: name, status, severity, description, category, generatedAlerts, raisedIssues, lastAlertTime, attackSurfaces) — The column to sort the results by. Example: "id". +- `statuses` [query, array]: Statuses. Example: "Activating". +- `categories` [query, array]: Categories. Example: "Events". +- `customRuleIds` [query, array]: custom rule ids. Example: "225494730938493804,225494730938493915". +- `query` [query, array]: Free-text filter by All fields(name, description, query content). You can enter multiple values, separated by commas. Example: "Service Pack 1". +- `severities` [query, array]: Severities. Example: "Low". +- `siteIds` [query, string]: site scope level id. Example: "225494730938493804". +- `description__contains` [query, string]: To filter by a substring of the rule description +- `hideQuery` [query, string] (enum: Shown, Hidden): To filter by hideQuery of the rule params. Example: "Shown". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `sources` [query, array]: To filter by sources associated with the rule. +- `s1ql__contains` [query, string]: To filter by a substring of the query content +- `mitreTactics` [query, array]: To filter by sources associated with the rule. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `accountIds` [query, string]: account scope level id. Example: "225494730938493804". +- `attackSurfaces` [query, array]: To filter by attack surfaces associated with the rule. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `name__contains` [query, string]: To filter by a substring of the rule name +- `platformRuleIds` [query, array]: platform rule ids. Example: "225494730938493804,225494730938493915". +- `sortBy` [query, string] (enum: name, status, severity, description, category, generatedAlerts, raisedIssues, lastAlertTime, attackSurfaces): The column to sort the results by. Example: "id". Responses: 404 Managed Detection Rules not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -196,22 +196,22 @@ Return Template Detection Rules for the given scope Required permissions: `Custom Rules.view` Parameters: -- `statuses` [query, array] — Statuses. Example: "Activating". -- `attackSurfaces` [query, array] — To filter by attack surfaces associated with the rule. -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `description__contains` [query, string] — To filter by a substring of the rule description -- `ruleNameSubstring` [query, string] — To filter by a substring of the rule name -- `s1ql__contains` [query, string] — To filter by a substring of the query content -- `excludeIds` [query, array] — List of entity ids to exclude from select_all. Example: "225494730938493804,225494730938493915". -- `scopeLevel` [query, string] (enum: global, group, account, site) — To filter by scope, enter one or more scopes, separated by commas. Example: "global". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `scopeId` [query, string] — The Account, Site, or Group ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". -- `mitreTactics` [query, array] — To filter by sources associated with the rule. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `sources` [query, array] — To filter by sources associated with the rule. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `platformRuleIds` [query, array] — platform rule ids. Example: "225494730938493804,225494730938493915". -- `severities` [query, array] — Severities. Example: "Low". +- `statuses` [query, array]: Statuses. Example: "Activating". +- `attackSurfaces` [query, array]: To filter by attack surfaces associated with the rule. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `description__contains` [query, string]: To filter by a substring of the rule description +- `ruleNameSubstring` [query, string]: To filter by a substring of the rule name +- `s1ql__contains` [query, string]: To filter by a substring of the query content +- `excludeIds` [query, array]: List of entity ids to exclude from select_all. Example: "225494730938493804,225494730938493915". +- `scopeLevel` [query, string] (enum: global, group, account, site): To filter by scope, enter one or more scopes, separated by commas. Example: "global". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `scopeId` [query, string]: The Account, Site, or Group ID, depending on the scope. Null if the scope is Global. Example: "225494730938493804". +- `mitreTactics` [query, array]: To filter by sources associated with the rule. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `sources` [query, array]: To filter by sources associated with the rule. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `platformRuleIds` [query, array]: platform rule ids. Example: "225494730938493804,225494730938493915". +- `severities` [query, array]: Severities. Example: "Low". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Policies.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Policies.md index 7b08809..82e5363 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Policies.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Policies.md @@ -11,7 +11,7 @@ Get the policy for the Account given by ID. To get the ID of an Account, run "ac Required permissions: `Policy.view` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". Responses: 404 Policy not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -25,8 +25,8 @@ Required permissions: `Policy.edit` Optional permissions: `Remote Ops Forensics.view` Parameters: -- `account_id` [path, string] **required** — Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". -- `body` [body, policies_TenantPolicySchema] — +- `account_id` [path, string] **required**: Account ID. You can get the ID from the Get accounts command. Example: "225494730938493804". +- `body` [body, policies_TenantPolicySchema]: Responses: 404 Account not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -39,7 +39,7 @@ Get the policy of the Group given by ID. To get the ID of a Group, run "groups". Required permissions: `Policy.view` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". Responses: 404 Policy not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -53,8 +53,8 @@ Required permissions: `Policy.edit` Optional permissions: `Remote Ops Forensics.view` Parameters: -- `group_id` [path, string] **required** — Group ID. Example: "225494730938493804". -- `body` [body, policies_TenantPolicySchema] — +- `group_id` [path, string] **required**: Group ID. Example: "225494730938493804". +- `body` [body, policies_TenantPolicySchema]: Responses: 404 Group not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -67,7 +67,7 @@ Get the policy of the Site given by ID. To get the ID of a Site, run "sites". Se Required permissions: `Policy.view` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 404 Policy not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -81,8 +81,8 @@ Required permissions: `Policy.edit` Optional permissions: `Remote Ops Forensics.view` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". -- `body` [body, policies_TenantPolicySchema] — +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". +- `body` [body, policies_TenantPolicySchema]: Responses: 404 Site not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -100,13 +100,13 @@ Responses: 404 Policy not found, 200 Success, 401 Unauthorized access - please s **Update Global Policy** `operationId`: `_web_api_tenant_policy_put` -Change the policy of your deployment. Best practice: Get the Global policy before you attempt to change it. See also: Get Policy. +Change the policy of your deployment. Best practice: Get the Global policy before you attempt to change it. See also: Get Policy. You must be a Global Admin user to change the Global Policy. Required permissions: `Policy.edit` Optional permissions: `Remote Ops Forensics.view` Parameters: -- `body` [body, policies_TenantPolicySchema] — +- `body` [body, policies_TenantPolicySchema]: Responses: 404 Policy not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RBAC.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RBAC.md index 5b69175..48e2c9b 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RBAC.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RBAC.md @@ -11,10 +11,10 @@ Get the template for a new role. Required permissions: `Roles.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -27,7 +27,7 @@ Create a new role for Role-Based Access Control (RBAC). Required permissions: `Roles.create` Parameters: -- `body` [body, rbac.schemas_RbacCreateRoleSchema] — +- `body` [body, rbac.schemas_RbacCreateRoleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -41,8 +41,8 @@ Required permissions: `Roles.delete` Optional permissions: `Users.edit` Parameters: -- `role_id` [path, string] **required** — Role ID. Example: "225494730938493804". -- `body` [body, rbac.schemas_RbacDeleteRoleSchema] — +- `role_id` [path, string] **required**: Role ID. Example: "225494730938493804". +- `body` [body, rbac.schemas_RbacDeleteRoleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -55,23 +55,23 @@ With the ID of a role (see Get All Roles) you can see the permissions of that ro Required permissions: `Roles.view` Parameters: -- `role_id` [path, string] **required** — Role ID. Example: "225494730938493804". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `name` [query, string] — Return RBAC role matching the name -- `createdAt__lt` [query, string] — Return RBAC roles created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return RBAC roles created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return RBAC roles created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return RBAC roles created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return RBAC roles created within this range (inclusive). Example: "1514978764288-1514978999999". -- `updatedAt__lt` [query, string] — Return RBAC roles updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Return RBAC roles updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Return RBAC roles updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Return RBAC roles updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Return RBAC roles updated within this range (inclusive). Example: "1514978764288-1514978999999". -- `query` [query, string] — Free text search on role name, and description +- `role_id` [path, string] **required**: Role ID. Example: "225494730938493804". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `name` [query, string]: Return RBAC role matching the name +- `createdAt__lt` [query, string]: Return RBAC roles created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return RBAC roles created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return RBAC roles created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return RBAC roles created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return RBAC roles created within this range (inclusive). Example: "1514978764288-1514978999999". +- `updatedAt__lt` [query, string]: Return RBAC roles updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Return RBAC roles updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Return RBAC roles updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Return RBAC roles updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Return RBAC roles updated within this range (inclusive). Example: "1514978764288-1514978999999". +- `query` [query, string]: Free text search on role name, and description Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -84,8 +84,8 @@ With the ID of a role (see Get All Roles), you can update the permissions of use Required permissions: `Roles.edit` Parameters: -- `role_id` [path, string] **required** — Role ID. Example: "225494730938493804". -- `body` [body, rbac.schemas_RbacUpdateRoleSchema] — +- `role_id` [path, string] **required**: Role ID. Example: "225494730938493804". +- `body` [body, rbac.schemas_RbacUpdateRoleSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -98,42 +98,42 @@ See roles assigned to users that match the filter, a basic description of the ro Required permissions: `Roles.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, description, usersInRoles, creator, siteName, createdAt, updatedAt, updatedBy, accountName, name) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `name` [query, string] — Return RBAC role matching the name -- `createdAt__lt` [query, string] — Return RBAC roles created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Return RBAC roles created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Return RBAC roles created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Return RBAC roles created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Return RBAC roles created within this range (inclusive). Example: "1514978764288-1514978999999". -- `updatedAt__lt` [query, string] — Return RBAC roles updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Return RBAC roles updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Return RBAC roles updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Return RBAC roles updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__between` [query, string] — Return RBAC roles updated within this range (inclusive). Example: "1514978764288-1514978999999". -- `query` [query, string] — Free text search on role name, and description -- `ids` [query, array] — List of ids to filter by. Example: "225494730938493804,225494730938493915". -- `tenancyIds` [query, array] — List of Tenancies IDs to filter by. Example: "225494730938493804,225494730938493915". -- `creator` [query, string] — Email of the creating user -- `creatorId` [query, string] — Id of the creating user. Example: "225494730938493804". -- `updatedBy` [query, string] — Email of the updating user -- `updatedById` [query, string] — Id of the updating user. Example: "225494730938493804". -- `createdAt` [query, string] — Created at. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt` [query, string] — Updated at. Example: "2018-02-27T04:49:26.257525Z". -- `description` [query, string] — Description -- `accountName` [query, string] — Name of the account that contains the role -- `siteName` [query, string] — Name of the site that contains the role -- `includeParents` [query, boolean] — Include parent scopes roles -- `includeChildren` [query, boolean] — Include child scopes roles -- `predefinedRole` [query, boolean] — Filter only system/custom roles +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, description, usersInRoles, creator, siteName, createdAt, updatedAt, updatedBy, accountName, name): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `name` [query, string]: Return RBAC role matching the name +- `createdAt__lt` [query, string]: Return RBAC roles created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Return RBAC roles created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Return RBAC roles created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Return RBAC roles created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Return RBAC roles created within this range (inclusive). Example: "1514978764288-1514978999999". +- `updatedAt__lt` [query, string]: Return RBAC roles updated before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Return RBAC roles updated after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Return RBAC roles updated before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Return RBAC roles updated after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__between` [query, string]: Return RBAC roles updated within this range (inclusive). Example: "1514978764288-1514978999999". +- `query` [query, string]: Free text search on role name, and description +- `ids` [query, array]: List of ids to filter by. Example: "225494730938493804,225494730938493915". +- `tenancyIds` [query, array]: List of Tenancies IDs to filter by. Example: "225494730938493804,225494730938493915". +- `creator` [query, string]: Email of the creating user +- `creatorId` [query, string]: Id of the creating user. Example: "225494730938493804". +- `updatedBy` [query, string]: Email of the updating user +- `updatedById` [query, string]: Id of the updating user. Example: "225494730938493804". +- `createdAt` [query, string]: Created at. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt` [query, string]: Updated at. Example: "2018-02-27T04:49:26.257525Z". +- `description` [query, string]: Description +- `accountName` [query, string]: Name of the account that contains the role +- `siteName` [query, string]: Name of the site that contains the role +- `includeParents` [query, boolean]: Include parent scopes roles +- `includeChildren` [query, boolean]: Include child scopes roles +- `predefinedRole` [query, boolean]: Filter only system/custom roles Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Forensics.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Forensics.md index 52255ff..80aebd6 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Forensics.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Forensics.md @@ -18,11 +18,11 @@ Returns collection file download pre-signed url Optional permissions: `Remote Ops Forensics.view` Parameters: -- `siteId` [query, string] **required** — Site id. Example: "225494730938493804". -- `agentId` [query, string] **required** — Agent id. Example: "225494730938493804". -- `signature` [query, string] **required** — Signature -- `signatureType` [query, string] **required** — Signature type -- `uploadedTimestamp` [query, string] **required** — Uploaded timestamp +- `siteId` [query, string] **required**: Site id. Example: "225494730938493804". +- `agentId` [query, string] **required**: Agent id. Example: "225494730938493804". +- `signature` [query, string] **required**: Signature +- `signatureType` [query, string] **required**: Signature type +- `uploadedTimestamp` [query, string] **required**: Uploaded timestamp Responses: 200 Remote Ops Forensics Collection File Found, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -35,7 +35,7 @@ Delete multiple Forensics Collection profiles. The profiles that are not possibl Required permissions: `Remote Ops Forensics.delete` Parameters: -- `body` [body, v2_1.forensics.schema_DeleteProfilesRequestSchema] — +- `body` [body, v2_1.forensics.schema_DeleteProfilesRequestSchema]: Responses: 200 Delete was completed or partially completed., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -48,19 +48,19 @@ Get list of available Forensics collection profiles. The list may be narrowed by Required permissions: `Remote Ops Forensics.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `autoTriggeringCompatible` [query, boolean] — Fetch auto triggering compatible profiles -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `ids` [query, array] — A list of collection profiles IDs. Example: "225494730938493804,225494730938493915". -- `osTypes` [query, array] — Os types. Example: "linux". -- `query` [query, string] — Keyword to search in Collection profile name / description -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `sortBy` [query, string] (enum: id, createdAt, mgmtId, scopeId, name, osTypes, version, scopeLevel, scopePath, creator) — The column to sort the results by. Example: "id". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `autoTriggeringCompatible` [query, boolean]: Fetch auto triggering compatible profiles +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `ids` [query, array]: A list of collection profiles IDs. Example: "225494730938493804,225494730938493915". +- `osTypes` [query, array]: Os types. Example: "linux". +- `query` [query, string]: Keyword to search in Collection profile name / description +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `sortBy` [query, string] (enum: id, createdAt, mgmtId, scopeId, name, osTypes, version, scopeLevel, scopePath, creator): The column to sort the results by. Example: "id". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -72,7 +72,7 @@ Create a Forensics Collection profile with provided artifacts on the specified s Optional permissions: `Remote Ops Forensics.create, Remote Ops Forensics.upload` Parameters: -- `body` [body, v2_1.forensics.schema_CollectionProfileRequestSchema] — +- `body` [body, v2_1.forensics.schema_CollectionProfileRequestSchema]: Responses: 200 Collection profile is created, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -85,7 +85,7 @@ Get contents of an existing Forensics Collection profile, including specificatio Required permissions: `Remote Ops Forensics.view` Parameters: -- `profile_id` [path, string] **required** — Profile ID. Example: "225494730938493804". +- `profile_id` [path, string] **required**: Profile ID. Example: "225494730938493804". Responses: 403 User has insufficient permission to perform such action, 404 Collection profile was not found, 200 Collection profile content in returned, 401 Unauthorized access - please sign in and retry. @@ -98,8 +98,8 @@ Update contents of an existing Forensics Collection profile. All the profile dat Required permissions: `Remote Ops Forensics.edit` Parameters: -- `profile_id` [path, string] **required** — Profile ID. Example: "225494730938493804". -- `body` [body, v2_1.forensics.schema_PutCollectionProfileRequestSchema] — +- `profile_id` [path, string] **required**: Profile ID. Example: "225494730938493804". +- `body` [body, v2_1.forensics.schema_PutCollectionProfileRequestSchema]: Responses: 403 User has insufficient permission to perform such action, 404 Collection profile was not found, 200 Collection profile is updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -112,8 +112,8 @@ Check if collection file exists for given storyline Required permissions: `Remote Ops Forensics.view` Parameters: -- `storyline` [query, string] **required** — Storyline ID -- `agentId` [query, string] **required** — Agent's ID. Example: "225494730938493804". +- `storyline` [query, string] **required**: Storyline ID +- `agentId` [query, string] **required**: Agent's ID. Example: "225494730938493804". Responses: 404 Collection file not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -126,7 +126,7 @@ Start collection of Forensics artifacts according to specified profile Required permissions: `Remote Ops Forensics.view, Remote Ops Forensics.runForensicsCollection` Parameters: -- `body` [body, remote_ops.schemas_StartCollectionSchema] — +- `body` [body, remote_ops.schemas_StartCollectionSchema]: Responses: 202 Forensics collection has been started, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -140,6 +140,6 @@ Required permissions: `Remote Ops Forensics.view` Optional permissions: `Remote Ops Forensics.viewOutput` Parameters: -- `taskId` [query, string] **required** — Task id. Example: "225494730938493804". +- `taskId` [query, string] **required**: Task id. Example: "225494730938493804". Responses: 200 Task is found and result is returned, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Scripts.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Scripts.md index 692fe4a..f7b012c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Scripts.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/RemoteOps_Scripts.md @@ -11,7 +11,7 @@ Deletes scripts that match a filter. Required permissions: `Remote Script Orchestration.delete` Parameters: -- `body` [body, schemas_ScriptDeleteSchema] — +- `body` [body, schemas_ScriptDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -23,21 +23,21 @@ Get data of the scripts in the SentinelOne Script Library.
      The SentinelOne S Optional permissions: `Remote Script Orchestration.view, Remote Script Orchestration.delete` Parameters: -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `isAvailableForArs` [query, boolean] — Is the script runnable in Advanced Response Scripts -- `query` [query, string] — Query -- `scriptType` [query, array] — List of the script types. Example: "artifactCollection". -- `ids` [query, array] — A list of script IDs. Example: "225494730938493804,225494730938493915". -- `sortBy` [query, string] (enum: id, createdAt, mgmtId, scopeId, scriptName, name, osTypes, createdByUserId, inputInstructions, inputExample, type, scriptType, version, scopeLevel, scopePath, subscription, isAvailableForArs) — The column to sort the results by. Example: "id". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `osTypes` [query, array] — List of the script OS types. Example: "linux". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `isAvailableForArs` [query, boolean]: Is the script runnable in Advanced Response Scripts +- `query` [query, string]: Query +- `scriptType` [query, array]: List of the script types. Example: "artifactCollection". +- `ids` [query, array]: A list of script IDs. Example: "225494730938493804,225494730938493915". +- `sortBy` [query, string] (enum: id, createdAt, mgmtId, scopeId, scriptName, name, osTypes, createdByUserId, inputInstructions, inputExample, type, scriptType, version, scopeLevel, scopePath, subscription, isAvailableForArs): The column to sort the results by. Example: "id". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `osTypes` [query, array]: List of the script OS types. Example: "linux". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -50,28 +50,28 @@ Upload a new script file. The file and various properties are required. To see t Required permissions: `Remote Script Orchestration.upload` Parameters: -- `isScriptContentEncoded` [formData, boolean] — True if script content is encoded -- `packageMaxSize` [formData, string] — Package max size -- `inputExample` [formData, string] — Input example -- `isDuplication` [formData, boolean] — True if script/package files should be taken from an existing script specified in original_script_id -- `packageEndpointExpiration` [formData, string] (enum: None, Immediate, OnRestart, Time) — Package expiration option on endpoint. Example: "None". -- `osTypes` [formData, array] **required** — Os types. Example: "m,a,c,o,s,,,l,i,n,u,x". -- `packageRemoved` [formData, boolean] — True if package should file should not be copied, applicable only if is_duplication is true -- `scriptName` [formData, string] **required** — Script name -- `scriptType` [formData, string] **required** (enum: artifactCollection, dataCollection, action) — Script type. Example: "artifactCollection". -- `scriptRuntimeTimeoutSeconds` [formData, integer] — Script runtime timeout in seconds -- `scriptContent` [formData, string] — Content of the script file, applicable only if is_duplication is true -- `inputInstructions` [formData, string] — Input instructions -- `scopeLevel` [formData, string] **required** (enum: site, account, global) — Scope level. Example: "site". -- `consoleData` [formData, string] — Console data -- `inputRequired` [formData, boolean] **required** — Is input required -- `originalScriptId` [formData, string] — ID of script, from which the script/package files will becopied, applicable ony if is_duplication is true. Example: "225494730938493804". -- `sendActivity` [formData, boolean] — Send activity -- `scriptDescription` [formData, string] — Script description -- `packageEndpointExpirationSeconds` [formData, integer] — Package expiration time on endpoint -- `scopeId` [formData, string] — Scope ID. Example: "225494730938493804". -- `file` [formData, file] — File -- `packageFile` [formData, file] — Package file +- `isScriptContentEncoded` [formData, boolean]: True if script content is encoded +- `packageMaxSize` [formData, string]: Package max size +- `inputExample` [formData, string]: Input example +- `isDuplication` [formData, boolean]: True if script/package files should be taken from an existing script specified in original_script_id +- `packageEndpointExpiration` [formData, string] (enum: None, Immediate, OnRestart, Time): Package expiration option on endpoint. Example: "None". +- `osTypes` [formData, array] **required**: Os types. Example: "m,a,c,o,s,,,l,i,n,u,x". +- `packageRemoved` [formData, boolean]: True if package should file should not be copied, applicable only if is_duplication is true +- `scriptName` [formData, string] **required**: Script name +- `scriptType` [formData, string] **required** (enum: artifactCollection, dataCollection, action): Script type. Example: "artifactCollection". +- `scriptRuntimeTimeoutSeconds` [formData, integer]: Script runtime timeout in seconds +- `scriptContent` [formData, string]: Content of the script file, applicable only if is_duplication is true +- `inputInstructions` [formData, string]: Input instructions +- `scopeLevel` [formData, string] **required** (enum: site, account, global): Scope level. Example: "site". +- `consoleData` [formData, string]: Console data +- `inputRequired` [formData, boolean] **required**: Is input required +- `originalScriptId` [formData, string]: ID of script, from which the script/package files will becopied, applicable ony if is_duplication is true. Example: "225494730938493804". +- `sendActivity` [formData, boolean]: Send activity +- `scriptDescription` [formData, string]: Script description +- `packageEndpointExpirationSeconds` [formData, integer]: Package expiration time on endpoint +- `scopeId` [formData, string]: Scope ID. Example: "225494730938493804". +- `file` [formData, file]: File +- `packageFile` [formData, file]: Package file Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -84,25 +84,25 @@ Change the properties of a given script: runtime timeout, name, and whether inpu Required permissions: `Remote Script Orchestration.edit` Parameters: -- `script_id` [path, string] **required** — Script ID. Example: "225494730938493804". -- `scriptContent` [formData, string] — Filled out with a new content of a script if the script content was changedon an already previously uploaded script -- `inputInstructions` [formData, string] **required** — Input instructions -- `isScriptContentEncoded` [formData, boolean] — Is the script content base64 encoded? -- `scriptDescription` [formData, string] — Script description -- `packageRemoved` [formData, boolean] — Was package removed during edit of the script? -- `packageMaxSize` [formData, string] — Package max size -- `packageEndpointExpirationSeconds` [formData, integer] — Package expiration time on endpoint -- `consoleData` [formData, string] — Console data -- `inputExample` [formData, string] **required** — Input example -- `scriptName` [formData, string] **required** — Script name -- `inputRequired` [formData, boolean] **required** — Is input required -- `packageEndpointExpiration` [formData, string] (enum: None, Immediate, OnRestart, Time) — Package expiration option on endpoint. Example: "None". -- `scriptType` [formData, string] **required** (enum: artifactCollection, dataCollection, action) — Script type. Example: "artifactCollection". -- `osTypes` [formData, array] **required** — Os types. Example: "m,a,c,o,s,,,l,i,n,u,x". -- `sendActivity` [formData, boolean] — Send activity -- `scriptRuntimeTimeoutSeconds` [formData, integer] **required** — Script runtime timeout in seconds -- `scriptFile` [formData, file] — Script file -- `packageFile` [formData, file] — Package file +- `script_id` [path, string] **required**: Script ID. Example: "225494730938493804". +- `scriptContent` [formData, string]: Filled out with a new content of a script if the script content was changedon an already previously uploaded script +- `inputInstructions` [formData, string] **required**: Input instructions +- `isScriptContentEncoded` [formData, boolean]: Is the script content base64 encoded? +- `scriptDescription` [formData, string]: Script description +- `packageRemoved` [formData, boolean]: Was package removed during edit of the script? +- `packageMaxSize` [formData, string]: Package max size +- `packageEndpointExpirationSeconds` [formData, integer]: Package expiration time on endpoint +- `consoleData` [formData, string]: Console data +- `inputExample` [formData, string] **required**: Input example +- `scriptName` [formData, string] **required**: Script name +- `inputRequired` [formData, boolean] **required**: Is input required +- `packageEndpointExpiration` [formData, string] (enum: None, Immediate, OnRestart, Time): Package expiration option on endpoint. Example: "None". +- `scriptType` [formData, string] **required** (enum: artifactCollection, dataCollection, action): Script type. Example: "artifactCollection". +- `osTypes` [formData, array] **required**: Os types. Example: "m,a,c,o,s,,,l,i,n,u,x". +- `sendActivity` [formData, boolean]: Send activity +- `scriptRuntimeTimeoutSeconds` [formData, integer] **required**: Script runtime timeout in seconds +- `scriptFile` [formData, file]: Script file +- `packageFile` [formData, file]: Package file Responses: 400 Invalid user input received. See error details for further i, 404 Script not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -114,7 +114,7 @@ Run a remote script that was uploaded to the SentinelOne Script Library. Optional permissions: `Remote Script Orchestration.view, Remote Script Orchestration.runArtifactCollectionScript, Remote Script Orchestration.runDataCollectionScript, Remote Script Orchestration.runActionScript` Parameters: -- `body` [body, cloud_proxy.remote_scripts_ExecuteScriptSchema] — +- `body` [body, cloud_proxy.remote_scripts_ExecuteScriptSchema]: Responses: 200 Run remote script request was successful, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -127,7 +127,7 @@ Get scripts results URLs. Accessible via API only Required permissions: `Remote Script Orchestration.view` Parameters: -- `body` [body, _FetchScriptsResultsSchema] — +- `body` [body, _FetchScriptsResultsSchema]: Responses: 200 Get remote script results was successful, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -150,7 +150,7 @@ Check whether guardrail applies to an execution Required permissions: `Remote Script Orchestration.view` Parameters: -- `body` [body, schemas_EncapsulatedPostGuardrailCheckSchema] — +- `body` [body, schemas_EncapsulatedPostGuardrailCheckSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -163,7 +163,7 @@ Deletes a specific guardrails configuration Required permissions: `Remote Script Orchestration.manageGuardrails` Parameters: -- `body` [body, schemas_EncapsulatedDeleteGuardrailsSchema] — +- `body` [body, schemas_EncapsulatedDeleteGuardrailsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -176,8 +176,8 @@ Gets a guardrails configuration for a given scope Required permissions: `Remote Script Orchestration.view` Parameters: -- `scopeId` [query, string] **required** — Scope ID. Example: "225494730938493804". -- `scopeLevel` [query, string] **required** (enum: account, site, group) — Scope level. Example: "account". +- `scopeId` [query, string] **required**: Scope ID. Example: "225494730938493804". +- `scopeLevel` [query, string] **required** (enum: account, site, group): Scope level. Example: "account". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -190,7 +190,7 @@ Updates or inserts (if record does not exist) a guardrails configuration Required permissions: `Remote Script Orchestration.manageGuardrails` Parameters: -- `body` [body, schemas_EncapsulatedPostGuardrailsSchema] — +- `body` [body, schemas_EncapsulatedPostGuardrailsSchema]: Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -203,16 +203,16 @@ Get paginated pending executions Required permissions: `Remote Script Orchestration.view` Parameters: -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `sortBy` [query, string] (enum: id, createdAt, state) — The column to sort the results by. Example: "id". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `sortBy` [query, string] (enum: id, createdAt, state): The column to sort the results by. Example: "id". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -225,8 +225,8 @@ Approve/decline pending execution Required permissions: `Remote Script Orchestration.reviewPendingExecutions` Parameters: -- `pending_execution_id` [path, string] **required** — Pending execution ID. Example: "225494730938493804". -- `body` [body, schemas_ApproveDeclinePendingExecutionRequestSchema] — +- `pending_execution_id` [path, string] **required**: Pending execution ID. Example: "225494730938493804". +- `body` [body, schemas_ApproveDeclinePendingExecutionRequestSchema]: Responses: 404 Pending execution not found, 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -239,7 +239,7 @@ Get Script content by script id Required permissions: `Remote Script Orchestration.view` Parameters: -- `scriptId` [query, string] — Script ID. Example: "225494730938493804". +- `scriptId` [query, string]: Script ID. Example: "225494730938493804". Responses: 404 Script not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -252,37 +252,37 @@ Get remote scripts tasks using a variety of filters. Accessible via API only
      Required permissions: `Task Management.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, initiatedBy, createdAt, updatedAt, status, detailedStatus, agentComputerName, parentTaskId, accountName, siteName, groupName, description) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `createdAt__lt` [query, string] — Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lt` [query, string] — Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `query` [query, string] — Query -- `status` [query, array] — Status in. Example: "created". -- `types` [query, array] — Type in -- `type` [query, string] — Type -- `computerName__contains` [query, array] — Free-text filter by agent computer name (supports multiple values) -- `uuid__contains` [query, array] — Free-text filter by agent UUID (supports multiple values) -- `initiatedBy__contains` [query, array] — Only include tasks from specific initiating user -- `detailedStatus__contains` [query, array] — Only include tasks with specific detailed status -- `description__contains` [query, array] — Only include tasks with specific description -- `parentTaskId__in` [query, array] — List of IDs to filter by -- `parentTaskId` [query, string] — parent task id to fetch the status by. Example: "225494730938493804". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, initiatedBy, createdAt, updatedAt, status, detailedStatus, agentComputerName, parentTaskId, accountName, siteName, groupName, description): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `createdAt__lt` [query, string]: Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lt` [query, string]: Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `query` [query, string]: Query +- `status` [query, array]: Status in. Example: "created". +- `types` [query, array]: Type in +- `type` [query, string]: Type +- `computerName__contains` [query, array]: Free-text filter by agent computer name (supports multiple values) +- `uuid__contains` [query, array]: Free-text filter by agent UUID (supports multiple values) +- `initiatedBy__contains` [query, array]: Only include tasks from specific initiating user +- `detailedStatus__contains` [query, array]: Only include tasks with specific detailed status +- `description__contains` [query, array]: Only include tasks with specific description +- `parentTaskId__in` [query, array]: List of IDs to filter by +- `parentTaskId` [query, string]: parent task id to fetch the status by. Example: "225494730938493804". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -295,7 +295,7 @@ Change the properties of a given script: runtime timeout, name, and whether inpu Required permissions: `Remote Script Orchestration.edit` Parameters: -- `script_id` [path, string] **required** — Script ID. Example: "225494730938493804". -- `body` [body, schemas_UpdateScript] — +- `script_id` [path, string] **required**: Script ID. Example: "225494730938493804". +- `body` [body, schemas_UpdateScript]: Responses: 404 Script not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Remote_Ops_MMS.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Remote_Ops_MMS.md index 29ea1db..d6fc773 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Remote_Ops_MMS.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Remote_Ops_MMS.md @@ -11,7 +11,7 @@ Delete multiple Destination profiles. The profiles that are not possible to dele Required permissions: `Remote Script Orchestration.manageDestinationCredentials` Parameters: -- `body` [body, v2_1.data_exporter.schema_DeleteDestinationProfilesRequestSchema] — +- `body` [body, v2_1.data_exporter.schema_DeleteDestinationProfilesRequestSchema]: Responses: 200 Delete was completed or partially completed., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,8 +24,8 @@ Get Destination profiles available for the specified scope. The profiles are inh Required permissions: `Remote Script Orchestration.viewDestinationCredentials` Parameters: -- `scopeLevel` [query, string] (enum: tenant, account, site, group) — Scope level to get Destination profile configuration. Example: "tenant". -- `scopeId` [query, string] — Scope ID to get Destination profiles configuration. Example: "225494730938493804". +- `scopeLevel` [query, string] (enum: tenant, account, site, group): Scope level to get Destination profile configuration. Example: "tenant". +- `scopeId` [query, string]: Scope ID to get Destination profiles configuration. Example: "225494730938493804". Responses: 403 User has insufficient permission to perform such action, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -38,7 +38,7 @@ Create Destination profile inside specified scope. If the created profile is req Required permissions: `Remote Script Orchestration.manageDestinationCredentials` Parameters: -- `body` [body, v2_1.data_exporter.schema_PostDestinationProfileRequestSchema] — +- `body` [body, v2_1.data_exporter.schema_PostDestinationProfileRequestSchema]: Responses: 401 Unauthorized access - please sign in and retry., 200 Successes, 400 Invalid user input received. See error details for further i @@ -51,7 +51,7 @@ Set profile as default profile of the scope Required permissions: `Remote Script Orchestration.manageDestinationCredentials` Parameters: -- `body` [body, v2_1.data_exporter.schema_SetDefaultDestinationProfile] — +- `body` [body, v2_1.data_exporter.schema_SetDefaultDestinationProfile]: Responses: 403 User has insufficient permission to perform such action, 400 Invalid user input received. See error details for further i, 200 Get Destination profile, 401 Unauthorized access - please sign in and retry. @@ -64,7 +64,7 @@ Delete Destination profile with specified ID. If the profile was used as default Required permissions: `Remote Script Orchestration.manageDestinationCredentials` Parameters: -- `profile_id` [path, string] **required** — Profile ID. Example: "225494730938493804". +- `profile_id` [path, string] **required**: Profile ID. Example: "225494730938493804". Responses: 403 User has insufficient permission to perform such action, 404 Destination profile is not found, 200 Destination profile is deleted, 401 Unauthorized access - please sign in and retry. @@ -77,9 +77,9 @@ Get Destination profile with specified ID Required permissions: `Remote Script Orchestration.manageDestinationCredentials` Parameters: -- `profile_id` [path, string] **required** — Profile ID. Example: "225494730938493804". -- `scopeLevel` [query, string] (enum: tenant, account, site, group) — Scope level to get Destination profile configuration. Example: "tenant". -- `scopeId` [query, string] — Scope ID to get Destination profiles configuration. Example: "225494730938493804". +- `profile_id` [path, string] **required**: Profile ID. Example: "225494730938493804". +- `scopeLevel` [query, string] (enum: tenant, account, site, group): Scope level to get Destination profile configuration. Example: "tenant". +- `scopeId` [query, string]: Scope ID to get Destination profiles configuration. Example: "225494730938493804". Responses: 403 User has insufficient permission to perform such action, 404 Destination profile is not found, 200 Get Destination profile, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -92,8 +92,8 @@ Update contents of existing Destination profile with specified ID. All the profi Required permissions: `Remote Script Orchestration.manageDestinationCredentials` Parameters: -- `profile_id` [path, string] **required** — Profile ID. Example: "225494730938493804". -- `body` [body, v2_1.data_exporter.schema_PutDestinationProfileRequestSchema] — +- `profile_id` [path, string] **required**: Profile ID. Example: "225494730938493804". +- `body` [body, v2_1.data_exporter.schema_PutDestinationProfileRequestSchema]: Responses: 403 User has insufficient permission to perform such action, 404 Destination profile is not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -105,9 +105,9 @@ Get results sent to data exporter Optional permissions: `Remote Script Orchestration.view, Remote Ops Forensics.view, Remote Script Orchestration.viewDestinationResults` Parameters: -- `taskId` [query, string] — Task id -- `maliciousGroupId` [query, string] — Threat malicious group id -- `agentId` [query, string] **required** — Id of the agent the data came from +- `taskId` [query, string]: Task id +- `maliciousGroupId` [query, string]: Threat malicious group id +- `agentId` [query, string] **required**: Id of the agent the data came from Responses: 403 User has insufficient permission to perform such action, 200 Get Destination profile results, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -120,7 +120,7 @@ Schedule forensics for future run. The profile will be scheduled for execution o Required permissions: `Remote Script Orchestration.createScheduledTasks, Remote Ops Forensics.runForensicsCollection` Parameters: -- `body` [body, v2_1.scheduling.schema_ScheduleForensicsCollectionRequestSchema] — +- `body` [body, v2_1.scheduling.schema_ScheduleForensicsCollectionRequestSchema]: Responses: 401 Unauthorized access - please sign in and retry., 200 Success, 400 Invalid user input received. See error details for further i @@ -134,7 +134,7 @@ Required permissions: `Remote Script Orchestration.createScheduledTasks` Optional permissions: `Remote Script Orchestration.runActionScript, Remote Script Orchestration.runDataCollectionScript, Remote Script Orchestration.runArtifactCollectionScript` Parameters: -- `body` [body, v2_1.scheduling.schema_ScheduleRemoteScriptRequestSchema] — +- `body` [body, v2_1.scheduling.schema_ScheduleRemoteScriptRequestSchema]: Responses: 401 Unauthorized access - please sign in and retry., 200 Success, 400 Invalid user input received. See error details for further i @@ -147,7 +147,7 @@ Delete multiple Scheduled tasks. The tasks that are not possible to delete (e.g. Required permissions: `Remote Script Orchestration.deleteScheduledTasks` Parameters: -- `body` [body, v2_1.scheduling.schema_DeleteScheduledTasksRequestSchema] — +- `body` [body, v2_1.scheduling.schema_DeleteScheduledTasksRequestSchema]: Responses: 200 Delete was completed or partially completed., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -160,30 +160,30 @@ Get available Scheduled Tasks Required permissions: `Remote Script Orchestration.viewScheduledTasks` Parameters: -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `scopeName__contains` [query, array] — Keyword to search in scope name -- `outputDestination` [query, array] — List of the tasks types. Example: "SentinelCloud". -- `creatorId` [query, array] — IDs of creating user of scheduled task. Example: "225494730938493804,225494730938493915". -- `createdAt__between` [query, string] — Date range for creation time -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `type` [query, array] — List of the tasks types. Example: "action". -- `osTypes` [query, array] — List of the OS types. Example: "linux". -- `ids` [query, array] — A list of scheduled tasks ids. Example: "225494730938493804,225494730938493915". -- `description__contains` [query, array] — Keyword to search in description -- `status` [query, array] — List of the tasks status. Example: "scheduled". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Keyword to search in scheduled tasks profile name -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `scheduledTime__between` [query, string] — Date range for scheduled execution time -- `targetScope` [query, array] — IDs of target scopes of scheduled task. Example: "225494730938493804,225494730938493915". -- `id__contains` [query, array] — Keyword to search in task ID -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `sortBy` [query, string] (enum: id, name, description, scheduledTime, type, osTypes, outputDestination, createdAt, targetScope, creator, status) — The column to sort the results by. Example: "id". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `name__contains` [query, array] — Keyword to search in task name +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `scopeName__contains` [query, array]: Keyword to search in scope name +- `outputDestination` [query, array]: List of the tasks types. Example: "SentinelCloud". +- `creatorId` [query, array]: IDs of creating user of scheduled task. Example: "225494730938493804,225494730938493915". +- `createdAt__between` [query, string]: Date range for creation time +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `type` [query, array]: List of the tasks types. Example: "action". +- `osTypes` [query, array]: List of the OS types. Example: "linux". +- `ids` [query, array]: A list of scheduled tasks ids. Example: "225494730938493804,225494730938493915". +- `description__contains` [query, array]: Keyword to search in description +- `status` [query, array]: List of the tasks status. Example: "scheduled". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Keyword to search in scheduled tasks profile name +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `scheduledTime__between` [query, string]: Date range for scheduled execution time +- `targetScope` [query, array]: IDs of target scopes of scheduled task. Example: "225494730938493804,225494730938493915". +- `id__contains` [query, array]: Keyword to search in task ID +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `sortBy` [query, string] (enum: id, name, description, scheduledTime, type, osTypes, outputDestination, createdAt, targetScope, creator, status): The column to sort the results by. Example: "id". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `name__contains` [query, array]: Keyword to search in task name Responses: 403 User has insufficient permission to perform such action, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -196,7 +196,7 @@ Update existing Scheduled task Required permissions: `Remote Script Orchestration.updateScheduledTasks` Parameters: -- `scheduled_task_id` [path, string] **required** — Scheduled Task ID. Example: "225494730938493804". -- `body` [body, v2_1.scheduling.schema_PutScheduledTaskRequestSchema] — +- `scheduled_task_id` [path, string] **required**: Scheduled Task ID. Example: "225494730938493804". +- `body` [body, v2_1.scheduling.schema_PutScheduledTaskRequestSchema]: Responses: 403 User has insufficient permission to perform such action, 404 Scheduled task is not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Saved_Searches.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Saved_Searches.md index 05f9ec9..2681f98 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Saved_Searches.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Saved_Searches.md @@ -11,7 +11,7 @@ Retrieves all saved searches visible to the current user. Saved searches allow y Required permissions: `SDL Search (Previously Skylight).create, SDL Search (Previously Skylight).edit, SDL Search (Previously Skylight).delete` Parameters: -- `type` [query, string] (enum: PRIVATE, SHARED) — Filter by search type. PRIVATE searches are visible only to you, while SHARED searches are visible to all users in your current scope. Defaults to PRIVATE if not specified. +- `type` [query, string] (enum: PRIVATE, SHARED): Filter by search type. PRIVATE searches are visible only to you, while SHARED searches are visible to all users in your current scope. Defaults to PRIVATE if not specified. Responses: 200 List of saved searches retrieved successfully., 401 Unauthorized. Authentication is required., 403 Forbidden. User does not have permission to manage searches. @@ -26,7 +26,7 @@ Note: A `teamToken` query parameter will be automatically added to each search U Required permissions: `SDL Search (Previously Skylight).create, SDL Search (Previously Skylight).edit, SDL Search (Previously Skylight).delete` Parameters: -- `body` [body, v2_1.saved_searches.schemas_BatchUpsertRequest] **required** — List of saved searches to create or update, along with the duplicate handling strategy. +- `body` [body, v2_1.saved_searches.schemas_BatchUpsertRequest] **required**: List of saved searches to create or update, along with the duplicate handling strategy. Responses: 200 All searches were processed successfully. This includes sear, 207 Partial success. Some searches were saved successfully, but , 400 Invalid request. The request body is malformed or contains i, 401 Authentication required. Please provide valid credentials., 403 Permission denied. You do not have the required permissions , 500 Internal server error. All searches failed to save due to a @@ -39,6 +39,6 @@ Delete multiple saved searches in a single request. You can delete up to 100 sea Required permissions: `SDL Search (Previously Skylight).create, SDL Search (Previously Skylight).edit, SDL Search (Previously Skylight).delete` Parameters: -- `body` [body, v2_1.saved_searches.schemas_BatchDeleteRequest] **required** — List of saved searches to delete, identified by name and type. +- `body` [body, v2_1.saved_searches.schemas_BatchDeleteRequest] **required**: List of saved searches to delete, identified by name and type. Responses: 200 All searches were deleted successfully., 207 Partial success. Some searches were deleted successfully, bu, 400 Invalid request. The request body is malformed or contains i, 401 Authentication required. Please provide valid credentials., 403 Permission denied. You do not have the required permissions , 500 Internal server error. All searches failed to delete due to diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sentinel_Deploy.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sentinel_Deploy.md index 98eb9a7..c05f6f4 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sentinel_Deploy.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sentinel_Deploy.md @@ -11,20 +11,20 @@ Get the data for each row in the Cred Groups table. Required permissions: `Ranger.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: groupName, updatedAt, createdAt, domain, targetOs) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `groupName` [query, string] — Group name being searched -- `groupNameLike` [query, string] — Group name being searched -- `ids` [query, array] — A list of ids to get -- `totalDetails__gt` [query, integer] — Get creds with total details greater than the supplied number -- `targetOs` [query, string] (enum: windows, osx_linux) — The os type for this cred group. Example: "windows". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: groupName, updatedAt, createdAt, domain, targetOs): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `groupName` [query, string]: Group name being searched +- `groupNameLike` [query, string]: Group name being searched +- `ids` [query, array]: A list of ids to get +- `totalDetails__gt` [query, integer]: Get creds with total details greater than the supplied number +- `targetOs` [query, string] (enum: windows, osx_linux): The os type for this cred group. Example: "windows". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -37,7 +37,7 @@ Create a new Cred Group. Required permissions: `Ranger.manageCredentials` Parameters: -- `body` [body, ranger.auto_deploy_schemas_CredGroupsPostSchema] — +- `body` [body, ranger.auto_deploy_schemas_CredGroupsPostSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -50,20 +50,20 @@ Get the data for each row in the Cred Groups details table. Required permissions: `Ranger.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: title, type, updatedAt, createdAt, credType) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — Single Account ID to filter by. Example: "225494730938493804". -- `siteIds` [query, array] — Single Site ID to filter by. Example: "225494730938493804". -- `title` [query, string] — Exact filter by title -- `titleLike` [query, string] — Like filter by title -- `credTypeLike` [query, string] — The type of the cred group -- `ids` [query, array] — A list of ids to get -- `credGroupIds` [query, array] — A list of ids to get +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: title, type, updatedAt, createdAt, credType): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: Single Account ID to filter by. Example: "225494730938493804". +- `siteIds` [query, array]: Single Site ID to filter by. Example: "225494730938493804". +- `title` [query, string]: Exact filter by title +- `titleLike` [query, string]: Like filter by title +- `credTypeLike` [query, string]: The type of the cred group +- `ids` [query, array]: A list of ids to get +- `credGroupIds` [query, array]: A list of ids to get Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -76,7 +76,7 @@ Add cred details to a cred group. Required permissions: `Ranger.manageCredentials` Parameters: -- `body` [body, ranger.auto_deploy_schemas_CredGroupsDetailsPostSchema] — +- `body` [body, ranger.auto_deploy_schemas_CredGroupsDetailsPostSchema]: Responses: 404 Cred group not found., 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -89,7 +89,7 @@ Delete cred group detail value. Required permissions: `Ranger.manageCredentials` Parameters: -- `detail_id` [path, string] **required** — Cred group detail ID. Example: "225494730938493804". +- `detail_id` [path, string] **required**: Cred group detail ID. Example: "225494730938493804". Responses: 404 Cred group not found., 200 Success, 401 Unauthorized access - please sign in and retry. @@ -102,8 +102,8 @@ Update cred group values. Required permissions: `Ranger.manageCredentials` Parameters: -- `detail_id` [path, string] **required** — Cred group detail ID. Example: "225494730938493804". -- `body` [body, ranger.auto_deploy_schemas_CredPutDetailsSchema] — +- `detail_id` [path, string] **required**: Cred group detail ID. Example: "225494730938493804". +- `body` [body, ranger.auto_deploy_schemas_CredPutDetailsSchema]: Responses: 404 Cred group not found., 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -116,6 +116,6 @@ Delete cred group value. Required permissions: `Ranger.manageCredentials` Parameters: -- `cred_group_id` [path, string] **required** — Cred group ID. Example: "225494730938493804". +- `cred_group_id` [path, string] **required**: Cred group ID. Example: "225494730938493804". Responses: 404 Cred group not found., 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Service_Users.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Service_Users.md index 1041be3..603e3c0 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Service_Users.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Service_Users.md @@ -11,11 +11,11 @@ Export Service User data to a CSV, for Service Users that match the filter. Required permissions: `Service Users.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — List of service user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: full_name, email, description -- `roleIds` [query, array] — List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: List of service user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: full_name, email, description +- `roleIds` [query, array]: List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -28,18 +28,18 @@ Get a list of service users. Required permissions: `Service Users.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, name, fullName, description, firstLogin, lastLogin, dateJoined, roleId, apiTokenCreatedAt, apiTokenExpiresAt, lastActivation, createdByName, updatedByName) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `ids` [query, array] — List of service user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: full_name, email, description -- `roleIds` [query, array] — List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, name, fullName, description, firstLogin, lastLogin, dateJoined, roleId, apiTokenCreatedAt, apiTokenExpiresAt, lastActivation, createdByName, updatedByName): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `ids` [query, array]: List of service user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: full_name, email, description +- `roleIds` [query, array]: List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". Responses: 401 Unauthorized access - please sign in and retry., 200 List of service users retrieved successfully., 400 Invalid user input received. See error details for further i @@ -52,7 +52,7 @@ Create a new service user. Required permissions: `Service Users.create` Parameters: -- `body` [body, service_users.schemas_CreateServiceUserSchema] — +- `body` [body, service_users.schemas_CreateServiceUserSchema]: Responses: 403 Not enough permissions to create service user., 200 Service User created successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -65,7 +65,7 @@ Delete all service users that match the filter. Required permissions: `Service Users.delete` Parameters: -- `body` [body, service_users.schemas_BulkDeleteServiceUsersSchema] — +- `body` [body, service_users.schemas_BulkDeleteServiceUsersSchema]: Responses: 403 Insufficient permissions., 200 Service Users deleted successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -78,7 +78,7 @@ Delete a service user by ID. Required permissions: `Service Users.delete` Parameters: -- `service_user_id` [path, string] **required** — Service User ID. Example: "225494730938493804". +- `service_user_id` [path, string] **required**: Service User ID. Example: "225494730938493804". Responses: 403 Insufficient permissions., 200 Service User deleted successfully., 401 Unauthorized access - please sign in and retry. @@ -91,7 +91,7 @@ Get a specific service user by ID. Required permissions: `Service Users.view` Parameters: -- `service_user_id` [path, string] **required** — Service User ID. Example: "225494730938493804". +- `service_user_id` [path, string] **required**: Service User ID. Example: "225494730938493804". Responses: 404 Service User not found., 401 Unauthorized access - please sign in and retry., 200 Service user retrieved successfully. @@ -104,8 +104,8 @@ Change properties of the service user with the given ID. Required permissions: `Service Users.edit` Parameters: -- `service_user_id` [path, string] **required** — Service User ID. Example: "225494730938493804". -- `body` [body, service_users.schemas_UpdateServiceUserSchema] — +- `service_user_id` [path, string] **required**: Service User ID. Example: "225494730938493804". +- `body` [body, service_users.schemas_UpdateServiceUserSchema]: Responses: 404 Service User not found., 403 Forbidden., 200 Service User updated successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,7 +118,7 @@ Generate a new API token for a service user and revoke the existing API token. Required permissions: `Service Users.edit` Parameters: -- `service_user_id` [path, string] **required** — Service User ID. Example: "225494730938493804". -- `body` [body, service_users.schemas_GenerateServiceUserApiTokenSchema] — +- `service_user_id` [path, string] **required**: Service User ID. Example: "225494730938493804". +- `body` [body, service_users.schemas_GenerateServiceUserApiTokenSchema]: Responses: 409 API token creation conflict., 404 Service User not found., 403 Forbidden., 200 API token delivered to user., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Settings.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Settings.md index 5313659..2cf751e 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Settings.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Settings.md @@ -11,8 +11,8 @@ Get the Global Active Directory settings. Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -25,7 +25,7 @@ Update the Global Active Directory settings. Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_AdSettingsPutSchema] — +- `body` [body, settings_AdSettingsPutSchema]: Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -38,8 +38,8 @@ Get the map of Active Directory FQDNs to user roles of the given Sites (use "sit Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -52,7 +52,7 @@ Update the Active Directory FQDNs of a Site or Account. Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_AdFqdnsPutSchema] — +- `body` [body, settings_AdFqdnsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -65,7 +65,7 @@ Test Active Directory settings. Required permissions: `Integrations.create` Parameters: -- `body` [body, settings_AdSettingsPutSchema] — +- `body` [body, settings_AdSettingsPutSchema]: Responses: 404 Scope does not exist, 400 Invalid user input received. See error details for further i, 200 Data retrieved successfully, 401 Unauthorized access - please sign in and retry. @@ -78,8 +78,8 @@ Responses: 404 Scope does not exist, 400 Invalid user input received. See error Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -92,7 +92,7 @@ Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_MicrosoftSettingsPutSchema] — +- `body` [body, settings_MicrosoftSettingsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -105,7 +105,7 @@ Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Required permissions: `Integrations.create` Parameters: -- `body` [body, settings_MicrosoftSettingsPutSchema] — +- `body` [body, settings_MicrosoftSettingsPutSchema]: Responses: 404 Scope does not exist, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -118,8 +118,8 @@ Get the notification settings for the given Sites (to get the IDs, run "settings Required permissions: `Notifications.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -132,7 +132,7 @@ Change the notifications for the given Sites (to get the IDs, run "settings") or Required permissions: `Notifications.edit` Parameters: -- `body` [body, notifications_schemas_NotificationSettingsPutSchema] — +- `body` [body, notifications_schemas_NotificationSettingsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -145,7 +145,7 @@ Clear (discard without sending) pending email notifications for the given Sites Required permissions: `Notifications.delete` Parameters: -- `body` [body, notifications_schemas_CancelPendingEmailNotificationsPostSchema] — +- `body` [body, notifications_schemas_CancelPendingEmailNotificationsPostSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -158,12 +158,12 @@ Get the emails that are configured to receive notifications. Required permissions: `Notifications.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `name` [query, string] — Name -- `email` [query, string] — Email -- `sms` [query, string] — Sms -- `query` [query, string] — Full text search for fields: name, email, sms +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `name` [query, string]: Name +- `email` [query, string]: Email +- `sms` [query, string]: Sms +- `query` [query, string]: Full text search for fields: name, email, sms Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -177,7 +177,7 @@ Required permissions: `Notifications.edit` Optional permissions: `Notifications.create` Parameters: -- `body` [body, settings_NotificationRecipientSettingsPutSchema] — +- `body` [body, settings_NotificationRecipientSettingsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -190,7 +190,7 @@ Delete a notification recipient by ID. To get the IDs of recipients, run "recipi Required permissions: `Notifications.delete` Parameters: -- `recipient_id` [path, string] **required** — Recipient ID. Example: "225494730938493804". +- `recipient_id` [path, string] **required**: Recipient ID. Example: "225494730938493804". Responses: 403 Insufficient permissions., 200 Recipient deleted successfully., 401 Unauthorized access - please sign in and retry. @@ -203,8 +203,8 @@ Responses: 403 Insufficient permissions., 200 Recipient deleted successfully., 4 Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -217,7 +217,7 @@ Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_SmsSettingsPutSchema] — +- `body` [body, settings_SmsSettingsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -230,8 +230,8 @@ Get the SMTP server configuration of the given Sites (to get the IDs, run "sites Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -244,7 +244,7 @@ Change the SMTP server configuration for the given Sites or Accounts. Use this c Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_SmtpSettingsPutSchema] — +- `body` [body, settings_SmtpSettingsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -257,7 +257,7 @@ Test SMTP settings between the Management and the SMTP server. This integration Required permissions: `Integrations.create` Parameters: -- `body` [body, settings_SmtpSettingsTestSchema] — +- `body` [body, settings_SmtpSettingsTestSchema]: Responses: 404 Scope does not exist, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -270,8 +270,8 @@ Get the Single Sign-On configuration for the given Sites (to get the IDs, run "s Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -284,7 +284,7 @@ Change the Single Sign-On configuration for the given Sites (to get the IDs, run Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_SsoSettingsPutSchema] — +- `body` [body, settings_SsoSettingsPutSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -297,8 +297,8 @@ Get the Service Provider Certificate for the Single Sign-On configuration for th Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -311,8 +311,8 @@ Download the Service Provider Certificate for the Single Sign-On configuration f Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -325,7 +325,7 @@ Test Single Sign-On settings. Required permissions: `Integrations.create` Parameters: -- `body` [body, settings_SsoSettingsPutSchema] — +- `body` [body, settings_SsoSettingsPutSchema]: Responses: 200 The url to redirect too., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -338,8 +338,8 @@ Get the configuration of the syslog server integrated with the given Sites (to g Required permissions: `Integrations.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -352,7 +352,7 @@ Change the configuration of the syslog server of the given Sites (to get the IDs Required permissions: `Integrations.edit` Parameters: -- `body` [body, settings_SyslogSettingsPutSchema] — +- `body` [body, settings_SyslogSettingsPutSchema]: Responses: 404 Scope does not exist, 403 User is not allowed in this scope, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -365,6 +365,6 @@ Test Syslog settings. The Management tests the connection to the Syslog server. Required permissions: `Integrations.create` Parameters: -- `body` [body, settings_SyslogSettingsPutSchema] — +- `body` [body, settings_SyslogSettingsPutSchema]: Responses: 404 Scope does not exist, 200 Data retrieved successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sites.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sites.md index 95ecfea..bcb7926 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sites.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Sites.md @@ -11,34 +11,34 @@ Export Sites data to a CSV, for Sites that match the filter. Required permissions: `Sites.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: name, account_name, description. (Note: on single-account consoles account name will not be matched) -- `name` [query, string] — Name. Example: "My Site". -- `isDefault` [query, boolean] — Is default -- `healthStatus` [query, boolean] — Health status -- `siteType` [query, string] (enum: Trial, Paid) — Site type. Example: "Trial". -- `expiration` [query, string] — Expiration. Example: "2018-02-27T04:49:26.257525Z". -- `totalLicenses` [query, integer] — Total licenses -- `activeLicenses` [query, integer] — Active licenses -- `externalId` [query, string] — Id in a CRM external system -- `description` [query, string] — The description for the Site -- `createdAt` [query, string] — Timestamp of site creation. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt` [query, string] — Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". -- `state` [query, string] (enum: active, expired, deleted) — Site state. Example: "active". -- `states` [query, array] — List of states to filter -- `statesNin` [query, array] — List of states to not filter -- `suite` [query, string] (enum: Core, Control, Complete) — [DEPRECATED] Use sku instead. Example: "Core". -- `features` [query, array] — If sent return only sites that support this features. Example: "firewall-control". -- `sku` [query, string] — Sku. Example: "core". -- `module` [query, string] — Module. Example: "star,rso". -- `accountId` [query, string] — Account id. Example: "225494730938493804". -- `adminOnly` [query, boolean] — [DEPRECATED] Show sites the user has Admin privileges to -- `availableMoveSites` [query, boolean] — Only return sites the user can move agents to -- `registrationToken` [query, string] — Registration token. Example: "eyJ1cmwiOiAiaHR0cHM6Ly9jb25zb2xlLnNlbnRpbmVsb25lLm5ldCIsICJzaXRlX2tleSI6ICIwNzhkYjliMWUyOTA1Y2NhIn0=". -- `accountName__contains` [query, array] — Free-text filter by account name (supports multiple values) -- `name__contains` [query, array] — Free-text filter by site name (supports multiple values) -- `description__contains` [query, array] — Free-text filter by site description (supports multiple values) +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: name, account_name, description. (Note: on single-account consoles account name will not be matched) +- `name` [query, string]: Name. Example: "My Site". +- `isDefault` [query, boolean]: Is default +- `healthStatus` [query, boolean]: Health status +- `siteType` [query, string] (enum: Trial, Paid): Site type. Example: "Trial". +- `expiration` [query, string]: Expiration. Example: "2018-02-27T04:49:26.257525Z". +- `totalLicenses` [query, integer]: Total licenses +- `activeLicenses` [query, integer]: Active licenses +- `externalId` [query, string]: Id in a CRM external system +- `description` [query, string]: The description for the Site +- `createdAt` [query, string]: Timestamp of site creation. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt` [query, string]: Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". +- `state` [query, string] (enum: active, expired, deleted): Site state. Example: "active". +- `states` [query, array]: List of states to filter +- `statesNin` [query, array]: List of states to not filter +- `suite` [query, string] (enum: Core, Control, Complete): [DEPRECATED] Use sku instead. Example: "Core". +- `features` [query, array]: If sent return only sites that support this features. Example: "firewall-control". +- `sku` [query, string]: Sku. Example: "core". +- `module` [query, string]: Module. Example: "star,rso". +- `accountId` [query, string]: Account id. Example: "225494730938493804". +- `adminOnly` [query, boolean]: [DEPRECATED] Show sites the user has Admin privileges to +- `availableMoveSites` [query, boolean]: Only return sites the user can move agents to +- `registrationToken` [query, string]: Registration token. Example: "eyJ1cmwiOiAiaHR0cHM6Ly9jb25zb2xlLnNlbnRpbmVsb25lLm5ldCIsICJzaXRlX2tleSI6ICIwNzhkYjliMWUyOTA1Y2NhIn0=". +- `accountName__contains` [query, array]: Free-text filter by account name (supports multiple values) +- `name__contains` [query, array]: Free-text filter by site name (supports multiple values) +- `description__contains` [query, array]: Free-text filter by site description (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -51,7 +51,7 @@ Create a Site and an Admin role user. This requires an Admin role with a Global Required permissions: `Sites.create` Parameters: -- `body` [body, sites_SiteDataWithUserSchema] — +- `body` [body, sites_SiteDataWithUserSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -65,41 +65,41 @@ Required permissions: `Sites.view` Optional permissions: `Endpoints.moveToAnotherSite` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, name, totalLicenses, expiration, siteType, state, suite, createdAt, updatedAt, activeLicenses, accountName, sku, description, usageType) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: name, account_name, description. (Note: on single-account consoles account name will not be matched) -- `name` [query, string] — Name. Example: "My Site". -- `isDefault` [query, boolean] — Is default -- `healthStatus` [query, boolean] — Health status -- `siteType` [query, string] (enum: Trial, Paid) — Site type. Example: "Trial". -- `expiration` [query, string] — Expiration. Example: "2018-02-27T04:49:26.257525Z". -- `totalLicenses` [query, integer] — Total licenses -- `activeLicenses` [query, integer] — Active licenses -- `externalId` [query, string] — Id in a CRM external system -- `description` [query, string] — The description for the Site -- `createdAt` [query, string] — Timestamp of site creation. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt` [query, string] — Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". -- `state` [query, string] (enum: active, expired, deleted) — Site state. Example: "active". -- `states` [query, array] — List of states to filter -- `statesNin` [query, array] — List of states to not filter -- `suite` [query, string] (enum: Core, Control, Complete) — [DEPRECATED] Use sku instead. Example: "Core". -- `features` [query, array] — If sent return only sites that support this features. Example: "firewall-control". -- `sku` [query, string] — Sku. Example: "core". -- `module` [query, string] — Module. Example: "star,rso". -- `accountId` [query, string] — Account id. Example: "225494730938493804". -- `adminOnly` [query, boolean] — [DEPRECATED] Show sites the user has Admin privileges to -- `availableMoveSites` [query, boolean] — Only return sites the user can move agents to -- `registrationToken` [query, string] — Registration token. Example: "eyJ1cmwiOiAiaHR0cHM6Ly9jb25zb2xlLnNlbnRpbmVsb25lLm5ldCIsICJzaXRlX2tleSI6ICIwNzhkYjliMWUyOTA1Y2NhIn0=". -- `accountName__contains` [query, array] — Free-text filter by account name (supports multiple values) -- `name__contains` [query, array] — Free-text filter by site name (supports multiple values) -- `description__contains` [query, array] — Free-text filter by site description (supports multiple values) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, name, totalLicenses, expiration, siteType, state, suite, createdAt, updatedAt, activeLicenses, accountName, sku, description, usageType): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: name, account_name, description. (Note: on single-account consoles account name will not be matched) +- `name` [query, string]: Name. Example: "My Site". +- `isDefault` [query, boolean]: Is default +- `healthStatus` [query, boolean]: Health status +- `siteType` [query, string] (enum: Trial, Paid): Site type. Example: "Trial". +- `expiration` [query, string]: Expiration. Example: "2018-02-27T04:49:26.257525Z". +- `totalLicenses` [query, integer]: Total licenses +- `activeLicenses` [query, integer]: Active licenses +- `externalId` [query, string]: Id in a CRM external system +- `description` [query, string]: The description for the Site +- `createdAt` [query, string]: Timestamp of site creation. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt` [query, string]: Timestamp of last update. Example: "2018-02-27T04:49:26.257525Z". +- `state` [query, string] (enum: active, expired, deleted): Site state. Example: "active". +- `states` [query, array]: List of states to filter +- `statesNin` [query, array]: List of states to not filter +- `suite` [query, string] (enum: Core, Control, Complete): [DEPRECATED] Use sku instead. Example: "Core". +- `features` [query, array]: If sent return only sites that support this features. Example: "firewall-control". +- `sku` [query, string]: Sku. Example: "core". +- `module` [query, string]: Module. Example: "star,rso". +- `accountId` [query, string]: Account id. Example: "225494730938493804". +- `adminOnly` [query, boolean]: [DEPRECATED] Show sites the user has Admin privileges to +- `availableMoveSites` [query, boolean]: Only return sites the user can move agents to +- `registrationToken` [query, string]: Registration token. Example: "eyJ1cmwiOiAiaHR0cHM6Ly9jb25zb2xlLnNlbnRpbmVsb25lLm5ldCIsICJzaXRlX2tleSI6ICIwNzhkYjliMWUyOTA1Y2NhIn0=". +- `accountName__contains` [query, array]: Free-text filter by account name (supports multiple values) +- `name__contains` [query, array]: Free-text filter by site name (supports multiple values) +- `description__contains` [query, array]: Free-text filter by site description (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -112,7 +112,7 @@ Create a Site. This requires an Admin role with a Global scope or Account scope Required permissions: `Sites.create` Parameters: -- `body` [body, sites_PostSiteSchema] — +- `body` [body, sites_PostSiteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -125,7 +125,7 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f Required permissions: `Sites.create` Parameters: -- `body` [body, sites_DuplicateSiteSchema] — +- `body` [body, sites_DuplicateSiteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -138,7 +138,7 @@ Change the properties of the Sites given by IDs.
      To get the IDs, run 'sites' Required permissions: `Sites.edit` Parameters: -- `body` [body, sites_SiteBulkPutSchema] — +- `body` [body, sites_SiteBulkPutSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -151,7 +151,7 @@ Delete the Site of the given ID. To get the ID, run "sites".
      You must have a Required permissions: `Sites.delete` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -164,7 +164,7 @@ Get the data of the Site of the ID. To get the ID, run "sites".
      The response Required permissions: `Sites.view` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 404 Site not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -177,8 +177,8 @@ Change the policy and properties of the Site given by ID.
      To get the ID, run Required permissions: `Sites.edit` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". -- `body` [body, sites_SitePutSchema] — +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". +- `body` [body, sites_SitePutSchema]: Responses: 404 Site not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -191,7 +191,7 @@ Expire the Site of the given ID (run "sites" to get the ID).
      You must have a Required permissions: `Sites.edit` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 404 Site not found, 200 Expire site now, 401 Unauthorized access - please sign in and retry. @@ -204,7 +204,7 @@ Get the time when authorization of local upgrades/downgrades expires, and the nu Required permissions: `Local Upgrade/Downgrade Authorization.view` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -217,8 +217,8 @@ Edit when authorization of local upgrades/downgrades expires. Returns the number Required permissions: `Local Upgrade/Downgrade Authorization.edit` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". -- `body` [body, sites_PutSiteApprovalJsonSchema] — +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". +- `body` [body, sites_PutSiteApprovalJsonSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -231,7 +231,7 @@ Get a CSV file containing the Agents authorized for local upgrades/downgrades, i Required permissions: `Local Upgrade/Downgrade Authorization.view` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -244,8 +244,8 @@ Reactivate an expired Site.
      You must have an Admin role with scope access th Required permissions: `Sites.edit` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". -- `body` [body, sites_ReactivateSiteSchema] — +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". +- `body` [body, sites_ReactivateSiteSchema]: Responses: 404 Site not found, 200 Site reactivated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -258,7 +258,7 @@ Regenerate the key for the given Site.
      To get the site_id, use "sites". Required permissions: `Sites.edit` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 403 No permission for regenerating a key., 404 Site not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -271,8 +271,8 @@ When a Site is created through the Console, it gets the Global policy.
      If yo Required permissions: `Policy.edit` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". -- `body` [body, policies_schemas_RevertPolicySchema] — +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". +- `body` [body, policies_schemas_RevertPolicySchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -285,6 +285,6 @@ Get the registration token of the Site of the ID. Required permissions: `Sites.view` Parameters: -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 404 Site not found, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/System.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/System.md index 64cac31..007d831 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/System.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/System.md @@ -11,8 +11,8 @@ Get the configuration of your SentinelOne system.
      The response shows basic i Required permissions: `Configuration.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -26,7 +26,7 @@ Required permissions: `Configuration.edit` Optional permissions: `Users.allow2FAForOtherUsers` Parameters: -- `body` [body, system_PutSystemConfiguration] — +- `body` [body, system_PutSystemConfiguration]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tag_Manager.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tag_Manager.md index 481be25..25553bb 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tag_Manager.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tag_Manager.md @@ -11,7 +11,7 @@ Delete all tags that match the filters. Required permissions: `Tag Management.delete` Parameters: -- `body` [body, v2_1.mgmt_tag_manager.schemas_TagsDeleteSchema] — +- `body` [body, v2_1.mgmt_tag_manager.schemas_TagsDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,7 +24,7 @@ Each tag must contain a type (endpoints) and key, Value is optional but recommen Required permissions: `Tag Management.create` Parameters: -- `body` [body, v2_1.mgmt_tag_manager.schemas_PostTagSchema] — +- `body` [body, v2_1.mgmt_tag_manager.schemas_PostTagSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -37,7 +37,7 @@ Change the key, value, or description of a tag. Required permissions: `Tag Management.edit` Parameters: -- `tag_id` [path, string] **required** — Tag ID. You can get the ID from the Get Tag-Manager command. Example: "225494730938493804". -- `body` [body, v2_1.mgmt_tag_manager.schemas_PutTagSchema] — +- `tag_id` [path, string] **required**: Tag ID. You can get the ID from the Get Tag-Manager command. Example: "225494730938493804". +- `body` [body, v2_1.mgmt_tag_manager.schemas_PutTagSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tags.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tags.md index 9e244b7..6f66af4 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tags.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tags.md @@ -10,7 +10,7 @@ Delete tags by given filter. Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags, Ranger.manageDeviceTags` Parameters: -- `body` [body, tags.schemas_TagDeleteSchema] — +- `body` [body, tags.schemas_TagDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -22,25 +22,25 @@ Get tags. Optional permissions: `Firewall Control.view, Network Quarantine Control.view, Ranger.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, type, scope, query) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `ids` [query, array] — List of IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Free text search on tag name -- `type` [query, array] **required** — Type in. Example: "firewall". -- `scope` [query, string] (enum: site, global, account, group) — Return tags from given scope level. Example: "site". -- `name__contains` [query, array] — Free-text filter by tag name. Example: "tag_name,tag_na". -- `onlyParents` [query, boolean] — If true returns all tags possible to inherit from parent scopes, otherwise returns all tags already inherited and tags from this scope. -- `kind` [query, string] — Returns tags of this specific kind -- `disablePagination` [query, boolean] — If true, all tags for requested filters will be returned +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, type, scope, query): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `ids` [query, array]: List of IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Free text search on tag name +- `type` [query, array] **required**: Type in. Example: "firewall". +- `scope` [query, string] (enum: site, global, account, group): Return tags from given scope level. Example: "site". +- `name__contains` [query, array]: Free-text filter by tag name. Example: "tag_name,tag_na". +- `onlyParents` [query, boolean]: If true returns all tags possible to inherit from parent scopes, otherwise returns all tags already inherited and tags from this scope. +- `kind` [query, string]: Returns tags of this specific kind +- `disablePagination` [query, boolean]: If true, all tags for requested filters will be returned Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -52,7 +52,7 @@ Add tags to create user-defined logical groups. Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags, Ranger.manageDeviceTags` Parameters: -- `body` [body, tags.schemas_PostTagSchema] — +- `body` [body, tags.schemas_PostTagSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -64,7 +64,7 @@ Delete tag by ID. Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags, Ranger.manageDeviceTags` Parameters: -- `tag_id` [path, string] **required** — Rule ID. Example: "225494730938493804". +- `tag_id` [path, string] **required**: Rule ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -76,7 +76,7 @@ Edit tag Optional permissions: `Firewall Control.manageRulesAndTags, Network Quarantine Control.manageRulesAndTags, Ranger.manageDeviceTags` Parameters: -- `tag_id` [path, string] **required** — Rule ID. Example: "225494730938493804". -- `body` [body, tags.schemas_PutTagSchema] — +- `tag_id` [path, string] **required**: Rule ID. Example: "225494730938493804". +- `body` [body, tags.schemas_PutTagSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tasks.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tasks.md index 5637355..af99484 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tasks.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Tasks.md @@ -11,18 +11,18 @@ Get the task configuration of a scope. Required permissions: `Upgrade Policy.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: scopeId, taskType, createdAt, userId) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection) — Task type. Example: "agents_upgrade". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: scopeId, taskType, createdAt, userId): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection): Task type. Example: "agents_upgrade". Responses: 403 Insufficient permissions, 404 Configuration not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -35,7 +35,7 @@ Create a task configuration. Required permissions: `Upgrade Policy.edit` Parameters: -- `body` [body, tasks.schemas_PutTaskSchema] — +- `body` [body, tasks.schemas_PutTaskSchema]: Responses: 403 Operation is not allowed, 404 Configuration not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -48,19 +48,19 @@ Get the task configuration of child scopes of the given scope, if the tasks are Required permissions: `Upgrade Policy.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: scopeId, taskType, createdAt, userId) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection) — Task type. Example: "agents_upgrade". -- `query` [query, string] — Query +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: scopeId, taskType, createdAt, userId): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection): Task type. Example: "agents_upgrade". +- `query` [query, string]: Query Responses: 403 User is not allowed in this scope, 404 Configuration not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -73,11 +73,11 @@ Get task configuration with flexible maintenance window format. Returns policy_p Required permissions: `Upgrade Policy.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection) — Task type. Example: "agents_upgrade". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection): Task type. Example: "agents_upgrade". Responses: 403 Insufficient permissions, 404 Configuration not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -90,7 +90,7 @@ Update task configuration with flexible maintenance window format. Requires mw_a Required permissions: `Upgrade Policy.edit` Parameters: -- `body` [body, tasks.schemas_PutFlexibleTaskSchema] — +- `body` [body, tasks.schemas_PutFlexibleTaskSchema]: Responses: 400 Invalid user input received. See error details for further i, 403 Operation is not allowed or feature not enabled, 404 Configuration not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -103,18 +103,18 @@ From a given scope, see if there are scopes under it that have local, explicit t Required permissions: `Upgrade Policy.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: scopeId, taskType, createdAt, userId) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection) — Task type. Example: "agents_upgrade". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: scopeId, taskType, createdAt, userId): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection): Task type. Example: "agents_upgrade". Responses: 403 User is not allowed in this scope, 404 Configuration not found, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -127,10 +127,10 @@ Export all maintenance window occurrences for a specific scope as CSV. Supports Required permissions: `Upgrade Policy.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection) — Task type. Example: "agents_upgrade". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `taskType` [query, string] **required** (enum: agents_upgrade, agent_version_change, auto_deploy, script_execution, cis_scan, gad, forensics_collection): Task type. Example: "agents_upgrade". Responses: 500 Report exceeds maximum size, 403 Insufficient permissions, 404 Configuration not found, 200 CSV file with maintenance windows, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Intelligence.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Intelligence.md index 5a7bb13..3d9995f 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Intelligence.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Intelligence.md @@ -11,7 +11,7 @@ Delete an IoC from the Threat Intelligence database that matches a filter using Required permissions: `Threat Intelligence.manage` Parameters: -- `body` [body, v2_1.schemas_IOCDeleteSchema] — +- `body` [body, v2_1.schemas_IOCDeleteSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,44 +24,44 @@ Get the IOCs of a specified Account that match the filter.
      Note: Using creati Required permissions: `Threat Intelligence.view` Parameters: -- `creator__contains` [query, array] — Free-text filter by the user uploaded the Threat Intelligence indicator (supports multiple values). Example: "admin@sentinelone.com". -- `creationTime__lt` [query, string] — Creation Time as set by the user lesser than. Example: "2021-07-13T20:33:29.007906Z". -- `creationTime__lte` [query, string] — Creation Time as set by the user lesser or equal than. Example: "2021-07-11T20:33:29.007906Z". -- `severity` [query, array] — A list of severities to filter by (0-7) -- `uploadTime__lte` [query, string] — The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB lesser or equal than. Example: "2022-07-13T20:33:29.007906Z". -- `uuids` [query, array] — A list of unique Ids of the parent process of the indicator of compromise. Example: "2,c,f,f,a,e,8,7,1,1,9,7,f,2,0,d,8,6,4,f,e,8,3,6,3,e,e,e,6,6,5,1". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". -- `name__contains` [query, array] — Free-text filter by the Indicator name (supports multiple values). Example: "foo.dll". -- `updatedAt__gt` [query, string] — The time at which the indicator was last updated in SentinelOne DB greater than. Example: "2021-07-13T20:33:29.007906Z". -- `malwareNames__in` [query, array] — A list of malware names to filter by. -- `sortBy` [query, string] (enum: id, creationTime, uploadTime, updatedAt, source, type) — The column to sort the results by. Example: "id". -- `creationTime__gt` [query, string] — Creation Time as set by the user greater than. Example: "2021-07-12T20:33:29.007906Z". -- `threatActorTypes__in` [query, array] — List of threat actor types associated with the indicator. -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `labels__in` [query, array] — List of labels associated with the indicator. -- `type` [query, string] (enum: DNS, IPV4, IPV6, MD5, SHA1, SHA256, URL) — The type of the Threat Intelligence indicator. Example: "IPv4". -- `threatActors__in` [query, array] — A list of threat actors to filter by -- `updatedAt__lt` [query, string] — The time at which the indicator was last updated in SentinelOne DB lesser than. Example: "2021-07-13T20:33:29.007906Z". -- `uploadTime__gte` [query, string] — The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB greater or equal than. Example: "2022-07-13T20:33:29.007906Z". -- `updatedAt__gte` [query, string] — The time at which the indicator was last updated in SentinelOne DB greater or equal than. Example: "2021-07-13T20:33:29.007906Z". -- `batchId` [query, string] — Unique ID of the uploaded indicators batch. Example: "atmtn000000028a881bcf939dc6d92ab55443". -- `campaignNames__in` [query, array] — List of campaign names associated with the indicator. -- `uploadTime__lt` [query, string] — The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB lesser than. Example: "2021-07-13T20:33:29.007906Z". -- `creationTime__gte` [query, string] — Creation Time as set by the user greater or equal than. Example: "2021-07-13T20:33:29.007906Z". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `updatedAt__lte` [query, string] — The time at which the indicator was last updated in SentinelOne DB lesser or equal than. Example: "2021-07-13T20:33:29.007906Z". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `source` [query, array] — List of the sources of the identified Threat Intelligence indicator. Example: "AlienVault". -- `description__contains` [query, array] — Free-text filter by the description of the indicator (supports multiple values). Example: "Malicious-activity". -- `uploadTime__gt` [query, string] — The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB greater than. Example: "2022-07-13T20:33:29.007906Z". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `category__in` [query, string] — The categories of the Threat Intelligence indicator, e.g. the malware type associated with the IOC -- `externalId` [query, string] — The unique identifier of the indicator as provided by the Threat Intelligence source. Example: "e277603e-1060-5ad4-9937-c26c97f1ca68". -- `value` [query, string] — The value of the Threat Intelligence indicator. Example: "175.45.176.1". +- `creator__contains` [query, array]: Free-text filter by the user uploaded the Threat Intelligence indicator (supports multiple values). Example: "admin@sentinelone.com". +- `creationTime__lt` [query, string]: Creation Time as set by the user lesser than. Example: "2021-07-13T20:33:29.007906Z". +- `creationTime__lte` [query, string]: Creation Time as set by the user lesser or equal than. Example: "2021-07-11T20:33:29.007906Z". +- `severity` [query, array]: A list of severities to filter by (0-7) +- `uploadTime__lte` [query, string]: The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB lesser or equal than. Example: "2022-07-13T20:33:29.007906Z". +- `uuids` [query, array]: A list of unique Ids of the parent process of the indicator of compromise. Example: "2,c,f,f,a,e,8,7,1,1,9,7,f,2,0,d,8,6,4,f,e,8,3,6,3,e,e,e,6,6,5,1". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". +- `name__contains` [query, array]: Free-text filter by the Indicator name (supports multiple values). Example: "foo.dll". +- `updatedAt__gt` [query, string]: The time at which the indicator was last updated in SentinelOne DB greater than. Example: "2021-07-13T20:33:29.007906Z". +- `malwareNames__in` [query, array]: A list of malware names to filter by. +- `sortBy` [query, string] (enum: id, creationTime, uploadTime, updatedAt, source, type): The column to sort the results by. Example: "id". +- `creationTime__gt` [query, string]: Creation Time as set by the user greater than. Example: "2021-07-12T20:33:29.007906Z". +- `threatActorTypes__in` [query, array]: List of threat actor types associated with the indicator. +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `labels__in` [query, array]: List of labels associated with the indicator. +- `type` [query, string] (enum: DNS, IPV4, IPV6, MD5, SHA1, SHA256, URL): The type of the Threat Intelligence indicator. Example: "IPv4". +- `threatActors__in` [query, array]: A list of threat actors to filter by +- `updatedAt__lt` [query, string]: The time at which the indicator was last updated in SentinelOne DB lesser than. Example: "2021-07-13T20:33:29.007906Z". +- `uploadTime__gte` [query, string]: The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB greater or equal than. Example: "2022-07-13T20:33:29.007906Z". +- `updatedAt__gte` [query, string]: The time at which the indicator was last updated in SentinelOne DB greater or equal than. Example: "2021-07-13T20:33:29.007906Z". +- `batchId` [query, string]: Unique ID of the uploaded indicators batch. Example: "atmtn000000028a881bcf939dc6d92ab55443". +- `campaignNames__in` [query, array]: List of campaign names associated with the indicator. +- `uploadTime__lt` [query, string]: The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB lesser than. Example: "2021-07-13T20:33:29.007906Z". +- `creationTime__gte` [query, string]: Creation Time as set by the user greater or equal than. Example: "2021-07-13T20:33:29.007906Z". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `updatedAt__lte` [query, string]: The time at which the indicator was last updated in SentinelOne DB lesser or equal than. Example: "2021-07-13T20:33:29.007906Z". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `source` [query, array]: List of the sources of the identified Threat Intelligence indicator. Example: "AlienVault". +- `description__contains` [query, array]: Free-text filter by the description of the indicator (supports multiple values). Example: "Malicious-activity". +- `uploadTime__gt` [query, string]: The time at which the Threat Intelligence indicator was uploaded to SentinelOne DB greater than. Example: "2022-07-13T20:33:29.007906Z". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `category__in` [query, string]: The categories of the Threat Intelligence indicator, e.g. the malware type associated with the IOC +- `externalId` [query, string]: The unique identifier of the indicator as provided by the Threat Intelligence source. Example: "e277603e-1060-5ad4-9937-c26c97f1ca68". +- `value` [query, string]: The value of the Threat Intelligence indicator. Example: "175.45.176.1". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -74,7 +74,7 @@ Add an IoC to the Threat Intelligence database.
      These values under data are Required permissions: `Threat Intelligence.manage` Parameters: -- `body` [body, v2_1.schemas_PostThreatIntelligenceSchema] — +- `body` [body, v2_1.schemas_PostThreatIntelligenceSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -87,7 +87,7 @@ Add IOCs to the Threat Intelligence database from a STIX 2.1 bundle. The API wil Required permissions: `Threat Intelligence.manage` Parameters: -- `body` [body, v2_1.schemas_StixPostSchema] — +- `body` [body, v2_1.schemas_StixPostSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -100,7 +100,7 @@ Delete Threat Intelligence user config that match the filter. Required permissions: `Threat Intelligence.manage` Parameters: -- `body` [body, v2_1.schemas_UserConfigFilterSchema] — +- `body` [body, v2_1.schemas_UserConfigFilterSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -113,9 +113,9 @@ Get the Threat Intelligence user config that match the filter. Required permissions: `Threat Intelligence.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". -- `tenant` [query, boolean] — Indicates a tenant scope request +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "4,2,6,4,1,8,0,3,0,2,1,2,0,7,3,7,6,2". +- `tenant` [query, boolean]: Indicates a tenant scope request Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -128,6 +128,6 @@ Create Threat Intelligence user config. Required permissions: `Threat Intelligence.manage` Parameters: -- `body` [body, v2_1.schemas_PostUserConfigSchema] — +- `body` [body, v2_1.schemas_PostUserConfigSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Notes.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Notes.md index 1f92f5f..59899ea 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Notes.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threat_Notes.md @@ -11,7 +11,7 @@ Add a threat note to multiple threats. Required permissions: `Threats.view` Parameters: -- `body` [body, threats.schemas_ThreatsNoteCreateSchema] — +- `body` [body, threats.schemas_ThreatsNoteCreateSchema]: Responses: 200 Threats note successfully created, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -24,16 +24,16 @@ Get the threat notes that match the filter. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: createdAt, updatedAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `creator__like` [query, string] — Threat Note creator name (partially or full). Example: "John". -- `creatorId` [query, string] — Threat Note creator ID. Example: "225494730938493804". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: createdAt, updatedAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `creator__like` [query, string]: Threat Note creator name (partially or full). Example: "John". +- `creatorId` [query, string]: Threat Note creator ID. Example: "225494730938493804". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -46,8 +46,8 @@ Delete a threat note. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `note_id` [path, string] **required** — Threat Note ID. Example: "225494730938493804". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `note_id` [path, string] **required**: Threat Note ID. Example: "225494730938493804". Responses: 200 Threat note successfully deleted, 401 Unauthorized access - please sign in and retry. @@ -60,8 +60,8 @@ Change the text of a threat note. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `note_id` [path, string] **required** — Threat Note ID. Example: "225494730938493804". -- `body` [body, threats.schemas_PostThreatNoteDataSchema] — +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `note_id` [path, string] **required**: Threat Note ID. Example: "225494730938493804". +- `body` [body, threats.schemas_PostThreatNoteDataSchema]: Responses: 200 Threat note successfully updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threats.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threats.md index ac64c95..ba69000 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threats.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Threats.md @@ -11,12 +11,12 @@ Export threat events in CSV or JSON format. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `eventTypes` [query, array] — Filter events by type. Example: "events". -- `eventSubTypes` [query, array] — Filter events by sub-type. Example: "PROCESSCREATION". -- `eventId` [query, string] — Filter by a specific process key and its children -- `processName__like` [query, string] — Filter by process name (substring) -- `format` [query, string] **required** (enum: json, csv) — Exported file format. Example: "json". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `eventTypes` [query, array]: Filter events by type. Example: "events". +- `eventSubTypes` [query, array]: Filter events by sub-type. Example: "PROCESSCREATION". +- `eventId` [query, string]: Filter by a specific process key and its children +- `processName__like` [query, string]: Filter by process name (substring) +- `format` [query, string] **required** (enum: json, csv): Exported file format. Example: "json". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -29,12 +29,12 @@ Export a threat's timeline. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: hash, primary_description, secondary_description -- `activityTypes` [query, array] — Return only these activity codes (comma-separated list). Example: "52,53,71,72". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: hash, primary_description, secondary_description +- `activityTypes` [query, array]: Return only these activity codes (comma-separated list). Example: "52,53,71,72". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -47,111 +47,111 @@ Get data of threats that match the filter.
      Best Practice: Use the filters. E Required permissions: `Threats.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, mitigationStatus, fileDisplayName, agentVersion, agentMachineType, siteId, siteName, agentComputerName, filePath, contentHash, collectionId, classification, createdDate, cloudAccount, cloudImage, cloudInstanceId, cloudInstanceSize, cloudLocation, cloudNetwork) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `createdAt__lt` [query, string] — Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lt` [query, string] — Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `contentHashes` [query, array] — List of sha1 hashes to search for. Example: "d,d,d,5,0,3,0,a,3,d,0,2,9,f,3,8,4,5,f,c,1,0,5,2,4,1,9,8,2,9,f,0,8,f,3,1,2,2,4,0". -- `displayName` [query, string] — Display name -- `mitigationStatuses` [query, array] — Filter threats by a specific status. Example: "not_mitigated". -- `mitigationStatusesNin` [query, array] — Filter threats not by a specific status. Example: "not_mitigated". -- `agentIds` [query, array] — List of Agent IDs. Example: "225494730938493804,225494730938493915". -- `storylines` [query, array] — List of Agent context to search for -- `ids` [query, array] — List of threat IDs. Example: "225494730938493804,225494730938493915". -- `collectionIds` [query, array] — List of collection IDs to search. Example: "225494730938493804,225494730938493915". -- `engines` [query, array] — Included engines. Example: "reputation". -- `enginesNin` [query, array] — Excluded engines. Example: "reputation". -- `detectionEngines` [query, array] — Included engines. Example: "reputation". -- `detectionEnginesNin` [query, array] — Excluded engines. Example: "reputation". -- `classifications` [query, array] — List of threat classifications to search -- `classificationsNin` [query, array] — List of threat classifications not to search -- `classificationSources` [query, array] — Classification sources list. Example: "Cloud". -- `classificationSourcesNin` [query, array] — Classification sources list to exclude. Example: "Cloud". -- `agentVersions` [query, array] — Include Agent versions. Example: "2.5.1.1320". -- `agentVersionsNin` [query, array] — Excluded Agent versions. Example: "2.5.1.1320". -- `agentMachineTypes` [query, array] — Include Agent machine types. Example: "unknown". -- `agentMachineTypesNin` [query, array] — Excluded Agent machine types. Example: "unknown". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Excluded OS types. Example: "macos". -- `osArchs` [query, array] — Included OS Architectures. Example: "32 bit". -- `osNames` [query, array] — -- `osNamesNin` [query, array] — -- `agentIsActive` [query, boolean] — Include Agents currently connected to the Management Console -- `initiatedBy` [query, array] — Only include threats from specific initiating sources. Example: "agent_policy,dv_command". -- `initiatedByNin` [query, array] — Exclude threats with specific initiating sources. Example: "agent_policy,dv_command". -- `confidenceLevels` [query, array] — Filter threats by a specific confidence level. Example: "malicious". -- `confidenceLevelsNin` [query, array] — Exclude threats with specific confidence level. Example: "malicious". -- `analystVerdicts` [query, array] — Filter threats by a specific analyst verdict. Example: "true_positive,suspicious". -- `analystVerdictsNin` [query, array] — Exclude threats with specific analyst verdicts. Example: "true_positive,suspicious". -- `incidentStatuses` [query, array] — Filter threats by a specific incident status. Example: "unresolved,in_progress". -- `incidentStatusesNin` [query, array] — Exclude threats with specific incident statuses. Example: "unresolved,in_progress". -- `noteExists` [query, boolean] — The threat contains at least one note -- `failedActions` [query, boolean] — At least one action failed on the threat -- `rebootRequired` [query, boolean] — A reboot is required on any endpoint for at least one action on the threat -- `pendingActions` [query, boolean] — At least one action is pending for the Agent for the threat -- `externalTicketExists` [query, boolean] — The threat contains ticket number -- `externalTicketIds` [query, array] — External ticket ID for the threat -- `mitigatedPreemptively` [query, boolean] — If the threat was detected pre-execution or post-execution -- `agentTagsData` [query, string] — Filter threats by assigned tags to the related agent. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasAgentTags` [query, boolean] — Include only Threats whose Agent is assigned any tags if True, or none if False -- `query` [query, string] — Full text search for fields: threat_details, content_hash, computer_name, file_path, uuid, detection_agent_version, realtime_agent_version, detection_agent_domain, command_line_arguments, initiated_by_username, storyline, originated_process, k8s_cluster_name, k8s_node_name, k8s_node_labels, k8s_namespace_name, k8s_namespace_labels, k8s_controller_name, k8s_controller_labels, k8s_pod_name, k8s_pod_labels, container_name, container_image_name, container_labels, external_ticket_id -- `contentHash__contains` [query, array] — Free-text filter by file content hash (supports multiple values). Example: "5f09bcff3". -- `threatDetails__contains` [query, array] — Free-text filter by threat details(supports multiple values). Example: "malware.exe,virus.exe". -- `filePath__contains` [query, array] — Free-text filter by file path (supports multiple values). Example: "\MyUser\Downloads". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `detectionAgentVersion__contains` [query, array] — Free-text filter by Agent version at detection time (supports multiple values). Example: "1.1.1.1,2.2.". -- `realtimeAgentVersion__contains` [query, array] — Free-text filter by Agent version at current time (supports multiple values). Example: "1.1.1.1,2.2.". -- `detectionAgentDomain__contains` [query, array] — Free-text filter by Agent domain at detection time (supports multiple values). Example: "sentinel,sentinelone.com". -- `commandLineArguments__contains` [query, array] — Free-text filter by threat command line arguments (supports multiple values). Example: "/usr/sbin/,wget". -- `initiatedByUsername__contains` [query, array] — Free-text filter by the username that initiated that threat (supports multiple values). Example: "John,John Doe". -- `storyline__contains` [query, array] — Free-text filter by threat storyline (supports multiple values). Example: "0000C2E97648,0006FC73-77B4-470F-AAC7-". -- `originatedProcess__contains` [query, array] — Free-text filter by the originated process name of the threat (supports multiple values) -- `publisherName__contains` [query, array] — Free-text filter by threat's publisher name (supports multiple values). Example: "GOOGLE,Apple Inc.". -- `signerIdentity__contains` [query, array] — Free-text filter by threat's signer identity (certificate ID) (supports multiple values). Example: "3BDA323E552DB1FDC0A9DD871E8CADDA2FCBB419". -- `k8sClusterName__contains` [query, array] — Free-text filter by the endpoint Kubernetes cluster name (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by the endpoint Kubernetes node name (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes node labels (supports multiple values) -- `k8sNamespaceName__contains` [query, array] — Free-text filter by the endpoint Kubernetes namespace name (supports multiple values) -- `k8sNamespaceLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes namespace labels (supports multiple values) -- `k8sControllerName__contains` [query, array] — Free-text filter by the endpoint Kubernetes controller name (supports multiple values) -- `k8sControllerLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes controller labels (supports multiple values) -- `k8sPodName__contains` [query, array] — Free-text filter by the endpoint Kubernetes pod name (supports multiple values) -- `k8sPodLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes pod labels (supports multiple values) -- `containerName__contains` [query, array] — Free-text filter by the endpoint container name (supports multiple values) -- `containerImageName__contains` [query, array] — Free-text filter by the endpoint container image name (supports multiple values) -- `containerLabels__contains` [query, array] — Free-text filter by the endpoint container labels (supports multiple values) -- `externalTicketId__contains` [query, array] — Free-text filter by the threat external ticket ID (supports multiple values) -- `countsFor` [query, string] — comma-separated list of fields to be shown. Example: "osTypes,machineTypes". -- `resolved` [query, boolean] — This is used for backward-compatibility with API 2.0. -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, mitigationStatus, fileDisplayName, agentVersion, agentMachineType, siteId, siteName, agentComputerName, filePath, contentHash, collectionId, classification, createdDate, cloudAccount, cloudImage, cloudInstanceId, cloudInstanceSize, cloudLocation, cloudNetwork): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `createdAt__lt` [query, string]: Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lt` [query, string]: Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `contentHashes` [query, array]: List of sha1 hashes to search for. Example: "d,d,d,5,0,3,0,a,3,d,0,2,9,f,3,8,4,5,f,c,1,0,5,2,4,1,9,8,2,9,f,0,8,f,3,1,2,2,4,0". +- `displayName` [query, string]: Display name +- `mitigationStatuses` [query, array]: Filter threats by a specific status. Example: "not_mitigated". +- `mitigationStatusesNin` [query, array]: Filter threats not by a specific status. Example: "not_mitigated". +- `agentIds` [query, array]: List of Agent IDs. Example: "225494730938493804,225494730938493915". +- `storylines` [query, array]: List of Agent context to search for +- `ids` [query, array]: List of threat IDs. Example: "225494730938493804,225494730938493915". +- `collectionIds` [query, array]: List of collection IDs to search. Example: "225494730938493804,225494730938493915". +- `engines` [query, array]: Included engines. Example: "reputation". +- `enginesNin` [query, array]: Excluded engines. Example: "reputation". +- `detectionEngines` [query, array]: Included engines. Example: "reputation". +- `detectionEnginesNin` [query, array]: Excluded engines. Example: "reputation". +- `classifications` [query, array]: List of threat classifications to search +- `classificationsNin` [query, array]: List of threat classifications not to search +- `classificationSources` [query, array]: Classification sources list. Example: "Cloud". +- `classificationSourcesNin` [query, array]: Classification sources list to exclude. Example: "Cloud". +- `agentVersions` [query, array]: Include Agent versions. Example: "2.5.1.1320". +- `agentVersionsNin` [query, array]: Excluded Agent versions. Example: "2.5.1.1320". +- `agentMachineTypes` [query, array]: Include Agent machine types. Example: "unknown". +- `agentMachineTypesNin` [query, array]: Excluded Agent machine types. Example: "unknown". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Excluded OS types. Example: "macos". +- `osArchs` [query, array]: Included OS Architectures. Example: "32 bit". +- `osNames` [query, array]: +- `osNamesNin` [query, array]: +- `agentIsActive` [query, boolean]: Include Agents currently connected to the Management Console +- `initiatedBy` [query, array]: Only include threats from specific initiating sources. Example: "agent_policy,dv_command". +- `initiatedByNin` [query, array]: Exclude threats with specific initiating sources. Example: "agent_policy,dv_command". +- `confidenceLevels` [query, array]: Filter threats by a specific confidence level. Example: "malicious". +- `confidenceLevelsNin` [query, array]: Exclude threats with specific confidence level. Example: "malicious". +- `analystVerdicts` [query, array]: Filter threats by a specific analyst verdict. Example: "true_positive,suspicious". +- `analystVerdictsNin` [query, array]: Exclude threats with specific analyst verdicts. Example: "true_positive,suspicious". +- `incidentStatuses` [query, array]: Filter threats by a specific incident status. Example: "unresolved,in_progress". +- `incidentStatusesNin` [query, array]: Exclude threats with specific incident statuses. Example: "unresolved,in_progress". +- `noteExists` [query, boolean]: The threat contains at least one note +- `failedActions` [query, boolean]: At least one action failed on the threat +- `rebootRequired` [query, boolean]: A reboot is required on any endpoint for at least one action on the threat +- `pendingActions` [query, boolean]: At least one action is pending for the Agent for the threat +- `externalTicketExists` [query, boolean]: The threat contains ticket number +- `externalTicketIds` [query, array]: External ticket ID for the threat +- `mitigatedPreemptively` [query, boolean]: If the threat was detected pre-execution or post-execution +- `agentTagsData` [query, string]: Filter threats by assigned tags to the related agent. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasAgentTags` [query, boolean]: Include only Threats whose Agent is assigned any tags if True, or none if False +- `query` [query, string]: Full text search for fields: threat_details, content_hash, computer_name, file_path, uuid, detection_agent_version, realtime_agent_version, detection_agent_domain, command_line_arguments, initiated_by_username, storyline, originated_process, k8s_cluster_name, k8s_node_name, k8s_node_labels, k8s_namespace_name, k8s_namespace_labels, k8s_controller_name, k8s_controller_labels, k8s_pod_name, k8s_pod_labels, container_name, container_image_name, container_labels, external_ticket_id +- `contentHash__contains` [query, array]: Free-text filter by file content hash (supports multiple values). Example: "5f09bcff3". +- `threatDetails__contains` [query, array]: Free-text filter by threat details(supports multiple values). Example: "malware.exe,virus.exe". +- `filePath__contains` [query, array]: Free-text filter by file path (supports multiple values). Example: "\MyUser\Downloads". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `detectionAgentVersion__contains` [query, array]: Free-text filter by Agent version at detection time (supports multiple values). Example: "1.1.1.1,2.2.". +- `realtimeAgentVersion__contains` [query, array]: Free-text filter by Agent version at current time (supports multiple values). Example: "1.1.1.1,2.2.". +- `detectionAgentDomain__contains` [query, array]: Free-text filter by Agent domain at detection time (supports multiple values). Example: "sentinel,sentinelone.com". +- `commandLineArguments__contains` [query, array]: Free-text filter by threat command line arguments (supports multiple values). Example: "/usr/sbin/,wget". +- `initiatedByUsername__contains` [query, array]: Free-text filter by the username that initiated that threat (supports multiple values). Example: "John,John Doe". +- `storyline__contains` [query, array]: Free-text filter by threat storyline (supports multiple values). Example: "0000C2E97648,0006FC73-77B4-470F-AAC7-". +- `originatedProcess__contains` [query, array]: Free-text filter by the originated process name of the threat (supports multiple values) +- `publisherName__contains` [query, array]: Free-text filter by threat's publisher name (supports multiple values). Example: "GOOGLE,Apple Inc.". +- `signerIdentity__contains` [query, array]: Free-text filter by threat's signer identity (certificate ID) (supports multiple values). Example: "3BDA323E552DB1FDC0A9DD871E8CADDA2FCBB419". +- `k8sClusterName__contains` [query, array]: Free-text filter by the endpoint Kubernetes cluster name (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by the endpoint Kubernetes node name (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes node labels (supports multiple values) +- `k8sNamespaceName__contains` [query, array]: Free-text filter by the endpoint Kubernetes namespace name (supports multiple values) +- `k8sNamespaceLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes namespace labels (supports multiple values) +- `k8sControllerName__contains` [query, array]: Free-text filter by the endpoint Kubernetes controller name (supports multiple values) +- `k8sControllerLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes controller labels (supports multiple values) +- `k8sPodName__contains` [query, array]: Free-text filter by the endpoint Kubernetes pod name (supports multiple values) +- `k8sPodLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes pod labels (supports multiple values) +- `containerName__contains` [query, array]: Free-text filter by the endpoint container name (supports multiple values) +- `containerImageName__contains` [query, array]: Free-text filter by the endpoint container image name (supports multiple values) +- `containerLabels__contains` [query, array]: Free-text filter by the endpoint container labels (supports multiple values) +- `externalTicketId__contains` [query, array]: Free-text filter by the threat external ticket ID (supports multiple values) +- `countsFor` [query, string]: comma-separated list of fields to be shown. Example: "osTypes,machineTypes". +- `resolved` [query, boolean]: This is used for backward-compatibility with API 2.0. +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -164,7 +164,7 @@ Restore network to a container that was disconnected Required permissions: `Endpoints.reconnectToNetwork` Parameters: -- `body` [body, threats.schemas_ContainerNetworkQuarantineSchema] — +- `body` [body, threats.schemas_ContainerNetworkQuarantineSchema]: Responses: 200 Reconnect command was created, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -177,7 +177,7 @@ Network quarantine a specific container Required permissions: `Endpoints.disconnectFromNetwork` Parameters: -- `body` [body, threats.schemas_ContainerNetworkQuarantineSchema] — +- `body` [body, threats.schemas_ContainerNetworkQuarantineSchema]: Responses: 200 Disconnect command was created, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -191,7 +191,7 @@ Required permissions: `Blacklist.create` Optional permissions: `Threats.updateAnalystVerdict` Parameters: -- `body` [body, threats.schemas_ThreatsAddToRestrictionsWithTargetSchema] — +- `body` [body, threats.schemas_ThreatsAddToRestrictionsWithTargetSchema]: Responses: 200 Hash threat added to black list, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -205,7 +205,7 @@ Required permissions: `Exclusions.create` Optional permissions: `Threats.updateAnalystVerdict` Parameters: -- `body` [body, threats.schemas_ThreatsAddToExclusionsWithTargetSchema] — +- `body` [body, threats.schemas_ThreatsAddToExclusionsWithTargetSchema]: Responses: 200 Added to exclusions, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -218,7 +218,7 @@ Change the verdict of a threat, as determined by a Console user. Required permissions: `Threats.updateAnalystVerdict` Parameters: -- `body` [body, threats.schemas_ThreatsAnalystVerdictSchema] — +- `body` [body, threats.schemas_ThreatsAnalystVerdictSchema]: Responses: 200 Threats analyst verdict successfully updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -231,7 +231,7 @@ From Deep Visibility results, add a SHA1 hash to the Blocklist. Set the scope of Required permissions: `Blacklist.create` Parameters: -- `body` [body, threats.schemas_DvAddToBlackListSchema] — +- `body` [body, threats.schemas_DvAddToBlackListSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -244,7 +244,7 @@ Mark an event from Deep Visibility data as a threat. (see Deep Visibility > Get Required permissions: `Threats.markThreat` Parameters: -- `body` [body, threats.schemas_DvMarkAsThreatSchema] — +- `body` [body, threats.schemas_DvMarkAsThreatSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -257,7 +257,7 @@ If your list of threats shows too many False Positives, use this command to trou Required permissions: `Policy.edit` Parameters: -- `body` [body, threats.schemas_EngineListSchema] — +- `body` [body, threats.schemas_EngineListSchema]: Responses: 200 Engines disabled, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -270,104 +270,104 @@ Export data of threats (as seen in the Console > Incidents) that match the filte Required permissions: `Threats.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `createdAt__lt` [query, string] — Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — Created at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lt` [query, string] — Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gt` [query, string] — Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__lte` [query, string] — Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `updatedAt__gte` [query, string] — Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `contentHashes` [query, array] — List of sha1 hashes to search for. Example: "d,d,d,5,0,3,0,a,3,d,0,2,9,f,3,8,4,5,f,c,1,0,5,2,4,1,9,8,2,9,f,0,8,f,3,1,2,2,4,0". -- `displayName` [query, string] — Display name -- `mitigationStatuses` [query, array] — Filter threats by a specific status. Example: "not_mitigated". -- `mitigationStatusesNin` [query, array] — Filter threats not by a specific status. Example: "not_mitigated". -- `agentIds` [query, array] — List of Agent IDs. Example: "225494730938493804,225494730938493915". -- `storylines` [query, array] — List of Agent context to search for -- `ids` [query, array] — List of threat IDs. Example: "225494730938493804,225494730938493915". -- `collectionIds` [query, array] — List of collection IDs to search. Example: "225494730938493804,225494730938493915". -- `engines` [query, array] — Included engines. Example: "reputation". -- `enginesNin` [query, array] — Excluded engines. Example: "reputation". -- `detectionEngines` [query, array] — Included engines. Example: "reputation". -- `detectionEnginesNin` [query, array] — Excluded engines. Example: "reputation". -- `classifications` [query, array] — List of threat classifications to search -- `classificationsNin` [query, array] — List of threat classifications not to search -- `classificationSources` [query, array] — Classification sources list. Example: "Cloud". -- `classificationSourcesNin` [query, array] — Classification sources list to exclude. Example: "Cloud". -- `agentVersions` [query, array] — Include Agent versions. Example: "2.5.1.1320". -- `agentVersionsNin` [query, array] — Excluded Agent versions. Example: "2.5.1.1320". -- `agentMachineTypes` [query, array] — Include Agent machine types. Example: "unknown". -- `agentMachineTypesNin` [query, array] — Excluded Agent machine types. Example: "unknown". -- `osTypes` [query, array] — Included OS types. Example: "macos". -- `osTypesNin` [query, array] — Excluded OS types. Example: "macos". -- `osArchs` [query, array] — Included OS Architectures. Example: "32 bit". -- `osNames` [query, array] — -- `osNamesNin` [query, array] — -- `agentIsActive` [query, boolean] — Include Agents currently connected to the Management Console -- `initiatedBy` [query, array] — Only include threats from specific initiating sources. Example: "agent_policy,dv_command". -- `initiatedByNin` [query, array] — Exclude threats with specific initiating sources. Example: "agent_policy,dv_command". -- `confidenceLevels` [query, array] — Filter threats by a specific confidence level. Example: "malicious". -- `confidenceLevelsNin` [query, array] — Exclude threats with specific confidence level. Example: "malicious". -- `analystVerdicts` [query, array] — Filter threats by a specific analyst verdict. Example: "true_positive,suspicious". -- `analystVerdictsNin` [query, array] — Exclude threats with specific analyst verdicts. Example: "true_positive,suspicious". -- `incidentStatuses` [query, array] — Filter threats by a specific incident status. Example: "unresolved,in_progress". -- `incidentStatusesNin` [query, array] — Exclude threats with specific incident statuses. Example: "unresolved,in_progress". -- `noteExists` [query, boolean] — The threat contains at least one note -- `failedActions` [query, boolean] — At least one action failed on the threat -- `rebootRequired` [query, boolean] — A reboot is required on any endpoint for at least one action on the threat -- `pendingActions` [query, boolean] — At least one action is pending for the Agent for the threat -- `externalTicketExists` [query, boolean] — The threat contains ticket number -- `externalTicketIds` [query, array] — External ticket ID for the threat -- `mitigatedPreemptively` [query, boolean] — If the threat was detected pre-execution or post-execution -- `agentTagsData` [query, string] — Filter threats by assigned tags to the related agent. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". -- `hasAgentTags` [query, boolean] — Include only Threats whose Agent is assigned any tags if True, or none if False -- `query` [query, string] — Full text search for fields: threat_details, content_hash, computer_name, file_path, uuid, detection_agent_version, realtime_agent_version, detection_agent_domain, command_line_arguments, initiated_by_username, storyline, originated_process, k8s_cluster_name, k8s_node_name, k8s_node_labels, k8s_namespace_name, k8s_namespace_labels, k8s_controller_name, k8s_controller_labels, k8s_pod_name, k8s_pod_labels, container_name, container_image_name, container_labels, external_ticket_id -- `contentHash__contains` [query, array] — Free-text filter by file content hash (supports multiple values). Example: "5f09bcff3". -- `threatDetails__contains` [query, array] — Free-text filter by threat details(supports multiple values). Example: "malware.exe,virus.exe". -- `filePath__contains` [query, array] — Free-text filter by file path (supports multiple values). Example: "\MyUser\Downloads". -- `computerName__contains` [query, array] — Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". -- `uuid__contains` [query, array] — Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". -- `detectionAgentVersion__contains` [query, array] — Free-text filter by Agent version at detection time (supports multiple values). Example: "1.1.1.1,2.2.". -- `realtimeAgentVersion__contains` [query, array] — Free-text filter by Agent version at current time (supports multiple values). Example: "1.1.1.1,2.2.". -- `detectionAgentDomain__contains` [query, array] — Free-text filter by Agent domain at detection time (supports multiple values). Example: "sentinel,sentinelone.com". -- `commandLineArguments__contains` [query, array] — Free-text filter by threat command line arguments (supports multiple values). Example: "/usr/sbin/,wget". -- `initiatedByUsername__contains` [query, array] — Free-text filter by the username that initiated that threat (supports multiple values). Example: "John,John Doe". -- `storyline__contains` [query, array] — Free-text filter by threat storyline (supports multiple values). Example: "0000C2E97648,0006FC73-77B4-470F-AAC7-". -- `originatedProcess__contains` [query, array] — Free-text filter by the originated process name of the threat (supports multiple values) -- `publisherName__contains` [query, array] — Free-text filter by threat's publisher name (supports multiple values). Example: "GOOGLE,Apple Inc.". -- `signerIdentity__contains` [query, array] — Free-text filter by threat's signer identity (certificate ID) (supports multiple values). Example: "3BDA323E552DB1FDC0A9DD871E8CADDA2FCBB419". -- `k8sClusterName__contains` [query, array] — Free-text filter by the endpoint Kubernetes cluster name (supports multiple values) -- `k8sNodeName__contains` [query, array] — Free-text filter by the endpoint Kubernetes node name (supports multiple values) -- `k8sNodeLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes node labels (supports multiple values) -- `k8sNamespaceName__contains` [query, array] — Free-text filter by the endpoint Kubernetes namespace name (supports multiple values) -- `k8sNamespaceLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes namespace labels (supports multiple values) -- `k8sControllerName__contains` [query, array] — Free-text filter by the endpoint Kubernetes controller name (supports multiple values) -- `k8sControllerLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes controller labels (supports multiple values) -- `k8sPodName__contains` [query, array] — Free-text filter by the endpoint Kubernetes pod name (supports multiple values) -- `k8sPodLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes pod labels (supports multiple values) -- `containerName__contains` [query, array] — Free-text filter by the endpoint container name (supports multiple values) -- `containerImageName__contains` [query, array] — Free-text filter by the endpoint container image name (supports multiple values) -- `containerLabels__contains` [query, array] — Free-text filter by the endpoint container labels (supports multiple values) -- `externalTicketId__contains` [query, array] — Free-text filter by the threat external ticket ID (supports multiple values) -- `countsFor` [query, string] — comma-separated list of fields to be shown. Example: "osTypes,machineTypes". -- `resolved` [query, boolean] — This is used for backward-compatibility with API 2.0. -- `cloudProvider` [query, array] — Agents from which cloud provider -- `cloudProviderNin` [query, array] — Exclude Agents from these cloud provider -- `awsSecurityGroups__contains` [query, array] — Free-text filter by aws securityGroups(supports multiple values) -- `cloudAccount__contains` [query, array] — Free-text filter by cloud account (supports multiple values) -- `cloudImage__contains` [query, array] — Free-text filter by cloud image (supports multiple values) -- `cloudInstanceId__contains` [query, array] — Free-text filter by cloud instance id(supports multiple values) -- `cloudInstanceSize__contains` [query, array] — Free-text filter by cloud instance size(supports multiple values) -- `cloudLocation__contains` [query, array] — Free-text filter by cloud location (supports multiple values) -- `cloudNetwork__contains` [query, array] — Free-text filter by cloud network (supports multiple values) -- `awsRole__contains` [query, array] — Free-text filter by aws role(supports multiple values) -- `awsSubnetIds__contains` [query, array] — Free-text filter by aws subnet ids (supports multiple values) -- `azureResourceGroup__contains` [query, array] — Free-text filter by azure resource group(supports multiple values) -- `gcpServiceAccount__contains` [query, array] — Free-text filter by gcp service account (supports multiple values) +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `createdAt__lt` [query, string]: Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: Created at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lt` [query, string]: Updated at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gt` [query, string]: Updated at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__lte` [query, string]: Updated at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `updatedAt__gte` [query, string]: Updated at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `contentHashes` [query, array]: List of sha1 hashes to search for. Example: "d,d,d,5,0,3,0,a,3,d,0,2,9,f,3,8,4,5,f,c,1,0,5,2,4,1,9,8,2,9,f,0,8,f,3,1,2,2,4,0". +- `displayName` [query, string]: Display name +- `mitigationStatuses` [query, array]: Filter threats by a specific status. Example: "not_mitigated". +- `mitigationStatusesNin` [query, array]: Filter threats not by a specific status. Example: "not_mitigated". +- `agentIds` [query, array]: List of Agent IDs. Example: "225494730938493804,225494730938493915". +- `storylines` [query, array]: List of Agent context to search for +- `ids` [query, array]: List of threat IDs. Example: "225494730938493804,225494730938493915". +- `collectionIds` [query, array]: List of collection IDs to search. Example: "225494730938493804,225494730938493915". +- `engines` [query, array]: Included engines. Example: "reputation". +- `enginesNin` [query, array]: Excluded engines. Example: "reputation". +- `detectionEngines` [query, array]: Included engines. Example: "reputation". +- `detectionEnginesNin` [query, array]: Excluded engines. Example: "reputation". +- `classifications` [query, array]: List of threat classifications to search +- `classificationsNin` [query, array]: List of threat classifications not to search +- `classificationSources` [query, array]: Classification sources list. Example: "Cloud". +- `classificationSourcesNin` [query, array]: Classification sources list to exclude. Example: "Cloud". +- `agentVersions` [query, array]: Include Agent versions. Example: "2.5.1.1320". +- `agentVersionsNin` [query, array]: Excluded Agent versions. Example: "2.5.1.1320". +- `agentMachineTypes` [query, array]: Include Agent machine types. Example: "unknown". +- `agentMachineTypesNin` [query, array]: Excluded Agent machine types. Example: "unknown". +- `osTypes` [query, array]: Included OS types. Example: "macos". +- `osTypesNin` [query, array]: Excluded OS types. Example: "macos". +- `osArchs` [query, array]: Included OS Architectures. Example: "32 bit". +- `osNames` [query, array]: +- `osNamesNin` [query, array]: +- `agentIsActive` [query, boolean]: Include Agents currently connected to the Management Console +- `initiatedBy` [query, array]: Only include threats from specific initiating sources. Example: "agent_policy,dv_command". +- `initiatedByNin` [query, array]: Exclude threats with specific initiating sources. Example: "agent_policy,dv_command". +- `confidenceLevels` [query, array]: Filter threats by a specific confidence level. Example: "malicious". +- `confidenceLevelsNin` [query, array]: Exclude threats with specific confidence level. Example: "malicious". +- `analystVerdicts` [query, array]: Filter threats by a specific analyst verdict. Example: "true_positive,suspicious". +- `analystVerdictsNin` [query, array]: Exclude threats with specific analyst verdicts. Example: "true_positive,suspicious". +- `incidentStatuses` [query, array]: Filter threats by a specific incident status. Example: "unresolved,in_progress". +- `incidentStatusesNin` [query, array]: Exclude threats with specific incident statuses. Example: "unresolved,in_progress". +- `noteExists` [query, boolean]: The threat contains at least one note +- `failedActions` [query, boolean]: At least one action failed on the threat +- `rebootRequired` [query, boolean]: A reboot is required on any endpoint for at least one action on the threat +- `pendingActions` [query, boolean]: At least one action is pending for the Agent for the threat +- `externalTicketExists` [query, boolean]: The threat contains ticket number +- `externalTicketIds` [query, array]: External ticket ID for the threat +- `mitigatedPreemptively` [query, boolean]: If the threat was detected pre-execution or post-execution +- `agentTagsData` [query, string]: Filter threats by assigned tags to the related agent. Given in form of a JSON where each key represents a tag key, and each value represents a list of string values to filter by. To filter by unassigned tag values, use __nin suffix in the tag key. Example: "{"key1": ["value1_1", "value1_2"], "key2__nin": ["value2"]}". +- `hasAgentTags` [query, boolean]: Include only Threats whose Agent is assigned any tags if True, or none if False +- `query` [query, string]: Full text search for fields: threat_details, content_hash, computer_name, file_path, uuid, detection_agent_version, realtime_agent_version, detection_agent_domain, command_line_arguments, initiated_by_username, storyline, originated_process, k8s_cluster_name, k8s_node_name, k8s_node_labels, k8s_namespace_name, k8s_namespace_labels, k8s_controller_name, k8s_controller_labels, k8s_pod_name, k8s_pod_labels, container_name, container_image_name, container_labels, external_ticket_id +- `contentHash__contains` [query, array]: Free-text filter by file content hash (supports multiple values). Example: "5f09bcff3". +- `threatDetails__contains` [query, array]: Free-text filter by threat details(supports multiple values). Example: "malware.exe,virus.exe". +- `filePath__contains` [query, array]: Free-text filter by file path (supports multiple values). Example: "\MyUser\Downloads". +- `computerName__contains` [query, array]: Free-text filter by computer name (supports multiple values). Example: "john-office,WIN". +- `uuid__contains` [query, array]: Free-text filter by Agent UUID (supports multiple values). Example: "e92-01928,b055". +- `detectionAgentVersion__contains` [query, array]: Free-text filter by Agent version at detection time (supports multiple values). Example: "1.1.1.1,2.2.". +- `realtimeAgentVersion__contains` [query, array]: Free-text filter by Agent version at current time (supports multiple values). Example: "1.1.1.1,2.2.". +- `detectionAgentDomain__contains` [query, array]: Free-text filter by Agent domain at detection time (supports multiple values). Example: "sentinel,sentinelone.com". +- `commandLineArguments__contains` [query, array]: Free-text filter by threat command line arguments (supports multiple values). Example: "/usr/sbin/,wget". +- `initiatedByUsername__contains` [query, array]: Free-text filter by the username that initiated that threat (supports multiple values). Example: "John,John Doe". +- `storyline__contains` [query, array]: Free-text filter by threat storyline (supports multiple values). Example: "0000C2E97648,0006FC73-77B4-470F-AAC7-". +- `originatedProcess__contains` [query, array]: Free-text filter by the originated process name of the threat (supports multiple values) +- `publisherName__contains` [query, array]: Free-text filter by threat's publisher name (supports multiple values). Example: "GOOGLE,Apple Inc.". +- `signerIdentity__contains` [query, array]: Free-text filter by threat's signer identity (certificate ID) (supports multiple values). Example: "3BDA323E552DB1FDC0A9DD871E8CADDA2FCBB419". +- `k8sClusterName__contains` [query, array]: Free-text filter by the endpoint Kubernetes cluster name (supports multiple values) +- `k8sNodeName__contains` [query, array]: Free-text filter by the endpoint Kubernetes node name (supports multiple values) +- `k8sNodeLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes node labels (supports multiple values) +- `k8sNamespaceName__contains` [query, array]: Free-text filter by the endpoint Kubernetes namespace name (supports multiple values) +- `k8sNamespaceLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes namespace labels (supports multiple values) +- `k8sControllerName__contains` [query, array]: Free-text filter by the endpoint Kubernetes controller name (supports multiple values) +- `k8sControllerLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes controller labels (supports multiple values) +- `k8sPodName__contains` [query, array]: Free-text filter by the endpoint Kubernetes pod name (supports multiple values) +- `k8sPodLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes pod labels (supports multiple values) +- `containerName__contains` [query, array]: Free-text filter by the endpoint container name (supports multiple values) +- `containerImageName__contains` [query, array]: Free-text filter by the endpoint container image name (supports multiple values) +- `containerLabels__contains` [query, array]: Free-text filter by the endpoint container labels (supports multiple values) +- `externalTicketId__contains` [query, array]: Free-text filter by the threat external ticket ID (supports multiple values) +- `countsFor` [query, string]: comma-separated list of fields to be shown. Example: "osTypes,machineTypes". +- `resolved` [query, boolean]: This is used for backward-compatibility with API 2.0. +- `cloudProvider` [query, array]: Agents from which cloud provider +- `cloudProviderNin` [query, array]: Exclude Agents from these cloud provider +- `awsSecurityGroups__contains` [query, array]: Free-text filter by aws securityGroups(supports multiple values) +- `cloudAccount__contains` [query, array]: Free-text filter by cloud account (supports multiple values) +- `cloudImage__contains` [query, array]: Free-text filter by cloud image (supports multiple values) +- `cloudInstanceId__contains` [query, array]: Free-text filter by cloud instance id(supports multiple values) +- `cloudInstanceSize__contains` [query, array]: Free-text filter by cloud instance size(supports multiple values) +- `cloudLocation__contains` [query, array]: Free-text filter by cloud location (supports multiple values) +- `cloudNetwork__contains` [query, array]: Free-text filter by cloud network (supports multiple values) +- `awsRole__contains` [query, array]: Free-text filter by aws role(supports multiple values) +- `awsSubnetIds__contains` [query, array]: Free-text filter by aws subnet ids (supports multiple values) +- `azureResourceGroup__contains` [query, array]: Free-text filter by azure resource group(supports multiple values) +- `gcpServiceAccount__contains` [query, array]: Free-text filter by gcp service account (supports multiple values) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -380,7 +380,7 @@ Change the external ticket ID of a threat. Required permissions: `Threats.updateExternalTicketId` Parameters: -- `body` [body, threats.schemas_ThreatExternalTicketSchema] — +- `body` [body, threats.schemas_ThreatExternalTicketSchema]: Responses: 200 Threats external ticket id successfully updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -393,7 +393,7 @@ Fetch a file associated with the threat that matches the filter. Your user role Required permissions: `Threats.fetchThreatFile` Parameters: -- `body` [body, threats.schemas_ThreatsFetchFileRequestSchema] — +- `body` [body, threats.schemas_ThreatsFetchFileRequestSchema]: Responses: 200 Number of affected agents, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -407,7 +407,7 @@ Required permissions: `Threats.updateIncidentStatus` Optional permissions: `Threats.updateAnalystVerdict` Parameters: -- `body` [body, threats.schemas_ThreatsIncidentSchema] — +- `body` [body, threats.schemas_ThreatsIncidentSchema]: Responses: 200 Threats incident successfully updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -420,7 +420,7 @@ Mark an alerts as a threat and run mitigation action from the Management UI. Required permissions: `Threats.markThreat` Parameters: -- `body` [body, threats.schemas_MitigateAlertsSchema] — +- `body` [body, threats.schemas_MitigateAlertsSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -432,8 +432,8 @@ Apply a mitigation action to a group of threats that match the filter. Valid val Optional permissions: `Threats.kill, Threats.quarantine, Threats.unquarantine, Threats.remediate, Threats.rollback, Threats.removeMacro, Threats.restoreMacro` Parameters: -- `action` [path, string] **required** (enum: kill, remediate, rollback-remediation, quarantine, un-quarantine, None, remove_macros, restore_macros) — Mitigation action. Example: "kill". -- `body` [body, threats.schemas_ThreatsMitigateRequestSchema] — +- `action` [path, string] **required** (enum: kill, remediate, rollback-remediation, quarantine, un-quarantine, None, remove_macros, restore_macros): Mitigation action. Example: "kill". +- `body` [body, threats.schemas_ThreatsMitigateRequestSchema]: Responses: 200 Threat successfully mitigated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -446,7 +446,7 @@ Export the mitigation report as a CSV file. Required permissions: `Activity Page.view` Parameters: -- `report_id` [path, string] **required** — Mitigation report ID. Example: "225494730938493804". +- `report_id` [path, string] **required**: Mitigation report ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -459,7 +459,7 @@ Download threat file from cloud. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. @@ -472,18 +472,18 @@ Get all threat events. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, eventType, fileSize, fileType, registryPath, registryId, registryClassification, pid, processName) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `eventTypes` [query, array] — Filter events by type. Example: "events". -- `eventSubTypes` [query, array] — Filter events by sub-type. Example: "PROCESSCREATION". -- `eventId` [query, string] — Filter by a specific process key and its children -- `processName__like` [query, string] — Filter by process name (substring) +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, eventType, fileSize, fileType, registryPath, registryId, registryClassification, pid, processName): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `eventTypes` [query, array]: Filter events by type. Example: "events". +- `eventSubTypes` [query, array]: Filter events by sub-type. Example: "PROCESSCREATION". +- `eventId` [query, string]: Filter by a specific process key and its children +- `processName__like` [query, string]: Filter by process name (substring) Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -496,19 +496,19 @@ Get a threat's timeline. Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: hash, activityType, primaryDescription, secondaryDescription, createdAt) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — Full text search for fields: hash, primary_description, secondary_description -- `activityTypes` [query, array] — Return only these activity codes (comma-separated list). Example: "52,53,71,72". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: hash, activityType, primaryDescription, secondaryDescription, createdAt): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: Full text search for fields: hash, primary_description, secondary_description +- `activityTypes` [query, array]: Return only these activity codes (comma-separated list). Example: "52,53,71,72". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -521,6 +521,6 @@ Get the Exclusion types that can be created from the detection data.
      For ex Required permissions: `Threats.view` Parameters: -- `threat_id` [path, string] **required** — Threat ID. Example: "225494730938493804". +- `threat_id` [path, string] **required**: Threat ID. Example: "225494730938493804". Responses: 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Unprotected_Endpoints_Discovery.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Unprotected_Endpoints_Discovery.md index 90bd7b3..e00f7e2 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Unprotected_Endpoints_Discovery.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Unprotected_Endpoints_Discovery.md @@ -11,39 +11,39 @@ Export Unprotected Endpoints Discovery data to CSV. You can set filters to get o Required permissions: `Rogues.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `osType` [query, string] — OS type -- `osTypes` [query, array] — Included OS types -- `osName` [query, string] — Os name -- `osVersion` [query, string] — Os version -- `localIp` [query, string] — Search using local IP -- `externalIp` [query, string] — Search using external IP -- `ids` [query, array] — List of device ids. Example: "225494730938493804,225494730938493915". -- `deviceType` [query, string] — Device type. Example: "Server/Workstation/...". -- `deviceTypes` [query, array] — Device types -- `macAddress` [query, string] — A mac address to search for -- `firstSeen__lt` [query, string] — Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__lte` [query, string] — Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gt` [query, string] — Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gte` [query, string] — Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__between` [query, string] — Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `lastSeen__lt` [query, string] — Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__lte` [query, string] — Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gt` [query, string] — Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gte` [query, string] — Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__between` [query, string] — Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `manufacturer` [query, string] — Manufacturer of the device or network interface -- `hostnames` [query, array] — Hostnames -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". -- `localIp__contains` [query, array] — Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `manufacturer__contains` [query, array] — Free-text filter by manufacturer (supports multiple values). Example: "Company". -- `macAddress__contains` [query, array] — Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". -- `hostnames__contains` [query, array] — Free-text filter by hostanem (supports multiple values). Example: "s1_host,SomeHost". -- `query` [query, string] — Query +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `osType` [query, string]: OS type +- `osTypes` [query, array]: Included OS types +- `osName` [query, string]: Os name +- `osVersion` [query, string]: Os version +- `localIp` [query, string]: Search using local IP +- `externalIp` [query, string]: Search using external IP +- `ids` [query, array]: List of device ids. Example: "225494730938493804,225494730938493915". +- `deviceType` [query, string]: Device type. Example: "Server/Workstation/...". +- `deviceTypes` [query, array]: Device types +- `macAddress` [query, string]: A mac address to search for +- `firstSeen__lt` [query, string]: Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__lte` [query, string]: Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gt` [query, string]: Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gte` [query, string]: Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__between` [query, string]: Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `lastSeen__lt` [query, string]: Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__lte` [query, string]: Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gt` [query, string]: Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gte` [query, string]: Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__between` [query, string]: Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `manufacturer` [query, string]: Manufacturer of the device or network interface +- `hostnames` [query, array]: Hostnames +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". +- `localIp__contains` [query, array]: Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `manufacturer__contains` [query, array]: Free-text filter by manufacturer (supports multiple values). Example: "Company". +- `macAddress__contains` [query, array]: Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". +- `hostnames__contains` [query, array]: Free-text filter by hostanem (supports multiple values). Example: "s1_host,SomeHost". +- `query` [query, string]: Query Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -56,8 +56,8 @@ Unprotected Endpoints Discovery gives full visibility of all unsecured devices c Required permissions: `Rogues.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -70,7 +70,7 @@ Change the Unprotected Endpoints Discovery Settings. Best Practice: Get the curr Required permissions: `Rogues.edit` Parameters: -- `body` [body, rogue_schemas_PutRoguesSchema] — +- `body` [body, rogue_schemas_PutRoguesSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -83,45 +83,45 @@ Get the data for each row in the Unprotected Endpoints Discovery Device Inventor Required permissions: `Rogues.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: osType, osName, id, deviceType, osVersion, manufacturer, firstSeen, lastSeen, macAddress, localIp, externalIp) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `osType` [query, string] — OS type -- `osTypes` [query, array] — Included OS types -- `osName` [query, string] — Os name -- `osVersion` [query, string] — Os version -- `localIp` [query, string] — Search using local IP -- `externalIp` [query, string] — Search using external IP -- `ids` [query, array] — List of device ids. Example: "225494730938493804,225494730938493915". -- `deviceType` [query, string] — Device type. Example: "Server/Workstation/...". -- `deviceTypes` [query, array] — Device types -- `macAddress` [query, string] — A mac address to search for -- `firstSeen__lt` [query, string] — Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__lte` [query, string] — Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gt` [query, string] — Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__gte` [query, string] — Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `firstSeen__between` [query, string] — Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `lastSeen__lt` [query, string] — Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__lte` [query, string] — Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gt` [query, string] — Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__gte` [query, string] — Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastSeen__between` [query, string] — Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". -- `manufacturer` [query, string] — Manufacturer of the device or network interface -- `hostnames` [query, array] — Hostnames -- `externalIp__contains` [query, array] — Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". -- `localIp__contains` [query, array] — Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". -- `osVersion__contains` [query, array] — Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". -- `manufacturer__contains` [query, array] — Free-text filter by manufacturer (supports multiple values). Example: "Company". -- `macAddress__contains` [query, array] — Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". -- `hostnames__contains` [query, array] — Free-text filter by hostanem (supports multiple values). Example: "s1_host,SomeHost". -- `query` [query, string] — Query +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: osType, osName, id, deviceType, osVersion, manufacturer, firstSeen, lastSeen, macAddress, localIp, externalIp): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `osType` [query, string]: OS type +- `osTypes` [query, array]: Included OS types +- `osName` [query, string]: Os name +- `osVersion` [query, string]: Os version +- `localIp` [query, string]: Search using local IP +- `externalIp` [query, string]: Search using external IP +- `ids` [query, array]: List of device ids. Example: "225494730938493804,225494730938493915". +- `deviceType` [query, string]: Device type. Example: "Server/Workstation/...". +- `deviceTypes` [query, array]: Device types +- `macAddress` [query, string]: A mac address to search for +- `firstSeen__lt` [query, string]: Devices first seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__lte` [query, string]: Devices first seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gt` [query, string]: Devices first seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__gte` [query, string]: Devices first seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `firstSeen__between` [query, string]: Date range refor first seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `lastSeen__lt` [query, string]: Devices last seen before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__lte` [query, string]: Devices last seen before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gt` [query, string]: Devices last seen after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__gte` [query, string]: Devices last seen after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastSeen__between` [query, string]: Date range for last seen(format: -, inclusive). Example: "1514978890136-1514978650130". +- `manufacturer` [query, string]: Manufacturer of the device or network interface +- `hostnames` [query, array]: Hostnames +- `externalIp__contains` [query, array]: Free-text filter by visible IP (supports multiple values). Example: "192.168.0.1/24,10.1". +- `localIp__contains` [query, array]: Free-text filter by IP Address (supports multiple values). Example: "192.168.0.1/24,10.1". +- `osVersion__contains` [query, array]: Free-text filter by OS full name and version (supports multiple values). Example: "Service Pack 1". +- `manufacturer__contains` [query, array]: Free-text filter by manufacturer (supports multiple values). Example: "Company". +- `macAddress__contains` [query, array]: Free-text filter by mac address (supports multiple values). Example: "aa:ee:b1". +- `hostnames__contains` [query, array]: Free-text filter by hostanem (supports multiple values). Example: "s1_host,SomeHost". +- `query` [query, string]: Query Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Updates.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Updates.md index 2686636..bd765e9 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Updates.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Updates.md @@ -11,7 +11,7 @@ Required permissions: `Packages.view` Parameters: -- `package_id` [path, string] **required** — Package ID. Example: "225494730938493804". +- `package_id` [path, string] **required**: Package ID. Example: "225494730938493804". Responses: 404 Package not found, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -24,8 +24,8 @@ Download a package by site_id ("sites") and filename.
      Rate limit: 2 call per Required permissions: `Packages.view` Parameters: -- `package_id` [path, string] **required** — Package ID. Example: "225494730938493804". -- `site_id` [path, string] **required** — Site ID. Example: "225494730938493804". +- `package_id` [path, string] **required**: Package ID. Example: "225494730938493804". +- `site_id` [path, string] **required**: Site ID. Example: "225494730938493804". Responses: 404 Package not found or bad site, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -38,9 +38,9 @@ Responses: 404 Package not found or bad site, 200 Success, 401 Unauthorized acce Required permissions: `Packages.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `packageType` [query, string] (enum: Agent, Ranger, AgentAndRanger) — Package type. Example: "Agent". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `packageType` [query, string] (enum: Agent, Ranger, AgentAndRanger): Package type. Example: "Agent". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -53,7 +53,7 @@ Delete Agent packages from your Management. Use the IDs from Get Latest Packages Required permissions: `Packages.delete` Parameters: -- `body` [body, packages.schemas_DeletePackagesSchema] — +- `body` [body, packages.schemas_DeletePackagesSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -66,40 +66,40 @@ Get the Agent packages that are uploaded to your Management.
      The response sh Required permissions: `Packages.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, updatedAt, osType, platformType, fileName, fileSize, fileExtension, version, status, majorVersion, minorVersion, sha1, scopeLevel, accessLevel, packageType, rangerVersion, osArch) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `fileName__contains` [query, array] — Free-text filter by file name -- `fileSize__contains` [query, array] — Free-text filter by file size -- `versionStr__contains` [query, array] — Free-text filter by version string -- `rangerVersion__contains` [query, array] — Free-text filter by Network Scanner version -- `sha1__contains` [query, array] — Free-text filter by SHA1 hash -- `siteName__contains` [query, array] — Free-text filter by site name -- `accountName__contains` [query, array] — Free-text filter by account name -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `query` [query, string] — A free-text search term, will match applicable attributes -- `ids` [query, array] — Package ID list. Example: "225494730938493804,225494730938493915". -- `osTypes` [query, array] — Os type in. Example: "macos". -- `platformType` [query, string] (enum: macos, windows, linux_k8s, linux, sdk, windows_legacy, threat_detection_s3, threat_detection_netapp) — Platform type. Example: "macos". -- `platformTypes` [query, array] — Platform type in. Example: "macos". -- `status` [query, array] — Status in. Example: "beta". -- `osArches` [query, array] — Package OS architecture (32/64 bit), applicable to Windows packages only. Example: "64 bit". -- `fileExtension` [query, string] (enum: .msi, .exe, .deb, .rpm, .bsx, .pkg, .img, unknown, .tar, .zip, .gz, .xz) — File extension. Example: ".msi". -- `fileExtensions` [query, array] — File extension. Example: ".msi". -- `version` [query, string] — Agent version. Example: "2.5.1.1320". -- `majorVersions` [query, array] — Package major versions -- `minorVersions` [query, array] — Package minor versions -- `minorVersion` [query, string] — Package minor version -- `sha1` [query, string] — Package hash. Example: "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12". -- `rangerVersion` [query, string] — Network Scanner version. Example: "2.5.1.1320". -- `packageType` [query, string] (enum: Agent, Ranger, AgentAndRanger) — Package type. Example: "Agent". -- `packageTypes` [query, array] — Package type in. Example: "Agent". -- `osRevision` [query, string] — Agent os revision +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, updatedAt, osType, platformType, fileName, fileSize, fileExtension, version, status, majorVersion, minorVersion, sha1, scopeLevel, accessLevel, packageType, rangerVersion, osArch): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `fileName__contains` [query, array]: Free-text filter by file name +- `fileSize__contains` [query, array]: Free-text filter by file size +- `versionStr__contains` [query, array]: Free-text filter by version string +- `rangerVersion__contains` [query, array]: Free-text filter by Network Scanner version +- `sha1__contains` [query, array]: Free-text filter by SHA1 hash +- `siteName__contains` [query, array]: Free-text filter by site name +- `accountName__contains` [query, array]: Free-text filter by account name +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `query` [query, string]: A free-text search term, will match applicable attributes +- `ids` [query, array]: Package ID list. Example: "225494730938493804,225494730938493915". +- `osTypes` [query, array]: Os type in. Example: "macos". +- `platformType` [query, string] (enum: macos, windows, linux_k8s, linux, sdk, windows_legacy, threat_detection_s3, threat_detection_netapp): Platform type. Example: "macos". +- `platformTypes` [query, array]: Platform type in. Example: "macos". +- `status` [query, array]: Status in. Example: "beta". +- `osArches` [query, array]: Package OS architecture (32/64 bit), applicable to Windows packages only. Example: "64 bit". +- `fileExtension` [query, string] (enum: .msi, .exe, .deb, .rpm, .bsx, .pkg, .img, unknown, .tar, .zip, .gz, .xz): File extension. Example: ".msi". +- `fileExtensions` [query, array]: File extension. Example: ".msi". +- `version` [query, string]: Agent version. Example: "2.5.1.1320". +- `majorVersions` [query, array]: Package major versions +- `minorVersions` [query, array]: Package minor versions +- `minorVersion` [query, string]: Package minor version +- `sha1` [query, string]: Package hash. Example: "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12". +- `rangerVersion` [query, string]: Network Scanner version. Example: "2.5.1.1320". +- `packageType` [query, string] (enum: Agent, Ranger, AgentAndRanger): Package type. Example: "Agent". +- `packageTypes` [query, array]: Package type in. Example: "Agent". +- `osRevision` [query, string]: Agent os revision Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -112,8 +112,8 @@ Update the metadata for an existing package. Required permissions: `Packages.edit` Parameters: -- `package_id` [path, string] **required** — Package ID. Example: "225494730938493804". -- `body` [body, packages.schemas_PutPackageSchema] — +- `package_id` [path, string] **required**: Package ID. Example: "225494730938493804". +- `body` [body, packages.schemas_PutPackageSchema]: Responses: 404 Package not found, 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -126,15 +126,15 @@ If you have an On-Prem Management or you are a participant in the Beta program, Required permissions: `Packages.edit` Parameters: -- `siteIds` [formData, array] — List of sites to make the package available in. Applicable only if scopeLevel is set to "site". Example: "225494730938493804,225494730938493915". -- `accountIds` [formData, array] — List of accounts to make the package available in. Applicable only if scopeLevel is set to "account". Example: "225494730938493804,225494730938493915". -- `osType` [formData, string] (enum: macos, windows, linux_k8s, linux, sdk, windows_legacy, threat_detection_s3, threat_detection_netapp) — Platform type. Example: "macos". -- `platformType` [formData, string] (enum: macos, windows, linux_k8s, linux, sdk, windows_legacy, threat_detection_s3, threat_detection_netapp) — Platform type. Example: "macos". -- `version` [formData, string] — Version. Example: "2.5.1.1320". -- `status` [formData, string] **required** (enum: beta, ga, other, ea) — Status. Example: "beta". -- `minorVersion` [formData, string] — Package minor version. Example: "SP1". -- `scopeLevel` [formData, string] (enum: site, account, global) — Package scope. If "global", it will be available in all sites. Otherwise, it will only be available to the sites/accounts specified in"siteIds"/"accountIds" attribute. Example: "site". -- `file` [formData, file] **required** — File +- `siteIds` [formData, array]: List of sites to make the package available in. Applicable only if scopeLevel is set to "site". Example: "225494730938493804,225494730938493915". +- `accountIds` [formData, array]: List of accounts to make the package available in. Applicable only if scopeLevel is set to "account". Example: "225494730938493804,225494730938493915". +- `osType` [formData, string] (enum: macos, windows, linux_k8s, linux, sdk, windows_legacy, threat_detection_s3, threat_detection_netapp): Platform type. Example: "macos". +- `platformType` [formData, string] (enum: macos, windows, linux_k8s, linux, sdk, windows_legacy, threat_detection_s3, threat_detection_netapp): Platform type. Example: "macos". +- `version` [formData, string]: Version. Example: "2.5.1.1320". +- `status` [formData, string] **required** (enum: beta, ga, other, ea): Status. Example: "beta". +- `minorVersion` [formData, string]: Package minor version. Example: "SP1". +- `scopeLevel` [formData, string] (enum: site, account, global): Package scope. If "global", it will be available in all sites. Otherwise, it will only be available to the sites/accounts specified in"siteIds"/"accountIds" attribute. Example: "site". +- `file` [formData, file] **required**: File Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -147,7 +147,7 @@ If you have an On-Prem Management or otherwise require a manual package upload, Required permissions: `Packages.edit` Parameters: -- `file` [formData, file] **required** — File +- `file` [formData, file] **required**: File Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Users.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Users.md index 5509454..266acf1 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Users.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/Users.md @@ -11,45 +11,45 @@ Export User data to a CSV, for Users that match the filter. Required permissions: `Users.view` Parameters: -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `source` [query, string] (enum: mgmt, sso_saml, active_directory, global) — User Source. Example: "mgmt". -- `sources` [query, array] — Source in. Example: "mgmt". -- `email` [query, string] — Email. Example: "admin@sentinelone.com". -- `email__contains` [query, array] — Match email partially (substring) -- `emailReadOnly` [query, boolean] — True if email cannot be changed -- `fullName` [query, string] — Full name -- `fullName__contains` [query, array] — Match full name partially (substring) -- `fullNameReadOnly` [query, boolean] — True if full name cannot be changed -- `firstLogin` [query, string] — First login. Example: "2018-02-27T04:49:26.257525Z". -- `lastLogin` [query, string] — Last login. Example: "2018-02-27T04:49:26.257525Z". -- `dateJoined` [query, string] — Date joined. Example: "2018-02-27T04:49:26.257525Z". -- `groupsReadOnly` [query, boolean] — [DEPRECATED] True if permissions cannot be changed -- `twoFaEnabled` [query, boolean] — Two fa enabled -- `primaryTwoFaMethod` [query, string] — Primary two fa method -- `emailVerified` [query, boolean] — Return only verified/unverified users -- `query` [query, string] — Full text search for fields: full_name, email, description -- `ids` [query, array] — List of user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `roleIds` [query, array] — List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". -- `twoFaStatus` [query, string] — Two fa status -- `twoFaStatuses` [query, array] — Two fa status in -- `canGenerateApiToken` [query, boolean] — Can generate api token -- `hasValidApiToken` [query, boolean] — Has valid api token -- `lastActivation__lt` [query, string] — User was last active before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__lte` [query, string] — User was last active before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__gt` [query, string] — User was last active after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__gte` [query, string] — User was last active after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__between` [query, string] — Date range for when the user was last active (format: -, inclusive). Example: "1514978890136-1514978650130". -- `apiTokenExpiresAt__lt` [query, string] — API token expires before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__lte` [query, string] — API token expires before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__gt` [query, string] — API token expires after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__gte` [query, string] — API token expires after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__between` [query, string] — Date range for when the API token expires (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — User was created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — User was created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — User was created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — User was created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for when the user was created (format: -, inclusive). Example: "1514978890136-1514978650130". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `source` [query, string] (enum: mgmt, sso_saml, active_directory, global): User Source. Example: "mgmt". +- `sources` [query, array]: Source in. Example: "mgmt". +- `email` [query, string]: Email. Example: "admin@sentinelone.com". +- `email__contains` [query, array]: Match email partially (substring) +- `emailReadOnly` [query, boolean]: True if email cannot be changed +- `fullName` [query, string]: Full name +- `fullName__contains` [query, array]: Match full name partially (substring) +- `fullNameReadOnly` [query, boolean]: True if full name cannot be changed +- `firstLogin` [query, string]: First login. Example: "2018-02-27T04:49:26.257525Z". +- `lastLogin` [query, string]: Last login. Example: "2018-02-27T04:49:26.257525Z". +- `dateJoined` [query, string]: Date joined. Example: "2018-02-27T04:49:26.257525Z". +- `groupsReadOnly` [query, boolean]: [DEPRECATED] True if permissions cannot be changed +- `twoFaEnabled` [query, boolean]: Two fa enabled +- `primaryTwoFaMethod` [query, string]: Primary two fa method +- `emailVerified` [query, boolean]: Return only verified/unverified users +- `query` [query, string]: Full text search for fields: full_name, email, description +- `ids` [query, array]: List of user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `roleIds` [query, array]: List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". +- `twoFaStatus` [query, string]: Two fa status +- `twoFaStatuses` [query, array]: Two fa status in +- `canGenerateApiToken` [query, boolean]: Can generate api token +- `hasValidApiToken` [query, boolean]: Has valid api token +- `lastActivation__lt` [query, string]: User was last active before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__lte` [query, string]: User was last active before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__gt` [query, string]: User was last active after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__gte` [query, string]: User was last active after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__between` [query, string]: Date range for when the user was last active (format: -, inclusive). Example: "1514978890136-1514978650130". +- `apiTokenExpiresAt__lt` [query, string]: API token expires before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__lte` [query, string]: API token expires before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__gt` [query, string]: API token expires after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__gte` [query, string]: API token expires after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__between` [query, string]: Date range for when the API token expires (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: User was created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: User was created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: User was created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: User was created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for when the user was created (format: -, inclusive). Example: "1514978890136-1514978650130". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -62,10 +62,10 @@ Get a user by token. Required permissions: `Users.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `tenant` [query, boolean] — Indicates a tenant scope request +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `tenant` [query, boolean]: Indicates a tenant scope request Responses: 401 Unauthorized access - please sign in and retry., 200 User retrieved correctly., 400 Invalid user input received. See error details for further i @@ -78,52 +78,52 @@ Get a list of users. Required permissions: `Users.view` Parameters: -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, createdAt, fullName, firstLogin, lastLogin, source, email, emailVerified, dateJoined, twoFaEnabled, twoFaStatus, apiTokenCreatedAt, apiTokenExpiresAt, canGenerateApiToken) — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `source` [query, string] (enum: mgmt, sso_saml, active_directory, global) — User Source. Example: "mgmt". -- `sources` [query, array] — Source in. Example: "mgmt". -- `email` [query, string] — Email. Example: "admin@sentinelone.com". -- `email__contains` [query, array] — Match email partially (substring) -- `emailReadOnly` [query, boolean] — True if email cannot be changed -- `fullName` [query, string] — Full name -- `fullName__contains` [query, array] — Match full name partially (substring) -- `fullNameReadOnly` [query, boolean] — True if full name cannot be changed -- `firstLogin` [query, string] — First login. Example: "2018-02-27T04:49:26.257525Z". -- `lastLogin` [query, string] — Last login. Example: "2018-02-27T04:49:26.257525Z". -- `dateJoined` [query, string] — Date joined. Example: "2018-02-27T04:49:26.257525Z". -- `groupsReadOnly` [query, boolean] — [DEPRECATED] True if permissions cannot be changed -- `twoFaEnabled` [query, boolean] — Two fa enabled -- `primaryTwoFaMethod` [query, string] — Primary two fa method -- `emailVerified` [query, boolean] — Return only verified/unverified users -- `query` [query, string] — Full text search for fields: full_name, email, description -- `ids` [query, array] — List of user IDs to filter by. Example: "225494730938493804,225494730938493915". -- `roleIds` [query, array] — List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". -- `twoFaStatus` [query, string] — Two fa status -- `twoFaStatuses` [query, array] — Two fa status in -- `canGenerateApiToken` [query, boolean] — Can generate api token -- `hasValidApiToken` [query, boolean] — Has valid api token -- `lastActivation__lt` [query, string] — User was last active before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__lte` [query, string] — User was last active before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__gt` [query, string] — User was last active after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__gte` [query, string] — User was last active after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `lastActivation__between` [query, string] — Date range for when the user was last active (format: -, inclusive). Example: "1514978890136-1514978650130". -- `apiTokenExpiresAt__lt` [query, string] — API token expires before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__lte` [query, string] — API token expires before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__gt` [query, string] — API token expires after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__gte` [query, string] — API token expires after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `apiTokenExpiresAt__between` [query, string] — Date range for when the API token expires (format: -, inclusive). Example: "1514978890136-1514978650130". -- `createdAt__lt` [query, string] — User was created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — User was created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gt` [query, string] — User was created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__gte` [query, string] — User was created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__between` [query, string] — Date range for when the user was created (format: -, inclusive). Example: "1514978890136-1514978650130". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, createdAt, fullName, firstLogin, lastLogin, source, email, emailVerified, dateJoined, twoFaEnabled, twoFaStatus, apiTokenCreatedAt, apiTokenExpiresAt, canGenerateApiToken): The column to sort the results by. Example: "id". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `source` [query, string] (enum: mgmt, sso_saml, active_directory, global): User Source. Example: "mgmt". +- `sources` [query, array]: Source in. Example: "mgmt". +- `email` [query, string]: Email. Example: "admin@sentinelone.com". +- `email__contains` [query, array]: Match email partially (substring) +- `emailReadOnly` [query, boolean]: True if email cannot be changed +- `fullName` [query, string]: Full name +- `fullName__contains` [query, array]: Match full name partially (substring) +- `fullNameReadOnly` [query, boolean]: True if full name cannot be changed +- `firstLogin` [query, string]: First login. Example: "2018-02-27T04:49:26.257525Z". +- `lastLogin` [query, string]: Last login. Example: "2018-02-27T04:49:26.257525Z". +- `dateJoined` [query, string]: Date joined. Example: "2018-02-27T04:49:26.257525Z". +- `groupsReadOnly` [query, boolean]: [DEPRECATED] True if permissions cannot be changed +- `twoFaEnabled` [query, boolean]: Two fa enabled +- `primaryTwoFaMethod` [query, string]: Primary two fa method +- `emailVerified` [query, boolean]: Return only verified/unverified users +- `query` [query, string]: Full text search for fields: full_name, email, description +- `ids` [query, array]: List of user IDs to filter by. Example: "225494730938493804,225494730938493915". +- `roleIds` [query, array]: List of rbac roles to filter by. Example: "225494730938493804,225494730938493915". +- `twoFaStatus` [query, string]: Two fa status +- `twoFaStatuses` [query, array]: Two fa status in +- `canGenerateApiToken` [query, boolean]: Can generate api token +- `hasValidApiToken` [query, boolean]: Has valid api token +- `lastActivation__lt` [query, string]: User was last active before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__lte` [query, string]: User was last active before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__gt` [query, string]: User was last active after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__gte` [query, string]: User was last active after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `lastActivation__between` [query, string]: Date range for when the user was last active (format: -, inclusive). Example: "1514978890136-1514978650130". +- `apiTokenExpiresAt__lt` [query, string]: API token expires before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__lte` [query, string]: API token expires before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__gt` [query, string]: API token expires after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__gte` [query, string]: API token expires after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `apiTokenExpiresAt__between` [query, string]: Date range for when the API token expires (format: -, inclusive). Example: "1514978890136-1514978650130". +- `createdAt__lt` [query, string]: User was created before this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: User was created before or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gt` [query, string]: User was created after this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__gte` [query, string]: User was created after or at this timestamp. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__between` [query, string]: Date range for when the user was created (format: -, inclusive). Example: "1514978890136-1514978650130". Responses: 401 Unauthorized access - please sign in and retry., 200 List of users retrieved successfully., 400 Invalid user input received. See error details for further i @@ -136,7 +136,7 @@ Create a new user. Required permissions: `Users.create` Parameters: -- `body` [body, users.schemas_CreateUserSchema] — +- `body` [body, users.schemas_CreateUserSchema]: Responses: 403 Not enough permissions to create user., 200 User created successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -148,7 +148,7 @@ Disable Two-Factor Authentication for one user. This requires the ID of the user Optional permissions: `Users.edit` Parameters: -- `body` [body, users.schemas_UserIdSchema] — +- `body` [body, users.schemas_UserIdSchema]: Responses: 403 No permission for the action, 200 2FA successfully disabled, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -160,7 +160,7 @@ Enable two-factor authentication for a given user. Optional permissions: `Users.edit` Parameters: -- `body` [body, users.schemas_UserIdSchema] — +- `body` [body, users.schemas_UserIdSchema]: Responses: 403 No permission for the action, 200 2FA successfully enabled, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -171,7 +171,7 @@ Responses: 403 No permission for the action, 200 2FA successfully enabled, 400 I Get details of the API token that matches the filter. Parameters: -- `body` [body, users.schemas_ApiTokenSchema] — +- `body` [body, users.schemas_ApiTokenSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i @@ -182,7 +182,7 @@ Responses: 200 Success, 400 Invalid user input received. See error details for f Authenticate a user with a third-party app, such as DUO or Google Authenticator, for deployments that require Two Factor Authentication. Parameters: -- `body` [body, users.schemas_AuthCodeSchema] — +- `body` [body, users.schemas_AuthCodeSchema]: Responses: 200 Authenticated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -193,7 +193,7 @@ Responses: 200 Authenticated, 400 Invalid user input received. See error details Elevate a session with a third-party app, such as DUO or Google Authenticator. Parameters: -- `body` [body, users.schemas_ElevateSessionSchema] — +- `body` [body, users.schemas_ElevateSessionSchema]: Responses: 200 Elevated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -213,7 +213,7 @@ Change the user password. Optional permissions: `Users.edit` Parameters: -- `body` [body, users.schemas_ChangePasswordSchema] — +- `body` [body, users.schemas_ChangePasswordSchema]: Responses: 404 User not found, 403 Insufficient permissions, 200 Password changed, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -226,7 +226,7 @@ Delete 2FA for users. Required permissions: `Users.edit, Users.allow2FAForOtherUsers` Parameters: -- `body` [body, users.schemas_DeleteTfaSchema] — +- `body` [body, users.schemas_DeleteTfaSchema]: Responses: 404 User not found, 403 Insufficient permissions, 200 2FA delete completed, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -239,7 +239,7 @@ Delete all users that match the filter. Required permissions: `Users.delete` Parameters: -- `body` [body, users.schemas_BulkUsersActionSchema] — +- `body` [body, users.schemas_BulkUsersActionSchema]: Responses: 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -250,7 +250,7 @@ Responses: 400 Invalid user input received. See error details for further i, 401 Enable support for the 2FA app (such as Duo or Google Authenticator) that your Console users will use to log in. Parameters: -- `body` [body, users.schemas_EnableAppSchema] — +- `body` [body, users.schemas_EnableAppSchema]: Responses: 200 2FA app enabled, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -263,7 +263,7 @@ Enroll users for 2FA setup. Required permissions: `Users.edit, Users.allow2FAForOtherUsers` Parameters: -- `body` [body, users.schemas_UserIdsSchema] — +- `body` [body, users.schemas_UserIdsSchema]: Responses: 404 User not found, 403 Insufficient permissions, 200 2FA enrollment completed, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -274,7 +274,7 @@ Responses: 404 User not found, 403 Insufficient permissions, 200 2FA enrollment Get the API token for the authenticated user. Parameters: -- `body` [body, users.schemas_GenerateApiTokenSchema] — +- `body` [body, users.schemas_GenerateApiTokenSchema]: Responses: 409 API token conflict (already generated), 200 API token delivered to user, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -287,7 +287,7 @@ Get a new iFrame token with the provided limitations. Required permissions: `Users.create` Parameters: -- `body` [body, users.schemas_CreateIFrameUserSchema] — +- `body` [body, users.schemas_CreateIFrameUserSchema]: Responses: 403 Not enough permissions to create user., 200 User created successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -298,7 +298,7 @@ Responses: 403 Not enough permissions to create user., 200 User created successf Authenticate a user by username and password and return an authentication token. Rate limit: 1 call per second for each different IP address that communicates with the Console. Parameters: -- `body` [body, users.schemas_LoginInputSchema] — +- `body` [body, users.schemas_LoginInputSchema]: Responses: 401 Login failed. May be the result of bad credentials, or a wro, 400 Invalid user input received. See error details for further i, 200 User authenticated successfully. @@ -309,7 +309,7 @@ Responses: 401 Login failed. May be the result of bad credentials, or a wro, 400 For SSO 2FA setup tokens, allows users to skip setting up the 2FA and proceed with their login.
      Accepts a temporary token from SSO login flow with error code 4010035.

      For password expiration tokens, allows users to decide if they want to change their soon to expire password now or later.
      Users can also choose not to receive the notification again for this password cycle.
      Accepts a temporary token from /users/login with error code 4010093.
      For users eligible to be onboarded to global identity allows to decide if they want to skip and finish their login Parameters: -- `body` [body, users.schemas_LoginContinueSchema] — +- `body` [body, users.schemas_LoginContinueSchema]: Responses: 401 Unauthorized.
      In password expiration flow, a temporary t, 200 Login can continue, 400 Invalid user input received. See error details for further i @@ -320,7 +320,7 @@ Responses: 401 Unauthorized.
      In password expiration flow, a temporary t, 200 Log in to the API with a token. To learn more about temporary and 6-month tokens and how to generate them, see https://support.sentinelone.com/hc/en-us/articles/360004195934. Parameters: -- `body` [body, users.schemas_LoginByApiTokenSchema] — +- `body` [body, users.schemas_LoginByApiTokenSchema]: Responses: 401 User authentication failed, 200 user logged in, 400 Invalid user input received. See error details for further i @@ -331,10 +331,10 @@ Responses: 401 User authentication failed, 200 user logged in, 400 Invalid user Log in with user token. Parameters: -- `token` [query, string] **required** — User token. Example: "bfd9070c1afa88516d3cdfd722e62fe433e42bad6bb14da27088140ad785585f8582adaccd56fb69". -- `removedSavedScope` [query, string] — Removed saved scope -- `redirectTo` [query, string] — Relative url to redirect to -- `redirectToParams` [query, string] — Query params for the redirect to, without '?' prefix +- `token` [query, string] **required**: User token. Example: "bfd9070c1afa88516d3cdfd722e62fe433e42bad6bb14da27088140ad785585f8582adaccd56fb69". +- `removedSavedScope` [query, string]: Removed saved scope +- `redirectTo` [query, string]: Relative url to redirect to +- `redirectToParams` [query, string]: Query params for the redirect to, without '?' prefix Responses: 401 User authentication failed, 200 user logged in, 400 Invalid user input received. See error details for further i @@ -347,7 +347,7 @@ Force users to reset their password on next login. Required permissions: `Users.edit` Parameters: -- `body` [body, users.schemas_BulkUsersActionSchema] — +- `body` [body, users.schemas_BulkUsersActionSchema]: Responses: 403 Insufficient permissions, 200 Users marked to reset password on next login successfully, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -360,7 +360,7 @@ Prompt reset password for users. Required permissions: `Users.edit` Parameters: -- `body` [body, users.schemas_BulkUsersActionSchema] — +- `body` [body, users.schemas_BulkUsersActionSchema]: Responses: 403 Insufficient permissions, 200 Prompt reset password completed, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -371,7 +371,7 @@ Responses: 403 Insufficient permissions, 200 Prompt reset password completed, 40 Sets a new password for the user.
      Used by forced password reset and password expiration flows.
      Accepts temporary tokens from /users/login with error codes 4010091 and 4010092. Parameters: -- `body` [body, users.schemas_SetPasswordSchema] — +- `body` [body, users.schemas_SetPasswordSchema]: Responses: 401 Unauthorized, 200 Password was set, 400 Invalid user input received. See error details for further i @@ -382,8 +382,8 @@ Responses: 401 Unauthorized, 200 Password was set, 400 Invalid user input receiv If SSO is enabled for a deployment or scope, and a user attempts to log in with name and password, this command redirects the login to SSO. Parameters: -- `email` [query, string] — Email address of the user trying to log in. Example: "me@sentinelone.com". -- `scopeId` [query, string] — The scope the desired SSO IdP is configured on. email is irrelevant when using scope_id. If both are provided, email is ignored. Example: "225494730938493804". +- `email` [query, string]: Email address of the user trying to log in. Example: "me@sentinelone.com". +- `scopeId` [query, string]: The scope the desired SSO IdP is configured on. email is irrelevant when using scope_id. If both are provided, email is ignored. Example: "225494730938493804". Responses: 401 Not authenticated user., 302 Login redirected., 400 Invalid user input received. See error details for further i @@ -394,7 +394,7 @@ Responses: 401 Not authenticated user., 302 Login redirected., 400 Invalid user Authenticate a Single Sign-On response over SAML v2 protocol. Parameters: -- `scope_id` [path, string] **required** — Scope ID. Example: "225494730938493804". +- `scope_id` [path, string] **required**: Scope ID. Example: "225494730938493804". Responses: 404 Site not found., 401 Not authenticated user., 302 SSO authenticated. @@ -415,7 +415,7 @@ Send verification email to users that match the filter. Warning: Active users wi Required permissions: `Users.edit` Parameters: -- `body` [body, users.schemas_BulkUsersActionSchema] — +- `body` [body, users.schemas_BulkUsersActionSchema]: Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -426,8 +426,8 @@ Responses: 403 Insufficient permissions, 200 Success, 400 Invalid user input rec When a new user verifies their email, the Management gets a token. Use this command to validate the token. Parameters: -- `token` [query, string] **required** — Verification token -- `resetPasswordFlow` [query, boolean] — Reset password flow +- `token` [query, string] **required**: Verification token +- `resetPasswordFlow` [query, boolean]: Reset password flow Responses: 404 A user matching the input verification token wasn't found, 401 Verification failed, 400 Invalid user input received. See error details for further i, 200 Token is valid @@ -438,7 +438,7 @@ Responses: 404 A user matching the input verification token wasn't found, 401 Ve When a new user verifies their email, the Management gets a token. Use this command to verify the token and set a new password. Parameters: -- `body` [body, users.schemas_OnboardingVerificationSchema] — +- `body` [body, users.schemas_OnboardingVerificationSchema]: Responses: 404 A user matching the input verification token wasn't found, 401 Verification failed, 400 Invalid user input received. See error details for further i, 200 User successfully verified @@ -449,7 +449,7 @@ Responses: 404 A user matching the input verification token wasn't found, 401 Ve Request 2FA App response. Parameters: -- `body` [body, users.schemas_RequestAppSchema] — +- `body` [body, users.schemas_RequestAppSchema]: Responses: 400 Invalid user input received. See error details for further i, 200 Success, 401 Unauthorized access - please sign in and retry. @@ -462,7 +462,7 @@ Reset 2FA for users. Required permissions: `Users.edit, Users.allow2FAForOtherUsers` Parameters: -- `body` [body, users.schemas_ResetTfaSchema] — +- `body` [body, users.schemas_ResetTfaSchema]: Responses: 404 User not found, 403 Insufficient permissions, 200 2FA reset completed, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -474,7 +474,7 @@ Revoke an API token. Optional permissions: `Users.revokeOtherUsersApiTokens` Parameters: -- `body` [body, users.schemas_UserIdSchema] — +- `body` [body, users.schemas_UserIdSchema]: Responses: 404 User not found, 403 Insufficient permissions, 200 Api token revoked, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -521,7 +521,7 @@ Delete a user by ID. Required permissions: `Users.delete` Parameters: -- `user_id` [path, string] **required** — User ID. Example: "225494730938493804". +- `user_id` [path, string] **required**: User ID. Example: "225494730938493804". Responses: 403 Insufficient permissions., 200 User deleted successfully., 401 Unauthorized access - please sign in and retry. @@ -534,7 +534,7 @@ Get a user by ID. Required permissions: `Users.view` Parameters: -- `user_id` [path, string] **required** — User ID. Example: "225494730938493804". +- `user_id` [path, string] **required**: User ID. Example: "225494730938493804". Responses: 404 Could not retrieve user., 403 Insufficient permissions., 200 User retrieved successfully., 401 Unauthorized access - please sign in and retry. @@ -546,8 +546,8 @@ Change properties of the user of the given ID. Optional permissions: `Users.edit, Users.allowGenerateApiToken` Parameters: -- `user_id` [path, string] **required** — User ID. Example: "225494730938493804". -- `body` [body, users.schemas_UpdateUserSchema] — +- `user_id` [path, string] **required**: User ID. Example: "225494730938493804". +- `body` [body, users.schemas_UpdateUserSchema]: Responses: 409 User or Email already taken., 404 User not found., 403 Forbidden., 200 User updated successfully., 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -559,6 +559,6 @@ Get the details of the API token generated for a given user. Optional permissions: `Users.view` Parameters: -- `user_id` [path, string] **required** — User ID. Example: "225494730938493804". +- `user_id` [path, string] **required**: User ID. Example: "225494730938493804". Responses: 404 User not found, 403 Insufficient permissions, 200 Success, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/VCS_Integration.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/VCS_Integration.md index 30bb47c..ae040fe 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/VCS_Integration.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/VCS_Integration.md @@ -9,8 +9,8 @@ Fetch filter count Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: Responses: 200 Filter count fetched successfully, 400 Bad Request, 500 Internal Server Error @@ -21,8 +21,8 @@ Responses: 200 Filter count fetched successfully, 400 Bad Request, 500 Internal This API is used to off-board a VCS integration. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: Responses: 200 VCS offboarding app url created successfully, 400 Bad Request, 500 Internal Server Error @@ -33,10 +33,10 @@ Responses: 200 VCS offboarding app url created successfully, 400 Bad Request, 50 Deactivate scanning for repositories associated with the given VCS integration. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `integrationId` [path, string] **required** — -- `body` [body, EnableDisableRepos] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `integrationId` [path, string] **required**: +- `body` [body, EnableDisableRepos] **required**: Responses: 200 Successfully disabled repositories, 400 Bad Request, 500 Internal Server Error @@ -47,10 +47,10 @@ Responses: 200 Successfully disabled repositories, 400 Bad Request, 500 Internal Allows modification of tags associated with one or more repositories under a specified VCS integration. This operation supports adding, removing, or updating tags to help organize and categorize repositories effectively. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `integrationId` [path, string] **required** — -- `body` [body, EditReposTags] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `integrationId` [path, string] **required**: +- `body` [body, EditReposTags] **required**: Responses: 200 Tags updated successfully, 400 Bad Request, 500 Internal Server Error @@ -61,10 +61,10 @@ Responses: 200 Tags updated successfully, 400 Bad Request, 500 Internal Server E Activates scanning for repositories associated with the given VCS integration. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `integrationId` [path, string] **required** — -- `body` [body, EnableDisableRepos] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `integrationId` [path, string] **required**: +- `body` [body, EnableDisableRepos] **required**: Responses: 200 Successfully enabled repositories, 400 Bad Request, 500 Internal Server Error @@ -75,10 +75,10 @@ Responses: 200 Successfully enabled repositories, 400 Bad Request, 500 Internal This endpoint retrieves tags associated with repositories under a VCS integration. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `integrationId` [path, string] **required** — -- `body` [body, FetchReposTags] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `integrationId` [path, string] **required**: +- `body` [body, FetchReposTags] **required**: Responses: 200 Repositories tags fetched successfully, 400 Bad Request, 500 Internal Server Error @@ -89,9 +89,9 @@ Responses: 200 Repositories tags fetched successfully, 400 Bad Request, 500 Inte This endpoint permanently deletes a VCS integration. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `vcsIntegrationId` [path, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `vcsIntegrationId` [path, string] **required**: Responses: 200 VCS integration deleted successfully, 400 Bad Request, 500 Internal Server Error @@ -102,10 +102,10 @@ Responses: 200 VCS integration deleted successfully, 400 Bad Request, 500 Intern This endpoint allows users to update configuration details for a VCS integration. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `vcsIntegrationId` [path, string] **required** — -- `body` [body, UpdateVCSIntegration] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `vcsIntegrationId` [path, string] **required**: +- `body` [body, UpdateVCSIntegration] **required**: Responses: 200 VCS integration updated successfully, 400 Bad Request, 500 Internal Server Error @@ -116,12 +116,12 @@ Responses: 200 VCS integration updated successfully, 400 Bad Request, 500 Intern Fetches a list of repositories associated with the VCS integration Parameters: -- `scopeType` [query, string] — -- `scopeIds` [query, string] — -- `limit` [query, string] — -- `cursor` [query, string] — -- `skip` [query, string] — -- `vcsIntegrationId` [path, string] **required** — +- `scopeType` [query, string]: +- `scopeIds` [query, string]: +- `limit` [query, string]: +- `cursor` [query, string]: +- `skip` [query, string]: +- `vcsIntegrationId` [path, string] **required**: Responses: 200 Successfully retrieved the list of repositories, 400 Bad Request, 500 Internal Server Error @@ -132,9 +132,9 @@ Responses: 200 Successfully retrieved the list of repositories, 400 Bad Request, Initiates a process to resynchronize repositories associated with the specified VCS integration Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `vcsIntegrationId` [path, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `vcsIntegrationId` [path, string] **required**: Responses: 200 Resynchronization initiated successfully, 400 Bad Request, 500 Internal Server Error @@ -145,10 +145,10 @@ Responses: 200 Resynchronization initiated successfully, 400 Bad Request, 500 In Fetches a list of all configured VCS integrations. Parameters: -- `scopeType` [query, string] — -- `scopeIds` [query, string] — -- `limit` [query, string] — -- `skip` [query, string] — +- `scopeType` [query, string]: +- `scopeIds` [query, string]: +- `limit` [query, string]: +- `skip` [query, string]: Responses: 200 Successfully retrieved the list of VCS integrations, 400 Bad Request, 500 Internal Server Error @@ -159,9 +159,9 @@ Responses: 200 Successfully retrieved the list of VCS integrations, 400 Bad Requ Allows modification of tags in a VCS integration. This operation supports adding, removing, or updating tags to help organize and categorize integration repositories effectively. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `body` [body, EditIntegrationsTags] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `body` [body, EditIntegrationsTags] **required**: Responses: 200 Tags updated successfully, 400 Bad Request, 500 Internal Server Error @@ -172,9 +172,9 @@ Responses: 200 Tags updated successfully, 400 Bad Request, 500 Internal Server E This endpoint allows users to onboard a new VCS integration, enabling automated scanning for secrets and IaC misconfigurations. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `body` [body, VCSOnboarding] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `body` [body, VCSOnboarding] **required**: Responses: 200 VCS onboarding completed successfully, 400 Bad Request, 500 Internal Server Error @@ -185,10 +185,10 @@ Responses: 200 VCS onboarding completed successfully, 400 Bad Request, 500 Inter This endpoint retrieves a list of all configured scanner policies used for VCS and CICD integrations. Parameters: -- `scopeType` [query, string] — -- `scopeIds` [query, string] — -- `limit` [query, string] — -- `skip` [query, string] — +- `scopeType` [query, string]: +- `scopeIds` [query, string]: +- `limit` [query, string]: +- `skip` [query, string]: Responses: 200 Scanner policies fetched successfully, 400 Bad Request, 500 Internal Server Error @@ -199,9 +199,9 @@ Responses: 200 Scanner policies fetched successfully, 400 Bad Request, 500 Inter Defines a scanning policy for a VCS integration, configuring parameters for detecting secrets, IaC misconfigurations, and vulnerabilities within repositories. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `body` [body, AddScannerPolicy] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `body` [body, AddScannerPolicy] **required**: Responses: 200 Scanner policy created successfully, 400 Bad Request, 500 Internal Server Error @@ -212,10 +212,10 @@ Responses: 200 Scanner policy created successfully, 400 Bad Request, 500 Interna This endpoint returns the maximum allowed value for the priority in scanner policies. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `targetScopeType` [query, string] **required** — -- `targetScopeId` [query, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `targetScopeType` [query, string] **required**: +- `targetScopeId` [query, string] **required**: Responses: 200 Max allowed priority fetched successfully, 400 Bad Request, 500 Internal Server Error @@ -226,9 +226,9 @@ Responses: 200 Max allowed priority fetched successfully, 400 Bad Request, 500 I This endpoint deletes a scanner policy. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `policyId` [path, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `policyId` [path, string] **required**: Responses: 200 VCS scanner policy deleted successfully, 400 Bad Request, 500 Internal Server Error @@ -239,9 +239,9 @@ Responses: 200 VCS scanner policy deleted successfully, 400 Bad Request, 500 Int Get a VCS and CICD scanner policy Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `policyId` [path, string] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `policyId` [path, string] **required**: Responses: 200 This endpoint fetches detailed information for a scanner pol, 400 Bad Request, 500 Internal Server Error @@ -252,10 +252,10 @@ Responses: 200 This endpoint fetches detailed information for a scanner pol, 400 This endpoint updates an existing scanner policy. A scanner policy defines how secrets, IaC misconfigurations, and vulnerabilities should be detected and handled within a VCS integration/CICD. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `policyId` [path, string] **required** — -- `body` [body, UpdateVCSScannerPolicy] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `policyId` [path, string] **required**: +- `body` [body, UpdateVCSScannerPolicy] **required**: Responses: 200 Scanner policy updated successfully, 400 Bad Request, 500 Internal Server Error @@ -266,8 +266,8 @@ Responses: 200 Scanner policy updated successfully, 400 Bad Request, 500 Interna This API is used to register a new tunnel user. It sets up the necessary tunnel configuration and credentials for secure access. Parameters: -- `scopeType` [query, string] **required** — -- `scopeIds` [query, string] **required** — -- `body` [body, TunnelUser] **required** — +- `scopeType` [query, string] **required**: +- `scopeIds` [query, string] **required**: +- `body` [body, TunnelUser] **required**: Responses: 200 Tunnel user registered successfully, 400 Bad Request, 500 Internal Server Error diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/alerts.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/alerts.md index e5283c2..dfcc8fb 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/alerts.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/alerts.md @@ -11,57 +11,57 @@ Get a list of alerts for a given scope Required permissions: `Custom Alerts.view` Parameters: -- `createdAt__gt` [query, string] — Created at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `sourceProcessFileHashSha256__contains` [query, array] — Free-text filter by source sha255. Example: "rule1". -- `origAgentName__contains` [query, array] — Free-text filter by agent name. Example: "ilia". -- `sourceProcessCommandline__contains` [query, array] — Free-text filter by source commandline. Example: "rule1". -- `containerImageName__contains` [query, array] — Free-text filter by the endpoint container image name (supports multiple values) -- `ruleName__contains` [query, array] — Free-text filter by rule name. Example: "rule1". -- `origAgentVersion__contains` [query, array] — Free-text filter by agent OS version. Example: "7.11". -- `k8sNode__contains` [query, array] — Free-text filter by the endpoint Kubernetes node name (supports multiple values) -- `k8sNamespaceLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes namespace labels (supports multiple values) -- `analystVerdict` [query, array] — Filter threats by a analyst verdict. Example: "TRUE_POSITIVE". -- `tenant` [query, boolean] — Indicates a tenant scope request -- `containerName__contains` [query, array] — Free-text filter by the endpoint container name (supports multiple values) -- `query` [query, string] — Full text search for all fields -- `containerLabels__contains` [query, array] — Free-text filter by the endpoint container labels (supports multiple values) -- `groupIds` [query, array] — List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". -- `sourceProcessName__contains` [query, array] — Free-text filter by source process name. Example: "proc1.exe". -- `createdAt__gte` [query, string] — Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `incidentStatus` [query, array] — Filter threats by a incident status. Example: "IN_PROGRESS". -- `sourceProcessStoryline__contains` [query, array] — Free-text filter by source storyline. Example: "rule1". -- `sourceProcessFileHashSha1__contains` [query, array] — Free-text filter by source sha1. Example: "rule1". -- `k8sPodLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes pod labels (supports multiple values) -- `osType` [query, array] — Included OS types -- `sourceProcessFileHashMd5__contains` [query, array] — Free-text filter by source md5. Example: "rule1". -- `limit` [query, integer] — Limit number of returned items (1-1000). Example: "10". -- `k8sNamespaceName__contains` [query, array] — Free-text filter by the endpoint Kubernetes namespace name (supports multiple values) -- `origAgentOsRevision__contains` [query, array] — Free-text filter by agent OS revision. Example: "win7". -- `sortOrder` [query, string] (enum: asc, desc) — Sort direction. Example: "asc". -- `countOnly` [query, boolean] — If true, only total number of items will be returned, without any of the actual objects. -- `severity` [query, array] — Severity. Example: "Low". -- `accountIds` [query, array] — List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". -- `reportedAt__gte` [query, string] — Reported at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `k8sControllerName__contains` [query, array] — Free-text filter by the endpoint Kubernetes controller name (supports multiple values) -- `origAgentUuid__contains` [query, array] — Free-text filter by agent UUID. Example: "win7". -- `createdAt__lt` [query, string] — Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `createdAt__lte` [query, string] — Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `reportedAt__lte` [query, string] — Reported at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". -- `k8sCluster__contains` [query, array] — Free-text filter by the endpoint Kubernetes cluster name (supports multiple values) -- `k8sControllerLabels__contains` [query, array] — Free-text filter by the endpoint Kubernetes controller labels (supports multiple values) -- `reportedAt__lt` [query, string] — Reported at lesser than. Example: "2018-02-27T04:49:26.257525Z". -- `cursor` [query, string] — Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". -- `ids` [query, array] — A list of Alert IDs. Example: "225494730938493804,225494730938493915". -- `skip` [query, integer] — Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". -- `disablePagination` [query, boolean] — If true, all rules for requested scope will be returned -- `machineType` [query, array] — agent machine type -- `reportedAt__gt` [query, string] — Reported at greater than. Example: "2018-02-27T04:49:26.257525Z". -- `scopes` [query, array] — Filter results by scope. Example: "global". -- `k8sPod__contains` [query, array] — Free-text filter by the endpoint Kubernetes pod name (supports multiple values) -- `siteIds` [query, array] — List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". -- `sourceProcessFilePath__contains` [query, array] — Free-text filter by source file path. Example: "rule1". -- `skipCount` [query, boolean] — If true, total number of items will not be calculated, which speeds up execution time. -- `sortBy` [query, string] (enum: id, machineType, osName, incidentStatus, analystVerdict, severity, agentDetectionInfoMachineType, agentDetectionInfoName, agentDetectionInfoOsFamily, agentDetectionInfoOsName, agentDetectionInfoOsRevision, agentDetectionInfoSiteId, agentDetectionInfoUuid, agentDetectionInfoVersion, alertInfoAlertId, alertInfoAnalystVerdict, alertInfoCreatedAt, alertInfoDvEventId, alertInfoEventType, alertInfoHitType, alertInfoIncidentStatus, alertInfoReportedAt, alertInfoSource, containerInfoId, containerInfoImage, containerInfoLabels, containerInfoName, kubernetesInfoCluster, kubernetesInfoControllerKind, kubernetesInfoControllerLabels, kubernetesInfoControllerName, kubernetesInfoNamespace, kubernetesInfoNamespaceLabels, kubernetesInfoNode, kubernetesInfoPod, kubernetesInfoPodLabels, ruleInfoDescription, ruleInfoId, ruleInfoName, ruleInfoScopeLevel, ruleInfoSeverity, ruleInfoTreatAsThreat, sourceParentProcessInfoCommandline, sourceParentProcessInfoFileHashMd5, sourceParentProcessInfoFileHashSha1, sourceParentProcessInfoFileHashSha256, sourceParentProcessInfoFilePath, sourceParentProcessInfoFileSignerIdentity, sourceParentProcessInfoName, sourceParentProcessInfoPid, sourceParentProcessInfoPidStarttime, sourceParentProcessInfoStoryline, sourceParentProcessInfoIntegrityLevel, sourceParentProcessInfoSubsystem, sourceParentProcessInfoUser, sourceProcessInfoCommandline, sourceProcessInfoFileHashMd5, sourceProcessInfoFileHashSha1, sourceProcessInfoFileHashSha256, sourceProcessInfoFilePath, sourceProcessInfoFileSignerIdentity, sourceProcessInfoName, sourceProcessInfoPid, sourceProcessInfoPidStarttime, sourceProcessInfoStoryline, sourceProcessInfoIntegrityLevel, sourceProcessInfoSubsystem, sourceProcessInfoUser) — The column to sort the results by. Example: "id". +- `createdAt__gt` [query, string]: Created at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `sourceProcessFileHashSha256__contains` [query, array]: Free-text filter by source sha255. Example: "rule1". +- `origAgentName__contains` [query, array]: Free-text filter by agent name. Example: "ilia". +- `sourceProcessCommandline__contains` [query, array]: Free-text filter by source commandline. Example: "rule1". +- `containerImageName__contains` [query, array]: Free-text filter by the endpoint container image name (supports multiple values) +- `ruleName__contains` [query, array]: Free-text filter by rule name. Example: "rule1". +- `origAgentVersion__contains` [query, array]: Free-text filter by agent OS version. Example: "7.11". +- `k8sNode__contains` [query, array]: Free-text filter by the endpoint Kubernetes node name (supports multiple values) +- `k8sNamespaceLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes namespace labels (supports multiple values) +- `analystVerdict` [query, array]: Filter threats by a analyst verdict. Example: "TRUE_POSITIVE". +- `tenant` [query, boolean]: Indicates a tenant scope request +- `containerName__contains` [query, array]: Free-text filter by the endpoint container name (supports multiple values) +- `query` [query, string]: Full text search for all fields +- `containerLabels__contains` [query, array]: Free-text filter by the endpoint container labels (supports multiple values) +- `groupIds` [query, array]: List of Group IDs to filter by. Example: "225494730938493804,225494730938493915". +- `sourceProcessName__contains` [query, array]: Free-text filter by source process name. Example: "proc1.exe". +- `createdAt__gte` [query, string]: Created at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `incidentStatus` [query, array]: Filter threats by a incident status. Example: "IN_PROGRESS". +- `sourceProcessStoryline__contains` [query, array]: Free-text filter by source storyline. Example: "rule1". +- `sourceProcessFileHashSha1__contains` [query, array]: Free-text filter by source sha1. Example: "rule1". +- `k8sPodLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes pod labels (supports multiple values) +- `osType` [query, array]: Included OS types +- `sourceProcessFileHashMd5__contains` [query, array]: Free-text filter by source md5. Example: "rule1". +- `limit` [query, integer]: Limit number of returned items (1-1000). Example: "10". +- `k8sNamespaceName__contains` [query, array]: Free-text filter by the endpoint Kubernetes namespace name (supports multiple values) +- `origAgentOsRevision__contains` [query, array]: Free-text filter by agent OS revision. Example: "win7". +- `sortOrder` [query, string] (enum: asc, desc): Sort direction. Example: "asc". +- `countOnly` [query, boolean]: If true, only total number of items will be returned, without any of the actual objects. +- `severity` [query, array]: Severity. Example: "Low". +- `accountIds` [query, array]: List of Account IDs to filter by. Example: "225494730938493804,225494730938493915". +- `reportedAt__gte` [query, string]: Reported at greater or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `k8sControllerName__contains` [query, array]: Free-text filter by the endpoint Kubernetes controller name (supports multiple values) +- `origAgentUuid__contains` [query, array]: Free-text filter by agent UUID. Example: "win7". +- `createdAt__lt` [query, string]: Created at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `createdAt__lte` [query, string]: Created at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `reportedAt__lte` [query, string]: Reported at lesser or equal than. Example: "2018-02-27T04:49:26.257525Z". +- `k8sCluster__contains` [query, array]: Free-text filter by the endpoint Kubernetes cluster name (supports multiple values) +- `k8sControllerLabels__contains` [query, array]: Free-text filter by the endpoint Kubernetes controller labels (supports multiple values) +- `reportedAt__lt` [query, string]: Reported at lesser than. Example: "2018-02-27T04:49:26.257525Z". +- `cursor` [query, string]: Cursor position returned by the last request. Use to iterate over more than 1000 items. Example: "YWdlbnRfaWQ6NTgwMjkzODE=". +- `ids` [query, array]: A list of Alert IDs. Example: "225494730938493804,225494730938493915". +- `skip` [query, integer]: Skip first number of items (0-1000). To iterate over more than 1000 items, use "cursor". Example: "150". +- `disablePagination` [query, boolean]: If true, all rules for requested scope will be returned +- `machineType` [query, array]: agent machine type +- `reportedAt__gt` [query, string]: Reported at greater than. Example: "2018-02-27T04:49:26.257525Z". +- `scopes` [query, array]: Filter results by scope. Example: "global". +- `k8sPod__contains` [query, array]: Free-text filter by the endpoint Kubernetes pod name (supports multiple values) +- `siteIds` [query, array]: List of Site IDs to filter by. Example: "225494730938493804,225494730938493915". +- `sourceProcessFilePath__contains` [query, array]: Free-text filter by source file path. Example: "rule1". +- `skipCount` [query, boolean]: If true, total number of items will not be calculated, which speeds up execution time. +- `sortBy` [query, string] (enum: id, machineType, osName, incidentStatus, analystVerdict, severity, agentDetectionInfoMachineType, agentDetectionInfoName, agentDetectionInfoOsFamily, agentDetectionInfoOsName, agentDetectionInfoOsRevision, agentDetectionInfoSiteId, agentDetectionInfoUuid, agentDetectionInfoVersion, alertInfoAlertId, alertInfoAnalystVerdict, alertInfoCreatedAt, alertInfoDvEventId, alertInfoEventType, alertInfoHitType, alertInfoIncidentStatus, alertInfoReportedAt, alertInfoSource, containerInfoId, containerInfoImage, containerInfoLabels, containerInfoName, kubernetesInfoCluster, kubernetesInfoControllerKind, kubernetesInfoControllerLabels, kubernetesInfoControllerName, kubernetesInfoNamespace, kubernetesInfoNamespaceLabels, kubernetesInfoNode, kubernetesInfoPod, kubernetesInfoPodLabels, ruleInfoDescription, ruleInfoId, ruleInfoName, ruleInfoScopeLevel, ruleInfoSeverity, ruleInfoTreatAsThreat, sourceParentProcessInfoCommandline, sourceParentProcessInfoFileHashMd5, sourceParentProcessInfoFileHashSha1, sourceParentProcessInfoFileHashSha256, sourceParentProcessInfoFilePath, sourceParentProcessInfoFileSignerIdentity, sourceParentProcessInfoName, sourceParentProcessInfoPid, sourceParentProcessInfoPidStarttime, sourceParentProcessInfoStoryline, sourceParentProcessInfoIntegrityLevel, sourceParentProcessInfoSubsystem, sourceParentProcessInfoUser, sourceProcessInfoCommandline, sourceProcessInfoFileHashMd5, sourceProcessInfoFileHashSha1, sourceProcessInfoFileHashSha256, sourceProcessInfoFilePath, sourceProcessInfoFileSignerIdentity, sourceProcessInfoName, sourceProcessInfoPid, sourceProcessInfoPidStarttime, sourceProcessInfoStoryline, sourceProcessInfoIntegrityLevel, sourceProcessInfoSubsystem, sourceProcessInfoUser): The column to sort the results by. Example: "id". Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -74,7 +74,7 @@ Change the verdict of an alert Required permissions: `Custom Alerts.updateAnalystVerdict` Parameters: -- `body` [body, v2_1.alerts.schemas_AlertsAnalystVerdictSchema] — +- `body` [body, v2_1.alerts.schemas_AlertsAnalystVerdictSchema]: Responses: 200 Threats incident successfully updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. @@ -87,6 +87,6 @@ Update the incident details of an alert. Required permissions: `Custom Alerts.updateIncidentStatus` Parameters: -- `body` [body, v2_1.alerts.schemas_AlertsIncidentSchema] — +- `body` [body, v2_1.alerts.schemas_AlertsIncidentSchema]: Responses: 200 Threats incident successfully updated, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/licenses.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/licenses.md index 3fc2c9d..08a4b07 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/licenses.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/licenses.md @@ -11,6 +11,6 @@ Change the add-ons of the sites by a given filter Required permissions: `Sites.edit` Parameters: -- `body` [body, licenses.schemas_SiteBulkModulesSchema] — +- `body` [body, licenses.schemas_SiteBulkModulesSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/marketplace.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/marketplace.md index fdea87c..944285d 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/marketplace.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/marketplace.md @@ -11,7 +11,7 @@ Delete application integration from your Marketplace. Required permissions: `Singularity Marketplace.manage` Parameters: -- `body` [body, DeleteApplicationRequest] **required** — +- `body` [body, DeleteApplicationRequest] **required**: Responses: 200 OK @@ -24,19 +24,19 @@ Get the installed Marketplace applications for a scope specified. Required permissions: `Singularity Marketplace.view` Parameters: -- `applicationCatalogId` [query, string] — Filter results by application catalog id. Example: "225494730938493804,225494730938493915". -- `id` [query, string] — A list of applications IDs. Example: "225494730938493804,225494730938493915". -- `name__contains` [query, string] — Free-text filter by application name (supports multiple values). Example: "Service Pack 1". -- `creator__contains` [query, string] — Free-text filter by application creator (supports multiple values). Example: "Service Pack 1". -- `query` [query, string] — Free-text filter to match name or creator. -- `accountIds` [query, string] — Filter results by account id. Example: "225494730938493804,225494730938493915". -- `siteIds` [query, string] — Filter results by site id. Example: "225494730938493804,225494730938493915". -- `cursor` [query, string] — Cursor position returned by the last request. -- `limit` [query, string] — Limit number of returned items (1-1000). Example: "10". -- `countOnly` [query, string] — If true, only the number of items will be returned. -- `disablePagination` [query, string] — If true, pagination will be disabled. -- `sortBy` [query, string] — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] — Sort direction (asc/desc). Example: "asc". +- `applicationCatalogId` [query, string]: Filter results by application catalog id. Example: "225494730938493804,225494730938493915". +- `id` [query, string]: A list of applications IDs. Example: "225494730938493804,225494730938493915". +- `name__contains` [query, string]: Free-text filter by application name (supports multiple values). Example: "Service Pack 1". +- `creator__contains` [query, string]: Free-text filter by application creator (supports multiple values). Example: "Service Pack 1". +- `query` [query, string]: Free-text filter to match name or creator. +- `accountIds` [query, string]: Filter results by account id. Example: "225494730938493804,225494730938493915". +- `siteIds` [query, string]: Filter results by site id. Example: "225494730938493804,225494730938493915". +- `cursor` [query, string]: Cursor position returned by the last request. +- `limit` [query, string]: Limit number of returned items (1-1000). Example: "10". +- `countOnly` [query, string]: If true, only the number of items will be returned. +- `disablePagination` [query, string]: If true, pagination will be disabled. +- `sortBy` [query, string]: The column to sort the results by. Example: "id". +- `sortOrder` [query, string]: Sort direction (asc/desc). Example: "asc". Responses: 200 OK @@ -49,7 +49,7 @@ Install application from the Application Catalog. Required permissions: `Singularity Marketplace.manage` Parameters: -- `body` [body, InstallationRequest] **required** — +- `body` [body, InstallationRequest] **required**: Responses: 200 OK @@ -62,7 +62,7 @@ Update installed application configuration. Required permissions: `Singularity Marketplace.manage` Parameters: -- `body` [body, UpdateConfigurationRequest] **required** — +- `body` [body, UpdateConfigurationRequest] **required**: Responses: 200 OK @@ -75,16 +75,16 @@ Get the Marketplace Application Catalog. Required permissions: `Singularity Marketplace.view` Parameters: -- `id` [query, string] — Filter results by application catalog id. Example: "225494730938493804,225494730938493915". -- `category__contains` [query, string] — Free-text filter by catalog application category (supports multiple values). Example: "Service Pack 1". -- `name__contains` [query, string] — Free-text filter by catalog application name (supports multiple values). Example: "Service Pack 1". -- `description__contains` [query, string] — Free-text filter by catalog application description (supports multiple values). Example: "Service Pack 1". -- `query` [query, string] — Free-text filter to match name, description or category. -- `categoryIds` [query, string] — Filter results by application catalog category id. Example: "225494730938493804,225494730938493915". -- `cursor` [query, string] — Cursor position returned by the last request. -- `limit` [query, string] — Limit number of returned items (1-1000). Example: "10". -- `sortBy` [query, string] — The column to sort the results by. Example: "id". -- `sortOrder` [query, string] — Sort direction (asc/desc). Example: "asc". +- `id` [query, string]: Filter results by application catalog id. Example: "225494730938493804,225494730938493915". +- `category__contains` [query, string]: Free-text filter by catalog application category (supports multiple values). Example: "Service Pack 1". +- `name__contains` [query, string]: Free-text filter by catalog application name (supports multiple values). Example: "Service Pack 1". +- `description__contains` [query, string]: Free-text filter by catalog application description (supports multiple values). Example: "Service Pack 1". +- `query` [query, string]: Free-text filter to match name, description or category. +- `categoryIds` [query, string]: Filter results by application catalog category id. Example: "225494730938493804,225494730938493915". +- `cursor` [query, string]: Cursor position returned by the last request. +- `limit` [query, string]: Limit number of returned items (1-1000). Example: "10". +- `sortBy` [query, string]: The column to sort the results by. Example: "id". +- `sortOrder` [query, string]: Sort direction (asc/desc). Example: "asc". Responses: 200 OK @@ -97,7 +97,7 @@ Get the Configuration Fields of the Catalog Application. Required permissions: `Singularity Marketplace.view` Parameters: -- `applicationCatalogId` [path, string] **required** — +- `applicationCatalogId` [path, string] **required**: Responses: 200 OK @@ -110,7 +110,7 @@ Get the Catalog Application Configuration Fields. Required permissions: `Singularity Marketplace.view` Parameters: -- `applicationId` [path, string] **required** — +- `applicationId` [path, string] **required**: Responses: 200 OK @@ -123,8 +123,8 @@ Use this command to enable or disable application integrations that match the fi Required permissions: `Singularity Marketplace.manage` Parameters: -- `applicationMode` [path, string] **required** (enum: enable, disable) — -- `body` [body, SwitchApplicationModeRequest] **required** — +- `applicationMode` [path, string] **required** (enum: enable, disable): +- `body` [body, SwitchApplicationModeRequest] **required**: Responses: 200 OK @@ -137,7 +137,7 @@ Returns application invocation log. Required permissions: `Singularity Marketplace.view` Parameters: -- `id` [path, string] **required** — Application ID -- `only_errors` [query, string] — If true, only logs with error status ('Failure' or 'Retry') will be returned +- `id` [path, string] **required**: Application ID +- `only_errors` [query, string]: If true, only logs with error status ('Failure' or 'Retry') will be returned Responses: 200 OK diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/overview.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/overview.md index cb61d42..2fd89b0 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/overview.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tags/overview.md @@ -11,9 +11,9 @@ Get overview of a resource belonging to a category Required permissions: `XDR Inventory.view` Parameters: -- `accountIds` [query, array] — List of Account IDs to filter by -- `siteIds` [query, array] — List of Site IDs to filter by -- `groupIds` [query, array] — List of Group IDs to filter by -- `body` [body, v2_1.inventory.overview.schemas_InventoryOverviewJsonSchema] — +- `accountIds` [query, array]: List of Account IDs to filter by +- `siteIds` [query, array]: List of Site IDs to filter by +- `groupIds` [query, array]: List of Group IDs to filter by +- `body` [body, v2_1.inventory.overview.schemas_InventoryOverviewJsonSchema]: Responses: 200 Success, 400 Invalid user input received. See error details for further i, 401 Unauthorized access - please sign in and retry. diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tenant_capabilities.md b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tenant_capabilities.md index 704a7c6..f249952 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/references/tenant_capabilities.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/references/tenant_capabilities.md @@ -1,4 +1,4 @@ -# Tenant capabilities — auto-generated +# Tenant capabilities: auto-generated - Generated at: 2026-04-28T04:07:21+00:00 - Tenant: `https://usea1-acme.sentinelone.net` @@ -426,7 +426,11 @@ | GET | `/web/api/v2.1/mobile-integration/provisioning/tenant` | Mobile Integration | 404 | HTTP 404: Tenant not found | | GET | `/web/api/v2.1/ranger/enablement` | Network Discovery Self Enablement | 404 | HTTP 404: {"errors":[{"code":4040010,"detail":"","title":"Requested resource was not found"}]} | | GET | `/web/api/v2.1/ranger/enablement/defaults` | Network Discovery Self Enablement | 404 | HTTP 404: {"errors":[{"code":4040010,"detail":"","title":"Requested resource was not found"}]} | -| GET | `/web/api/v2.1/remote-ops/forensics/collection-profiles` | RemoteOps Forensics | 429 | HTTP 429: 429 Too Many Requests

      429 Too Many Requests


      ng | +| GET | `/web/api/v2.1/remote-ops/forensics/collection-profiles` | RemoteOps Forensics | 429 | HTTP 429: + 429 Too Many Requests + +

      429 Too Many Requests

      +
      ng | | GET | `/web/api/v2.1/ranger-ad/assessment-status` | ISPM | 500 | HTTP 500: {"timestamp":"2026-04-28T04:06:32.776+00:00","status":500,"error":"Internal Server Error","path":"/web/api/v2.1/ranger-ad/assessme | | GET | `/web/api/v2.1/remote-ops/data-exporter/destination-profiles` | Remote Ops MMS | 500 | HTTP 500: Server could not process the request. | | GET | `/web/api/v2.1/remote-ops/data-exporter/results` | Remote Ops MMS | 500 | HTTP 500: Server could not process the request. | @@ -437,7 +441,7 @@ | GET | `/web/api/v2.1/upgrade-policy/all-policies-count` | Auto Upgrade Policy | 502 | HTTP 502: Bad Gateway | | GET | `/web/api/v2.1/upgrade-policy/policies-count` | Auto Upgrade Policy | 502 | HTTP 502: Bad Gateway | -## Skipped — no ID available on this tenant +## Skipped: no ID available on this tenant | Path | Tag | Missing | |---|---|---| diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/baseline_anomaly.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/baseline_anomaly.py index 7d4161a..d1fb707 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/baseline_anomaly.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/baseline_anomaly.py @@ -2,8 +2,8 @@ Source-agnostic behavioral baseline + z-score anomaly detection. Composes ``inspect_source.discover_schema`` + ``pick_keys`` + ``pq.run_pq`` -to baseline ANY ``dataSource.name`` ingested into SDL — EDR, identity, -network, cloud, email, SaaS, custom — without hardcoding principal / +to baseline ANY ``dataSource.name`` ingested into SDL, EDR, identity, +network, cloud, email, SaaS, custom, without hardcoding principal / action fields per source. Pipeline: @@ -16,8 +16,8 @@ under the LRQ per-call deadline. 3. One 24h live slice. 4. Client-side merge with two baseline strategies: - - ``pooled`` — all daily samples in one bucket per (action, principal) - - ``dow`` — separate bucket per (action, principal, day_of_week) + - ``pooled``, all daily samples in one bucket per (action, principal) + - ``dow`` , separate bucket per (action, principal, day_of_week) eliminates the weekday/weekend false-positive 5. Three anomaly classes surfaced: - matched z-score deviations (SPIKE / DROP) @@ -25,7 +25,7 @@ - new-behavior pairs (live with no baseline) State is checkpointed to disk per source so the script is fully -resumable across short shell budgets — re-invoke until ``all phases +resumable across short shell budgets, re-invoke until ``all phases complete`` is reported. Usage: @@ -112,9 +112,13 @@ def _save_state(state: Dict[str, Any]) -> None: def _build_count_pq(source: str, principal: str, action: str, count_alias: str) -> str: - """Per-day count PQ — produces (action, principal, count_alias) rows over 1 day.""" + """Per-day count PQ: produces (action, principal, count_alias) rows over 1 day.""" + # PQ string literals escape a single quote by doubling it; unescaped + # quotes in a source name would break the filter (same pattern as + # inspect_source.py). + safe = source.replace("'", "''") return ( - f"dataSource.name = '{source}' (tag != 'logVolume' OR !(tag = *))\n" + f"dataSource.name = '{safe}' (tag != 'logVolume' OR !(tag = *))\n" f"| filter {principal} = * AND {action} = *\n" f"| group {count_alias} = count() by action_v = {action}, principal_v = {principal}\n" "| sort -" + count_alias + "\n" @@ -213,7 +217,9 @@ def _merge_pooled(state: Dict[str, Any]) -> Dict[str, Any]: n_sampled += 1 for r in res["rows"]: key = (r.get("action_v"), r.get("principal_v")) - per_pair_counts[key].append(r["day_count"]) + # LRQ can return null counts; coerce at ingestion so stats and + # sorts never see None. + per_pair_counts[key].append(int(r.get("day_count") or 0)) baseline = {} for key, counts in per_pair_counts.items(): @@ -258,7 +264,8 @@ def _merge_dow(state: Dict[str, Any]) -> Tuple[Dict[Tuple[str, str, int], Dict[s sampled_dows[dow] += 1 for r in res["rows"]: key = (r.get("action_v"), r.get("principal_v")) - per_pair_dow[key][dow].append(r["day_count"]) + # LRQ can return null counts; coerce at ingestion. + per_pair_dow[key][dow].append(int(r.get("day_count") or 0)) # Pad inactive sampled days with zeros so the DoW baseline reflects the # true rate (active 4-of-4 Sundays vs 2-of-4 are not the same). @@ -267,6 +274,10 @@ def _merge_dow(state: Dict[str, Any]) -> Tuple[Dict[Tuple[str, str, int], Dict[s for dow, counts in by_dow.items(): n_active = len(counts) n_sampled = sampled_dows[dow] + # Defensive: a dow with zero sampled phases carries no baseline + # signal; skip instead of feeding empty/zero-length stats. + if n_sampled <= 0: + continue full = counts + [0] * max(0, n_sampled - n_active) if len(full) < 2: continue @@ -303,12 +314,14 @@ def _score_z(live_c: float, b: Dict[str, Any]) -> float: def _detect_pooled(state: Dict[str, Any], baseline: Dict, z_threshold: float) -> Dict[str, Any]: live = state["phase_results"].get("live", {"rows": []})["rows"] - live_lookup = {(r.get("action_v"), r.get("principal_v")): r["live_count"] for r in live} + # LRQ can return null counts; coerce at ingestion. + live_lookup = {(r.get("action_v"), r.get("principal_v")): int(r.get("live_count") or 0) + for r in live} matched, silent, new_b = [], [], [] for r in live: key = (r.get("action_v"), r.get("principal_v")) - c = r["live_count"] + c = live_lookup[key] if key not in baseline: new_b.append({"action": key[0], "principal": key[1], "live_count": c}) continue @@ -354,8 +367,11 @@ def _detect_dow(state: Dict[str, Any], baseline_dow: Dict, sampled_dows: Dict[in z_threshold: float) -> Dict[str, Any]: live_phase = next(p for p in state["phases"] if p["label"] == "live") live_dow = live_phase["dow"] - live_rows = state["phase_results"]["live"]["rows"] - live_lookup = {(r.get("action_v"), r.get("principal_v")): r["live_count"] for r in live_rows} + # Guard the missing-live-phase case (mirrors _detect_pooled), and coerce + # null counts at ingestion. + live_rows = state["phase_results"].get("live", {"rows": []})["rows"] + live_lookup = {(r.get("action_v"), r.get("principal_v")): int(r.get("live_count") or 0) + for r in live_rows} pair_keys = set() for k in baseline_dow.keys(): @@ -369,7 +385,7 @@ def _detect_dow(state: Dict[str, Any], baseline_dow: Dict, sampled_dows: Dict[in live_c = live_lookup.get((action_v, principal_v), 0) if dow_key not in baseline_dow: - # Pair has no baseline on this DoW — either always silent here, or first-time + # Pair has no baseline on this DoW: either always silent here, or first-time if live_c > 0: new_b.append({"action": action_v, "principal": principal_v, "live_count": live_c}) continue @@ -404,7 +420,7 @@ def _print_report(state: Dict[str, Any], detection: Dict[str, Any], z_threshold: src = state["source"] bar = "=" * 100 print(f"\n{bar}") - print(f"BASELINE + ANOMALY DETECTION — {src}") + print(f"BASELINE + ANOMALY DETECTION: {src}") print(f" principal={state['principal']} action={state['action']}") print(f" baseline window={state['days']}d strategy={state['stratify']} z_threshold={z_threshold}") if state["stratify"] == "dow": @@ -465,7 +481,7 @@ def setup(client: Any, source: str, days: int, principal: Optional[str], action = action or auto_action if not principal or not action: raise RuntimeError( - f"could not determine principal/action for {source} — pass --principal and --action" + f"could not determine principal/action for {source}, pass --principal and --action" ) print(f"[{source}] principal={principal} action={action}", flush=True) return _init_state(source, days, principal, action, stratify) @@ -558,7 +574,7 @@ def main() -> int: help="Baseline strategy: pooled (one bucket) or dow (one bucket per day-of-week)") p.add_argument("--z", type=float, default=2.0, help="Z-score threshold for anomaly (default 2.0)") p.add_argument("--max-workers", type=int, default=3, - help="Parallel LRQ slices per invocation (default 3 — per-user 3 rps cap)") + help="Parallel LRQ slices per invocation (default 3, per-user 3 rps cap)") p.add_argument("command", nargs="?", default="run", help="run | reset | report (default run)") args = p.parse_args() @@ -582,7 +598,7 @@ def main() -> int: elif args.command == "run": # If user changed flags, warn but use saved state if state.get("days") != args.days or state.get("stratify") != args.stratify: - print(f"[{src}] NOTE: saved state uses days={state['days']} stratify={state['stratify']} (passed flags ignored — use 'reset' to start over)") + print(f"[{src}] NOTE: saved state uses days={state['days']} stratify={state['stratify']} (passed flags ignored; use 'reset' to start over)") if args.command == "report": report(state, args.z) diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/bootstrap_creds.sh b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/bootstrap_creds.sh index 177f42d..357f027 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/bootstrap_creds.sh +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/bootstrap_creds.sh @@ -9,10 +9,11 @@ # 4. $COWORK_WORKSPACE/.claude/sentinelone/credentials.json (legacy) # 5. $HOME/mnt//.sentinelone/credentials.json (legacy) # 6. $HOME/mnt//.claude/sentinelone/credentials.json (legacy) +# 7. $HOME/.config/sentinelone/credentials.json (host terminal fallback) # # Destination: $HOME/.claude/sentinelone/credentials.json # In the Cowork bash sandbox this resolves to -# /sessions//.claude/sentinelone/credentials.json — sandbox-local, +# /sessions//.claude/sentinelone/credentials.json, sandbox-local, # ephemeral per session, readable by every script and CLI in the skill. # # Idempotent. Safe to run before every workflow. Returns the path it used. @@ -31,8 +32,8 @@ DEST_DIR="$(dirname "$DEST")" # If the destination already exists and is non-empty, no-op. This makes # repeated calls cheap and avoids overwriting a user-managed file. if [ -s "$DEST" ]; then - echo "$DEST" - exit 0 + echo "$DEST" + exit 0 fi mkdir -p "$DEST_DIR" @@ -43,38 +44,43 @@ chmod 700 "$DEST_DIR" 2>/dev/null || true shopt -s nullglob 2>/dev/null || true candidates=() -# New (recommended) — credentials.json directly in the project folder. +# New (recommended): credentials.json directly in the project folder. if [ -n "${COWORK_WORKSPACE:-}" ]; then - candidates+=("$COWORK_WORKSPACE/credentials.json") + candidates+=("$COWORK_WORKSPACE/credentials.json") fi for mnt in "$HOME"/mnt/*/; do - base="$(basename "$mnt")" - case "$base" in - .claude|.auto-memory|.remote-plugins|outputs|uploads) continue ;; - esac - candidates+=("${mnt}credentials.json") + base="$(basename "$mnt")" + case "$base" in + .claude | .auto-memory | .remote-plugins | outputs | uploads) continue ;; + esac + candidates+=("${mnt}credentials.json") done -# Legacy layouts — kept for backwards compatibility. +# Legacy layouts: kept for backwards compatibility. if [ -n "${COWORK_WORKSPACE:-}" ]; then - candidates+=("$COWORK_WORKSPACE/.sentinelone/credentials.json") - candidates+=("$COWORK_WORKSPACE/.claude/sentinelone/credentials.json") + candidates+=("$COWORK_WORKSPACE/.sentinelone/credentials.json") + candidates+=("$COWORK_WORKSPACE/.claude/sentinelone/credentials.json") fi for mnt in "$HOME"/mnt/*/; do - base="$(basename "$mnt")" - case "$base" in - .claude|.auto-memory|.remote-plugins|outputs|uploads) continue ;; - esac - candidates+=("${mnt%/}/.sentinelone/credentials.json") - candidates+=("${mnt%/}/.claude/sentinelone/credentials.json") + base="$(basename "$mnt")" + case "$base" in + .claude | .auto-memory | .remote-plugins | outputs | uploads) continue ;; + esac + candidates+=("${mnt%/}/.sentinelone/credentials.json") + candidates+=("${mnt%/}/.claude/sentinelone/credentials.json") done +# Host terminal fallback (Claude Code CLI without Cowork), mirroring the +# plugin SessionStart hook's search order. +candidates+=("$HOME/.config/sentinelone/credentials.json") -for src in "${candidates[@]}"; do - if [ -f "$src" ]; then - cp "$src" "$DEST" - chmod 600 "$DEST" 2>/dev/null || true - echo "$DEST" - exit 0 - fi +# ${candidates[@]+...} guards the bash 3.2 "unbound variable" trap under +# set -u when the array is empty. +for src in ${candidates[@]+"${candidates[@]}"}; do + if [ -f "$src" ]; then + cp "$src" "$DEST" + chmod 600 "$DEST" 2>/dev/null || true + echo "$DEST" + exit 0 + fi done echo "bootstrap_creds: no credentials.json found." >&2 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/build_source_report.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/build_source_report.py index 7384400..7bbc744 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/build_source_report.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/build_source_report.py @@ -127,7 +127,10 @@ def probe_dimensions(client: S1Client, source: str, Probes run in parallel (3-wide) over a 1h window. 1h is enough to decide presence, and a short window keeps the probe phase cheap. """ - BASE = f"dataSource.name = '{source}' (tag != 'logVolume' OR !(tag = *))" + # Escape single quotes for the PQ string literal (same pattern as + # inspect_source.py). + safe = source.replace("'", "''") + BASE = f"dataSource.name = '{safe}' (tag != 'logVolume' OR !(tag = *))" probes = { "user": BASE + " | group n=count() by user | sort -n | limit 3", "action": BASE + " | group n=count() by action | sort -n | limit 6", @@ -199,7 +202,9 @@ def build_jobs(source: str, dims: Dict[str, bool]) -> List[Tuple[str, str]]: by_user / by_user_blocks / by_user_bypass -- the renderer derives those by filtering and summing. """ - BASE = f"dataSource.name = '{source}' (tag != 'logVolume' OR !(tag = *))" + # Escape single quotes for the PQ string literal. + safe = source.replace("'", "''") + BASE = f"dataSource.name = '{safe}' (tag != 'logVolume' OR !(tag = *))" jobs: List[Tuple[str, str]] = [] if dims.get("action"): @@ -382,6 +387,8 @@ def collect_all(client: S1Client, source: str, days: float, end = datetime.now(timezone.utc).replace(microsecond=0) start = end - timedelta(hours=hours) + # Escape single quotes for the PQ string literal. + safe = source.replace("'", "''") out: Dict[str, Any] = { "source": source, "slug": slugify(source), @@ -390,7 +397,7 @@ def collect_all(client: S1Client, source: str, days: float, "collected_at": end.isoformat(), "window_start": start.isoformat(), "window_end": end.isoformat(), - "base_filter": f"dataSource.name = '{source}' " + "base_filter": f"dataSource.name = '{safe}' " "(tag != 'logVolume' OR !(tag = *))", "dims": dims, "strategy": strategy, @@ -405,7 +412,7 @@ def collect_all(client: S1Client, source: str, days: float, # (~5-15s each) fill the third pool slot while the aggregates run, # so they're effectively free. Pool cap = MAX_WORKERS per the 3 rps # user-token cap. - BASE = f"dataSource.name = '{source}' (tag != 'logVolume' OR !(tag = *))" + BASE = f"dataSource.name = '{safe}' (tag != 'logVolume' OR !(tag = *))" sec_dim = "action" if dims.get("action") else ( "event.type" if dims.get("event_type") else None) diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_purple.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_purple.py index 8bf0baf..dec73c6 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_purple.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_purple.py @@ -71,7 +71,7 @@ def main() -> int: is_async=args.async_mode, ) except PurpleAIError as e: - # Entitlement/permission/GraphQL — 200-response errors. + # Entitlement/permission/GraphQL: 200-response errors. print(f"Purple AI error: {e}", file=sys.stderr) if e.error_type: print(f" errorType: {e.error_type}", file=sys.stderr) diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_unified_alerts.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_unified_alerts.py index 72f2679..93176a3 100755 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_unified_alerts.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/call_unified_alerts.py @@ -16,12 +16,12 @@ set-status Convenience: status update on one or more alert ids. set-verdict Convenience: analyst-verdict update on alert ids. assign Convenience: assign alerts to a user. - group-by alertGroupByCount — faceted counts (deprecated in API). - groups alertGroups — group-by listing, paginated. - facets alertFiltersCount — values + counts for a facet. - autocomplete autocompleteOptions — value suggestions for a field. - columns alertColumnMetadata — queryable field list. - availability alertsViewDataAvailability — which views have data. + group-by alertGroupByCount, faceted counts (deprecated in API). + groups alertGroups, group-by listing, paginated. + facets alertFiltersCount, values + counts for a facet. + autocomplete autocompleteOptions, value suggestions for a field. + columns alertColumnMetadata, queryable field list. + availability alertsViewDataAvailability, which views have data. ai aiInvestigations for one or more alert ids. mitigations alertMitigationActionResults for one alert. csv-export Bulk alerts CSV export. @@ -504,7 +504,7 @@ def add_scope_flags(sp): sp.set_defaults(func=cmd_groups) # facets - sp = sub.add_parser("facets", help="alertFiltersCount — facet counts") + sp = sub.add_parser("facets", help="alertFiltersCount, facet counts") sp.add_argument("field_id", nargs="+") sp.add_argument("--filter", action="append", default=[]) sp.add_argument("--json", action="store_true") diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/pq.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/pq.py index bd25f99..f4b6ba8 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/pq.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/pq.py @@ -171,7 +171,9 @@ def _request_with_retry( retry_after = resp.headers.get("Retry-After") if retry_after: try: - sleep_s = float(retry_after) + # Cap honored Retry-After at 30s so a hostile or buggy + # header cannot stall the retry loop for minutes. + sleep_s = min(float(retry_after), 30.0) except ValueError: sleep_s = backoff else: diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/purple_ai.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/purple_ai.py index a1c5055..53875ae 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/purple_ai.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/purple_ai.py @@ -6,12 +6,12 @@ ask Purple AI in natural language and get a structured response back (summary text + generated PowerQuery). -Auth is identical to the REST API — `Authorization: ApiToken ` — +Auth is identical to the REST API, `Authorization: ApiToken `, so this reuses S1Client for transport and doesn't add any new credential requirements. Purple AI's domain boundary (important): - It answers questions about SDL telemetry — process/network/file + It answers questions about SDL telemetry: process/network/file events, indicators, ingested third-party logs. It does NOT answer questions about console entities like alerts, threats, agents, sites, or policies. Those are REST resources; route them to the @@ -20,9 +20,9 @@ and a scope-refusal message in result.message. Typical failure modes (all return HTTP 200): - * Tenant lacks Purple AI entitlement — status.error.errorType is set. - * Token's role lacks Purple AI permission — same surface as above. - * Malformed GraphQL body — top-level `errors` array is populated. + * Tenant lacks Purple AI entitlement: status.error.errorType is set. + * Token's role lacks Purple AI permission: same surface as above. + * Malformed GraphQL body: top-level `errors` array is populated. The wrapper raises PurpleAIError on any of the above so callers don't silently receive empty results. @@ -147,7 +147,7 @@ def purple_query( Args: client: An S1Client (transport + auth). user_input: The natural-language question. - view_selector: Data domain hint — one of VIEW_SELECTORS. Default EDR. + view_selector: Data domain hint, one of VIEW_SELECTORS. Default EDR. hours: Look-back window from now. Ignored if start_ms/end_ms given. start_ms, end_ms: Explicit time window in epoch milliseconds. is_async: If True, Purple AI may return before generation completes @@ -201,7 +201,7 @@ def purple_query( # so keeping the client's 429/5xx retry (now GET-only by default) is safe. resp = client.post("/web/api/v2.1/graphql", json_body=body, allow_retry=True) - # Top-level GraphQL errors — malformed query, auth issues that bubbled up + # Top-level GraphQL errors: malformed query, auth issues that bubbled up # as a GraphQL error rather than HTTP 401. if resp.get("errors"): first = resp["errors"][0] if resp["errors"] else {} @@ -217,7 +217,7 @@ def purple_query( state = status.get("state") err = status.get("error") - # Status-level error — typically entitlement or permission. + # Status-level error: typically entitlement or permission. if err: raise PurpleAIError( f"Purple AI returned an error ({err.get('errorType')}): " diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/s1_client.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/s1_client.py index ebec63f..16d4e4c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/s1_client.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/s1_client.py @@ -54,7 +54,7 @@ Performance: - HTTP connection pooling via sized HTTPAdapter (pool_maxsize=32 default). - Re-uses sockets across sequential and parallel calls — big win vs. the + Re-uses sockets across sequential and parallel calls, big win vs. the default 10 when fanning out. - Retries on 429/5xx with exponential backoff, honoring Retry-After. - Optional short-TTL response cache for rarely-changing read endpoints @@ -115,7 +115,7 @@ # # GET /cloud-detection/rules silently drops queryType="scheduled" PowerQuery # rules unless isLegacy=false is on the query string. There is no error and -# no warning — the response just lies by omission. This is the #1 way +# no warning: the response just lies by omission. This is the #1 way # "list my scheduled detections" returns 0 when scheduled rules actually # exist. Auto-inject the parameter so callers cannot forget. Honors an # explicit override if the caller already set isLegacy in params. @@ -167,7 +167,7 @@ def _walk_up_for_workspace_creds() -> Optional[Path]: 1. $COWORK_WORKSPACE env var. If set, look for $COWORK_WORKSPACE/credentials.json (the recommended convention). - Falls through to walk-up if not found, rather than failing — + Falls through to walk-up if not found, rather than failing, defensive against typos. 2. Walk up from cwd looking for credentials.json. Catches the common @@ -292,7 +292,7 @@ def _apply_s1_keys(creds: Dict[str, Any], cfg: Dict[str, Any], source: str) -> N # that still read cfg["uam_alert_interface_url"] keep working. cfg["uam_alert_interface_url"] = hec_url -# Endpoints where caching is safe — they change rarely during a session. +# Endpoints where caching is safe: they change rarely during a session. # Prefix match, base_url stripped. _CACHEABLE_PATHS = ( "/web/api/v2.1/accounts", @@ -336,7 +336,7 @@ def _load_config() -> Dict[str, Any]: Priority order (highest wins, applied last): 7. environment variables - 6. workspace credentials.json — resolved by + 6. workspace credentials.json, resolved by _walk_up_for_workspace_creds() in this order: a. $COWORK_WORKSPACE/credentials.json (recommended) b. cwd walk-up for credentials.json @@ -439,7 +439,7 @@ def __init__( endpoints that reject multi-scope tokens (e.g. /threat-intelligence/iocs). Falls back to `api_token` if `api_token_single_scope` - is not configured — callers that strictly + is not configured, callers that strictly need a single-scope token should check the resulting `self.token_kind_effective`. @@ -484,7 +484,7 @@ def __init__( "folder Cowork can access) or export S1_CONSOLE_API_TOKEN." ) - # Session with pooled connection adapter — allows many parallel GETs + # Session with pooled connection adapter: allows many parallel GETs # to share sockets to the same host without tearing them down. self.session = requests.Session() adapter = HTTPAdapter( @@ -501,7 +501,7 @@ def __init__( "User-Agent": "s1-mgmt-api-skill/1.1 (+claude)", }) - # response cache — (path, sorted-params-tuple) -> (expires_ts, body) + # response cache: (path, sorted-params-tuple) -> (expires_ts, body) self._cache: Dict[Tuple[str, Tuple], Tuple[float, Dict[str, Any]]] = {} self._cache_lock = threading.Lock() @@ -592,7 +592,9 @@ def request( wait = min(2 ** attempt, 30) retry_after = resp.headers.get("Retry-After") if retry_after and retry_after.isdigit(): - wait = int(retry_after) + # Cap honored Retry-After at 30s so a hostile or buggy + # header cannot stall the client for minutes. + wait = min(int(retry_after), 30) time.sleep(wait) continue # error path @@ -748,7 +750,7 @@ def cache_clear(self) -> None: if __name__ == "__main__": - # Smoke test — lists accounts, then fans out four parallel GETs + # Smoke test: lists accounts, then fans out four parallel GETs c = S1Client(cache_ttl=60) r = c.get("/web/api/v2.1/accounts", params={"limit": 5}) print("accounts page:", len(r.get("data", []) or [])) diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/search_endpoints.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/search_endpoints.py index 9f40a91..4955e24 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/search_endpoints.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/search_endpoints.py @@ -55,7 +55,7 @@ # S1-specific synonym expansion: users say "isolate" but S1 calls it # "disconnect"; "endpoint" and "agent" are used interchangeably; etc. -# These are additive — both original and synonym become search tokens. +# These are additive: both original and synonym become search tokens. SYNONYMS = { "isolate": ["disconnect", "quarantine"], "deisolate": ["reconnect"], @@ -95,7 +95,7 @@ def _score(entry: Dict[str, Any], tokens: List[str]) -> float: score = 0.0 for t in tokens: - # path segment match (exact) — most valuable + # path segment match (exact): most valuable path_segs = re.split(r"[/{}]", hay_path) if t in path_segs: score += 10.0 @@ -109,7 +109,7 @@ def _score(entry: Dict[str, Any], tokens: List[str]) -> float: score += 2.5 if t in hay_tag: score += 4.0 - # verb/method intent — boost endpoints matching the implied method + # verb/method intent: boost endpoints matching the implied method expected = VERB_MAP.get(t) if expected and entry["method"] == expected: score += 5.0 @@ -177,12 +177,12 @@ def matches(e): total = len(hits) shown = hits[: args.limit] - print(f"{total} match(es)" + (f" — showing top {len(shown)}" if total > len(shown) else "")) + print(f"{total} match(es)" + (f", showing top {len(shown)}" if total > len(shown) else "")) if works is not None: print("(filtered to endpoints confirmed working on this tenant)") for e in shown: sc = f"{_score(e, tokens):5.1f}" if tokens else " " - print(f" {sc} {e['method']:6} {e['path']:60} [{e['tag']}] — {e['summary']}") + print(f" {sc} {e['method']:6} {e['path']:60} [{e['tag']}]: {e['summary']}") if __name__ == "__main__": diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/smoke_test_queries.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/smoke_test_queries.py index b945348..b2baf36 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/smoke_test_queries.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/smoke_test_queries.py @@ -103,7 +103,7 @@ "firewall_rule_category": [("__STATIC__", "endpoint", None)], } -# Path params we can't resolve reliably — endpoints using these are skipped +# Path params we can't resolve reliably: endpoints using these are skipped # with "no_id_available" rather than marked failing. UNRESOLVABLE = { "application_id", "applicationId", "applicationCatalogId", @@ -117,7 +117,7 @@ # --------------------------------------------------------------- response hints def _shape(body: Any) -> Dict[str, Any]: - """Small fingerprint of the response — what keys, how many items.""" + """Small fingerprint of the response: what keys, how many items.""" if not isinstance(body, dict): return {"type": type(body).__name__} out: Dict[str, Any] = {"keys": sorted(list(body.keys()))[:15]} @@ -204,7 +204,7 @@ def substitute(self, path: str) -> Tuple[Optional[str], List[str]]: "/whitening-options", ) _SLOW_SUBSTRINGS = ( - "/dv/events", # DV event fetch — paginated bulk reads + "/dv/events", # DV event fetch, paginated bulk reads "/dv/fetch-file", "/remote-ops/forensics/collection-file-url", ) @@ -629,7 +629,7 @@ def write_markdown(report: Dict[str, Any], out_path: Path): skipped = report["skipped"] lines: List[str] = [] - lines.append("# Tenant capabilities — auto-generated") + lines.append("# Tenant capabilities: auto-generated") lines.append("") lines.append(f"- Generated at: {s['generated_at']}") lines.append(f"- Tenant: `{s['base_url']}`") @@ -685,7 +685,7 @@ def write_markdown(report: Dict[str, Any], out_path: Path): lines.append("") if skipped: - lines.append("## Skipped — no ID available on this tenant") + lines.append("## Skipped: no ID available on this tenant") lines.append("") lines.append("| Path | Tag | Missing |") lines.append("|---|---|---|") @@ -718,7 +718,7 @@ def main(): index = json.loads(INDEX_PATH.read_text()) - # Short timeout + no retries for the smoke test — we want fast signal, + # Short timeout + no retries for the smoke test: we want fast signal, # not persistence. A slow endpoint is still signal ("this one's slow # on this tenant"), not a reason to block the whole sweep. client = S1Client(cache_ttl=120, timeout=args.timeout) @@ -729,7 +729,7 @@ def main(): "threat_id", "service_user_id"): resolver.resolve(name) - # Resolve an application_id (not in PARAM_RESOLVERS — it's an extra + # Resolve an application_id (not in PARAM_RESOLVERS: it's an extra # needed by /application-management/*). Best-effort. app_id: Optional[str] = None try: diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/uam_alert_interface.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/uam_alert_interface.py index 8fd0603..f35583c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/uam_alert_interface.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/uam_alert_interface.py @@ -7,7 +7,7 @@ and the UAM GraphQL query layer (both of which are READ/mutate on pre-existing state). -Host (region-specific, e.g. US1 shown — see https://community.sentinelone.com/s/article/000004961 for your region): +Host (region-specific, e.g. US1 shown; see https://community.sentinelone.com/s/article/000004961 for your region): https://ingest.us1.sentinelone.net @@ -26,7 +26,7 @@ Auth token ---------- The interface accepts the same service-user JWT used for the Mgmt -Console API (loaded from credentials.json via S1Client.api_token — +Console API (loaded from credentials.json via S1Client.api_token, canonical key `S1_CONSOLE_API_TOKEN`). `ApiToken ` is rejected with HTTP 401 `{"details":"Unsupported auth type: ApiToken"}`, so callers MUST switch diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/unified_alerts.py b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/unified_alerts.py index 419e279..13301d5 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/unified_alerts.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/scripts/unified_alerts.py @@ -7,7 +7,7 @@ skill can list/filter/mutate alerts without each caller having to memorise GraphQL and the UAM schema's sharp edges. -Auth is identical to the REST API — `Authorization: ApiToken ` — +Auth is identical to the REST API, `Authorization: ApiToken `, so this reuses S1Client for transport, same as `purple_ai.py`. Schema quirks this wrapper hides (learned from discovery): @@ -20,25 +20,25 @@ * `alertHistory`, `alertTimeline`, `alertGroups`, `alerts` use a connection pattern with `edges { node { ... } }`, `totalCount`, `pageInfo { hasNextPage endCursor }`. - * `AlertHistoryItem` and `AlertTimelineItem` have no `id` — use + * `AlertHistoryItem` and `AlertTimelineItem` have no `id`: use `createdAt`, `eventType`, `eventText` instead. * `AlertGroup` fields are `value`, `label`, `count` (not `groupValue`). - * `AutocompleteOption` has `{value, count}` only — no `label`. + * `AutocompleteOption` has `{value, count}` only: no `label`. Autocomplete also rejects fields that don't support it (e.g. `externalId`) and requires `searchText` length ≥ 3. * `alertsViewDataAvailability` needs nested subselection: `{ viewDataAvailability { viewType dataAvailable } }`. * `CsvResponse` needs `{ data }` subselection. - * `aiInvestigations` returns `[AiInvestigation!]` directly — no wrapper. + * `aiInvestigations` returns `[AiInvestigation!]` directly: no wrapper. * `alertAvailableActions.errors` is `[ActionsError!]` and needs `{ errorMessage }` subselection if you ask for it. Mutation eventual consistency (important): - `updateAlertNote` and `deleteAlertNote` fail for roughly 30–90 seconds + `updateAlertNote` and `deleteAlertNote` fail for roughly 30-90 seconds after a note is freshly created with "Alert Note with ID ... does not have mgmt_note_id set, unable to [edit|delete], try again later!" - This is a backend propagation window — the UAM-facing ID is minted + This is a backend propagation window; the UAM-facing ID is minted before the management-console-side mgmt_note_id. Callers that chain create→edit or create→delete should retry with backoff. The wrapper's `update_alert_note` and `delete_alert_note` expose a `wait_for_ready` @@ -81,19 +81,24 @@ def _gql( variables: Optional[Dict[str, Any]] = None, *, raise_on_error: bool = True, + allow_retry: bool = False, ) -> Dict[str, Any]: """POST a GraphQL query and return the parsed response. If `raise_on_error` is True (default), non-empty `errors` turn into UAMError. Set to False if the caller wants to inspect errors itself (e.g. to tolerate the mgmt_note_id eventual-consistency window). + + `allow_retry` defaults to False so mutations are NEVER auto-retried: + a 5xx returned after the backend committed would duplicate notes or + re-fire bulk actions. Read-only query callers pass allow_retry=True + to keep the client's 429/5xx retry, which is safe for idempotent + GraphQL reads over POST. """ body: Dict[str, Any] = {"query": query} if variables: body["variables"] = variables - # allow_retry=True: GraphQL reads over POST are idempotent, so the - # client's 429/5xx retry (now GET-only by default) stays safe here. - resp = client.post(UAM_PATH, json_body=body, allow_retry=True) + resp = client.post(UAM_PATH, json_body=body, allow_retry=allow_retry) if raise_on_error and resp.get("errors"): first = resp["errors"][0].get("message", "UAM GraphQL error") raise UAMError(first, resp["errors"]) @@ -223,7 +228,7 @@ def list_alerts( }} }} """ - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return (r.get("data") or {}).get("alerts") or {} @@ -284,12 +289,12 @@ def get_alert( alert(id: $id) {{ {fields} }} }} """ - r = _gql(client, query, {"id": alert_id}) + r = _gql(client, query, {"id": alert_id}, allow_retry=True) return (r.get("data") or {}).get("alert") or {} def get_alert_with_raw_indicators(client: S1Client, alert_id: str) -> Dict[str, Any]: - """`alertWithRawIndicators` — alert plus its raw indicator payload.""" + """`alertWithRawIndicators`: alert plus its raw indicator payload.""" query = """ query ri($id: ID!) { alertWithRawIndicators(id: $id) { @@ -298,17 +303,17 @@ def get_alert_with_raw_indicators(client: S1Client, alert_id: str) -> Dict[str, } } """ - r = _gql(client, query, {"id": alert_id}) + r = _gql(client, query, {"id": alert_id}, allow_retry=True) return (r.get("data") or {}).get("alertWithRawIndicators") or {} def column_metadata(client: S1Client) -> List[Dict[str, Any]]: - """`alertColumnMetadata` — the list of queryable fields, their + """`alertColumnMetadata`: the list of queryable fields, their filterTypes, sortable/groupable flags, and allowed enum values.""" query = """ query { alertColumnMetadata { fieldId filterTypes sortable groupable enumValues } } """ - r = _gql(client, query) + r = _gql(client, query, allow_retry=True) return (r.get("data") or {}).get("alertColumnMetadata") or [] @@ -318,7 +323,7 @@ def available_actions( scope_input: Dict[str, Any], filter_input: Optional[Dict[str, Any]] = None, ) -> Dict[str, Any]: - """`alertAvailableActions` — list actions a caller can trigger. + """`alertAvailableActions`: list actions a caller can trigger. `scope_input` is required (use `scope(...)`). `filter_input` is an OrFilterSelectionInput (use `or_filter(...)`); pass None for "all @@ -333,12 +338,12 @@ def available_actions( } """ variables = {"scope": scope_input, "filter": filter_input or {"or": []}} - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return (r.get("data") or {}).get("alertAvailableActions") or {} def alert_notes(client: S1Client, alert_id: str) -> List[Dict[str, Any]]: - """`alertNotes` — list notes on an alert. Returns list of note dicts.""" + """`alertNotes`: list notes on an alert. Returns list of note dicts.""" query = """ query n($id: ID!) { alertNotes(alertId: $id) { @@ -346,14 +351,14 @@ def alert_notes(client: S1Client, alert_id: str) -> List[Dict[str, Any]]: } } """ - r = _gql(client, query, {"id": alert_id}) + r = _gql(client, query, {"id": alert_id}, allow_retry=True) return ((r.get("data") or {}).get("alertNotes") or {}).get("data") or [] def alert_history( client: S1Client, alert_id: str, *, first: int = 50, after: Optional[str] = None ) -> Dict[str, Any]: - """`alertHistory` — audit log. Connection shape.""" + """`alertHistory`: audit log. Connection shape.""" query = """ query h($id: ID!, $first: Int, $after: String) { alertHistory(alertId: $id, first: $first, after: $after) { @@ -363,14 +368,14 @@ def alert_history( } } """ - r = _gql(client, query, {"id": alert_id, "first": first, "after": after}) + r = _gql(client, query, {"id": alert_id, "first": first, "after": after}, allow_retry=True) return (r.get("data") or {}).get("alertHistory") or {} def alert_timeline( client: S1Client, alert_id: str, *, first: int = 50, after: Optional[str] = None ) -> Dict[str, Any]: - """`alertTimeline` — timeline view. Connection shape.""" + """`alertTimeline`: timeline view. Connection shape.""" query = """ query t($id: ID!, $first: Int, $after: String) { alertTimeline(alertId: $id, first: $first, after: $after) { @@ -380,12 +385,12 @@ def alert_timeline( } } """ - r = _gql(client, query, {"id": alert_id, "first": first, "after": after}) + r = _gql(client, query, {"id": alert_id, "first": first, "after": after}, allow_retry=True) return (r.get("data") or {}).get("alertTimeline") or {} def alert_mitigation_action_results(client: S1Client, alert_id: str) -> List[Dict[str, Any]]: - """`alertMitigationActionResults` — per-alert action outcomes.""" + """`alertMitigationActionResults`: per-alert action outcomes.""" query = """ query m($id: ID!) { alertMitigationActionResults(alertId: $id) { @@ -393,7 +398,7 @@ def alert_mitigation_action_results(client: S1Client, alert_id: str) -> List[Dic } } """ - r = _gql(client, query, {"id": alert_id}) + r = _gql(client, query, {"id": alert_id}, allow_retry=True) return ((r.get("data") or {}).get("alertMitigationActionResults") or {}).get("data") or [] @@ -404,7 +409,7 @@ def group_by_count( filters: Optional[List[Dict[str, Any]]] = None, limit: Optional[int] = None, ) -> List[Dict[str, Any]]: - """`alertGroupByCount` — faceted counts by one or more fields. + """`alertGroupByCount`: faceted counts by one or more fields. Note: the backend marks this as deprecated in favour of `alertGroups`, but both are still live. Use `alert_groups()` for paginated output. @@ -417,7 +422,7 @@ def group_by_count( } """ variables = {"fieldIds": field_ids, "filters": filters or [], "limit": limit} - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return ((r.get("data") or {}).get("alertGroupByCount") or {}).get("data") or [] @@ -427,7 +432,7 @@ def filters_count( *, filters: Optional[List[Dict[str, Any]]] = None, ) -> List[Dict[str, Any]]: - """`alertFiltersCount` — facet value counts (used by UI sidebars).""" + """`alertFiltersCount`: facet value counts (used by UI sidebars).""" query = """ query f($fieldIds: [String!]!, $filters: [FilterInput!]) { alertFiltersCount(fieldIds: $fieldIds, filters: $filters) { @@ -436,7 +441,7 @@ def filters_count( } """ variables = {"fieldIds": field_ids, "filters": filters or []} - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return ((r.get("data") or {}).get("alertFiltersCount") or {}).get("data") or [] @@ -448,7 +453,7 @@ def alert_groups( first: int = 20, after: Optional[str] = None, ) -> Dict[str, Any]: - """`alertGroups` — group-by listing, connection shape.""" + """`alertGroups`: group-by listing, connection shape.""" query = """ query ag($fid: String!, $filters: [FilterInput!], $first: Int, $after: String) { alertGroups(groupByFieldId: $fid, filters: $filters, first: $first, after: $after) { @@ -464,14 +469,14 @@ def alert_groups( "first": first, "after": after, } - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return (r.get("data") or {}).get("alertGroups") or {} def autocomplete( client: S1Client, field_id: str, search_text: str, *, scope_input: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: - """`autocompleteOptions` — value suggestions for a field. + """`autocompleteOptions`: value suggestions for a field. Not every field supports autocomplete (the backend will refuse with "Field doesn't support auto-complete"); `search_text` must be ≥ 3 chars. @@ -484,23 +489,23 @@ def autocomplete( } """ variables = {"fid": field_id, "q": search_text, "scope": scope_input} - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return (r.get("data") or {}).get("autocompleteOptions") or {} def view_data_availability(client: S1Client) -> List[Dict[str, Any]]: - """`alertsViewDataAvailability` — which views have data.""" + """`alertsViewDataAvailability`: which views have data.""" query = """ query { alertsViewDataAvailability { viewDataAvailability { viewType dataAvailable } } } """ - r = _gql(client, query) + r = _gql(client, query, allow_retry=True) return ((r.get("data") or {}).get("alertsViewDataAvailability") or {}).get( "viewDataAvailability" ) or [] def ai_investigations(client: S1Client, alert_ids: List[str]) -> List[Dict[str, Any]]: - """`aiInvestigations` — AI investigation status for the given alerts.""" + """`aiInvestigations`: AI investigation status for the given alerts.""" query = """ query ai($ids: [ID!]!) { aiInvestigations(alertIds: $ids) { @@ -508,7 +513,7 @@ def ai_investigations(client: S1Client, alert_ids: List[str]) -> List[Dict[str, } } """ - r = _gql(client, query, {"ids": alert_ids}) + r = _gql(client, query, {"ids": alert_ids}, allow_retry=True) return (r.get("data") or {}).get("aiInvestigations") or [] @@ -518,21 +523,21 @@ def export_alerts_csv( filters: Optional[List[Dict[str, Any]]] = None, view_type: str = "ALL", ) -> str: - """`alertsCsvExport` — returns a CSV string.""" + """`alertsCsvExport`: returns a CSV string.""" query = """ query ($filters: [FilterInput!], $viewType: ViewType!) { alertsCsvExport(filters: $filters, viewType: $viewType) { data } } """ variables = {"filters": filters or [], "viewType": view_type} - r = _gql(client, query, variables) + r = _gql(client, query, variables, allow_retry=True) return ((r.get("data") or {}).get("alertsCsvExport") or {}).get("data") or "" def export_alert_history_csv(client: S1Client, alert_id: str) -> str: - """`alertHistoryCsvExport` — CSV of audit events for one alert.""" + """`alertHistoryCsvExport`: CSV of audit events for one alert.""" query = "query ($id: ID!) { alertHistoryCsvExport(alertId: $id) { data } }" - r = _gql(client, query, {"id": alert_id}) + r = _gql(client, query, {"id": alert_id}, allow_retry=True) return ((r.get("data") or {}).get("alertHistoryCsvExport") or {}).get("data") or "" @@ -646,7 +651,7 @@ def trigger_actions( filter_input: Optional[Dict[str, Any]] = None, view_type: str = "ALL", ) -> Dict[str, Any]: - """`alertTriggerActions` — run one or more actions against a filter. + """`alertTriggerActions`: run one or more actions against a filter. `actions` is a list of `TriggerActionInput` dicts. Example: [ @@ -657,12 +662,12 @@ def trigger_actions( ] `filter_input` is an OrFilterSelectionInput (use `or_filter(...)`). - Passing `None` means "all alerts in scope" — USE WITH CAUTION. + Passing `None` means "all alerts in scope"; USE WITH CAUTION. - Returns the raw union payload — inspect `__typename`: - * ActionsTriggered — `actions[]` with success/skip/failure lists. - * TriggerActionsScheduled — `bulkActionTriggerId` for long jobs. - * TriggerActionsError — `errors[]` with `errorMessage`. + Returns the raw union payload, inspect `__typename`: + * ActionsTriggered: `actions[]` with success/skip/failure lists. + * TriggerActionsScheduled: `bulkActionTriggerId` for long jobs. + * TriggerActionsError: `errors[]` with `errorMessage`. """ query = """ mutation trigger( @@ -711,7 +716,7 @@ def set_alert_status( """Convenience wrapper: status update (+ optional note) on a specific set of alerts. Builds the or/and filter for the caller. - `status` must be a valid enum value for the alert status field — see + `status` must be a valid enum value for the alert status field, see `column_metadata()` for the enum list. Common: NEW, IN_PROGRESS, RESOLVED. """ diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/README.md b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/README.md index 73aa958..a63f89b 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/README.md +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/README.md @@ -1,4 +1,4 @@ -# API test coverage — sentinelone-mgmt-console-api +# API test coverage: sentinelone-mgmt-console-api This folder holds the **reversible lifecycle tests** that exercise the mutating endpoints exposed by the skill against a live tenant. They @@ -40,8 +40,8 @@ default). ## Tokens and scopes -Some endpoints reject **multi-scope tokens** — service-user tokens that -are assigned to more than one account simultaneously — with +Some endpoints reject **multi-scope tokens**, service-user tokens that +are assigned to more than one account simultaneously, with `HTTP 403 code 4030010 "This page doesn't support multi-scopes users yet"`. Confirmed today (2026-04-22) on `/web/api/v2.1/threat-intelligence/iocs`. @@ -54,7 +54,7 @@ Add two optional token fields to your `credentials.json` (in your Cowork project } ``` -Both are optional — supply whichever you have. Tests that need a +Both are optional, supply whichever you have. Tests that need a single-scope token (`test_ioc_lifecycle.py`, `test_alert_indicator_pivot.py`) instantiate the client with `S1Client(token_kind="single_scope")`. If only one token is configured, the client falls back to it, and the test @@ -63,7 +63,7 @@ the fallback. **Which endpoints need single-scope?** The known ones today: -- `/web/api/v2.1/threat-intelligence/iocs` — all CRUD methods +- `/web/api/v2.1/threat-intelligence/iocs`: all CRUD methods - (document further here as discovered) Per SentinelOne engineering: multi-scope support for Threat Intelligence @@ -72,7 +72,7 @@ explicit scope selection via a single-account-pinned token. --- -## 1. Full API surface — read-only smoke sweep +## 1. Full API surface: read-only smoke sweep `scripts/smoke_test_queries.py` enumerates every `GET` in the Swagger + a hand-curated allow-list of read-only POSTs, calls them, and records the @@ -88,8 +88,8 @@ python scripts/smoke_test_queries.py --batch-deadline 45 # per-batch Outputs: -- `references/tenant_capabilities.json` — machine-readable per-call record -- `references/tenant_capabilities.md` — human-readable status rollup +- `references/tenant_capabilities.json`: machine-readable per-call record +- `references/tenant_capabilities.md`: human-readable status rollup Performance: the default sweep (`/export` and `/download` excluded) returns in **~60 seconds** for 300+ endpoints on the reference Purple tenant. @@ -98,7 +98,7 @@ because some XDR export endpoints stream large payloads. --- -## 2. Threat Intelligence IOC lifecycle — `test_ioc_lifecycle.py` +## 2. Threat Intelligence IOC lifecycle: `test_ioc_lifecycle.py` Proves the full IOC workflow end-to-end, reversibly: @@ -119,7 +119,7 @@ derived hashes that never match real malware. --- -## 3. Alerts dual-API round-trip — `test_alerts_dual_api.py` +## 3. Alerts dual-API round-trip: `test_alerts_dual_api.py` Demonstrates the alert-API story end-to-end: **GraphQL UAM is PRIMARY**, REST `/cloud-detection/alerts` is **SECONDARY**, parallel surfaces with @@ -132,7 +132,7 @@ different ID formats. 4. POST /web/api/v2.1/unifiedalerts/graphql (alertNotes verify) 5. GET /web/api/v2.1/cloud-detection/alerts?limit=3 (REST surface read) 6. POST /web/api/v2.1/unifiedalerts/graphql (deleteAlertNote w/ mgmt_note_id retry) -7. POST /web/api/v2.1/unifiedalerts/graphql (alertNotes verify — removed) +7. POST /web/api/v2.1/unifiedalerts/graphql (alertNotes verify, removed) ``` Why there is no `create alert` test: SentinelOne does **not** expose a @@ -142,20 +142,20 @@ engines. To prove the create/destroy pattern on the detection side, see --- -## 4. Saved-filter lifecycle — `test_saved_filter_lifecycle.py` +## 4. Saved-filter lifecycle: `test_saved_filter_lifecycle.py` Reversible CREATE → LIST → UPDATE → DELETE → VERIFY against `/web/api/v2.1/filters`. A saved filter is a personal saved-search definition: zero protection impact, zero detection impact, invisible to other users. -**Permission note:** token must have "Filters — create / update / delete" +**Permission note:** token must have "Filters, create / update / delete" scopes. On read-only pre-sales tokens CREATE returns 403 and the test -aborts cleanly with a clear message — expected behaviour, not a bug. +aborts cleanly with a clear message, expected behaviour, not a bug. --- -## 5. Custom Detection Rule lifecycle — `test_custom_rule_lifecycle.py` +## 5. Custom Detection Rule lifecycle: `test_custom_rule_lifecycle.py` CREATE → LIST → UPDATE → DELETE → VERIFY on `/web/api/v2.1/cloud-detection/rules`. @@ -170,7 +170,7 @@ DELETE DELETE /web/api/v2.1/cloud-detection/rules body.filter: {accountIds, id VERIFY GET /web/api/v2.1/cloud-detection/rules?name__contains= ``` -The rule is created with `status: "Disabled"` — the backend represents +The rule is created with `status: "Disabled"`, the backend represents this as `status: "Draft"` in the response (a never-activated rule). A disabled rule never evaluates against telemetry, so zero blast radius: no alerts generated, no SOC noise. Belt-and-braces: the s1ql body uses a @@ -178,12 +178,12 @@ deliberately non-matching process name (`zzz-smoke-test-does-not-exist.exe`). Tenant-scope filter (`filter={}`) is rejected on multi-account tokens with -`"Filter args is not compatible with user scope"` — the test scopes to +`"Filter args is not compatible with user scope"`, the test scopes to the first visible account instead. --- -## 6. Alert status + verdict round-trip — `test_alert_mutation_lifecycle.py` +## 6. Alert status + verdict round-trip: `test_alert_mutation_lifecycle.py` Proves the UAM bulk-ops mutation pattern against an existing alert, with full restoration: @@ -194,23 +194,23 @@ with full restoration: 3. restore status to original → wait_for_field 4. set_analyst_verdict (UNDEFINED ↔ TRUE_POSITIVE_BENIGN) → wait_for_field 5. restore verdict to original → wait_for_field -6. alertHistory audit — verify transitions logged +6. alertHistory audit, verify transitions logged ``` Why operate on an existing alert? SentinelOne doesn't expose -`createAlert` — alerts are engine byproducts. For reversible *create* +`createAlert`, alerts are engine byproducts. For reversible *create* coverage on the detection side see test #5 above (rules), #7 below (indicators pinned to alerts via IOCs). **Blast radius:** on a clean run the alert ends in its starting state. -The alertHistory audit log *does* record the transitions — that's +The alertHistory audit log *does* record the transitions; that's working-as-intended, every status change is auditable by design. Use `--keep` to leave mutations applied for UI inspection, `--alert-id ` to target a specific alert. --- -## 7. Scheduled default-report lifecycle — `test_scheduled_report_lifecycle.py` +## 7. Scheduled default-report lifecycle: `test_scheduled_report_lifecycle.py` CREATE → LIST → UPDATE → DELETE → VERIFY against `/web/api/v2.1/report-tasks`. @@ -229,11 +229,11 @@ VERIFY GET /web/api/v2.1/report-tasks?name= (expect 0) Sharp edges baked into the test: -- CREATE response is `{data: {success: true}}` — **no id returned.** Task +- CREATE response is `{data: {success: true}}`: **no id returned.** Task is retrieved by name in the LIST step. - DELETE uses `POST /reports/delete-tasks` (not DELETE verb), wrapper is `filter.ids` (not `data.ids`). -- `fromDate`/`toDate` are required even for `scheduleType=manually` — they +- `fromDate`/`toDate` are required even for `scheduleType=manually`: they define the report's content window, not the schedule. - `siteIds` live in the top-level `filter`, NOT inside `data`. - PUT only accepts `name` / `frequency` / `day` / `recipients` / @@ -245,7 +245,7 @@ during the test window. --- -## 8. Alert → Indicator pivot — `test_alert_indicator_pivot.py` +## 8. Alert → Indicator pivot: `test_alert_indicator_pivot.py` Exercises the SOC workflow "take an indicator observed on an alert and promote it to a tracked TI IOC": @@ -256,7 +256,7 @@ promote it to a tracked TI IOC": 3. CREATE an IOC for that hash, tagged to the alert: externalId = - description = "Pinned from alert by API test" -4. LIST /iocs?name__contains= — verify linkage via externalId +4. LIST /iocs?name__contains=, verify linkage via externalId 5. DELETE the IOC by uuid 6. VERIFY re-query returns zero ``` @@ -392,9 +392,9 @@ delta is the payload shape. --- -## 11. PowerQuery scheduled detection lifecycle — inline (2026-05-03) +## 11. PowerQuery scheduled detection lifecycle: inline (2026-05-03) -Proves the full lifecycle for `queryType=scheduled` rules (PowerQuery-based detections) on the demo site (`siteId=`). No separate test script exists yet — the lifecycle was confirmed via an inline Python session. See the schema gotchas below before writing a script. +Proves the full lifecycle for `queryType=scheduled` rules (PowerQuery-based detections) on the demo site (`siteId=`). No separate test script exists yet, the lifecycle was confirmed via an inline Python session. See the schema gotchas below before writing a script. ```text CREATE POST /web/api/v2.1/cloud-detection/rules @@ -433,35 +433,35 @@ VERIFY GET /web/api/v2.1/cloud-detection/rules?ids=...&siteIds=...&isLegacy=f **Confirmed works via lifecycle tests (reversible CRUD proven):** -- Threat Intelligence IOCs — CREATE / LIST / DELETE / VERIFY -- UAM alerts — list / detail / filter / group-by / facets / CSV export -- UAM alert notes — add / list / delete (with mgmt_note_id retry) -- UAM alert status + analystVerdict — bulk-ops filter round-trip -- REST `/cloud-detection/alerts` — read (parallel surface) -- Saved filters — CREATE / LIST / UPDATE / DELETE / VERIFY *(requires Filters scope)* -- Custom Detection Rules — CREATE (Disabled) / LIST / UPDATE / DELETE / VERIFY -- Scheduled default-report tasks — CREATE / LIST / UPDATE / DELETE / VERIFY -- Alert → IOC pinning pivot — rawIndicator read + pinned IOC CRUD +- Threat Intelligence IOCs: CREATE / LIST / DELETE / VERIFY +- UAM alerts: list / detail / filter / group-by / facets / CSV export +- UAM alert notes: add / list / delete (with mgmt_note_id retry) +- UAM alert status + analystVerdict: bulk-ops filter round-trip +- REST `/cloud-detection/alerts`: read (parallel surface) +- Saved filters: CREATE / LIST / UPDATE / DELETE / VERIFY *(requires Filters scope)* +- Custom Detection Rules: CREATE (Disabled) / LIST / UPDATE / DELETE / VERIFY +- Scheduled default-report tasks: CREATE / LIST / UPDATE / DELETE / VERIFY +- Alert → IOC pinning pivot: rawIndicator read + pinned IOC CRUD - UAM Alert Interface `/v1/indicators` + `/v1/alerts` -- push OCSF indicators + alert into UAM (single + batched 3-indicator / multi-observable across OCSF 1001/1007/4001), verify stitching, close via bulk-ops -- PowerQuery Scheduled Detections (`queryType=scheduled`) — CREATE / LIST / UPDATE / ENABLE / DISABLE / DELETE / VERIFY on demo site (2026-05-03) +- PowerQuery Scheduled Detections (`queryType=scheduled`): CREATE / LIST / UPDATE / ENABLE / DISABLE / DELETE / VERIFY on demo site (2026-05-03) **Confirmed reachable via read-only smoke sweep** (see `references/tenant_capabilities.md` for the current tenant's full rollup): -- Accounts / Sites / Groups / Users / Service Users — full read surface -- Agents — list, filters, count, passphrase, summary, tags -- Threats — list, filters, count, timeline, notes, mitigation history, summary, search-on-endpoints +- Accounts / Sites / Groups / Users / Service Users: full read surface +- Agents: list, filters, count, passphrase, summary, tags +- Threats: list, filters, count, timeline, notes, mitigation history, summary, search-on-endpoints - Activities, Firewall Control, Device Control, Exclusions (v2.0 + v2.1) - Graph Query Builder & Management (metadata, recent-queries, type-counts) -- Deep Visibility — queries, query-status, events, sessions (partial) -- Hyperautomation — workflows, executions, schedules (partial) -- Reporting — insights, reports -- RBAC — roles (read), token metadata +- Deep Visibility: queries, query-status, events, sessions (partial) +- Hyperautomation: workflows, executions, schedules (partial) +- Reporting: insights, reports +- RBAC: roles (read), token metadata - Cloud / Container / Identity / Device / Function / Data-Store inventory -- Unified Alert Management GraphQL — full query + mutation surface -- Purple AI GraphQL — `purpleLaunchQuery` (undocumented but reachable) +- Unified Alert Management GraphQL: full query + mutation surface +- Purple AI GraphQL: `purpleLaunchQuery` (undocumented but reachable) -**Untested by design — destructive or high-blast-radius:** +**Untested by design, destructive or high-blast-radius:** - Agent isolation / reconnect / uninstall / shutdown / restart - Policy create / update / delete (tenant-wide impact) @@ -478,7 +478,7 @@ VERIFY GET /web/api/v2.1/cloud-detection/rules?ids=...&siteIds=...&isLegacy=f **Untested but eligible for future reversible coverage:** -- XDR Graph Query full cycle — `test_xdr_graph_query_lifecycle.py` exists and will run once any user saves a query via the Graph Explorer UI (provides the format template). Currently skips on tenants with no saved queries. +- XDR Graph Query full cycle: `test_xdr_graph_query_lifecycle.py` exists and will run once any user saves a query via the Graph Explorer UI (provides the format template). Currently skips on tenants with no saved queries. **Finding: no separate STAR rules endpoint.** The earlier note about a `/star-rules` endpoint family was incorrect. Confirmed against the live API (2026-05) and the swagger: no such path exists (returns 404). STAR rules are `cloud-detection/rules` with `queryType=events`. They are now covered by `test_star_rule_lifecycle.py`. @@ -501,13 +501,13 @@ VERIFY GET (expect 0 hits) **Gotchas confirmed vs. live API:** -- `modeType` and `type` are required — swagger marks them optional but API rejects without them. +- `modeType` and `type` are required: swagger marks them optional but API rejects without them. - `engines` is required when `modeType=suppression`. -- `engines` and `interactionLevel` are mutually exclusive — passing both returns HTTP 400. +- `engines` and `interactionLevel` are mutually exclusive: passing both returns HTTP 400. - `pathExclusionType` valid values: `file`, `folder`, `subfolders`. `suppress` is not valid. - Path value goes in `value`, not `pathValue`. - `filter.scopeLevel` is required (despite swagger). For site scope: `scopeLevel="site"` + `scopeLevelId=` (camelCase). -- POST returns `data` as a list, not a single object — read `response["data"][0]["id"]`. +- POST returns `data` as a list, not a single object: read `response["data"][0]["id"]`. ## 13. Hyperautomation workflow import lifecycle (2026-05-03) @@ -526,8 +526,8 @@ DELETE DELETE /web/api/v2.1/hyper-automate/api/v1/workflows/{id}?accountIds=` (returns 204, soft/recoverable; validated 2026-06-13: import then publish then delete then gone-from-list). Scope with `accountIds` or `siteIds` to match where the workflow lives. The older `POST /workflows/archive` returns HTTP 500 on this tenant regardless of body shape — do not use it. The test deletes via the REST DELETE and treats a delete failure as fatal. +- Tenant had 1050+ workflows. `nextCursor` returns literal string `"null"` (truthy in Python), loop by skip/limit, not cursor. Sort by `updated_at desc` and scan first 20 to find a newly imported workflow without paginating 1050 rows. +- Delete is a REST `DELETE /api/v1/workflows/{id}?accountIds=` (returns 204, soft/recoverable; validated 2026-06-13: import then publish then delete then gone-from-list). Scope with `accountIds` or `siteIds` to match where the workflow lives. The older `POST /workflows/archive` returns HTTP 500 on this tenant regardless of body shape; do not use it. The test deletes via the REST DELETE and treats a delete failure as fatal. ## 14. Detection rule ENABLE/DISABLE lifecycle (2026-05-03) @@ -543,7 +543,7 @@ DELETE DELETE /web/api/v2.1/cloud-detection/rules **Gotchas confirmed vs. live API:** -- After ENABLE, `status` transitions through `"activating"` before settling on `"active"`. Both are valid post-enable states — accept both in assertions. +- After ENABLE, `status` transitions through `"activating"` before settling on `"active"`. Both are valid post-enable states, accept both in assertions. - Tested with both `queryType=scheduled` (requires `isLegacy=false` on GET) and `queryType=events`. Both use the same enable/disable endpoints. - Tested on demo (site ``). Scheduled rule used `runIntervalMinutes=1440` and `threshold.value=9999` so it cannot fire within the test lifetime even when briefly enabled. @@ -552,7 +552,7 @@ DELETE DELETE /web/api/v2.1/cloud-detection/rules ## 15. STAR rule lifecycle (2026-05-03) STAR rules ("streaming threat assessment rules") are product marketing terminology for -real-time event detection rules. The API has no `/star-rules` path — they are +real-time event detection rules. The API has no `/star-rules` path; they are `cloud-detection/rules` with `queryType=events`. The `/star-rules` path returns 404. ```text @@ -572,25 +572,25 @@ VERIFY GET ids= → data=[] **Gotchas confirmed vs. live API:** -- No `/star-rules` path — use `cloud-detection/rules` with `queryType=events`. -- `"activeResponse"` in the CREATE body returns HTTP 400 "Unknown field" — omit it. +- No `/star-rules` path: use `cloud-detection/rules` with `queryType=events`. +- `"activeResponse"` in the CREATE body returns HTTP 400 "Unknown field": omit it. - `queryLang` defaults to `"1.0"` for events rules; do not set it explicitly. - `treatAsThreat="UNDEFINED"` is accepted on input but stored as `null` in the response. -- GET `nameSubstring` + `queryType` together returns HTTP 500 — use only one filter per +- GET `nameSubstring` + `queryType` together returns HTTP 500: use only one filter per request, or use `ids` for precise lookup after creation. - Draft status = rule never fires even if agent telemetry matches the query. - `isLegacy=false` is NOT required for events rules (only needed for scheduled). -- DELETE body uses top-level `filter` (no `"data"` wrapper) — same as exclusion delete. +- DELETE body uses top-level `filter` (no `"data"` wrapper): same as exclusion delete. --- ## Running the full test suite ```text -# 1. Read-only sweep — ~60s default, several minutes with --include-slow. +# 1. Read-only sweep: ~60s default, several minutes with --include-slow. python scripts/smoke_test_queries.py --workers 16 --timeout 10 -# 2. Reversible lifecycles — each ~3–15s end-to-end. Full set ~1 minute. +# 2. Reversible lifecycles: each ~3-15s end-to-end. Full set ~1 minute. python tests/test_ioc_lifecycle.py # IOC CRUD (single-scope token) python tests/test_alerts_dual_api.py # UAM + REST alert surfaces python tests/test_saved_filter_lifecycle.py # skips cleanly if token lacks scope diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_indicator_pivot.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_indicator_pivot.py index 6022980..8caf1e1 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_indicator_pivot.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_indicator_pivot.py @@ -1,12 +1,12 @@ """ -Alert → Indicator pivot test — REVERSIBLE. +Alert → Indicator pivot test, REVERSIBLE. Exercises the SOC workflow "take an indicator observed on an alert and promote it to a tracked Threat-Intelligence IOC." 1. Pick most-recent alert. 2. Read alert.rawIndicators, extract a file-hash observable - (MD5/SHA256) — real detection artifact, NOT a safe placeholder. + (MD5/SHA256), real detection artifact, NOT a safe placeholder. 3. Create a TI IOC for that hash, tagged to the alert - externalId = "-" - description = "Pinned from alert by API test" @@ -14,14 +14,14 @@ - method = EQUALS / severity = 1 (low) This is the same shape a SOC analyst would use to add a block for the hash after confirming the alert is a true positive. - 4. LIST /iocs?name__contains= — verify the IOC is linked + 4. LIST /iocs?name__contains=, verify the IOC is linked back to its alert via externalId + description fields. 5. DELETE the IOC by uuid (reversible; the alert itself is untouched). 6. VERIFY re-query returns zero. If the alert's rawIndicators do not expose a usable hash, the test -falls back to a safe deterministic hash derived from the run_tag — the +falls back to a safe deterministic hash derived from the run_tag, the workflow (read alert → create IOC → link → delete) is still proven, just with a non-real-world hash. @@ -248,8 +248,8 @@ def main() -> int: return 6 _log("VERIFY ok: zero remaining") - _log("Alert→Indicator pivot: READ → CREATE → LIST+LINK → DELETE → VERIFY " - "— ALL OK") + _log("Alert→Indicator pivot: READ → CREATE → LIST+LINK → DELETE → VERIFY" + ", ALL OK") return 0 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_mutation_lifecycle.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_mutation_lifecycle.py index 6bb3988..c25511b 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_mutation_lifecycle.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alert_mutation_lifecycle.py @@ -1,5 +1,5 @@ """ -Alert status + analyst-verdict round-trip test — REVERSIBLE. +Alert status + analyst-verdict round-trip test, REVERSIBLE. Exercises the bulk-ops mutation path on an existing alert: @@ -22,10 +22,10 @@ Blast radius On most tenants the target alert's {status, analystVerdict} end the - test identical to their starting values — so no lasting SOC impact. + test identical to their starting values, so no lasting SOC impact. The alertHistory audit log *will* record the transitions, which is working-as-intended for an API test (every status change is - auditable — that's the feature). Use `--keep` to leave the mutations + auditable; that's the feature). Use `--keep` to leave the mutations in place for UI inspection. Usage @@ -52,7 +52,7 @@ STATUS_ENUM = ("NEW", "IN_PROGRESS", "RESOLVED") -# Pick two benign analyst verdicts we can ping-pong between — UNDEFINED +# Pick two benign analyst verdicts we can ping-pong between: UNDEFINED # is the "no verdict recorded" default, so we always use it as one end # of the round-trip so the restore step is effectively a no-op on a # fresh alert. @@ -73,14 +73,14 @@ def _pick_alert(client: S1Client, scope_input: Dict[str, Any], page = ua.list_alerts(client, scope_input=scope_input, first=5) edges = page.get("edges") or [] if not edges: - raise RuntimeError("No alerts visible to this token — cannot round-trip") + raise RuntimeError("No alerts visible to this token, cannot round-trip") return edges[0]["node"] def _check_triggered_ok(resp: Dict[str, Any], operation: str) -> None: """`alertTriggerActions` returns a union type. Inspect __typename and raise on TriggerActionsError. ActionsTriggered is considered success - even if the `failure` sub-list is populated — the test itself will + even if the `failure` sub-list is populated, the test itself will verify the post-condition.""" typ = resp.get("__typename") if typ == "TriggerActionsError": @@ -92,7 +92,7 @@ def _check_triggered_ok(resp: Dict[str, Any], operation: str) -> None: def _reread_alert(client: S1Client, alert_id: str) -> Dict[str, Any]: - # Short poll for propagation — mutation is async on the backend. + # Short poll for propagation: mutation is async on the backend. deadline = time.time() + 30 last: Dict[str, Any] = {} while time.time() < deadline: @@ -227,13 +227,13 @@ def main() -> int: f"recent eventTypes={sorted(t for t in recent_types if t)}") if args.keep: - _log("KEEP flag set — mutations applied but not restored. Final state:") + _log("KEEP flag set, mutations applied but not restored. Final state:") final = ua.get_alert(client, alert_id) _log(f" status={final.get('status')!r} verdict={final.get('analystVerdict')!r}") _log(f" (originals were status={orig_status!r} verdict={orig_verdict!r})") _log("Alert mutation lifecycle: STATUS round-trip → VERDICT round-trip " - "→ HISTORY check — ALL OK") + "→ HISTORY check, ALL OK") return 0 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alerts_dual_api.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alerts_dual_api.py index 6587bc0..211ddf5 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alerts_dual_api.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_alerts_dual_api.py @@ -1,5 +1,5 @@ """ -Alerts dual-API round-trip test — REVERSIBLE. +Alerts dual-API round-trip test, REVERSIBLE. Demonstrates the SentinelOne alerts story: @@ -8,13 +8,13 @@ These are PARALLEL surfaces, not redundant ones: - UAM is the modern "unified alert management" view across every - detection source — STAR/Custom Detection Rules, endpoint (EDR), cloud + detection source: STAR/Custom Detection Rules, endpoint (EDR), cloud workload, identity, and third-party detections. IDs are UUIDs (e.g. `019db24c-8b6d-7451-8697-b1b2e1a270f1`). - REST /cloud-detection/alerts is the older surface scoped to cloud- detection events (primarily STAR rule hits, EDR overflow). IDs are 64-bit integers (e.g. `2055164731151448891`). The REST payload is - denormalized — each alert embeds `agentDetectionInfo`, `sourceProcess`, + denormalized; each alert embeds `agentDetectionInfo`, `sourceProcess`, `targetProcess`, `ruleInfo`, etc. On "create" for alerts @@ -26,11 +26,11 @@ 1. Create a STAR / Custom Detection rule whose query matches current telemetry (POST /web/api/v2.1/cloud-detection/rules) 2. Upload an IOC that matches something an agent is seeing - (POST /web/api/v2.1/threat-intelligence/iocs — see test_ioc_lifecycle.py) + (POST /web/api/v2.1/threat-intelligence/iocs; see test_ioc_lifecycle.py) 3. Trigger synthetic EDR telemetry from an agent The closest thing to a reversible content-creation path on an existing -alert is `addAlertNote` — add a free-text note, reversible via +alert is `addAlertNote`: add a free-text note, reversible via `deleteAlertNote`. This test exercises that path. What this test verifies @@ -73,7 +73,7 @@ RUN_TAG = f"smoke-{datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%SZ')}-{uuid.uuid4().hex[:8]}" -NOTE_TEXT = f"smoke-test note {RUN_TAG} — safe to delete" +NOTE_TEXT = f"smoke-test note {RUN_TAG}, safe to delete" def _log(msg: str) -> None: @@ -103,7 +103,7 @@ def main() -> int: _log("GraphQL: list alerts") alert = _pick_alert_graphql(client) if not alert: - _log("GraphQL: no alerts on this tenant — cannot test mutations") + _log("GraphQL: no alerts on this tenant, cannot test mutations") return 1 alert_id = alert["id"] _log(f"GraphQL ok: picked alert {alert_id} " diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_custom_rule_lifecycle.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_custom_rule_lifecycle.py index 6c2e625..2543726 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_custom_rule_lifecycle.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_custom_rule_lifecycle.py @@ -1,5 +1,5 @@ """ -Custom Detection Rule lifecycle round-trip test — REVERSIBLE. +Custom Detection Rule lifecycle round-trip test, REVERSIBLE. Exercises the full rule CRUD pattern against /cloud-detection/rules: @@ -49,7 +49,7 @@ # A deliberately narrow query that is syntactically valid but unlikely to # match anything in practice. Since the rule is created in "Disabled" state -# it never evaluates against telemetry anyway — this is belt-and-braces. +# it never evaluates against telemetry anyway: this is belt-and-braces. SAFE_QUERY = 'EventType = "Process Creation" AND ProcessName = "zzz-smoke-test-does-not-exist.exe"' @@ -148,7 +148,7 @@ def main() -> int: rule_id = created["id"] _log(f"CREATE ok: rule_id={rule_id} status={created.get('status')!r}") if created.get("status") not in ("Draft", "Disabled"): - _log(f"WARN: unexpected rule status {created.get('status')!r} — " + _log(f"WARN: unexpected rule status {created.get('status')!r}, " "expected Draft/Disabled; continuing") # --- 2. LIST (name__contains) --- @@ -164,7 +164,7 @@ def main() -> int: _log(f"LIST ok: {len(hits)} hit(s); created rule present") # --- 3. UPDATE --- - new_desc = f"Smoke-test rule run_tag={RUN_TAG} — updated at " \ + new_desc = f"Smoke-test rule run_tag={RUN_TAG}, updated at " \ f"{datetime.now(timezone.utc).isoformat(timespec='seconds')}" _log(f"UPDATE: PUT /cloud-detection/rules/{rule_id} (bump severity → Medium)") try: @@ -204,7 +204,7 @@ def main() -> int: "CREATE/UPDATE/DELETE/VERIFY still passed. Returning 0 but " "investigate name__contains search indexing if this repeats.") - _log("Custom-rule lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY — ALL OK") + _log("Custom-rule lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY, ALL OK") return 0 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_ioc_lifecycle.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_ioc_lifecycle.py index d142b59..fe39004 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_ioc_lifecycle.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_ioc_lifecycle.py @@ -1,5 +1,5 @@ """ -IOC lifecycle round-trip test — REVERSIBLE. +IOC lifecycle round-trip test, REVERSIBLE. Purpose ------- @@ -95,13 +95,13 @@ def _pick_account_id(client: S1Client) -> str: resp = client.get("/web/api/v2.1/accounts", params={"limit": 1}) data = resp.get("data") or [] if not data: - raise RuntimeError("No accounts visible to this token — cannot scope IOC create") + raise RuntimeError("No accounts visible to this token, cannot scope IOC create") return data[0]["id"] def create_iocs(client: S1Client, iocs: List[Dict[str, Any]], account_id: str) -> Dict[str, Any]: - # Scope to a specific account — tenant scope requires a global user. + # Scope to a specific account: tenant scope requires a global user. body = {"filter": {"accountIds": [account_id]}, "data": iocs} return client.post("/web/api/v2.1/threat-intelligence/iocs", json_body=body) @@ -117,7 +117,7 @@ def list_by_run_tag(client: S1Client, run_tag: str, params={"name__contains": run_tag, "accountIds": account_id, "limit": 100}, ): - # post-filter on source too — name__contains could in theory match + # post-filter on source too: name__contains could in theory match # an unrelated record (no risk in practice with the uuid tag). if (row.get("source") or "") == run_tag: found.append(row) @@ -127,7 +127,7 @@ def list_by_run_tag(client: S1Client, run_tag: str, def delete_by_ids(client: S1Client, ids: List[str], account_id: str) -> Dict[str, Any]: # DELETE /iocs takes a body with a filter. The filter schema accepts - # `uuids` (the IOC IDs) — NOT `source__contains` on this endpoint. + # `uuids` (the IOC IDs): NOT `source__contains` on this endpoint. # Scoping by uuids is strictly safer than a source-contains match: # we only delete what we just created. body = {"filter": {"accountIds": [account_id], "uuids": ids}} @@ -169,7 +169,7 @@ def main() -> int: except S1APIError as e: if e.status == 403 and "multi-scopes" in str(e): _log("SKIP: token has multiple account scopes; /iocs requires a " - "single-account-scoped token. Not a skill bug — documented " + "single-account-scoped token. Not a skill bug, documented " "in tests/README.md.") return 0 _log(f"PRECHECK FAILED: HTTP {e.status} {e}") @@ -193,17 +193,17 @@ def main() -> int: found = list_by_run_tag(client, run_tag, account_id) _log(f"LIST ok: {len(found)} indicators match source={run_tag}") if len(found) != len(iocs): - _log(f"WARN: expected {len(iocs)} found {len(found)} — " + _log(f"WARN: expected {len(iocs)} found {len(found)}, " "may be async indexing; continuing") - # Collect UUIDs from what we just found — safer than any content filter. + # Collect UUIDs from what we just found: safer than any content filter. # IOC records use `uuid` (not `id`) as the primary key, and the DELETE # filter field is `uuids` (plural). ids = [r["uuid"] for r in found if r.get("uuid")] # --- DELETE --- if args.keep: - _log("KEEP flag set — leaving test IOCs in place. Clean up manually with:") + _log("KEEP flag set, leaving test IOCs in place. Clean up manually with:") import json as _json filt = _json.dumps({"filter": {"accountIds": [account_id], "uuids": ids}}) print(f' python scripts/call_endpoint.py DELETE ' @@ -219,7 +219,7 @@ def main() -> int: del_resp = delete_by_ids(client, ids, account_id) except S1APIError as e: _log(f"DELETE FAILED: HTTP {e.status} {e}") - _log("Manual cleanup required — see --keep instructions above.") + _log("Manual cleanup required; see --keep instructions above.") return 3 affected = (del_resp.get("data") or {}).get("affected") _log(f"DELETE ok: affected={affected}") @@ -233,7 +233,7 @@ def main() -> int: return 4 _log("VERIFY ok: zero remaining") - _log("IOC lifecycle: CREATE → LIST → DELETE → VERIFY — ALL OK") + _log("IOC lifecycle: CREATE → LIST → DELETE → VERIFY, ALL OK") return 0 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_islegacy_guard.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_islegacy_guard.py index 88144b1..bed4ecb 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_islegacy_guard.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_islegacy_guard.py @@ -5,7 +5,7 @@ --------------- GET /web/api/v2.1/cloud-detection/rules silently omits queryType="scheduled" PowerQuery rules from the response unless isLegacy=false is passed on the -query string. There is no error, no warning — the response just lies by +query string. There is no error, no warning; the response just lies by omission. This has bitten us multiple times: "list my scheduled detections" returns an empty list even though scheduled rules exist and are visible in the console UI. @@ -53,7 +53,7 @@ def main() -> None: out = _maybe_inject_islegacy("GET", "/web/api/v2.1/cloud-detection/rules/", None) _assert(out == {"isLegacy": "false"}, "GET /cloud-detection/rules/ → isLegacy injected") - # Single-rule lookup (/{id}) also injects — getting one rule by ID should + # Single-rule lookup (/{id}) also injects: getting one rule by ID should # see the same scheduled/legacy fork. rule_id = "2487612380083288142" out = _maybe_inject_islegacy("GET", f"/web/api/v2.1/cloud-detection/rules/{rule_id}", None) @@ -68,7 +68,7 @@ def main() -> None: out = _maybe_inject_islegacy("GET", f"/web/api/v2.1/cloud-detection/rules/{rule_id}?expanded=true", None) _assert(out == {"isLegacy": "false"}, "GET /cloud-detection/rules/?query → isLegacy injected") - # Adjacent names that merely start with "rules" must NOT match — the guard + # Adjacent names that merely start with "rules" must NOT match: the guard # requires `/`, `?`, or end-of-string immediately after "rules". out = _maybe_inject_islegacy("GET", "/web/api/v2.1/cloud-detection/rules-export", None) _assert(out == {}, "GET /cloud-detection/rules-export → no injection") @@ -84,7 +84,7 @@ def main() -> None: "existing params preserved alongside injection", ) - # Explicit override is honored — caller may pass isLegacy=true if they + # Explicit override is honored: caller may pass isLegacy=true if they # actually want the legacy-only view for some reason. out = _maybe_inject_islegacy( "GET", @@ -104,7 +104,7 @@ def main() -> None: "is_legacy snake_case override honored (no double-injection)", ) - # POST to the same path does NOT inject — guard is GET-only. + # POST to the same path does NOT inject: guard is GET-only. out = _maybe_inject_islegacy("POST", "/web/api/v2.1/cloud-detection/rules", None) _assert(out == {}, "POST /cloud-detection/rules → no injection") @@ -112,7 +112,7 @@ def main() -> None: out = _maybe_inject_islegacy("GET", "/web/api/v2.1/agents", None) _assert(out == {}, "GET /agents → no injection") - # Adjacent endpoint /cloud-detection/alerts does NOT inject — only the + # Adjacent endpoint /cloud-detection/alerts does NOT inject: only the # /rules surface has the legacy/scheduled fork. out = _maybe_inject_islegacy("GET", "/web/api/v2.1/cloud-detection/alerts", None) _assert(out == {}, "GET /cloud-detection/alerts → no injection") diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_saved_filter_lifecycle.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_saved_filter_lifecycle.py index 83add23..3b09aaf 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_saved_filter_lifecycle.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_saved_filter_lifecycle.py @@ -1,5 +1,5 @@ """ -Saved-filter lifecycle round-trip test — REVERSIBLE. +Saved-filter lifecycle round-trip test, REVERSIBLE. Demonstrates that the skill can exercise CREATE → UPDATE → LIST → DELETE → VERIFY for a console "saved filter" (Filters tag) without leaving state @@ -11,7 +11,7 @@ DELETE DELETE /web/api/v2.1/filters/{filter_id} VERIFY GET /web/api/v2.1/filters?name__contains= -A saved filter is a personal saved-search definition — no protection impact, +A saved filter is a personal saved-search definition; no protection impact, no detection impact, no other user can see it. This is the lowest blast- radius content-create path in the REST API. Safe to run on any shared tenant at any time. @@ -116,7 +116,7 @@ def main() -> int: if not any(h.get("id") == fid for h in hits): _log(f"LIST FAILED: created filter {fid} not surfaced by name__contains filter") _log(f"Hits ({len(hits)}): {[h.get('id') for h in hits]}") - # don't bail out — cleanup below will still remove it + # don't bail out: cleanup below will still remove it list_ok = False else: list_ok = True @@ -162,7 +162,7 @@ def main() -> int: "CREATE/UPDATE/DELETE/VERIFY still passed. Returning 0 but " "investigate name__contains search indexing if this repeats.") - _log("Saved-filter lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY — ALL OK") + _log("Saved-filter lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY, ALL OK") return 0 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_scheduled_report_lifecycle.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_scheduled_report_lifecycle.py index b4f2220..9981418 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_scheduled_report_lifecycle.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_scheduled_report_lifecycle.py @@ -1,5 +1,5 @@ """ -Scheduled default-report task lifecycle round-trip — REVERSIBLE. +Scheduled default-report task lifecycle round-trip, REVERSIBLE. Exercises /web/api/v2.1/report-tasks CRUD for scheduled reports: @@ -13,14 +13,14 @@ VERIFY GET /web/api/v2.1/report-tasks?name= (expect 0) Quirks worth knowing (baked in): - * CREATE response is `{data: {success: true}}` — no id returned. + * CREATE response is `{data: {success: true}}`: no id returned. The new task is retrieved by NAME in the LIST step. * DELETE uses `POST /reports/delete-tasks` (not a true DELETE verb), and the body wrapper is `filter.ids`, not `data.ids`. * The schema requires `fromDate`/`toDate` even for "manually" scheduled reports (they're the report's content window, not the run window). * Scope fields (`siteIds`, etc.) belong in the top-level `filter`, NOT - inside `data` — the server rejects them as "Unknown field" if placed + inside `data`; the server rejects them as "Unknown field" if placed inside data. The report is created with `scheduleType="manually"`, which means the @@ -93,7 +93,7 @@ def list_by_name(client: S1Client, name: str) -> List[Dict[str, Any]]: def update_task(client: S1Client, task_id: str, new_name: str, site_id: str) -> Dict[str, Any]: - # PUT /report-tasks/{id} uses a different, narrower schema than POST — + # PUT /report-tasks/{id} uses a different, narrower schema than POST: # `insightTypes`, `fromDate`, `toDate`, `scheduleType` are rejected as # "Unknown field" in the UPDATE body. Only the mutable metadata fields # (name, frequency, day, recipients, attachmentTypes) are accepted. We @@ -180,7 +180,7 @@ def main() -> int: return 5 _log("VERIFY ok: task removed") - _log("Scheduled-report lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY — ALL OK") + _log("Scheduled-report lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY, ALL OK") return 0 diff --git a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_star_rule_lifecycle.py b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_star_rule_lifecycle.py index 1ce3cbc..bb35a6c 100644 --- a/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_star_rule_lifecycle.py +++ b/plugins/s1-secops-skills/skills/mgmt-console-api/tests/test_star_rule_lifecycle.py @@ -125,11 +125,16 @@ def list_rules_by_name(client: S1Client, site_id: str, Confirmed gotcha (live API, 2026-05): combining nameSubstring + queryType in the same request returns HTTP 500. Use one or the other; prefer ids for point-lookup after create. + + Confirmed gotcha (live API, 2026-08-01): on some tenants nameSubstring + ALONE also returns HTTP 500 while name__contains and ids work. Callers + must treat a LIST failure as non-fatal and fall back to ids point-lookup; + main() does exactly that so a LIST 500 can never orphan the created rule. """ resp = client.get(RULES_BASE, params={ "nameSubstring": name_substring, "siteIds": site_id, - # queryType intentionally omitted — combining with nameSubstring causes HTTP 500 + # queryType intentionally omitted, combining with nameSubstring causes HTTP 500 "limit": 10, }) # Client-side filter to our run_tag since we can't use queryType in the same call @@ -211,58 +216,81 @@ def main() -> int: _log(f"CREATE ok: rule_id={rule_id} name={created.get('name')!r} " f"status={created.get('status')} queryType={created.get('queryType')}") - # --- 2. LIST --- - time.sleep(1) - _log(f"LIST: GET {RULES_BASE}?nameSubstring={RUN_TAG!r}&siteIds={site_id}") - hits = list_rules_by_name(client, site_id, RUN_TAG) - list_ok = any(h.get("id") == rule_id for h in hits) - if not list_ok: - _log(f"LIST consistency issue: rule_id={rule_id} not found in {len(hits)} hit(s). " - f"Ids found: {[h.get('id') for h in hits]}") - else: - _log(f"LIST ok: {len(hits)} hit(s); created rule present") - - # --- 3. UPDATE --- - _log(f"UPDATE: PUT {RULES_BASE}/{rule_id}") + # Everything after CREATE runs under a finally-guarded cleanup so no step + # failure (including an unexpected LIST HTTP 500, observed live 2026-08-01) + # can orphan the created rule. + deleted = False try: - update_star_rule(client, rule_id, site_id) - except S1APIError as e: - _log(f"UPDATE FAILED: HTTP {e.status} {e}") - _log(f"Manual cleanup: rule_id={rule_id}") - return 3 - # Confirm description was written back - updated = get_rule_by_id(client, rule_id, site_id) - if updated and "UPDATED" in (updated.get("description") or ""): - _log("UPDATE ok: description updated") - else: - _log("UPDATE ok (description not confirmed in read-back — continuing)") + # --- 2. LIST --- + time.sleep(1) + _log(f"LIST: GET {RULES_BASE}?nameSubstring={RUN_TAG!r}&siteIds={site_id}") + try: + hits = list_rules_by_name(client, site_id, RUN_TAG) + list_ok = any(h.get("id") == rule_id for h in hits) + if not list_ok: + _log(f"LIST consistency issue: rule_id={rule_id} not found in " + f"{len(hits)} hit(s). Ids found: {[h.get('id') for h in hits]}") + else: + _log(f"LIST ok: {len(hits)} hit(s); created rule present") + except S1APIError as e: + # Non-fatal: some tenants 500 on nameSubstring alone. Fall back to + # ids point-lookup so the lifecycle still verifies visibility. + _log(f"LIST via nameSubstring failed (HTTP {e.status}); " + f"falling back to ids point-lookup") + if get_rule_by_id(client, rule_id, site_id): + _log("LIST fallback ok: rule visible via ids lookup") + else: + _log("LIST fallback: rule NOT visible via ids lookup (continuing)") + + # --- 3. UPDATE --- + _log(f"UPDATE: PUT {RULES_BASE}/{rule_id}") + try: + update_star_rule(client, rule_id, site_id) + except S1APIError as e: + _log(f"UPDATE FAILED: HTTP {e.status} {e}") + return 3 + # Confirm description was written back + updated = get_rule_by_id(client, rule_id, site_id) + if updated and "UPDATED" in (updated.get("description") or ""): + _log("UPDATE ok: description updated") + else: + _log("UPDATE ok (description not confirmed in read-back, continuing)") + + # --- 4. DELETE --- + if args.keep: + _log(f"KEEP flag set. Leaving rule {rule_id} (name={RULE_NAME!r})") + deleted = True # deliberate keep: suppress the finally cleanup + return 0 - # --- 4. DELETE --- - if args.keep: - _log(f"KEEP flag set. Leaving rule {rule_id} (name={RULE_NAME!r})") + _log(f"DELETE: DELETE {RULES_BASE} filter.ids=[{rule_id}]") + try: + del_resp = delete_rule(client, rule_id, site_id) + except S1APIError as e: + _log(f"DELETE FAILED: HTTP {e.status} {e}") + return 4 + deleted = True + affected = (del_resp.get("data") or {}).get("affected") + _log(f"DELETE ok: affected={affected}") + + # --- 5. VERIFY --- + time.sleep(1) + remaining = get_rule_by_id(client, rule_id, site_id) + if remaining: + _log(f"VERIFY FAILED: rule {rule_id} still present after delete " + f"(status={remaining.get('status')})") + return 5 + _log("VERIFY ok: rule absent") + + _log("STAR rule lifecycle: CREATE -> LIST -> UPDATE -> DELETE -> VERIFY, ALL OK") return 0 - - _log(f"DELETE: DELETE {RULES_BASE} filter.ids=[{rule_id}]") - try: - del_resp = delete_rule(client, rule_id, site_id) - except S1APIError as e: - _log(f"DELETE FAILED: HTTP {e.status} {e}") - _log(f"Manual cleanup: rule_id={rule_id}") - return 4 - affected = (del_resp.get("data") or {}).get("affected") - _log(f"DELETE ok: affected={affected}") - - # --- 5. VERIFY --- - time.sleep(1) - remaining = get_rule_by_id(client, rule_id, site_id) - if remaining: - _log(f"VERIFY FAILED: rule {rule_id} still present after delete " - f"(status={remaining.get('status')})") - return 5 - _log("VERIFY ok: rule absent") - - _log("STAR rule lifecycle: CREATE → LIST → UPDATE → DELETE → VERIFY — ALL OK") - return 0 + finally: + if not deleted: + _log(f"CLEANUP (finally): best-effort delete of rule {rule_id}") + try: + delete_rule(client, rule_id, site_id) + _log("CLEANUP ok: rule deleted") + except Exception as e: # noqa: BLE001 - last-resort cleanup must not mask the real error + _log(f"CLEANUP FAILED: {e}. Manual cleanup: rule_id={rule_id}") if __name__ == "__main__": diff --git a/plugins/s1-secops-skills/skills/powerquery/SKILL.md b/plugins/s1-secops-skills/skills/powerquery/SKILL.md index 0640823..1d82506 100644 --- a/plugins/s1-secops-skills/skills/powerquery/SKILL.md +++ b/plugins/s1-secops-skills/skills/powerquery/SKILL.md @@ -1,23 +1,23 @@ --- name: powerquery author: Prithvi Moses -description: Use any time the user wants to author, debug, optimize, explain, or run a SentinelOne PowerQuery (PQ) — Deep Visibility / Event Search queries, XDR/EDR threat hunting, investigations, STAR / Custom Detection rule bodies, PowerQuery Alerts, or Singularity Data Lake dashboard panels. Trigger on PowerQuery, PQ, pq, query, Event Search, Deep Visibility, S1QL, SDL, STAR rule, Custom Detection rule, PowerQuery Alert; on queries using fields like `event.type`, `src.process.*`, `tgt.file.*`, `indicator.*`, `agent.uuid`; on pipes like `| group`, `| filter`, `| let`, `| join`, `| parse`, `| columns`, `| compare`, `| top`, `| union`, `| lookup`, `| savelookup`, `| dataset`. Also trigger when asked to hunt a TTP, IOC, behaviour, or alert pattern on a SentinelOne tenant — even casually ("find powershell reaching out to the internet", "write a detection for lsass access"). Explicitly NOT Microsoft Power Query / M / Excel and NOT Splunk SPL — this is SentinelOne's pipeline query language for security telemetry. +description: Use any time the user wants to author, debug, optimize, explain, or run a SentinelOne PowerQuery (PQ): Deep Visibility / Event Search queries, XDR/EDR threat hunting, investigations, STAR / Custom Detection rule bodies, PowerQuery Alerts, or Singularity Data Lake dashboard panels. Trigger on PowerQuery, PQ, pq, query, Event Search, Deep Visibility, S1QL, SDL, STAR rule, Custom Detection rule, PowerQuery Alert; on queries using fields like `event.type`, `src.process.*`, `tgt.file.*`, `indicator.*`, `agent.uuid`; on pipes like `| group`, `| filter`, `| let`, `| join`, `| parse`, `| columns`, `| compare`, `| top`, `| union`, `| lookup`, `| savelookup`, `| dataset`. Also trigger when asked to hunt a TTP, IOC, behaviour, or alert pattern on a SentinelOne tenant, even casually ("find powershell reaching out to the internet", "write a detection for lsass access"). Explicitly NOT Microsoft Power Query / M / Excel and NOT Splunk SPL; this is SentinelOne's pipeline query language for security telemetry. --- # SentinelOne PowerQuery -PowerQuery (PQ) is SentinelOne's pipeline query language for the Singularity Data Lake. It reads like `filter | command | command | …` — events that match the initial filter flow through a sequence of piped transformations (group, let, join, sort, columns, etc.). +PowerQuery (PQ) is SentinelOne's pipeline query language for the Singularity Data Lake. It reads like `filter | command | command | …`, events that match the initial filter flow through a sequence of piped transformations (group, let, join, sort, columns, etc.). Use this skill to write correct, efficient, runnable PowerQueries for threat hunting, investigations, detection rule bodies, and dashboards. -> **Sandbox proxy blocked?** If the LRQ API at `POST /sdl/v2/api/queries` on your console host fails with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes `powerquery_run`, `powerquery_enumerate_sources`, and `powerquery_schema_discover` — all running through the LRQ API on your machine. +> **Sandbox proxy blocked?** If the LRQ API at `POST /sdl/v2/api/queries` on your console host fails with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes `powerquery_run`, `powerquery_enumerate_sources`, and `powerquery_schema_discover`, all running through the LRQ API on your machine. ## Workflow When the user asks you to write or investigate with a PowerQuery: -1. **Clarify the intent** if it's ambiguous (time range, data view, what the output should look like). A good PQ is scoped — not everything needs to be hunted over 30 days. -2. **Draft the query** following the grammar below. Favor `filter | group | sort | limit | columns` as the default shape — it's what most real investigations need. +1. **Clarify the intent** if it's ambiguous (time range, data view, what the output should look like). A good PQ is scoped, not everything needs to be hunted over 30 days. +2. **Draft the query** following the grammar below. Favor `filter | group | sort | limit | columns` as the default shape; it's what most real investigations need. 3. **Run it against the tenant.** Default to the **Long Running Query (LRQ) API** at `POST /sdl/v2/api/queries` on the tenant's console URL. LRQ is the fastest, highest-limit, most reliable path for any programmatic use and supersedes both `/api/powerQuery` and the Deep Visibility `/dv/events/pq` endpoint (both deprecated; sunset Feb 15 2027). It is async, supports cursor paging to essentially unlimited rows, has a 100 req/sec per-account cap, and lets you parallelize across time slices. Reach for the Purple MCP `powerquery` tool only for a single quick exploratory check when no API client is already wired up. See "Running queries (LRQ API by default)" below and `references/lrq-api.md` for the canonical runner, body schema, auth, rate limits, and the gotchas that make it fail silently with 0 rows. If the user's request is clear and low-risk (read-only query), just run it; don't ask permission. 4. **Iterate**: if the query errors or returns obviously wrong results, read the error, fix, rerun. If the query returns nothing, that is a legitimate result, don't blindly loosen it; check the time range and filter logic first. If you ran via the Purple MCP `powerquery` tool and it **timed out** or returned a server error (common for anything past 24h or with wide initial filters), don't retry and don't shrink the range to fit the MCP budget - switch to the LRQ API path (see "Fallback" under Running queries below). 5. **Explain the result briefly** and cite any fields you're relying on. If you used a non-obvious pattern (subquery, `savelookup`, `transpose`, `compare`), explain *why* you chose it. @@ -31,35 +31,35 @@ initial-filter-expression | … ``` -**Initial filter** (everything before the first `|`) is the only place where `* contains "x"` and `* matches "regex"` multi-field search works. It can be empty — start the query with `|` and it is treated as "all events" (e.g., `| group ct=count() by event.type`). +**Initial filter** (everything before the first `|`) is the only place where `* contains "x"` and `* matches "regex"` multi-field search works. It can be empty, start the query with `|` and it is treated as "all events" (e.g., `| group ct=count() by event.type`). **Commands** (each starts with `|`): -- `filter expr` — keep matching rows (initial filter implicit) -- `columns f1, "Renamed f2"=f2, …` — select, rename, compute output columns (creates a *new* record set — previous fields not accessible after) -- `let f = expr, …` — add computed fields without discarding existing ones -- `group agg(x), name2=agg2(y) by f1, "grouped name"=f2` — aggregate; also creates a new record set -- `sort +f1, -f2` — `-` = descending -- `limit N` — truncate (default shows 10 without it; output is capped at 1,000 rows if no `limit`/`group`) -- `parse "…$field$…" from srcField` — extract fields from unstructured text -- `lookup col, … from tableName by key=expr` — join against a CSV/JSON config data table -- `| dataset 'config://datatables/'` — read a lookup table as the source of the pipeline (leading `|` required) -- `datasource [from ]` — read SentinelOne-managed inventory outside the event store (assets, alerts, vulnerabilities, misconfigurations, metering); the only PQ path to the Asset Inventory / AD identity attributes. See `references/datasource-command.md` -- `savelookup 'tableName'[, 'merge']` — persist current result as a reusable lookup table -- `| [inner|left|outer|sql inner|sql left|sql outer] join (q1), (q2), … on k1, a.x = b.y` — correlate subqueries (must start `| join`, not just `join`) -- `| union (q1), (q2), …` — merge heterogeneous result sets (up to 10 queries; use when `filter (…or…)` can't express it) -- `| transpose colName on keyCol, …` — pivot a column into many columns (must be LAST command) -- `| compare [name=]timeshift('-1w')` — re-run the same query shifted in time and put both in one table (must be LAST command; only one `compare` allowed) -- `| top K agg(x) by f1, f2` — probabilistic top-N (fast on huge ranges; `count()`/`sum()` are "(estimated)", `min`/`max` exact) -- `| nolimit` — raise the row cap to 3 GB (slow; one concurrent nolimit query at a time; never use in Dashboards or PowerQuery Alerts) +- `filter expr`: keep matching rows (initial filter implicit) +- `columns f1, "Renamed f2"=f2, …`, select, rename, compute output columns (creates a *new* record set, previous fields not accessible after) +- `let f = expr, …`: add computed fields without discarding existing ones +- `group agg(x), name2=agg2(y) by f1, "grouped name"=f2`: aggregate; also creates a new record set +- `sort +f1, -f2`: `-` = descending +- `limit N`: truncate (default shows 10 without it; output is capped at 1,000 rows if no `limit`/`group`) +- `parse "…$field$…" from srcField`: extract fields from unstructured text +- `lookup col, … from tableName by key=expr`: join against a CSV/JSON config data table +- `| dataset 'config://datatables/'`: read a lookup table as the source of the pipeline (leading `|` required) +- `datasource [from ]`: read SentinelOne-managed inventory outside the event store (assets, alerts, vulnerabilities, misconfigurations, metering); the only PQ path to the Asset Inventory / AD identity attributes. See `references/datasource-command.md` +- `savelookup 'tableName'[, 'merge']`: persist current result as a reusable lookup table +- `| [inner|left|outer|sql inner|sql left|sql outer] join (q1), (q2), … on k1, a.x = b.y`: correlate subqueries (must start `| join`, not just `join`) +- `| union (q1), (q2), …`: merge heterogeneous result sets (up to 10 queries; use when `filter (…or…)` can't express it) +- `| transpose colName on keyCol, …`: pivot a column into many columns (must be LAST command) +- `| compare [name=]timeshift('-1w')`: re-run the same query shifted in time and put both in one table (must be LAST command; only one `compare` allowed) +- `| top K agg(x) by f1, f2`: probabilistic top-N (fast on huge ranges; `count()`/`sum()` are "(estimated)", `min`/`max` exact) +- `| nolimit`: raise the row cap to 3 GB (slow; one concurrent nolimit query at a time; never use in Dashboards or PowerQuery Alerts) **Expressions** use standard operators: `=` / `==` / `!=`, `<` / `<=` / `>` / `>=`, `&&` / `||` / `!` (or `AND` / `OR` / `NOT`), ternary `a ? b : c` (put spaces around the `:`), arithmetic `+ - * / %`, and these text operators: | Operator | Meaning | |---|---| -| `x contains 'sub'` | substring (case-insensitive) — also `contains ('a','b','c')` for OR | +| `x contains 'sub'` | substring (case-insensitive): also `contains ('a','b','c')` for OR | | `x contains:matchcase 'Sub'` | case-sensitive substring | -| `x matches 'regex'` | regex (case-insensitive, double-escape) — `matches ('a','b')` for OR | +| `x matches 'regex'` | regex (case-insensitive, double-escape): `matches ('a','b')` for OR | | `x matches:matchcase '…'` | case-sensitive regex | | `x in ('a','b',123,true)` | exact equals any; case-sensitive; `in:anycase` for case-insensitive; does NOT match null | | `x = *` | field is present/non-null | @@ -69,9 +69,9 @@ initial-filter-expression Strings need quotes (`'foo'` or `"foo"`); numbers and booleans don't. Underscores in numbers are OK for readability (`1_000_000`). -## BANNED functions — do not use, ever +## BANNED functions: do not use, ever -These function names do not exist in PowerQuery. Using any of them produces `Unknown function ''` (HTTP 500). Do not invent plausible-sounding names — if a function isn't in `references/functions-reference.md`, it doesn't exist. +These function names do not exist in PowerQuery. Using any of them produces `Unknown function ''` (HTTP 500). Do not invent plausible-sounding names, if a function isn't in `references/functions-reference.md`, it doesn't exist. | Do NOT write | Write this instead | |---|---| @@ -84,8 +84,8 @@ These function names do not exist in PowerQuery. Using any of them produces `Unk | `if(cond, a, b)` inside aggregates | `count(predicate)` | | `percentile(x, N)` | `p50(x)` / `p95(x)` / `p99(x)` | | `first(x)` / `last(x)` | `min_by(x, timestamp)` / `max_by(x, timestamp)` | -| `sort count desc` / `sort field asc` | `sort -count` / `sort +field` — PowerQuery uses `-`/`+` prefix, NOT SQL-style `desc`/`asc`. Using `desc` or `asc` causes HTTP 500 "Unable to parse the entire query". Purple AI frequently generates this wrong — always correct before running. | -| `` `field.name` `` (backtick-quoted identifiers) | `field.name` — dotted field names are written bare, no backticks. Using backtick quoting returns HTTP 500 "Don't understand [`]". | +| `sort count desc` / `sort field asc` | `sort -count` / `sort +field`: PowerQuery uses `-`/`+` prefix, NOT SQL-style `desc`/`asc`. Using `desc` or `asc` causes HTTP 500 "Unable to parse the entire query". Purple AI frequently generates this wrong; always correct before running. | +| `` `field.name` `` (backtick-quoted identifiers) | `field.name`: dotted field names are written bare, no backticks. Using backtick quoting returns HTTP 500 "Don't understand [`]". | The only valid date/time functions are: `strftime`, `simpledateformat`, `strptime`, `simpledateparse`, `timebucket`, `querystart`, `queryend`, `queryspan`. @@ -95,25 +95,25 @@ The only valid date/time functions are: `strftime`, `simpledateformat`, `strptim These are where queries go wrong. Internalize them before writing. -1. **`*` alone is NOT a valid initial filter.** `* | limit 5` returns a 500 error ("Don't understand [*]"). There are three distinct `*` idioms — pick the right one for your intent: +1. **`*` alone is NOT a valid initial filter.** `* | limit 5` returns a 500 error ("Don't understand [*]"). There are three distinct `*` idioms, pick the right one for your intent: - **Field presence / attribute wildcard:** `dataSource.name=*` means "field is present/non-null". Use as a query-opener for aggregations, e.g. `dataSource.name=* | group count=count() by dataSource.name`. This is NOT an all-column search. - - **All-column text search:** `* contains 'evil.com'` or `* matches 'regex'` in the **initial filter** (before the first `|`) searches ALL indexed fields — use when you need to find text anywhere in the event. Dramatically faster than `message contains`. Only works before the first `|`; not valid in `| filter …` after a pipe, and not valid in Alerts. + - **All-column text search:** `* contains 'evil.com'` or `* matches 'regex'` in the **initial filter** (before the first `|`) searches ALL indexed fields; use when you need to find text anywhere in the event. Dramatically faster than `message contains`. Only works before the first `|`; not valid in `| filter …` after a pipe, and not valid in Alerts. - **Empty filter (all events):** start the query with `|`, e.g. `| group ct=count() by event.type`. 2. **Double-escape regex almost everywhere.** `src.process.cmdline matches "\\d+"`, `tgt.file.path matches '^C:\\\\Windows\\\\Temp\\\\[a-z]{8}\\.tmp$'`. The only place you don't double-escape is the `$"…"` shorthand (searches `message`). 3. **Regex lazy quantifiers (`?`) are not supported.** The SDL regex engine does not support lazy (non-greedy) quantifiers: `.*?`, `.+?`, `[^x]*?` etc. all return HTTP 500 "Dangling meta character '?'". Use a negated character class instead: `[^"]*` in place of `.*?"`, `[^ ]*` in place of `.*?`, etc. -4. **After `columns` or `group`, previous fields are gone.** These commands create an entirely new record set. If you'll need a field later, carry it through: `group ct=count(), host=any(endpoint.name) by src.process.storyline.id` — don't expect `endpoint.name` to still be addressable after that `group` unless you aggregate it. +4. **After `columns` or `group`, previous fields are gone.** These commands create an entirely new record set. If you'll need a field later, carry it through: `group ct=count(), host=any(endpoint.name) by src.process.storyline.id`; don't expect `endpoint.name` to still be addressable after that `group` unless you aggregate it. 5. **Subqueries can't go after `group`, `sort`, or `limit`.** And the subquery must itself produce the column named in the `in (...)` expression (via `columns` or `group`). `user in (action='login' | group 1 by user)` is valid; `user in (action='login')` is not. 6. **`compare` and `transpose` must be the LAST command.** Put `sort` before `compare` if you want to order the non-shifted side. -7. **`join` must start with a pipe.** `| join (…), (…) on x` — without the `|`, "join" is interpreted as a search term. Inner/left joins allow up to 10 subqueries; `sql inner` and `sql left` allow only 2. +7. **`join` must start with a pipe.** `| join (…), (…) on x`, without the `|`, "join" is interpreted as a search term. Inner/left joins allow up to 10 subqueries; `sql inner` and `sql left` allow only 2. 8. **`null` behaves like false in boolean context.** `filter x = null` works after the field is defined by a prior command; before then, use `!(x = *)` for is-null and `x = *` for is-not-null. 9. **`contains` is case-insensitive by default; `in` is case-sensitive by default.** The `:matchcase` / `:anycase` suffixes reverse this. 10. **Performance: filter early, group narrow.** Push filters above the first pipe when possible. In `group`, prefer low-cardinality fields; for long ranges, consider `| top K …` instead (probabilistic but orders of magnitude faster). 11. **Alerts and Dashboards have tighter limits.** A PowerQuery Alert is capped at 1,000 rows intermediate / 1 MB RAM. Don't put `nolimit` in a dashboard panel. -12. **Shortcut fields (`#cmdline`, `#name`, `#hash`, …) don't work as initial filters on every tenant.** They're documented but return 500 on many deployments. Prefer explicit field names (`src.process.cmdline contains 'x'`) — they're as terse and always work. Save shortcuts for exploratory Event Search where you're not scripting against the API. -13. **Aggregates to prefer: `min_by` / `max_by` over `first` / `last`.** `first(x)` and `last(x)` are sometimes listed as aggregates but fail on many tenants. Use `min_by(x, timestamp)` and `max_by(x, timestamp)` — they're explicit about ordering and always work. +12. **Shortcut fields (`#cmdline`, `#name`, `#hash`, …) don't work as initial filters on every tenant.** They're documented but return 500 on many deployments. Prefer explicit field names (`src.process.cmdline contains 'x'`); they're as terse and always work. Save shortcuts for exploratory Event Search where you're not scripting against the API. +13. **Aggregates to prefer: `min_by` / `max_by` over `first` / `last`.** `first(x)` and `last(x)` are sometimes listed as aggregates but fail on many tenants. Use `min_by(x, timestamp)` and `max_by(x, timestamp)`; they're explicit about ordering and always work. 14. **Percentiles: use `p50`/`p95`/`p99`, not `percentile(x, N)`.** The latter isn't a real function and returns 500. 15. **Null-filter at the wrong stage: `filter x = null` before `x` is computed returns 500.** Use `filter !(x =*)` for is-null until after a `let`/`join`/`lookup` has produced `x`. -16. **Coalesce-style fallback uses bare-field truthy test, NOT `(field = *) ? a : b`.** PQ has no `coalesce()` / `ifnull()` / `nvl()`. To pick the first non-null of several fields inside a `let`, chain bare-field ternaries — they evaluate the field's truthiness directly: +16. **Coalesce-style fallback uses bare-field truthy test, NOT `(field = *) ? a : b`.** PQ has no `coalesce()` / `ifnull()` / `nvl()`. To pick the first non-null of several fields inside a `let`, chain bare-field ternaries; they evaluate the field's truthiness directly: ```text | let user_id = actor.user.email_addr @@ -121,25 +121,25 @@ These are where queries go wrong. Internalize them before writing. : (actor.user.name ? actor.user.name : src.process.user) ``` - The `(field = *) ? a : b` form (i.e. wrapping the field-presence test in parens before the ternary) **returns HTTP 500 inside `let`** on this engine — `field = *` is a filter operator, not a boolean expression usable in computed columns. Bare-field truthy is the only working coalesce idiom in PQ. -17. **`if(...)` is not a function in aggregates.** `sum(if(cond, 1, 0))` returns 500. Use `count()` instead — `count(severity_id == 5)` evaluates the predicate per row and sums the truthy ones. Same for any "count where X" semantic. -18. **Always filter `field=*` before projecting or inspecting any field.** `| limit N | columns field` returns the first N events regardless of whether the field is populated — most rows will be null. Add `field=*` to the initial filter to scope to events that actually carry the field: + The `(field = *) ? a : b` form (i.e. wrapping the field-presence test in parens before the ternary) **returns HTTP 500 inside `let`** on this engine, `field = *` is a filter operator, not a boolean expression usable in computed columns. Bare-field truthy is the only working coalesce idiom in PQ. +17. **`if(...)` is not a function in aggregates.** `sum(if(cond, 1, 0))` returns 500. Use `count()` instead, `count(severity_id == 5)` evaluates the predicate per row and sums the truthy ones. Same for any "count where X" semantic. +18. **Always filter `field=*` before projecting or inspecting any field.** `| limit N | columns field` returns the first N events regardless of whether the field is populated, most rows will be null. Add `field=*` to the initial filter to scope to events that actually carry the field: ```text - // Wrong — returns nulls; message may not be present on most events + // Wrong: returns nulls; message may not be present on most events dataSource.name='FortiGate' | limit 3 | columns message - // Correct — only events where message is present + // Correct: only events where message is present dataSource.name='FortiGate' message=* | limit 3 | columns message ``` This applies to every field, not just `message`. Any time you want to sample, inspect, or aggregate a field, include `field=*` in the initial filter. -19. **Statistical baselining is two queries plus a client-side merge, not one inline join.** Subqueries inside a single `| join` share the parent query's time range. To compare a 24h live window against a 7d/30d baseline, run them as separate LRQs (or as separate `savelookup`+`lookup` rounds) and merge — there is no single-pass form. Pattern in `examples/behavioral-baselines.md`. +19. **Statistical baselining is two queries plus a client-side merge, not one inline join.** Subqueries inside a single `| join` share the parent query's time range. To compare a 24h live window against a 7d/30d baseline, run them as separate LRQs (or as separate `savelookup`+`lookup` rounds) and merge; there is no single-pass form. Pattern in `examples/behavioral-baselines.md`. ## When to delegate baselining + anomaly detection to the mgmt-console-api skill -If the user asks for any of the following, you need MORE than this skill — load the `sentinelone-mgmt-console-api` skill alongside, because the runner, the schema discovery, and the source-agnostic key picker live there: +If the user asks for any of the following, you need MORE than this skill, load the `sentinelone-mgmt-console-api` skill alongside, because the runner, the schema discovery, and the source-agnostic key picker live there: - "Baseline behaviour on ``" / "establish a baseline" / "build a 7d / 30d baseline" - "Detect anomalies" / "find users / hosts / IPs behaving differently than usual" @@ -149,11 +149,11 @@ If the user asks for any of the following, you need MORE than this skill — loa What `sentinelone-mgmt-console-api` adds: -- `scripts/inspect_source.py` — auto-discovers field schema for any `dataSource.name` and classifies fields into `principal_user` / `principal_host` / `principal_ip` / `action` etc. via `pick_keys(schema)` → returns `(prim_key, action_key)`. This means you don't hand-hardcode `actor.user.email_addr` for every source — the right principal field is picked from whatever the source actually carries (Okta uses email, FortiGate uses IP, SentinelOne uses process user, etc.). -- `scripts/pq.py` — `run_pq()` LRQ runner that handles auth, forward-tag, polling, slicing. -- `scripts/baseline_anomaly.py` — source-agnostic 30-day-DoW-stratified baseliner that takes a `dataSource.name`, discovers the schema, and produces anomalies. Read its source for the canonical end-to-end pattern. +- `scripts/inspect_source.py`, auto-discovers field schema for any `dataSource.name` and classifies fields into `principal_user` / `principal_host` / `principal_ip` / `action` etc. via `pick_keys(schema)` → returns `(prim_key, action_key)`. This means you don't hand-hardcode `actor.user.email_addr` for every source, the right principal field is picked from whatever the source actually carries (Okta uses email, FortiGate uses IP, SentinelOne uses process user, etc.). +- `scripts/pq.py`: `run_pq()` LRQ runner that handles auth, forward-tag, polling, slicing. +- `scripts/baseline_anomaly.py`: source-agnostic 30-day-DoW-stratified baseliner that takes a `dataSource.name`, discovers the schema, and produces anomalies. Read its source for the canonical end-to-end pattern. -Use `examples/behavioral-baselines.md` in THIS skill for the PQ building blocks (per-day slice, live slice, z-score math, silent-pair detector). Use the mgmt-console-api skill for the runner, schema discovery, and the productionised baseliner script. Don't reinvent the schema-discovery or the daily-slice runner — both already exist there. +Use `examples/behavioral-baselines.md` in THIS skill for the PQ building blocks (per-day slice, live slice, z-score math, silent-pair detector). Use the mgmt-console-api skill for the runner, schema discovery, and the productionised baseliner script. Don't reinvent the schema-discovery or the daily-slice runner, both already exist there. ## Running queries (LRQ API by default) @@ -218,35 +218,35 @@ result = run_lrq_pq(lrq, query, start_iso, end_iso) # launches, polls 1s, canc If the window is longer than a couple of days or the aggregate is heavy, slice it and use `parallel_run_roundrobin` with two clients built from two service-user JWTs (see `references/lrq-api.md`). The LRQ path handles anything the MCP times out on; there's no need to shrink the user's requested range to fit the MCP budget. -## Reference files — read as needed +## Reference files: read as needed Don't read these upfront. Read the one you need. - `references/lrq-api.md` - the canonical Long Running Query API runner: auth, body schema, forward-tag routing, rate-limit strategy, 30-second query expiration, slicing/parallelism patterns, two-JWT round-robin to exceed the per-user rate cap. Read before writing any programmatic PQ runner, or when a query silently returns `matchCount=0`. -- `references/syntax-and-operators.md` — full operator reference, identifier rules, shortcut fields, regex dialect, date/time formats, short-circuit `||`. -- `references/commands-reference.md` — deep dive on every command (join variants, subqueries, lookup / dataset / savelookup, transpose, compare, top, nolimit). Read before writing anything non-trivial with join, transpose, or compare. -- `references/functions-reference.md` — all built-in functions: string, numeric, JSON, network, URL, aggregate, array (method chaining), geolocation, timestamp, time, string-formatting. Read when you need a function and can't remember the name. -- `references/fields-and-schema.md` — common EDR/XDR field paths (`src.process.*`, `tgt.file.*`, `event.login.*`, `dst.ip.*`, `indicator.*`, etc.) and OCSF conventions. Read when you're not sure what field holds the thing you want. +- `references/syntax-and-operators.md`: full operator reference, identifier rules, shortcut fields, regex dialect, date/time formats, short-circuit `||`. +- `references/commands-reference.md`: deep dive on every command (join variants, subqueries, lookup / dataset / savelookup, transpose, compare, top, nolimit). Read before writing anything non-trivial with join, transpose, or compare. +- `references/functions-reference.md`: all built-in functions: string, numeric, JSON, network, URL, aggregate, array (method chaining), geolocation, timestamp, time, string-formatting. Read when you need a function and can't remember the name. +- `references/fields-and-schema.md`: common EDR/XDR field paths (`src.process.*`, `tgt.file.*`, `event.login.*`, `dst.ip.*`, `indicator.*`, etc.) and OCSF conventions. Read when you're not sure what field holds the thing you want. - `references/o365-fields.md`: Microsoft 365 / Exchange / Teams / SharePoint audit field shape, covering OCSF vs `unmapped.*` duality, fields that live only inside the JSON `message` blob, the discover-before-you-filter rule, send-style operations, RecordType, service-tier IP filtering, and investigation-noise separator. Read before writing any PQ against an M365 audit source. -- `references/detection-rules.md` — how to author PowerQuery Alerts / STAR / Custom Detection rule bodies, including the 1,000-row / 1 MB alert constraints and which PQ features are supported in alert context. -- `references/pitfalls.md` — curated list of common failures and their fixes (the `*`-as-filter trap, forgetting `|` before `join`, subquery position errors, memory-limit messages, `message contains` vs `* contains` on JSON-blob sources, and more). -- `references/automatic-lookups.md` — tenant-wide `/automaticLookups` enrichment that applies to every search and PowerQuery with no `| lookup` typed: config schema, the "output value fields must be unique across all specs" rule, the 100,000-row (unvalidated) / 5 MB / 50-column limits, deploy-via-SDL-API flow, verified `lookup`/`dataset` gotchas, and a full Windows Event Logs SID-to-username worked example. Read when the user wants to add a lookup for SID/username (or any key) that everyone should see automatically, or asks about `/automaticLookups`. -- `references/datasource-command.md` — the `| datasource [from ]` command for querying SentinelOne-managed inventory (Asset Inventory, Alerts, Vulnerabilities, Misconfigurations, Metering, SDL retention) that lives outside the event store. Covers datasource names, the `assets`/`metering` datasets, column discovery, time-series via `*_aggregated_snapshots`, and the tenant-validated specifics for asset enrichment: `from 'surface/identity'` vs sparse `from identity`, `from 'surface/endpoint'` vs sparse `from device`, single-quoting slash dataset names, empty-`riskFactors` (`"[]"`) suppression, and the `datasource ... | savelookup` pattern for building enrichment lookup tables. Read whenever the user asks about assets, identities, vulnerabilities, alerts inventory, or building an asset-enrichment lookup. +- `references/detection-rules.md`: how to author PowerQuery Alerts / STAR / Custom Detection rule bodies, including the 1,000-row / 1 MB alert constraints and which PQ features are supported in alert context. +- `references/pitfalls.md`: curated list of common failures and their fixes (the `*`-as-filter trap, forgetting `|` before `join`, subquery position errors, memory-limit messages, `message contains` vs `* contains` on JSON-blob sources, and more). +- `references/automatic-lookups.md`: tenant-wide `/automaticLookups` enrichment that applies to every search and PowerQuery with no `| lookup` typed: config schema, the "output value fields must be unique across all specs" rule, the 100,000-row (unvalidated) / 5 MB / 50-column limits, deploy-via-SDL-API flow, verified `lookup`/`dataset` gotchas, and a full Windows Event Logs SID-to-username worked example. Read when the user wants to add a lookup for SID/username (or any key) that everyone should see automatically, or asks about `/automaticLookups`. +- `references/datasource-command.md`: the `| datasource [from ]` command for querying SentinelOne-managed inventory (Asset Inventory, Alerts, Vulnerabilities, Misconfigurations, Metering, SDL retention) that lives outside the event store. Covers datasource names, the `assets`/`metering` datasets, column discovery, time-series via `*_aggregated_snapshots`, and the tenant-validated specifics for asset enrichment: `from 'surface/identity'` vs sparse `from identity`, `from 'surface/endpoint'` vs sparse `from device`, single-quoting slash dataset names, empty-`riskFactors` (`"[]"`) suppression, and the `datasource ... | savelookup` pattern for building enrichment lookup tables. Read whenever the user asks about assets, identities, vulnerabilities, alerts inventory, or building an asset-enrichment lookup. -## Examples library — read when a hunt matches +## Examples library: read when a hunt matches -- `examples/investigations.md` — ready-to-run investigation queries (PowerShell outbound, suspicious cmdline patterns, lateral movement, LOLBins, credential access, defense evasion, user-activity baselines, endpoint heartbeat, indicator prevalence). Each example includes a brief "what this finds" note and the full PQ. -- `examples/detection-library.md` — PQ bodies ready to paste into a STAR / Custom Detection / PowerQuery Alert, sized to stay within the 1,000-row/1 MB alert budget. Each entry names the MITRE technique and gives a `threshold` suggestion. -- `examples/behavioral-baselines.md` — statistical baselining recipes for any data source: per-day count slices, moving-average + stddev, z-score detection, silent-pair detection, day-of-week stratification. Read when the user asks to "baseline X behaviour", "detect anomalies in Y", "find users / hosts / IPs behaving differently than usual", or any equivalent. Source-agnostic, works on EDR, identity, network, cloud, email, or any custom log source. +- `examples/investigations.md`: ready-to-run investigation queries (PowerShell outbound, suspicious cmdline patterns, lateral movement, LOLBins, credential access, defense evasion, user-activity baselines, endpoint heartbeat, indicator prevalence). Each example includes a brief "what this finds" note and the full PQ. +- `examples/detection-library.md`: PQ bodies ready to paste into a STAR / Custom Detection / PowerQuery Alert, sized to stay within the 1,000-row/1 MB alert budget. Each entry names the MITRE technique and gives a `threshold` suggestion. +- `examples/behavioral-baselines.md`: statistical baselining recipes for any data source: per-day count slices, moving-average + stddev, z-score detection, silent-pair detection, day-of-week stratification. Read when the user asks to "baseline X behaviour", "detect anomalies in Y", "find users / hosts / IPs behaving differently than usual", or any equivalent. Source-agnostic, works on EDR, identity, network, cloud, email, or any custom log source. - `examples/o365-email-hunting.md`: workflow recipes for the most common M365 audit hunts, covering discovery-first patterns, "did user X send mail" questions, per-day cadence, outbound external mail with recipient extraction, top recipient domains, DLP correlation, "user appears but never as actor" attribution gap, and identity-investigation-noise separation. Use whenever the hunt is against an M365 audit source. ## When to reach for join vs union vs subquery These three blur together. Quick rules: -- **Subquery** (`field in (inner | columns field)`) — single-field "is this value in that set" filtering. Simplest and usually fastest. Use for allowlist / denylist / top-N-and-pivot patterns. -- **Join** — multi-field correlation where columns from both sides of a row must match each other (`on a.user = b.user, a.host = b.host`) *or* you need to bring extra columns from the second query into your output. -- **Union** — heterogeneous result sets that you want stacked as rows, possibly with rename/unification. Handy when the same logical event lives in two different log sources with different field names. +- **Subquery** (`field in (inner | columns field)`): single-field "is this value in that set" filtering. Simplest and usually fastest. Use for allowlist / denylist / top-N-and-pivot patterns. +- **Join**: multi-field correlation where columns from both sides of a row must match each other (`on a.user = b.user, a.host = b.host`) *or* you need to bring extra columns from the second query into your output. +- **Union**: heterogeneous result sets that you want stacked as rows, possibly with rename/unification. Handy when the same logical event lives in two different log sources with different field names. Prefer subqueries for exclusion/inclusion; reach for `join` when a row must "know" multiple things at once. @@ -266,7 +266,7 @@ A PowerQuery scheduled-rule body is more constrained than a hunt query: - No `nolimit`. - No `compare`, usually no `transpose` (depends on version). - The rule should produce one row per finding, with stable columns the detection engine can map to alert fields (e.g., `agent.uuid`, `endpoint.name`, `src.process.storyline.id`, `timestamp`). -- Keep the initial filter as specific as possible — this is what's evaluated in the summary service and is what gates cost. +- Keep the initial filter as specific as possible: this is what's evaluated in the summary service and is what gates cost. For all three rule types (API shapes, the correlation `correlationParams` block, the events/correlation S1QL escaping rule), detection patterns, and a checklist, see `references/detection-rules.md` and `examples/detection-library.md`. @@ -323,3 +323,8 @@ them is a Hyperautomation watchdog** (a scheduled or manual/run-now flow that ru an LRQ, then posts an OCSF alert to UAM); see the `sentinelone-hyperautomation` skill. This is why the UEBA SILENT / DORMANT detections, which anti-join live counts against the baseline with `left join` + `dataset` to find absent / zero-event pairs, run as HA watchdogs rather than scheduled rules. + +Scope note: `| lookup ... from
      ` (10,000 rows or fewer, exact-match keys) IS allowed in a +scheduled-rule body, but lookup tables / datatables are ACCOUNT-level objects: a rule whose body reads +one can only be created at account scope (`filter.accountIds`); site-scoped creation of lookup-reading +rules is invalid. diff --git a/plugins/s1-secops-skills/skills/powerquery/examples/behavioral-baselines.md b/plugins/s1-secops-skills/skills/powerquery/examples/behavioral-baselines.md index 9faafef..1ce240d 100644 --- a/plugins/s1-secops-skills/skills/powerquery/examples/behavioral-baselines.md +++ b/plugins/s1-secops-skills/skills/powerquery/examples/behavioral-baselines.md @@ -1,7 +1,7 @@ -# Behavioural baselining — statistical anomaly detection in PowerQuery +# Behavioural baselining: statistical anomaly detection in PowerQuery Recipes for building per-(principal, action) behavioural baselines and -detecting deviations from them. Source-agnostic — works on EDR, identity, +detecting deviations from them. Source-agnostic, works on EDR, identity, network, cloud, email, or any custom log source ingested into SDL. For the runner, the source schema discovery, and the productionised @@ -21,10 +21,10 @@ seen in live but never in the baseline window (new behaviour). ## Picking principal and action fields by source category -The "principal" is whoever the events are attributed to — user, host, -IP, role, account. The "action" is what they did — event type, API +The "principal" is whoever the events are attributed to, user, host, +IP, role, account. The "action" is what they did, event type, API call, command, status. Both vary per source. Pick from what the source -actually carries — schema discovery via `inspect_source.discover_schema()` +actually carries, schema discovery via `inspect_source.discover_schema()` in the mgmt-console-api skill picks these for you. Common defaults: | Source category | Typical principal | Typical action | Coalesce-style fallback | @@ -42,7 +42,7 @@ When in doubt, run `python scripts/inspect_source.py --source "" --window from the mgmt-console-api skill. It returns `prim_key` and `action_key` based on what the source actually populates. -## Building block 1 — per-day count slice +## Building block 1: per-day count slice Run this once per baseline day. Each call produces one row per `(action, principal)` pair seen on that day, with `day_count`. Replace @@ -60,7 +60,7 @@ dataSource.name = '' Set `startTime` / `endTime` on the LRQ call to a single 24h window. For a 7-day baseline run this 7 times; for 30-day, 30 times. Run up to -3 in parallel — per-user 3 req/sec rate cap is the binding constraint. +3 in parallel, per-user 3 req/sec rate cap is the binding constraint. See `references/lrq-api.md` in this skill for the slicing strategy. **Why slice rather than aggregate inside the query:** a single 7d (let @@ -69,7 +69,7 @@ busy data sources. Daily slicing keeps every call comfortably under the budget AND makes the per-day counts available for the client-side merge that follows. -## Building block 2 — live count +## Building block 2: live count Same shape, single 24h window ending at the detection moment. @@ -83,7 +83,7 @@ dataSource.name = '' | limit 5000 ``` -## Building block 3 — pooled baseline merge (Python pseudocode) +## Building block 3: pooled baseline merge (Python pseudocode) After collecting daily slices, compute mean + stddev per pair across ALL sampled days, zero-padding each pair's counts with 0 for every @@ -134,12 +134,12 @@ for r in live_rows: "direction": "SPIKE" if z > 0 else "DROP"}) ``` -## Building block 4 — silent-pair detector +## Building block 4: silent-pair detector A pair active in baseline but with zero events in live is a silence signal. The basic z-score formula handles this naturally: `(0 - avg) / sd` is negative; if `avg/sd >= 2`, the pair is statistically silent. But the -join in block 3 silently drops missing pairs — so you need an explicit +join in block 3 silently drops missing pairs, so you need an explicit walk over the baseline keys. ```python @@ -155,14 +155,14 @@ for key, b in baseline.items(): ``` In SOC terms: a critical user account that was active every weekday -but has zero events today — that's exactly the kind of insider-threat +but has zero events today; that's exactly the kind of insider-threat or account-takeover signal Method 1 should surface, and the bare two-side join misses it. -## Building block 5 — new-behaviour detector +## Building block 5: new-behaviour detector -A pair seen in live but with no baseline is "first observed in 7d/30d" -— could be a brand-new user, a fresh role being audited, a recon scan, +A pair seen in live but with no baseline is "first observed in 7d/30d": +could be a brand-new user, a fresh role being audited, a recon scan, or a real attacker. Surface separately from z-score anomalies. ```python @@ -176,7 +176,7 @@ for r in live_rows: ## Day-of-week stratification (production tier) -The pooled baseline pools weekday and weekend samples together — its +The pooled baseline pools weekday and weekend samples together, its stddev reflects both, which means a Sunday with reduced activity gets flagged as anomalous against a baseline averaged across 5 weekdays + 2 weekends. To eliminate the weekday/weekend false-positive, compute the @@ -190,7 +190,7 @@ per_pair_dow = defaultdict(lambda: defaultdict(list)) sampled_dows = defaultdict(int) # dow -> number of days of this dow in baseline window for slice_label, daily_slice in baseline_slices: - # slice_label encodes the day's date — extract the dow + # slice_label encodes the day's date: extract the dow day_start = parse_iso_date(slice_label) dow = day_start.weekday() # 0=Mon..6=Sun sampled_dows[dow] += 1 @@ -198,7 +198,7 @@ for slice_label, daily_slice in baseline_slices: key = (r["action"], r["principal"]) per_pair_dow[key][dow].append(r["day_count"]) -# Compute baseline per (pair, dow) — pad inactive sampled days with zeros +# Compute baseline per (pair, dow): pad inactive sampled days with zeros baseline_dow = {} for key, by_dow in per_pair_dow.items(): for dow, counts in by_dow.items(): @@ -212,13 +212,13 @@ for key, by_dow in per_pair_dow.items(): "n_active": n_active, "n_sampled": n_sampled} -# At detection time, the live window has its own day-of-week — +# At detection time, the live window has its own day-of-week; # only compare against the matching DoW baseline cell live_dow = parse_iso_date(live_window_start).weekday() for r in live_rows: key = (r["action"], r["principal"], live_dow) if key not in baseline_dow: - # No DoW-specific baseline — emerging behaviour on this DoW + # No DoW-specific baseline: emerging behaviour on this DoW continue b = baseline_dow[key] z = (r["live_count"] - b["avg"]) / b["sd"] @@ -228,7 +228,7 @@ for r in live_rows: The padding step matters: if a (pair, DoW) cell had counts on 4 of 4 sampled Sundays and zero on the other 0 sampled Sundays, the avg is `mean([c1, c2, c3, c4])`. If it had counts on 2 of 4 Sundays and zero -on 2, the avg is `mean([c1, c2, 0, 0])` — a tighter, more honest +on 2, the avg is `mean([c1, c2, 0, 0])`, a tighter, more honest representation. Without padding, the 2-of-4 case would look as "reliably active" as the 4-of-4 case, which is wrong. @@ -238,7 +238,7 @@ representation. Without padding, the 2-of-4 case would look as |---|---|---|---| | 7 days | 7 samples | Quick to compute, freshest signal | Stddev is noisy; bimodal weekday/weekend distributions look like normal variance | | 30 days | 30 samples | Stable stddev; surfaces weekend false-positives clearly enough to motivate DoW stratification | Slower to compute (30 LRQ slices); slow-moving drift may be missed | -| 30 days + DoW stratification | up to 30 / 7 ≈ 4-5 per DoW cell | Right tool — eliminates the weekday/weekend false-positive cleanly | Cells with `n_sampled <= 1` per DoW have no usable baseline; those pairs need to fall through to the new-behaviour detector | +| 30 days + DoW stratification | up to 30 / 7 ≈ 4-5 per DoW cell | Right tool: eliminates the weekday/weekend false-positive cleanly | Cells with `n_sampled <= 1` per DoW have no usable baseline; those pairs need to fall through to the new-behaviour detector | | 90 days | ~13 samples per DoW cell when stratified | Captures monthly seasonality and quarter-end spikes | More LRQ cost; baseline-write cadence becomes a job; consider `savelookup` and an incremental update path instead of full re-compute | For most SOC use cases, 30 days + DoW stratification is the production @@ -255,7 +255,7 @@ deserve different routing: |---|---|---|---| | Hard alert | `|z| >= 3.0` | Pooled or DoW-stratified, whichever is in production | Auto-page; high precision, low recall | | Soft alert / triage | `|z| >= 2.0` (DoW-stratified) | DoW-stratified preferred so weekend silences don't ping the queue | Tag for analyst review | -| Trend tuning | `|z| >= 1.0` | Pooled baseline | Analyst dashboard only — don't make this a rule | +| Trend tuning | `|z| >= 1.0` | Pooled baseline | Analyst dashboard only: don't make this a rule | | Silent-pair detector | `|z| >= 2.5` and `baseline_avg > ` | DoW-stratified silent path | Separate rule; tune `` per source so noise pairs don't dominate | | New-behaviour detector | n/a | New-behaviour detector | Separate rule; route to baseline-curation queue rather than alerting outright | @@ -294,7 +294,7 @@ dataSource.name = '' table from step 1 must be keyed on `(action, principal, dow)` with `dow` stored in the same `%a` format, not just `(action, principal)`. -3. **Set rule constraints** — for `queryType: "scheduled"`, +3. **Set rule constraints**: for `queryType: "scheduled"`, `treatAsThreat: "UNDEFINED"` and `networkQuarantine: false` are required. Use the alert severity field, not mitigation actions, to surface the verdict. @@ -303,8 +303,8 @@ dataSource.name = '' | User asks for... | Use | |---|---| -| "Write a baseline detection PQ" | This file (building blocks 1-5) — paste the placeholders into PQ templates | +| "Write a baseline detection PQ" | This file (building blocks 1-5): paste the placeholders into PQ templates | | "Run a 30-day baseline for `` end-to-end" | `sentinelone-mgmt-console-api` skill, `scripts/baseline_anomaly.py` | | "What field should I baseline on?" | `sentinelone-mgmt-console-api`, `scripts/inspect_source.py --source ""` | -| "Why does my baseline flag every Sunday?" | DoW stratification — section above | +| "Why does my baseline flag every Sunday?" | DoW stratification: section above | | "Author this as a STAR rule body" | `references/detection-rules.md` in this skill, plus the lookup pattern in section "Productionising" | diff --git a/plugins/s1-secops-skills/skills/powerquery/examples/detection-library.md b/plugins/s1-secops-skills/skills/powerquery/examples/detection-library.md index 83980da..e70098c 100644 --- a/plugins/s1-secops-skills/skills/powerquery/examples/detection-library.md +++ b/plugins/s1-secops-skills/skills/powerquery/examples/detection-library.md @@ -306,7 +306,7 @@ event.login.loginIsSuccessful = false | limit 100 ``` -**Note** — `by agent.uuid, src.endpoint.ip.address` gives one row per (target host, source IP) pair. Tune `fails >= 25` to your environment; most orgs want 10–50. +**Note**, `by agent.uuid, src.endpoint.ip.address` gives one row per (target host, source IP) pair. Tune `fails >= 25` to your environment; most orgs want 10-50. ### S1 built-in CredentialDumping indicator @@ -453,7 +453,7 @@ event.type in ('File Modification', 'File Rename') | limit 50 ``` -Backups and installers can also trip this — pair with an allowlist `lookup` on `src.process.image.path`. +Backups and installers can also trip this, pair with an allowlist `lookup` on `src.process.image.path`. ### Archive creation in unusual location (T1560) @@ -513,7 +513,7 @@ Fires when the same storyline that tripped the `CredentialDumping` indicator als ### Recon burst + remote logon -Matches a host doing recon AND then seeing a remote interactive logon — "someone ran whoami then logged into another box." +Matches a host doing recon AND then seeing a remote interactive logon, "someone ran whoami then logged into another box." ``` | inner join @@ -543,7 +543,7 @@ Matches a host doing recon AND then seeing a remote interactive logon — "someo ## Allowlisted rules -When a rule is otherwise correct but fires on 1–2 known-good patterns, use a `lookup` against a config datatable to suppress. +When a rule is otherwise correct but fires on 1-2 known-good patterns, use a `lookup` against a config datatable to suppress. ``` @@ -569,9 +569,9 @@ The allowlist datatable needs a key column `image_path` (the full process image ## Tuning checklist before deployment -1. Run the body in Event Search over 24h. Expect 0–5 rows in a typical environment; 10+ usually means the filter is too loose. -2. Confirm the `group` intermediate never exceeds 1,000 rows — the filter needs to cut hard upstream. +1. Run the body in Event Search over 24h. Expect 0-5 rows in a typical environment; 10+ usually means the filter is too loose. +2. Confirm the `group` intermediate never exceeds 1,000 rows: the filter needs to cut hard upstream. 3. Walk the threshold `count >= N` down until you see a row, then set `N` slightly above benign noise. 4. Run over 7 days to estimate alert volume (expected × 7 ≈ weekly). -5. If the rule depends on a 2-hop indicator chain, prefer `inner join` over layering filters — joins have bounded cost. +5. If the rule depends on a 2-hop indicator chain, prefer `inner join` over layering filters, joins have bounded cost. 6. Set the alert severity and MITRE mapping in the UI using the fields you've carried in the output. diff --git a/plugins/s1-secops-skills/skills/powerquery/examples/investigations.md b/plugins/s1-secops-skills/skills/powerquery/examples/investigations.md index 7c2c30e..790c9b6 100644 --- a/plugins/s1-secops-skills/skills/powerquery/examples/investigations.md +++ b/plugins/s1-secops-skills/skills/powerquery/examples/investigations.md @@ -7,7 +7,7 @@ Ready-to-run PowerQueries for hunts and triage. Each block has: - **Tune**: knobs to widen or narrow. - **Pivot**: where to go after results. -All queries assume the EDR or XDR data view unless noted. They're written to be safe to run on a busy tenant — `limit` is set, group keys are bounded, and intermediate cardinality stays under 100k. +All queries assume the EDR or XDR data view unless noted. They're written to be safe to run on a busy tenant, `limit` is set, group keys are bounded, and intermediate cardinality stays under 100k. --- @@ -23,8 +23,8 @@ All queries assume the EDR or XDR data view unless noted. They're written to be | limit 50 ``` -**Tune** — drop `agent.uuid` from the group keys for a cleaner host list. -**Pivot** — copy an `agent.uuid` and filter `agent.uuid = '…'` to scope further hunts to a single endpoint. +**Tune**, drop `agent.uuid` from the group keys for a cleaner host list. +**Pivot**, copy an `agent.uuid` and filter `agent.uuid = '…'` to scope further hunts to a single endpoint. ### Event volume by endpoint @@ -37,7 +37,7 @@ All queries assume the EDR or XDR data view unless noted. They're written to be | limit 25 ``` -`percent_of_total` and `running_percent` produce the Pareto view — the first few rows usually account for most of the volume. +`percent_of_total` and `running_percent` produce the Pareto view, the first few rows usually account for most of the volume. --- @@ -63,8 +63,8 @@ src.process.name in ('powershell.exe', 'pwsh.exe') | limit 100 ``` -**Tune** — drop the parent-not-in filter to also catch interactive shells; raise `net_out > 5` for higher-confidence beaconing. -**Pivot** — for a hit, query `src.process.storyline.id = '…' and event.type = 'IP Connect'` to see destinations. +**Tune**, drop the parent-not-in filter to also catch interactive shells; raise `net_out > 5` for higher-confidence beaconing. +**Pivot**, for a hit, query `src.process.storyline.id = '…' and event.type = 'IP Connect'` to see destinations. ### Suspicious office-spawned children (Maldoc style) @@ -86,11 +86,11 @@ src.process.name in ('powershell.exe', 'pwsh.exe', 'cmd.exe', 'wscript.exe', 'cs | limit 100 ``` -**Pivot** — for a hit, look at file activity in the same storyline: `src.process.storyline.id = '…' and event.category = 'file'`. +**Pivot**, for a hit, look at file activity in the same storyline: `src.process.storyline.id = '…' and event.category = 'file'`. ### Suspicious LOLBin invocations -**Use it when** broad LOLBin sweep — useful as a daily review. +**Use it when** broad LOLBin sweep, useful as a daily review. ``` event.type = 'Process Creation' @@ -140,7 +140,7 @@ src.process.cmdline matches '(?i)\\s-(e|en|enc|enco|encod|encode|encoded|encoded | limit 100 ``` -**Pivot** — copy the cmdline value into a base64 decoder. Most hits are admin scripts; the rest are payloads. +**Pivot**, copy the cmdline value into a base64 decoder. Most hits are admin scripts; the rest are payloads. --- @@ -183,8 +183,8 @@ event.login.type in ('NETWORK', 'NETWORK_CLEAR_TEXT', 'REMOTE_INTERACTIVE') | limit 50 ``` -**Tune** — add `endpoint.name` to `by` to get per-host-per-user. -**Pivot** — for a high-source-count user, drill down: `event.login.userName = 'svc-foo' | group ct = count() by src.endpoint.ip.address | sort -ct`. +**Tune**, add `endpoint.name` to `by` to get per-host-per-user. +**Pivot**, for a high-source-count user, drill down: `event.login.userName = 'svc-foo' | group ct = count() by src.endpoint.ip.address | sort -ct`. ### Failed logon spike (likely brute-force) @@ -226,7 +226,7 @@ indicator.name in ('CredentialDumping', 'LSASSAccess') | limit 100 ``` -**Pivot** — `src.process.storyline.id = '…'` to pull the full storyline. Normal admin tools occasionally trigger this; check `src.process.publisher` for "Microsoft" first. +**Pivot**, `src.process.storyline.id = '…'` to pull the full storyline. Normal admin tools occasionally trigger this; check `src.process.publisher` for "Microsoft" first. ### Suspicious credential utility use @@ -350,7 +350,7 @@ endpoint.name = 'EC2AMAZ-4158GRS' ``` **Note**, `net.bytes.tx` is a tenant-specific placeholder: it is not documented in `references/fields-and-schema.md` and silently returns null if the field does not exist on this tenant. Confirm the byte-counter field via schema discovery before trusting the `bytes` column. -**Tune** — replace `endpoint.name = '…'` with a broader filter for tenant-wide; that may need a longer window or tighter port filter. +**Tune**, replace `endpoint.name = '…'` with a broader filter for tenant-wide; that may need a longer window or tighter port filter. **Pivot**, the heavy-hitter destination IPs go straight into the configured threat-intel MCP for an IP reputation lookup (in the default bundle that's `mcp__virustotal__get_ip_report`; substitute the equivalent tool if you've connected a different provider). ### Persistent traffic to the same destination @@ -410,7 +410,7 @@ event.type in ('File Modification', 'File Rename') | limit 50 ``` -`200` is a starting threshold — tune for your tenant. A backup process can also trip this. +`200` is a starting threshold, tune for your tenant. A backup process can also trip this. --- diff --git a/plugins/s1-secops-skills/skills/powerquery/references/commands-reference.md b/plugins/s1-secops-skills/skills/powerquery/references/commands-reference.md index edd0dcd..024625d 100644 --- a/plugins/s1-secops-skills/skills/powerquery/references/commands-reference.md +++ b/plugins/s1-secops-skills/skills/powerquery/references/commands-reference.md @@ -4,19 +4,19 @@ In-depth documentation for every PowerQuery command. Read before writing anythin ## Table of contents -1. `filter` — add conditions -2. `columns` — project / rename / compute -3. `let` — add computed fields without dropping existing ones -4. `group` — aggregate -5. `sort` — order rows -6. `limit` / `nolimit` — size the output -7. `parse` — extract fields from text -8. `lookup` / `dataset` / `savelookup` — data tables -9. `join` — correlate subqueries -10. `union` — stack subqueries -11. `transpose` — pivot a column wider -12. `compare` — timeshift comparison -13. `top` — probabilistic top-N +1. `filter`: add conditions +2. `columns`: project / rename / compute +3. `let`: add computed fields without dropping existing ones +4. `group`: aggregate +5. `sort`: order rows +6. `limit` / `nolimit`: size the output +7. `parse`: extract fields from text +8. `lookup` / `dataset` / `savelookup`: data tables +9. `join`: correlate subqueries +10. `union`: stack subqueries +11. `transpose`: pivot a column wider +12. `compare`: timeshift comparison +13. `top`: probabilistic top-N 14. Subqueries (`field in (…)`) --- @@ -27,7 +27,7 @@ In-depth documentation for every PowerQuery command. Read before writing anythin | filter expr ``` -Keeps rows where `expr` evaluates truthy. The initial filter (everything before the first `|`) is implicit — you don't write `filter` for it. Use explicit `filter` later in the pipeline to prune based on computed or aggregated columns. +Keeps rows where `expr` evaluates truthy. The initial filter (everything before the first `|`) is implicit; you don't write `filter` for it. Use explicit `filter` later in the pipeline to prune based on computed or aggregated columns. Only the initial filter supports `* contains` and `* matches`. After the first pipe, search operators must name a field. @@ -74,7 +74,7 @@ Any numeric field named `timestamp` or ending in `.timestamp` renders as an ISO | let f1 = expr, "f 2" = expr2, … ``` -Adds computed fields. Unlike `columns`, `let` preserves the existing record — use it when you want to add a field without losing everything else. +Adds computed fields. Unlike `columns`, `let` preserves the existing record; use it when you want to add a field without losing everything else. Cannot overwrite a field that was produced by a preceding command; *can* overwrite a field that exists in the underlying event data. @@ -96,7 +96,7 @@ src.process.name contains 'powershell' dst.ip.address = * Without `by`, returns a single row (the aggregate over all input rows). With `by`, one row per distinct combination of the `by` expressions. -Like `columns`, `group` creates a new record set — fields not named in the `group` clause are unreachable afterward. +Like `columns`, `group` creates a new record set, fields not named in the `group` clause are unreachable afterward. ### Aggregate function cheat-sheet @@ -107,7 +107,7 @@ Like `columns`, `group` creates a new record set — fields not named in the `gr | `sum(x)`, `avg(x)`, `mean(x)`, `average(x)`, `min(x)`, `max(x)` | Standard | | `median(x)`, `p10 p50 p90 p95 p99 p999`, `pct(N, x)` | Percentiles | | `stddev(x)` | Standard deviation | -| `estimate_distinct(x)` | HyperLogLog distinct count (~1-2% error; exact for small sets). Don't use `count(distinct …)` — PQ doesn't have it. | +| `estimate_distinct(x)` | HyperLogLog distinct count (~1-2% error; exact for small sets). Don't use `count(distinct …)`, PQ doesn't have it. | | `array_agg(x[, max])`, `array_agg_distinct(x[, max])` | Collect values into an array (cap recommended; the row-byte limit is real) | | `any(x)` | Arbitrary (usually first-seen) value; handy for carrying a representative field through an aggregation | | `any_true(x)`, `all_true(x)` | Booleans | @@ -220,7 +220,7 @@ Best practices: defer the `lookup` until after a `group`, so the lookup is perfo [on key, a.x = b.y] ``` -The initial `|` is mandatory — `join (…)` without a pipe is parsed as a search term. Optional names (`a =`) let you disambiguate identical field names. +The initial `|` is mandatory, `join (…)` without a pipe is parsed as a search term. Optional names (`a =`) let you disambiguate identical field names. Match semantics: @@ -235,11 +235,11 @@ Match semantics: `on` sets the keys. Without `on`, the first row of the left is joined with the first row of the right (usually not what you want). -- `on fieldName` — same name in both queries -- `on a.x = b.y` — different names, with query aliases -- `on x, y, a.z = b.w` — multiple keys; supports the `=` form per-key +- `on fieldName`: same name in both queries +- `on a.x = b.y`: different names, with query aliases +- `on x, y, a.z = b.w`: multiple keys; supports the `=` form per-key -Can't match fields within the same query (`a.x = a.z` is not a legal join key). If you nest joins, inner joins can't export dotted field names — rename with `columns` before the outer join sees them. +Can't match fields within the same query (`a.x = a.z` is not a legal join key). If you nest joins, inner joins can't export dotted field names, rename with `columns` before the outer join sees them. Performance: start with the most selective (smallest-cardinality) subquery. PQ evaluates left-to-right. @@ -251,7 +251,7 @@ Performance: start with the most selective (smallest-cardinality) subquery. PQ e | union (query1), (query2), … // comma-separated branches in ONE union ``` -Stacks result sets as rows. Unlike SQL union, the queries can have different columns and different types — missing columns become null. Output has no sort order (add `sort` after). +Stacks result sets as rows. Unlike SQL union, the queries can have different columns and different types, missing columns become null. Output has no sort order (add `sort` after). A `union` takes at most **10 subqueries**; more than 10 returns HTTP 400. Write it as a leading command, `| union (q1),(q2),...`, at the start of the query. A subquery may synthesise rows, e.g. `( | limit 1 | columns a=2, b='bar' )`, which is how you build literal rows for a `savelookup`. Do not precede `union` with a main pipeline ending in `| limit` (e.g. ` | limit 1 | union (...)`); that returns HTTP 400 at any branch count. To combine more than 10 subqueries, nest: `| union ( | union (b1),...,(b10) | columns ... ), ( | union (b11),... | columns ... )`, keeping each inner union at 10 or fewer. When branches differ only by a matched literal, prefer a single scan with a `let` plus a ternary over a wide union. @@ -277,7 +277,7 @@ For EDR/XDR data with a single schema, `filter (a OR b)` is usually simpler than | transpose columnToPivot on keys limit N ``` -Pivots a column into many columns — each distinct value becomes a column. Useful for "one column per category" reports and for plotting one series per entity on a line chart. +Pivots a column into many columns, each distinct value becomes a column. Useful for "one column per category" reports and for plotting one series per entity on a line chart. Rules: - Must be the **last** command in the query. @@ -339,7 +339,7 @@ Requires S-25.3.6+ and the Network Discovery add-on. Supported in Singularity Op --- -## 14. Subqueries — `field in (…)` +## 14. Subqueries: `field in (…)` ``` field in (filter_expr | commands_that_yield_field) @@ -348,10 +348,10 @@ field in (filter_expr | commands_that_yield_field) Runs the inner query first, collects one column of values, and filters the outer query to rows where `field` is in that set. -Rules (enforce them — these are where subqueries go wrong): +Rules (enforce them; these are where subqueries go wrong): - The inner query **must** produce a column named the same as `field`. Use `columns field` or `group 1 by field` or `top N count() by field`. -- The `in` subquery must appear **before** any `group`, `sort`, or `limit` in the outer query. After aggregation, the left side's value is computed — PQ can't push the filter in. Use `join` for post-aggregation correlation. -- The inner query and the outer query are independent filters. If you also want the outer rows to have a condition (e.g., severity 5), state it outside the subquery too — `threat_level = 5 user in (threat_level = 5 | top 3 count() by user)`. +- The `in` subquery must appear **before** any `group`, `sort`, or `limit` in the outer query. After aggregation, the left side's value is computed, PQ can't push the filter in. Use `join` for post-aggregation correlation. +- The inner query and the outer query are independent filters. If you also want the outer rows to have a condition (e.g., severity 5), state it outside the subquery too, `threat_level = 5 user in (threat_level = 5 | top 3 count() by user)`. - Empty inner result → empty outer result. Good patterns: @@ -379,4 +379,4 @@ Subqueries use bloom filters automatically when the inner yields > 5,000 unique ### When to prefer `join` -Subqueries are for single-field membership. If a finding requires *row-level correlation* — "the same row must have `user=X` AND `cmdline=Y`" — use `join`. A subquery would treat those independently. +Subqueries are for single-field membership. If a finding requires *row-level correlation*, "the same row must have `user=X` AND `cmdline=Y`", use `join`. A subquery would treat those independently. diff --git a/plugins/s1-secops-skills/skills/powerquery/references/detection-rules.md b/plugins/s1-secops-skills/skills/powerquery/references/detection-rules.md index fb26d02..f558b3a 100644 --- a/plugins/s1-secops-skills/skills/powerquery/references/detection-rules.md +++ b/plugins/s1-secops-skills/skills/powerquery/references/detection-rules.md @@ -1,4 +1,4 @@ -# Detection rules — STAR / Custom Detection / PowerQuery Alerts +# Detection rules: STAR / Custom Detection / PowerQuery Alerts PowerQuery Alerts (and STAR / Custom Detection rules that use a PowerQuery body) have tighter limits than ad-hoc hunts. This file covers how to write detection rule bodies that are correct, cheap, and reliably fire. @@ -85,10 +85,10 @@ The detection engine matches against a SINGLE backslash. In the raw query text y - `nolimit` is not allowed. - Subqueries are not supported (the Summary service evaluates at ingest time and can't compute inner queries). - `compare` isn't useful here (alerts don't do timeshift). -- Depending on platform version, `transpose` may not be supported — prefer `group` + explicit columns. +- Depending on platform version, `transpose` may not be supported: prefer `group` + explicit columns. - The rule should return **one row per finding** with stable, well-named columns (the detection engine maps these to alert fields). -If you hit the 1,000-row limit on an intermediate `group`, the alert silently under-counts. This is dangerous for detections — validate the filter is selective enough before saving as a rule. +If you hit the 1,000-row limit on an intermediate `group`, the alert silently under-counts. This is dangerous for detections, validate the filter is selective enough before saving as a rule. ## Shape of a good rule @@ -109,10 +109,10 @@ If you hit the 1,000-row limit on an intermediate `group`, the alert silently un Why this shape: - `group by agent.uuid, src.process.storyline.id` gives one row per (endpoint, activity cluster). That matches what the detection engine wants. -- `any(endpoint.name)` / `any(src.process.cmdline)` carry human-readable context through the group. Don't use `array_agg` in an alert body — arrays aren't supported by `savelookup` and bloat the 1 MB budget. +- `any(endpoint.name)` / `any(src.process.cmdline)` carry human-readable context through the group. Don't use `array_agg` in an alert body, arrays aren't supported by `savelookup` and bloat the 1 MB budget. - `oldest(timestamp)` / `newest(timestamp)` are the canonical way to surface the detection window. They require *no* preceding `sort` / `group` / `limit` and must appear in the aggregation. - `filter count >= N` is the threshold. Keeping the threshold inside the query (rather than tuning outside) keeps the rule self-contained. -- A final `limit` caps the emitted alert count per evaluation window — keeps you honest about alert fatigue. +- A final `limit` caps the emitted alert count per evaluation window: keeps you honest about alert fatigue. ## Patterns @@ -150,7 +150,7 @@ event.login.loginIsSuccessful = false ### 3. Anomaly via combined signals -Combine filters with `and` in the initial filter, not `and` in a computed column — the initial filter is cheapest and gates what the Summary service scans. +Combine filters with `and` in the initial filter, not `and` in a computed column, the initial filter is cheapest and gates what the Summary service scans. ``` event.type = 'Process Creation' @@ -232,13 +232,13 @@ Renames are fine: the engine resolves by name, so `host = any(endpoint.name)` is ### Target Asset / entity binding (scheduled rules need `entityMappings`) -A scheduled (PowerQuery) rule **binds the Target Asset via an explicit `entityMappings` config — it is not automatic.** Out of the box a scheduled-rule alert shows "Unknown Device" (`agentUuid: null`); projecting `endpoint.name` / `agent.uuid` columns is necessary but **not sufficient on its own**. The rule must also declare which result columns are the entity, via the top-level `entityMappings` array (the **"Entity column mapping"** field in the rule UI): +A scheduled (PowerQuery) rule **binds the Target Asset via an explicit `entityMappings` config; it is not automatic.** Out of the box a scheduled-rule alert shows "Unknown Device" (`agentUuid: null`); projecting `endpoint.name` / `agent.uuid` columns is necessary but **not sufficient on its own**. The rule must also declare which result columns are the entity, via the top-level `entityMappings` array (the **"Entity column mapping"** field in the rule UI): ```json "entityMappings": [ { "columnName": "endpoint.name" }, { "columnName": "src_ip" } ] ``` -Working recipe for a scheduled rule with a mapped asset — two parts that must agree: +Working recipe for a scheduled rule with a mapped asset, two parts that must agree: 1. Project the entity column(s) in the query body, e.g. `| columns endpoint.name = device.hostname, src_ip = src_endpoint.ip, ...`. 2. Set `data.entityMappings` to those exact output column names: `[{ "columnName": "endpoint.name" }, { "columnName": "src_ip" }]`. @@ -264,7 +264,7 @@ Other paths that bind the entity: `storylineId` is NOT required for binding. -## Scheduled detection rule — full option set (UI ↔ API) +## Scheduled detection rule: full option set (UI ↔ API) Every option on the rule's Overview page maps to a field in the `POST/PUT /cloud-detection/rules` body (`data` object unless noted). Confirmed against a live rule. @@ -330,7 +330,7 @@ The query string goes inside `data.scheduledParams.query`, not in `data.s1ql`. T Notes on the shape: - **Scope:** `filter` accepts `accountIds` or `siteIds`. Pick the layer the rule should fire at. Account-level rules cover all sites under the account. -- **Threshold:** the trigger threshold is the alert-firing threshold (`scheduledParams.threshold`), not the internal `| filter` inside the PowerQuery. `{value: 0, operator: "Greater"}` means "alert if the PQ returns any rows at all" — combined with an internal `| filter hits >= N`, you get N as the effective threshold. +- **Threshold:** the trigger threshold is the alert-firing threshold (`scheduledParams.threshold`), not the internal `| filter` inside the PowerQuery. `{value: 0, operator: "Greater"}` means "alert if the PQ returns any rows at all", combined with an internal `| filter hits >= N`, you get N as the effective threshold. - **Run interval and lookback:** match these (e.g. 60 / 60) for non-overlapping evaluation. Setting `lookbackWindowMinutes` higher than `runIntervalMinutes` causes overlap and duplicate alerts. - **`status`:** new rules land as `Draft` on creation regardless of the requested status. Enable separately with `PUT /web/api/v2.1/cloud-detection/rules/enable` (body `{"filter": {"ids": [...], "accountIds": [...]}}`). - **No `disableAgentMitigation` field:** that property is not part of the scheduled-rule schema. Including it returns HTTP 400 `Unknown field`. Cloud-source PQ rules do not need it. @@ -350,7 +350,7 @@ PUT /web/api/v2.1/cloud-detection/rules/enable # body: {"filter": {"ids": [ PUT /web/api/v2.1/cloud-detection/rules/disable # same shape ``` -`GET /cloud-detection/rules?ids=...&accountIds=...&isLegacy=false` requires `isLegacy=false` for scheduled rules — without it the list call returns zero results even when the rules exist and the POST response gave you their IDs. +`GET /cloud-detection/rules?ids=...&accountIds=...&isLegacy=false` requires `isLegacy=false` for scheduled rules, without it the list call returns zero results even when the rules exist and the POST response gave you their IDs. `isLegacy` is a GET-listing query parameter ONLY. Do NOT put it in the `enable` / `disable` PUT body: `{"filter": {"ids": [...], "isLegacy": false}}` returns `400 filter: isLegacy: Unknown field`. The enable/disable filter accepts `ids` plus an optional scope (`accountIds` / `siteIds`); `ids` alone is sufficient because rule IDs are globally unique. Tenant-validated 2026-06-16: `PUT /cloud-detection/rules/enable` with `{"filter": {"ids": [...]}}` returned `{"affected": N}`. @@ -371,8 +371,8 @@ Do not ingest, do not judge a rule "not firing", and do not strip attributes to ## Testing a rule body before deploying -1. Run it with the Purple MCP `powerquery` tool over the last 24 hours. Confirm it parses and returns 0–N rows (not an error, not thousands). -2. Confirm the threshold (`filter count >= N`) doesn't zero out the result for a known-good example — walk `N` down until you see a row, then set `N` slightly above what a benign environment would produce. +1. Run it with the Purple MCP `powerquery` tool over the last 24 hours. Confirm it parses and returns 0-N rows (not an error, not thousands). +2. Confirm the threshold (`filter count >= N`) doesn't zero out the result for a known-good example, walk `N` down until you see a row, then set `N` slightly above what a benign environment would produce. 3. Run it over 7 days for baseline volume: expected row count × 7 ≈ what a week of alerting will look like. 4. If the `group`-intermediate ever exceeds 1,000 rows in a 24-hour window, tighten the initial filter. diff --git a/plugins/s1-secops-skills/skills/powerquery/references/fields-and-schema.md b/plugins/s1-secops-skills/skills/powerquery/references/fields-and-schema.md index 46df054..698587b 100644 --- a/plugins/s1-secops-skills/skills/powerquery/references/fields-and-schema.md +++ b/plugins/s1-secops-skills/skills/powerquery/references/fields-and-schema.md @@ -8,7 +8,7 @@ event.type = 'Process Creation' | columns timestamp, endpoint.name, src.process.name, src.process.cmdline ``` -and look at what comes back. Typos in field names don't raise errors — missing fields become `null`, so the query "works" but returns nulls. +and look at what comes back. Typos in field names don't raise errors, missing fields become `null`, so the query "works" but returns nulls. --- @@ -21,7 +21,7 @@ and look at what comes back. Typos in field names don't raise errors — missing | `event.id` | Unique event ID | | `event.time` | Human-readable event time | | `timestamp` | Nanoseconds since epoch; renders as datetime in results | -| `agent.uuid` | SentinelOne Agent UUID — the stable per-endpoint identifier | +| `agent.uuid` | SentinelOne Agent UUID: the stable per-endpoint identifier | | `agent.version` | Agent version string | | `endpoint.name` | Endpoint hostname | | `endpoint.os.name` | OS name | @@ -140,7 +140,7 @@ SentinelOne's built-in behavioural indicators. |---|---| | `indicator.category` | `InfoStealer`, `Evasion`, `Exploitation`, `General`, `Injection`, `Malware`, `Persistence`, `Privilege Escalation`, `RansomwareProcess`, `Ransomware` … | | `indicator.name` | Specific indicator (`EventViewerTampering`, `PreloadInjection`, `RawVolumeAccess`, …) | -| `indicator.description` | Longer description — use `contains` on this to find MITRE technique references, e.g., `indicator.description contains 'T1082'` | +| `indicator.description` | Longer description: use `contains` on this to find MITRE technique references, e.g., `indicator.description contains 'T1082'` | | `indicator.metadata` | Additional context | --- @@ -174,7 +174,7 @@ Repeated from the syntax reference because they save real time: ## OCSF alignment -SentinelOne fields are increasingly OCSF-aligned. Many queries also work with OCSF categories (`event.category`). When exploring a new data source in **All Data** view, read a couple of raw events first to see which fields are populated — log sources outside EDR/XDR (e.g., SentinelOne Collector logs) don't follow the EDR schema and often put the unparsed text in `message`. +SentinelOne fields are increasingly OCSF-aligned. Many queries also work with OCSF categories (`event.category`). When exploring a new data source in **All Data** view, read a couple of raw events first to see which fields are populated, log sources outside EDR/XDR (e.g., SentinelOne Collector logs) don't follow the EDR schema and often put the unparsed text in `message`. For those `message`-style sources, use: - `$"regex"` shorthand for `message matches "regex"` (single-escape) @@ -237,6 +237,6 @@ Source: used throughout the `sentinelone-sdl-solutions` ingest-health-monitoring If you don't know the field name, either: -1. **Use Purple AI first.** `mcp__purple-mcp__purple_ai(query="show me processes that accessed lsass.exe")` — it knows the schema and returns a working PQ. -2. **Explore a single event.** `event.type = 'Registry Value Modified' | limit 1` — the Event Search UI will show every parsed field; in the MCP call, follow up with `| columns registry.keyPath, registry.valueName, registry.value, timestamp` to confirm your guesses. +1. **Use Purple AI first.** `mcp__purple-mcp__purple_ai(query="show me processes that accessed lsass.exe")`; it knows the schema and returns a working PQ. +2. **Explore a single event.** `event.type = 'Registry Value Modified' | limit 1`, the Event Search UI will show every parsed field; in the MCP call, follow up with `| columns registry.keyPath, registry.valueName, registry.value, timestamp` to confirm your guesses. 3. **Use `* contains 'value'` as an initial filter** to find which fields mention a known value, then pivot. diff --git a/plugins/s1-secops-skills/skills/powerquery/references/functions-reference.md b/plugins/s1-secops-skills/skills/powerquery/references/functions-reference.md index ffd6b71..243bb60 100644 --- a/plugins/s1-secops-skills/skills/powerquery/references/functions-reference.md +++ b/plugins/s1-secops-skills/skills/powerquery/references/functions-reference.md @@ -6,7 +6,7 @@ All built-in functions you can use in PowerQuery expressions. Read when you need 1. Numeric 2. String (and method chaining) -3. `format()` — printf-style strings +3. `format()`: printf-style strings 4. JSON 5. Network and URL 6. Aggregate (across groups) vs. running / overall (across rows) @@ -20,7 +20,7 @@ All built-in functions you can use in PowerQuery expressions. Read when you need `abs(x)`, `ceiling(x)`, `floor(x)`, `min(x, y)`, `max(x, y)`, `sqrt(x)`, `exp(x)`, `ln(x)`, `log(x)`, `log(x, y)`, `pow(x, y)`. -These are element-wise — don't confuse with the `min()` / `max()` aggregation functions used inside `group`. `min(x, y)` with two args is the function; `min(x)` inside `group` is the aggregate. +These are element-wise; don't confuse with the `min()` / `max()` aggregation functions used inside `group`. `min(x, y)` with two args is the function; `min(x)` inside `group` is the aggregate. --- @@ -40,7 +40,7 @@ These are element-wise — don't confuse with the `min()` / `max()` aggregation | `bool(x)` | Coerce to boolean. `0`, `null`, `""` → false | | `string(x)` | Stringify (useful for large numbers) | | `number(x)` | Parse to number. Null / missing → 0; unparseable → NaN | -| `pad_version(x)` | Zero-pad each dotted segment to 5 digits — enables lexicographic version sort | +| `pad_version(x)` | Zero-pad each dotted segment to 5 digits: enables lexicographic version sort | | `replace(x, y, z)` | Regex replace in `x`. `y` is a regex (case-insensitive). Use `$1` / `$2` for capture references, `\$` for a literal `$` | > **String-function gotchas (tenant-validated 2026-06-16):** the substring function is `substr`, not `substring` (`substring(...)` returns `400 Unknown function 'substring'`). Because `replace`'s pattern is a regex, a lone bracket errors: `replace(x, '[', '')` returns `error parsing regexp: missing closing ]`. To strip literal `[` / `]` without escaping, use the character class `[][]` (a `]` placed first in a class is literal), e.g. `replace(x, '[][]', '')`. @@ -76,13 +76,13 @@ Specifiers: Flags (between `%` and the letter): `-` left-justify, `+` force sign, ` ` (space) space before positive, `0` zero-pad, `,` thousands separator (digits only), `(` parenthesize negatives. -`format()` is slow — use it after a `group` or `limit` so you're only formatting tens of rows, not millions. +`format()` is slow; use it after a `group` or `limit` so you're only formatting tens of rows, not millions. --- ## 4. JSON -`json_object_value(obj, "field")` — parse a JSON string, return the named field's value. Returns a primitive or an array of strings. +`json_object_value(obj, "field")`, parse a JSON string, return the named field's value. Returns a primitive or an array of strings. ``` | columns obj = '{"users":[{"name":"A"},{"name":"B"}]}' @@ -123,8 +123,8 @@ See [commands-reference §4](commands-reference.md#4-group) for the full list. T `avg(x)` is the group mean and `stddev(x)` is the sample standard deviation; percentiles support `p10/p50/p90/p95/p99/p999` and the general `pct(N, x)`. Tenant-validated. **Avoid** on general tenants (return 500 error on this deployment even though docs list them): -- `percentile(x, N)` — use `p50` / `p95` / `p99` instead. -- `first(x)` / `last(x)` — use `min_by(x, timestamp)` / `max_by(x, timestamp)`. These are more explicit and always work. +- `percentile(x, N)`: use `p50` / `p95` / `p99` instead. +- `first(x)` / `last(x)`: use `min_by(x, timestamp)` / `max_by(x, timestamp)`. These are more explicit and always work. ### Row-level / overall (no `group` needed) @@ -150,7 +150,7 @@ Useful for Pareto-style "top contributors" reports: ## 7. Array (beta) -Array functions are only in PowerQueries (not alerts). Arrays cap at 8 MB. Create with `array(…)` (up to 50 values), `array_from_json(…)` (JSON capped at 1 MB), or — much more commonly — via `array_agg()` / `array_agg_distinct()` inside `group`. +Array functions are only in PowerQueries (not alerts). Arrays cap at 8 MB. Create with `array(…)` (up to 50 values), `array_from_json(…)` (JSON capped at 1 MB), or, much more commonly, via `array_agg()` / `array_agg_distinct()` inside `group`. ### Creation / conversion @@ -163,14 +163,14 @@ Array functions are only in PowerQueries (not alerts). Arrays cap at 8 MB. Creat | Function | Meaning | |---|---| | `concat(arr)` | Append elements | -| `distinct()` | Unique (numbers and strings are distinct — `5 != "5"`) | +| `distinct()` | Unique (numbers and strings are distinct: `5 != "5"`) | | `expand()` | Explode: one row per element | | `filter(func)` | Keep elements where lambda returns truthy | | `intersect(arr)` | Elements present in both | | `map(func)` | Transform each element | | `set(i, v)` | Replace at index (negative from end; out-of-bounds is a no-op) | | `slice(from[, to])` | Subrange; negatives count from end | -| `sort()`, `sort_desc()` | Sort (UTF-8 bytewise — case-sensitive) | +| `sort()`, `sort_desc()` | Sort (UTF-8 bytewise: case-sensitive) | | `zip(arr, func)` | Element-wise function of two arrays | ### Array-to-primitive diff --git a/plugins/s1-secops-skills/skills/powerquery/references/pitfalls.md b/plugins/s1-secops-skills/skills/powerquery/references/pitfalls.md index 33286ad..65e037e 100644 --- a/plugins/s1-secops-skills/skills/powerquery/references/pitfalls.md +++ b/plugins/s1-secops-skills/skills/powerquery/references/pitfalls.md @@ -7,7 +7,7 @@ Curated failure modes. When a PowerQuery is misbehaving, check this list before ### `*` alone as a filter returns 500 ``` -* ← NOT a valid initial filter — HTTP 500 ("Don't understand [*]") +* ← NOT a valid initial filter: HTTP 500 ("Don't understand [*]") * | limit 5 ← same ``` @@ -22,11 +22,11 @@ dataSource.name=* | group count=count() by dataSource.name | sort -count | limit event.type=* | limit 5 ``` -This is NOT an all-column text search — it checks whether a specific attribute is present. +This is NOT an all-column text search; it checks whether a specific attribute is present. **2. All-column text search: `* contains 'value'` or `* matches 'regex'`** -Searches ALL indexed fields across the event. Use when you need to find a specific string anywhere in the event — what users describe as "search all logs for X", "all column search", "find this text anywhere". Only valid as the **initial filter** (before the first `|`). Not valid in `| filter …` after a pipe, and not valid in Alerts. +Searches ALL indexed fields across the event. Use when you need to find a specific string anywhere in the event, what users describe as "search all logs for X", "all column search", "find this text anywhere". Only valid as the **initial filter** (before the first `|`). Not valid in `| filter …` after a pipe, and not valid in Alerts. ``` dataSource.name='MySource' * contains 'evil.com' // string in any field on a source @@ -50,8 +50,8 @@ Use when you want all events with no initial predicate. PowerQuery uses `-`/`+` prefix for sort direction. `desc` and `asc` are not valid keywords and cause the LRQ API to return HTTP 500 "Unable to parse the entire query". ``` -| sort count desc ← HTTP 500 — "desc" is not valid PowerQuery syntax -| sort timestamp asc ← HTTP 500 — "asc" is not valid PowerQuery syntax +| sort count desc ← HTTP 500, "desc" is not valid PowerQuery syntax +| sort timestamp asc ← HTTP 500, "asc" is not valid PowerQuery syntax ``` Fix: use `-` for descending, `+` for ascending (ascending is also the default when no prefix is given). @@ -62,7 +62,7 @@ Fix: use `-` for descending, `+` for ascending (ascending is also the default wh | sort -hits, +endpoint.name ``` -**This applies to Purple AI generated queries too.** Purple AI frequently produces `sort field desc` — always correct it to `sort -field` before running via the LRQ API or `powerquery_run`. +**This applies to Purple AI generated queries too.** Purple AI frequently produces `sort field desc`; always correct it to `sort -field` before running via the LRQ API or `powerquery_run`. ### `join` without a leading pipe @@ -118,7 +118,7 @@ user in (action='login' | top 10 count() by user) #hash = * ← 500 ``` -The docs list `#cmdline`, `#name`, `#hash`, `#ip`, `#storylineid`, `#username`, `#dns` as multi-field shortcuts. In practice, they're unreliable across tenants — in this deployment they all return 500 as initial filters. Fix: use the explicit field. +The docs list `#cmdline`, `#name`, `#hash`, `#ip`, `#storylineid`, `#username`, `#dns` as multi-field shortcuts. In practice, they're unreliable across tenants; in this deployment they all return 500 as initial filters. Fix: use the explicit field. ``` src.process.cmdline contains 'python' @@ -140,7 +140,7 @@ Fix: the source goes at the end with `from`. | parse "$bin$ $args$" from src.process.cmdline ``` -### `timebucket` in `group by` without an alias — "undefined field 'timebucket'" +### `timebucket` in `group by` without an alias: "undefined field 'timebucket'" ``` | group count=count() by timebucket('1h') ← 500 "undefined field 'timebucket'" @@ -152,7 +152,7 @@ Without an alias, PQ treats the bare name `timebucket` as a field lookup rather | group count=count() by bucket=timebucket('1h') | sort +bucket ``` -Same rule applies to any function used as a group key — `lower(field)`, `net_url_path(url)`, `strftime(ts, '%Y-%m-%d')`, etc. If no alias is assigned, the function name is interpreted as a field identifier. +Same rule applies to any function used as a group key, `lower(field)`, `net_url_path(url)`, `strftime(ts, '%Y-%m-%d')`, etc. If no alias is assigned, the function name is interpreted as a field identifier. ### Non-existent functions: `formatdate`, `floor_time`, and similar @@ -204,7 +204,7 @@ expression usable in a computed column. : actor.user.name ← HTTP 500 ``` -Fix — bare-field truthy test (the field's null-or-truthy value drives the +Fix, bare-field truthy test (the field's null-or-truthy value drives the ternary directly): ``` @@ -217,7 +217,7 @@ This is the working coalesce idiom. Chain ternaries to fall back across N fields. Use the same pattern any time you'd reach for `coalesce` / `ifnull` / `nvl` in SQL. -### `sum(if(...))` for conditional counts — use `count(predicate)` instead +### `sum(if(...))` for conditional counts: use `count(predicate)` instead ``` | group critical = sum(if(severity_ in:anycase ('Critical'), 1, 0)) by host ← invalid @@ -237,12 +237,12 @@ to pass a predicate directly to `count()`: Works for any boolean expression, including `in:anycase`, `contains`, `matches`, and arithmetic comparisons. -### `severity_` (and other trailing-underscore fields) — SDL reserved-field rewrite +### `severity_` (and other trailing-underscore fields): SDL reserved-field rewrite When a parser ingests source data carrying a field name that collides with an SDL reserved name (`severity`, `status`, `classification`, `category`, etc.), the field is automatically renamed by appending `_`. The underscored form -`severity_` IS the canonical, queryable field — not a sparse alternate to +`severity_` IS the canonical, queryable field, not a sparse alternate to `severity`. There is no non-underscored `severity` field on alert / vulnerability / @@ -252,9 +252,9 @@ trailing-underscore field name encountered in raw events. The numeric OCSF variants (`severity_id` 0-5, `status_id`, `class_uid`) live alongside the underscored string fields and are usually the better choice for filters. -### `severity_` carries mixed casing — `transpose` produces 8 columns instead of 4 +### `severity_` carries mixed casing: `transpose` produces 8 columns instead of 4 -Same source pipeline, different upstream casing — values like `Critical`, +Same source pipeline, different upstream casing, values like `Critical`, `CRITICAL`, `High`, `HIGH`, `Medium`, `MEDIUM`, `Low`, `LOW` co-exist in the same `severity_` column. @@ -263,7 +263,7 @@ same `severity_` column. | transpose severity_ on timestamp ← produces 8 columns ``` -Fix — normalise before grouping: +Fix, normalise before grouping: ``` | let sev = lower(severity_) @@ -282,12 +282,12 @@ severity_id >= 4 | transpose severity_id on timestamp ← columns are 4, 5 ``` -### Numeric counters indexed as string — column-type lock — wrap in `number()` as a failsafe +### Numeric counters indexed as string, column-type lock, wrap in `number()` as a failsafe SDL/Scalyr indexes columns at first-write and locks the type. Once a numeric field has been written as string (because a parser declared `type: "string"` or the source data has been ingested untyped), the column stays string forever. -Subsequent writes — even from a parser declaring `type: "long"` — get coerced +Subsequent writes, even from a parser declaring `type: "long"`, get coerced back to string at index time. Numeric aggregation then breaks silently: ``` @@ -299,7 +299,7 @@ dataSource.name='FortiGate' unmapped.action='close' The values ARE there (you can see them in Event Search), but `sum()` / `avg()` / `max()` / `>=` predicates can't operate on a string-typed column. -**Failsafe pattern — cast at query time with `number()`:** +**Failsafe pattern, cast at query time with `number()`:** ``` dataSource.name='FortiGate' unmapped.action='close' @@ -318,7 +318,7 @@ preemptively to: | Field family | Why | |---|---| | `severity_id`, `status_id`, `class_uid`, `type_uid`, `category_uid` | OCSF numerics, but column-type can drift between tenants | -| `traffic.bytes_in`, `traffic.bytes_out`, `traffic.packets_in`, `traffic.packets_out`, `unmapped.duration` | FortiGate marketplace parser declared these as `string` for many tenant generations — string column lock is widespread | +| `traffic.bytes_in`, `traffic.bytes_out`, `traffic.packets_in`, `traffic.packets_out`, `unmapped.duration` | FortiGate marketplace parser declared these as `string` for many tenant generations, string column lock is widespread | | Any vendor field carrying counts or sizes | If a parser ever wrote a non-numeric token (`"-"`, `"unknown"`, blank), the column is locked string | Same trick works for arithmetic comparisons and sorts: @@ -344,10 +344,10 @@ dataSource.name='alert' PowerQuery does not accept `[N]` array indexing in `columns`. The V1 `query` API (used for schema discovery) flattens nested arrays into display keys like -`resources[0].name` — those flattened keys are NOT valid PowerQuery field +`resources[0].name`; those flattened keys are NOT valid PowerQuery field paths. -Fix — for first-element access inside a query, use `array_get` in a `let`: +Fix, for first-element access inside a query, use `array_get` in a `let`: ``` | let first_resource = array_get(resources, 0) @@ -390,7 +390,7 @@ Fix: double-escape everywhere except the `$"…"` shorthand. src.process.cmdline matches "\\d+" ``` -Windows paths — four-ish backslashes for a literal `\`: +Windows paths, four-ish backslashes for a literal `\`: ``` tgt.file.path matches '^C:\\\\Windows\\\\Temp\\\\[a-z]{8}\\.tmp$' @@ -409,7 +409,7 @@ If a query "misses" something you can see in the data, check whether case was th - `field = *` → field is present (non-null). - `!(field = *)` → field is null / missing. -- `field = null` — only valid as a boolean test *after* the field has been computed by a preceding command (e.g., a left join or a `let`). +- `field = null`: only valid as a boolean test *after* the field has been computed by a preceding command (e.g., a left join or a `let`). - `in (…)` cannot match null. If null should count as a match, use `OR !(field = *)`. ### `x not in (...)` parses without error and silently returns 0 rows @@ -423,17 +423,17 @@ event.type = 'Process Creation' ### `count(x)` doesn't count nulls; does count zero / false -`count()` counts rows. `count(expr)` counts rows where `expr` is truthy. Zero, `false`, and empty string are falsy — they DON'T count. But null is also falsy, so this matches intuition. +`count()` counts rows. `count(expr)` counts rows where `expr` is truthy. Zero, `false`, and empty string are falsy; they DON'T count. But null is also falsy, so this matches intuition. If you want "count of rows where `login_success = false`", write `count(login_success = false)`, not `count(login_success) - count(login_success = true)`. -### `if x = y and z = w` short-circuits — but so does `or` +### `if x = y and z = w` short-circuits, but so does `or` `||` returns the first truthy *value*, not a boolean. `a || b` with `a = "0"` returns `"0"` (non-empty string, truthy), not a boolean `true`. If you want boolean behaviour, wrap with `bool(…)`. ### `newest()` / `oldest()` after `sort` fails silently -These functions require the original timestamp ordering of events. If you `sort` (or `group`, or `limit`) before using them, they produce null or wrong results. Use them in the same `group` as the aggregation — don't aggregate in two stages. +These functions require the original timestamp ordering of events. If you `sort` (or `group`, or `limit`) before using them, they produce null or wrong results. Use them in the same `group` as the aggregation; don't aggregate in two stages. ## Performance / memory @@ -450,7 +450,7 @@ Intermediate `group` table hit 100,000 rows. Fixes in order of preference: 3. Pre-filter with `| filter … | group 1 by key` as a subquery to prune before the heavy group. 4. Switch to `| top K` (probabilistic). -If all else fails and you need exact numbers over a long range, `| nolimit` — but this is slow and serializes across the tenant. +If all else fails and you need exact numbers over a long range, `| nolimit`, but this is slow and serializes across the tenant. ### Long time range timing out @@ -467,10 +467,10 @@ Some data sources (O365 audit, generic webhook ingest, custom HEC sources) keep Fix: use the multi-field shortcut `* contains 'value'` (or `* matches 'regex'`) in the initial filter. It searches across all indexed fields, including parsed scalars from the source, and is dramatically faster than scanning a single concatenated blob. ``` -// slow — single-column substring scan +// slow: single-column substring scan dataSource.name='' message contains 'value' -// fast — multi-field index search +// fast: multi-field index search dataSource.name='' * contains 'value' ``` @@ -478,13 +478,13 @@ Same rule applies to value-anywhere lookups regardless of the source: when a use Three caveats worth remembering: -- `* contains` / `* matches` only work in the **initial** filter — before the first `|`. They cannot be used in `| filter …` after a pipe, in Alerts, or after a `| group` / `| columns` that has reshaped the row. +- `* contains` / `* matches` only work in the **initial** filter: before the first `|`. They cannot be used in `| filter …` after a pipe, in Alerts, or after a `| group` / `| columns` that has reshaped the row. - If the value really only lives inside a JSON blob (e.g., a deeply nested key not exposed as a parsed field), neither `* contains` nor `message contains` will surface it efficiently. Pull rows with a narrower predicate (event type, actor, time slice) and post-process the blob in Python. - Negation against a JSON blob (e.g., "recipients NOT in ``") is not expressible inline. Filter by the positive predicate, then post-process to apply the exclusion. ### High-cardinality `by` -Grouping by full URL or full command line yields one row per variant — useless for summaries and likely to hit memory limits. Prefer: +Grouping by full URL or full command line yields one row per variant, useless for summaries and likely to hit memory limits. Prefer: - URL path instead of full URL (`net_url_path(url.address)`). - `src.process.name` instead of `src.process.cmdline`. @@ -521,7 +521,7 @@ When editing `/automaticLookups`, every output value field name must be unique a ## LRQ / engine functions -### `powerquery_run` time parameters — silent fallback to full-history scan +### `powerquery_run` time parameters: silent fallback to full-history scan The `powerquery_run` MCP tool exposes two time-scoping parameters: @@ -530,13 +530,13 @@ The `powerquery_run` MCP tool exposes two time-scoping parameters: | `hours` | Positive number (decimal ok) | `hours=1`, `hours=0.5` | | `startTime` / `endTime` | ISO-8601 UTC string | `startTime="2026-05-26T13:00:00Z"` | -**Critical:** an invalid value is silently ignored — the tool does NOT raise an error. It defaults to the last 24 hours or longer. This means: +**Critical:** an invalid value is silently ignored; the tool does NOT raise an error. It defaults to the last 24 hours or longer. This means: -- `startTime="10 min"` — not ISO-8601, silently ignored → full history scan -- `start_time="10m"` — wrong parameter name, silently ignored → full history scan -- `hours=0.17` — valid (≈ 10 minutes), correctly scoped +- `startTime="10 min"`: not ISO-8601, silently ignored → full history scan +- `start_time="10m"`: wrong parameter name, silently ignored → full history scan +- `hours=0.17`: valid (≈ 10 minutes), correctly scoped -When a bare `| group count()` with no `timebucket` dimension runs against a silently-expanded window, it aggregates across ALL SDL history for that source — not just the intended window. The result looks plausible (a single number) but can be off by orders of magnitude. +When a bare `| group count()` with no `timebucket` dimension runs against a silently-expanded window, it aggregates across ALL SDL history for that source, not just the intended window. The result looks plausible (a single number) but can be off by orders of magnitude. **Failsafe for time-bounded aggregations:** add `by timebucket(timestamp, "")` to force the engine to partition by time. Then `| sort -total | limit 1` returns only the most recent bucket: @@ -569,11 +569,11 @@ Two annotations on this failsafe (live-verified 2026-07-29 via LRQ v2): **Exact (two-stage grouping):** when you need a precise count of distinct values per key, do it in two `group` passes: ``` -// Stage 1 — one row per (src, port) pair +// Stage 1: one row per (src, port) pair dataSource.name='Palo Alto Networks Firewall' dst_endpoint.port=* | group count=count() by src_endpoint.ip, dst_endpoint.port -// Stage 2 — count how many distinct ports each src had +// Stage 2: count how many distinct ports each src had | group distinct_ports=count() by src_endpoint.ip | filter distinct_ports > 100 | sort -distinct_ports @@ -636,15 +636,15 @@ Alerts don't support these. Move the correlation logic into a `join` (bounded) o ### Always filter on `field=*` before projecting or inspecting a field -`| limit N | columns field` returns the first N events in the index regardless of whether `field` is populated — most will be null. This makes a field look absent when it isn't. +`| limit N | columns field` returns the first N events in the index regardless of whether `field` is populated, most will be null. This makes a field look absent when it isn't. **Always add `field=*` to the initial filter** to scope to events that actually carry the field: ``` -// Wrong — returns nulls because most events don't have message +// Wrong: returns nulls because most events don't have message dataSource.name='FortiGate' | limit 3 | columns message -// Correct — only events where message is present +// Correct: only events where message is present dataSource.name='FortiGate' message=* | limit 3 | columns message ``` @@ -659,7 +659,7 @@ Before blaming the query: 3. Case: are you using `contains` (ci) or `in` / `=` (cs)? 4. Field name: does the field exist on this schema? Run `dataSource.name='X' field=* | limit 1 | columns field` to confirm it's populated. -Don't keep re-running slightly rephrased versions — the Purple MCP docs warn explicitly against that. If the data isn't there, no rewrite finds it. +Don't keep re-running slightly rephrased versions, the Purple MCP docs warn explicitly against that. If the data isn't there, no rewrite finds it. ### Results look plausible but wrong magnitude diff --git a/plugins/s1-secops-skills/skills/powerquery/references/syntax-and-operators.md b/plugins/s1-secops-skills/skills/powerquery/references/syntax-and-operators.md index 157fb01..e3025a1 100644 --- a/plugins/s1-secops-skills/skills/powerquery/references/syntax-and-operators.md +++ b/plugins/s1-secops-skills/skills/powerquery/references/syntax-and-operators.md @@ -5,7 +5,7 @@ Full reference for PowerQuery expression syntax. Read when the query needs anyth ## Table of contents 1. Boolean / arithmetic operators -2. Text operators — `contains`, `matches`, `in`, `=`, wildcards +2. Text operators: `contains`, `matches`, `in`, `=`, wildcards 3. Shortcut fields (`#ip`, `#hash`, etc.) 4. Identifier rules and escaping 5. Regex dialect and escaping levels @@ -24,7 +24,7 @@ Full reference for PowerQuery expression syntax. Read when the query needs anyth | NOT | `not a`, `NOT a`, `!a` | | Arithmetic | `+ - * / %` (modulo), unary `-x` | | Comparison | `< <= > >= == != =` (= is synonym for ==) | -| Ternary | `cond ? then : else` (put spaces around the `:` — it can be parsed as an identifier character otherwise) | +| Ternary | `cond ? then : else` (put spaces around the `:`: it can be parsed as an identifier character otherwise) | Parentheses work as expected: `a AND (b OR c)`. @@ -32,7 +32,7 @@ Parentheses work as expected: `a AND (b OR c)`. ## 2. Text operators -### `contains` — substring search +### `contains`: substring search ``` src.process.cmdline contains 'powershell' @@ -44,7 +44,7 @@ Case-insensitive by default. Cannot be used on numeric values. The OR form is mu > **queryLang 2.0 vs 1.0 operators in Custom Detection rule bodies.** These are the `queryLang 2.0` operators. The S1QL-1.0 forms are different tokens: `contains:anycase` is the 2.0 spelling of 1.0 `ContainsCIS`, and `in:anycase` replaces 1.0 `In`. Custom Detection rules (events / correlation / scheduled) all run at `queryLang 2.0`, so their bodies must use the 2.0 operators. Confirmed live (2026-07): an events rule authored with the 1.0 operator `ContainsCIS` was accepted at create time but never fired; rewritten with `contains:anycase` it fired immediately. The API does not warn, it stores the 1.0 operator and the rule silently matches nothing. Lint rule bodies for 1.0 operators (`ContainsCIS`, `In`, etc.) before deploy. -### `matches` — regex +### `matches`: regex ``` src.process.cmdline matches '\\w+\\.exe' @@ -54,7 +54,7 @@ src.process.cmdline matches:matchcase 'CaseSensitive' Case-insensitive by default. Regex has a 1,000-byte ceiling. Double-escape special characters (`\\d`, `\\s`, `\\\\` for a literal backslash). See §5 for escaping levels. -### `in` — exact equals any of +### `in`: exact equals any of ``` event.login.type in ('NETWORK', 'NETWORK_CLEAR_TEXT', 'CACHED_REMOTE_INTERACTIVE') @@ -74,21 +74,21 @@ indicator.name !=* // never valid; use !(x=*) for is-null ### Wildcards -There are three distinct `*` idioms — they look similar but mean different things: +There are three distinct `*` idioms; they look similar but mean different things: ``` // 1. FIELD PRESENCE / ATTRIBUTE WILDCARD -dataSource.name = * // "field is present/non-null" — use as query opener or filter +dataSource.name = * // "field is present/non-null"; use as query opener or filter indicator.category = * // same pattern; works for any field !(indicator.category = *) // field is null / missing // 2. ALL-COLUMN TEXT SEARCH (initial filter only) -* contains 'evil.com' // find text in ANY indexed field — initial filter only -* matches 'regex' // regex across all indexed fields — initial filter only +* contains 'evil.com' // find text in ANY indexed field, initial filter only +* matches 'regex' // regex across all indexed fields, initial filter only $"regex" // shorthand for message matches "regex" (initial filter only) // 3. EMPTY INITIAL FILTER (all events) -| group ct=count() by event.type // start with | — no initial predicate means all events +| group ct=count() by event.type // start with |; no initial predicate means all events ``` Key facts about `*`: @@ -105,7 +105,7 @@ When a user describes the search in English, the phrasing usually maps to one of |---|---| | "all column search" / "search all fields" / "search everything for X" / "anywhere in the event" / "wherever it appears" | `* contains 'value'` (initial filter only) | | "regex across every field" / "pattern match anywhere" | `* matches 'regex'` (initial filter only) | -| "query all events for a source" / "aggregate over all logs" / "group by field across everything" | `dataSource.name=* \| group count=count() by dataSource.name` — field presence as opener | +| "query all events for a source" / "aggregate over all logs" / "group by field across everything" | `dataSource.name=* \| group count=count() by dataSource.name`: field presence as opener | | "is this field set" / "rows where X is populated" | `field = *` | | "field is missing / null / empty" | `!(field = *)` | | "field equals one of these values" (case-sensitive) | `field in ('a','b','c')` | @@ -208,13 +208,13 @@ When calling the Purple MCP `powerquery` tool, pass ISO-8601 with an explicit of ## 7. Short-circuit OR returns the first truthy value -`||` and `OR` don't return booleans; they return the first truthy operand. Falsy values: `null`, `0`, `false`, `""`, `NaN`. Everything else is truthy (including `"0"` and `"false"` — those are non-empty strings). +`||` and `OR` don't return booleans; they return the first truthy operand. Falsy values: `null`, `0`, `false`, `""`, `NaN`. Everything else is truthy (including `"0"` and `"false"`; those are non-empty strings). ``` | let first_name = preferred_name || legal_name || 'Unknown' ``` -This is handy for coalescing. It's also a gotcha if you expected a boolean — use `bool()` to force a boolean. +This is handy for coalescing. It's also a gotcha if you expected a boolean; use `bool()` to force a boolean. --- @@ -223,7 +223,7 @@ This is handy for coalescing. It's also a gotcha if you expected a boolean — u The engine works with booleans, 64-bit floats, UTF-8 strings, and null. - **Arithmetic**: yields `NaN` unless both inputs are numbers. Exception: `+` with at least one string argument converts the other to string and concatenates. -- **Comparison**: numbers compare numerically, strings compare lexicographically, booleans compare with `false < true`, two nulls are equal. Mixed types produce undefined results — coerce explicitly with `number(x)` or `string(x)`. +- **Comparison**: numbers compare numerically, strings compare lexicographically, booleans compare with `false < true`, two nulls are equal. Mixed types produce undefined results, coerce explicitly with `number(x)` or `string(x)`. - **Boolean context**: `null`, `0`, `""` → false. Everything else → true. Use `bool()` to be explicit. In `group` and `let`, a reference to a field not present in an event yields `null` (not an error). diff --git a/plugins/s1-secops-skills/skills/sdl-api/SKILL.md b/plugins/s1-secops-skills/skills/sdl-api/SKILL.md index e64b851..b169325 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/SKILL.md +++ b/plugins/s1-secops-skills/skills/sdl-api/SKILL.md @@ -1,7 +1,7 @@ --- name: sdl-api author: Prithvi Moses -description: Use whenever the user wants to read data and manage configuration through the SentinelOne Singularity Data Lake (SDL) API — run queries or manage configuration files (parsers, dashboards, alerts, lookups, datatables) on a Scalyr/SDL/XDR tenant. Trigger on "SDL", "SDL API", "Singularity Data Lake", "Scalyr", "DataSet", "xdr.us1.sentinelone.net" or any "*.sentinelone.net/api/*" URL, and on the method names "query", "powerQuery", "facetQuery", "timeseriesQuery", "numericQuery", "getFile", "putFile", "listFiles". Also trigger on tasks like "run a powerQuery", "list configuration files", "edit my parser via API", "deploy a dashboard JSON", "compute the rate of failures over time", or anything involving Log Read / Configuration Read / Configuration Write SDL keys, Bearer-token auth, or the S1-Scope header. Wraps every SDL method with a Python client and CLI. +description: Use whenever the user wants to read data and manage configuration through the SentinelOne Singularity Data Lake (SDL) API: run queries or manage configuration files (parsers, dashboards, alerts, lookups, datatables) on a Scalyr/SDL/XDR tenant. Trigger on "SDL", "SDL API", "Singularity Data Lake", "Scalyr", "DataSet", "xdr.us1.sentinelone.net" or any "*.sentinelone.net/api/*" URL, and on the method names "query", "powerQuery", "facetQuery", "timeseriesQuery", "numericQuery", "getFile", "putFile", "listFiles". Also trigger on tasks like "run a powerQuery", "list configuration files", "edit my parser via API", "deploy a dashboard JSON", "compute the rate of failures over time", or anything involving Log Read / Configuration Read / Configuration Write SDL keys, Bearer-token auth, or the S1-Scope header. Wraps every SDL method with a Python client and CLI. --- # SentinelOne SDL API @@ -10,24 +10,24 @@ Wraps the Singularity Data Lake API (query and configuration-file methods) with The SDL API is distinct from the Management Console API. It speaks JSON over `Bearer` tokens (not `ApiToken`) and is the canonical path for querying the data lake and editing parsers/dashboards/alerts/lookups directly. Raw-log ingestion is via HEC (see the `sentinelone-mgmt-console-api` skill). -> **Sandbox proxy blocked?** If calls to `*.sentinelone.net` (SDL host or console host) fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes `sdl_list_files`, `sdl_get_file`, `sdl_put_file`, and `sdl_delete_file` — running directly from your machine against the SDL API. Raw-log ingestion uses HEC (see `sentinelone-mgmt-console-api`), not this skill. +> **Sandbox proxy blocked?** If calls to `*.sentinelone.net` (SDL host or console host) fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). The MCP server exposes `sdl_list_files`, `sdl_get_file`, `sdl_put_file`, and `sdl_delete_file`, running directly from your machine against the SDL API. Raw-log ingestion uses HEC (see `sentinelone-mgmt-console-api`), not this skill. -## IMPORTANT: query methods are deprecated — and LRQ is NOT available here +## IMPORTANT: query methods are deprecated, and LRQ is NOT available here The query methods on this skill (`query`, `powerQuery`, `facetQuery`, `timeseriesQuery`, `numericQuery`) wrap the V1 SDL endpoints (`/api/query`, `/api/powerQuery`, etc.) at the centralized host `xdr.us1.sentinelone.net`. Those endpoints are **deprecated and sunset on 2027-02-15** (also applies to the Deep Visibility `/web/api/v2.1/dv/events/pq` endpoint). -**The LRQ API is NOT a replacement available through this skill.** LRQ runs at `POST /sdl/v2/api/queries` on the tenant's own **Management Console** host (e.g. `your-tenant.sentinelone.net`) — it is part of the Mgmt Console API surface, not the SDL API (`xdr.us1.sentinelone.net`). To run PowerQueries programmatically, use the **`sentinelone-mgmt-console-api`** skill which holds the LRQ runner, auth pattern, and slicing strategy. +**The LRQ API is NOT a replacement available through this skill.** LRQ runs at `POST /sdl/v2/api/queries` on the tenant's own **Management Console** host (e.g. `your-tenant.sentinelone.net`); it is part of the Mgmt Console API surface, not the SDL API (`xdr.us1.sentinelone.net`). To run PowerQueries programmatically, use the **`sentinelone-mgmt-console-api`** skill which holds the LRQ runner, auth pattern, and slicing strategy. -**SDL dashboard panels do not use LRQ either.** Dashboard panel queries are executed by the SDL console's own built-in rendering engine when a user loads the dashboard in their browser. The panel JSON just stores the query string — no API call is needed. Do not attempt to test or run dashboard panel queries via LRQ. +**SDL dashboard panels do not use LRQ either.** Dashboard panel queries are executed by the SDL console's own built-in rendering engine when a user loads the dashboard in their browser. The panel JSON just stores the query string; no API call is needed. Do not attempt to test or run dashboard panel queries via LRQ. | Task | Correct skill / path | |------|------| | PowerQuery programmatically (any range) | **`sentinelone-mgmt-console-api`** → LRQ at `POST /sdl/v2/api/queries` on console host | -| Dashboard panel queries | SDL console renders them in-browser — no API needed | +| Dashboard panel queries | SDL console renders them in-browser: no API needed | | Quick one-off stats under 24h (deprecated) | V1 methods on this skill still work until 2027-02-15 | | `get_file` / `put_file` / `list_files` (parsers, dashboards, lookups) | **This skill** | -## Setup — configure credentials first +## Setup: configure credentials first Drop a `credentials.json` file directly into your Cowork project folder with the keys you need: @@ -64,30 +64,30 @@ Before running anything, confirm `SDL_XDR_URL` is set and at least one key for t When the user asks for something involving the SDL API: -1. **Pick the method.** Check `references/methods.md` for the right call. For **configuration files** (`get_file`, `put_file`, `list_files`), this skill is the right tool. Raw-log ingestion is via HEC (see `sentinelone-mgmt-console-api`). For **queries**, use the V1 methods on this skill only for quick one-off stats under 24h; for anything programmatic or multi-day, switch to the **`sentinelone-mgmt-console-api`** skill and the LRQ API — LRQ is NOT available at the SDL API host (`xdr.us1.sentinelone.net`). -2. **Use the client.** `from sdl_client import SDLClient` then call the named method (`query`, `power_query`, `facet_query`, `timeseries_query`, `numeric_query`, `list_files`, `get_file`, `put_file`). The client picks the correct key, handles JSON encoding, retries 429/5xx/`error/server/backoff`, and returns parsed JSON. Note: `query` and `power_query` hit the deprecated V1 endpoints — they work until 2027-02-15 for quick lookups but should not be used for production query pipelines. +1. **Pick the method.** Check `references/methods.md` for the right call. For **configuration files** (`get_file`, `put_file`, `list_files`), this skill is the right tool. Raw-log ingestion is via HEC (see `sentinelone-mgmt-console-api`). For **queries**, use the V1 methods on this skill only for quick one-off stats under 24h; for anything programmatic or multi-day, switch to the **`sentinelone-mgmt-console-api`** skill and the LRQ API, LRQ is NOT available at the SDL API host (`xdr.us1.sentinelone.net`). +2. **Use the client.** `from sdl_client import SDLClient` then call the named method (`query`, `power_query`, `facet_query`, `timeseries_query`, `numeric_query`, `list_files`, `get_file`, `put_file`). The client picks the correct key, handles JSON encoding, retries 429/5xx/`error/server/backoff`, and returns parsed JSON. Note: `query` and `power_query` hit the deprecated V1 endpoints; they work until 2027-02-15 for quick lookups but should not be used for production query pipelines. 3. **For ad-hoc shots, use the CLI.** `python scripts/sdl_cli.py [args]`. The CLI mirrors the client. 4. **Summarize for the user.** Don't dump raw JSON unless asked. For query results, prefer a concise table or CSV; for ingestion, confirm `bytesCharged` and the session ID; for config files, show path + version + (truncated) content. -## Schema discovery — the right way +## Schema discovery: the right way Every SDL session must run live schema discovery for **every** data source it -will query — including the S1 internal sources `alert`, `vulnerability`, +will query, including the S1 internal sources `alert`, `vulnerability`, `misconfiguration`, `asset`, `finding`, `ActivityFeed`, `Identity`, `indicator` and every third-party source. Documented schemas drift between sessions due to parser edits, reserved-field rewrites, and ingestion changes. -**`asset` and `ActivityFeed` — confirmed live schemas (126 and 41 fields respectively):** +**`asset` and `ActivityFeed`, confirmed live schemas (126 and 41 fields respectively):** -- `dataSource.name='asset'` — **126 fields of rich device inventory** (OCSF class_uid 3004, category_name = 'Discovery'). Key fields: `device.agent.uuid`, `device.name`, `device.os.{name,version,type}`, `device.agent.{network_status,network_status_title,network_quarantine_enabled,is_active,is_decommissioned,is_uninstalled,scan_status,version,last_logged_in_user_name}`, `device.ip_external`, `device.hw_info.*`, `device.network_interfaces[N].*`, `severity_id`, `severity_`, `operation` (= OPERATION_UPSERT), `s1_metadata.{site_id,site_name,group_id,group_name}`. Use this for endpoint inventory panels and asset state tracking. Fields that do **not** exist: `entity.uid`, `entity_result.*`, `agent.health.online`, `agent.uuid` (use `device.agent.uuid`). -- `dataSource.name='ActivityFeed'` — **41 fields of Hyperautomation/management activity audit log** (`sca:RetentionType = 'ACTIVITY_LOG'`). Key fields: `activity_type` (numeric, NOT a string — e.g. 9207 = workflow execution event), `activity_uuid`, `primary_description`, `secondary_description`, `data.workflow_{id,name,execution_url}`, `data.{scope_id,scope_level,scope_name,site_name,user_id}`, `created_at`, `updated_at`, `account.{id,name}`, `site_id`, `context`. Useful for Hyperautomation workflow audit and compliance tracking. Not useful for threat hunting. +- `dataSource.name='asset'`: **126 fields of rich device inventory** (OCSF class_uid 3004, category_name = 'Discovery'). Key fields: `device.agent.uuid`, `device.name`, `device.os.{name,version,type}`, `device.agent.{network_status,network_status_title,network_quarantine_enabled,is_active,is_decommissioned,is_uninstalled,scan_status,version,last_logged_in_user_name}`, `device.ip_external`, `device.hw_info.*`, `device.network_interfaces[N].*`, `severity_id`, `severity_`, `operation` (= OPERATION_UPSERT), `s1_metadata.{site_id,site_name,group_id,group_name}`. Use this for endpoint inventory panels and asset state tracking. Fields that do **not** exist: `entity.uid`, `entity_result.*`, `agent.health.online`, `agent.uuid` (use `device.agent.uuid`). +- `dataSource.name='ActivityFeed'`: **41 fields of Hyperautomation/management activity audit log** (`sca:RetentionType = 'ACTIVITY_LOG'`). Key fields: `activity_type` (numeric, NOT a string, e.g. 9207 = workflow execution event), `activity_uuid`, `primary_description`, `secondary_description`, `data.workflow_{id,name,execution_url}`, `data.{scope_id,scope_level,scope_name,site_name,user_id}`, `created_at`, `updated_at`, `account.{id,name}`, `site_id`, `context`. Useful for Hyperautomation workflow audit and compliance tracking. Not useful for threat hunting. -**The actual ingestion pipeline metrics source is `finding`** (`dataSource.category='metrics'`, `tag='ingestionHealth'`, fields: `batchCt`, `eventLatency.*`, `processor`, etc.) — do not confuse it with `asset` or `ActivityFeed`. +**The actual ingestion pipeline metrics source is `finding`** (`dataSource.category='metrics'`, `tag='ingestionHealth'`, fields: `batchCt`, `eventLatency.*`, `processor`, etc.); do not confuse it with `asset` or `ActivityFeed`. **Why PowerQuery is the wrong tool for this:** PowerQuery's default projection returns `timestamp + message` only. Naive `dataSource.name='alert' | limit 1` hides the actual fields. `| columns *` returns HTTP 500. You can probe specific -fields with `| columns f1, f2` but you have to already know what to ask for — +fields with `| columns f1, f2` but you have to already know what to ask for, which defeats the purpose of discovery. **Use the V1 `query` method instead.** It returns each match as the full event @@ -98,7 +98,7 @@ only built-in way to see what fields a source actually carries. default credential chain is `log_read_key → config_read_key → config_write_key → console_api_token`. If your `credentials.json` has `SDL_CONFIG_WRITE_KEY` set but no -`SDL_LOG_READ_KEY`, the chain picks the config write key first — which does +`SDL_LOG_READ_KEY`, the chain picks the config write key first, which does NOT grant View Logs and returns `HTTP 403: authorization token does not grant View logs permission`. @@ -157,7 +157,7 @@ A proxy error treated as an empty result produces a fabricated schema, causing e The `attributes` dict exposes nested arrays as flattened keys like `resources[0].name` and `vulnerabilities[0].cve.uid`. Those flattened keys are -display-only — they are NOT valid PowerQuery `columns` paths. PowerQuery +display-only; they are NOT valid PowerQuery `columns` paths. PowerQuery returns HTTP 500 on bracket-array indexing. For analytics over array fields, either stay on V1 query or use `array_get(arr, 0)` inside a PowerQuery `let`. @@ -179,12 +179,12 @@ Raw-log ingestion runs through HEC (the `hec_ingest` tool; `POST {S1_HEC_INGEST_ ## Files in this skill -- `/credentials.json` — credentials (set `SDL_XDR_URL` and the keys you need; see Setup above). Auto-discovered by the plugin's SessionStart hook. -- `scripts/bootstrap_creds.sh` — idempotent helper that copies workspace creds into the sandbox-local path. Wired to the plugin's SessionStart hook; safe to re-run manually. -- `scripts/sdl_client.py` — importable Python client (`SDLClient`). Picks the right key per method, retries with exponential backoff, exposes ergonomic method names. -- `scripts/sdl_cli.py` — CLI runner: `python scripts/sdl_cli.py power-query "dataset='accesslog' | group count() by status" --start 1h`. -- `references/methods.md` — single per-method reference (parameters, defaults, response shape, gotchas) for the SDL query and configuration-file endpoints. -- `references/auth_and_limits.md` — key matrix, console-token rules, S1-Scope, leaky-bucket CPU rate-limit model, retry guidance, daily caps. +- `/credentials.json`: credentials (set `SDL_XDR_URL` and the keys you need; see Setup above). Auto-discovered by the plugin's SessionStart hook. +- `scripts/bootstrap_creds.sh`: idempotent helper that copies workspace creds into the sandbox-local path. Wired to the plugin's SessionStart hook; safe to re-run manually. +- `scripts/sdl_client.py`: importable Python client (`SDLClient`). Picks the right key per method, retries with exponential backoff, exposes ergonomic method names. +- `scripts/sdl_cli.py`: CLI runner: `python scripts/sdl_cli.py power-query "dataset='accesslog' | group count() by status" --start 1h`. +- `references/methods.md`: single per-method reference (parameters, defaults, response shape, gotchas) for the SDL query and configuration-file endpoints. +- `references/auth_and_limits.md`: key matrix, console-token rules, S1-Scope, leaky-bucket CPU rate-limit model, retry guidance, daily caps. ## Using the client @@ -196,7 +196,7 @@ from sdl_client import SDLClient c = SDLClient() # ---- Log read ---- -# PowerQuery — best general-purpose tool +# PowerQuery: best general-purpose tool res = c.power_query( query="dataset='accesslog' status >= 400 | group count() by status", start_time="1h", @@ -215,7 +215,7 @@ ts = c.timeseries_query(queries=[ ]) # ---- Configuration files ---- -# Parsers live under /logParsers/ — the SDL API also accepts /parsers/ +# Parsers live under /logParsers/: the SDL API also accepts /parsers/ # but the Log Parsers UI only reads /logParsers/, so PUTs at /parsers/ are invisible # in the console. Use /logParsers/ by default. files = c.list_files() # {"status":"success","paths":["/foo", ...]} @@ -244,9 +244,9 @@ The client retries automatically on HTTP 429, 5xx, and SDL `status: error/server - **From 19 March 2026, all query methods cap at 8 queries/sec per tenant.** - **Concurrency cap:** 12 simultaneous requests per API key (non-query). For loops, throttle in code. -For long-running ingest, use the binary truncated exponential backoff loop in `references/integration_patterns.md` rather than the client's default retries — it is designed to stop on `discardBuffer` and to slowly relax wait times after success. +For long-running ingest, use the binary truncated exponential backoff loop in `references/integration_patterns.md` rather than the client's default retries; it is designed to stop on `discardBuffer` and to slowly relax wait times after success. -## Destructive actions — confirm first +## Destructive actions: confirm first `put_file(delete=True)` and `put_file(content=...)` overwriting an existing path can wipe a parser, dashboard, alert, or lookup table. Before any `putFile` write or delete: @@ -259,7 +259,7 @@ There is no undo. Configuration files are versioned but accidental deletes still ## Common high-value workflows - **Hunt with PowerQuery.** Use the **`sentinelone-mgmt-console-api`** skill, which holds the LRQ runner at `POST /sdl/v2/api/queries` on your console host. LRQ is NOT reachable via the SDL API (`xdr.us1.sentinelone.net`). This skill's `c.power_query()` hits the deprecated V1 endpoint and should only be used for a quick ad-hoc one-off before 2027-02-15. -- **Promote a parser/dashboard.** `get_file("/logParsers/Foo")` from staging → `put_file("/logParsers/Foo", content=..., expected_version=N)` on production. The `expected_version` guard catches concurrent edits. (Parser path is `/logParsers/` — `/parsers/` is API-accepted but not UI-visible.) +- **Promote a parser/dashboard.** `get_file("/logParsers/Foo")` from staging → `put_file("/logParsers/Foo", content=..., expected_version=N)` on production. The `expected_version` guard catches concurrent edits. (Parser path is `/logParsers/`, `/parsers/` is API-accepted but not UI-visible.) - **Audit configuration drift.** `list_files()` then `get_file()` for each path; diff against a checked-in copy. - **Quick stats panel.** `facet_query(field="srcIp", filter="status >= 500", start_time="1h")` returns the top offenders fast. diff --git a/plugins/s1-secops-skills/skills/sdl-api/references/auth_and_limits.md b/plugins/s1-secops-skills/skills/sdl-api/references/auth_and_limits.md index a95ab0c..57cb0fc 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/references/auth_and_limits.md +++ b/plugins/s1-secops-skills/skills/sdl-api/references/auth_and_limits.md @@ -38,7 +38,7 @@ The `SDLClient` only sets `S1-Scope` when (a) a console token was selected for t `/api/query`, `/api/powerQuery`, `/api/timeseriesQuery`, `/api/numericQuery`, and `/api/facetQuery` all share a CPU-second budget per account. -- Each call returns `cpuUsage` (ms) on success — that's how much it cost. +- Each call returns `cpuUsage` (ms) on success: that's how much it cost. - The bucket leaks at `cpuUsageRefillRate` CPU sec/sec. When `cpuUsageCapacity >= 1`, queries are rejected until it drains. - A 429 carries: ```json @@ -83,7 +83,7 @@ The SDLClient retries automatically on: - HTTP 5xx - HTTP 200 with body `status` starting `error/server/backoff` -It honours `Retry-After` when present and otherwise uses `min(2**attempt, 30)` seconds. For long-running ingest pipelines, prefer the binary truncated exponential backoff loop in `integration_patterns.md` — it is designed to (a) stop on `discardBuffer` and (b) slowly relax wait time after success. +It honours `Retry-After` when present and otherwise uses `min(2**attempt, 30)` seconds. For long-running ingest pipelines, prefer the binary truncated exponential backoff loop in `integration_patterns.md`; it is designed to (a) stop on `discardBuffer` and (b) slowly relax wait time after success. ## Audit references diff --git a/plugins/s1-secops-skills/skills/sdl-api/references/methods.md b/plugins/s1-secops-skills/skills/sdl-api/references/methods.md index 1805f14..b6fb39e 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/references/methods.md +++ b/plugins/s1-secops-skills/skills/sdl-api/references/methods.md @@ -21,7 +21,7 @@ SDL raw-log ingestion (`uploadLogs`, `addEvents`) has been removed from this ski All five methods consume the CPU leaky bucket described in `auth_and_limits.md`. `cpuUsage` is returned on success as a rate-limiting signal. -### `query` — `c.query(filter="", ...)` / `c.iter_query(...)` — CLI `query` +### `query`: `c.query(filter="", ...)` / `c.iter_query(...)`, CLI `query` **DEPRECATED.** The V1 `/api/query` endpoint sunsets on 2027-02-15. For log search in new code use the LRQ API with `queryType: "LOG"` - async, cursor-paged to unlimited rows, survives long windows. See the `sentinelone-powerquery` skill's `references/lrq-api.md`. This method is fine for legacy one-offs until the sunset date. @@ -57,7 +57,7 @@ Use `c.iter_query(...)` to iterate across pages automatically. --- -### `powerQuery` — `c.power_query(query, ...)` — CLI `power-query` +### `powerQuery`: `c.power_query(query, ...)`, CLI `power-query` **DEPRECATED.** The V1 `/api/powerQuery` endpoint at `xdr.us1.sentinelone.net` sunsets on 2027-02-15. New code should route PowerQueries through the **Long Running Query API** at `POST /sdl/v2/api/queries` on the tenant's own console host. LRQ is async, has higher row/rate limits, parallelizes cleanly across time slices, and is the only path that stays supported after the sunset date. Canonical runner, body schema, auth, and gotchas live in the `sentinelone-powerquery` skill at `references/lrq-api.md`. This method is kept here only for legacy one-offs and to round out the 10-method SDL surface. @@ -102,7 +102,7 @@ field taxonomy and pipe grammar. --- -### `facetQuery` — `c.facet_query(field, ...)` — CLI `facet-query` +### `facetQuery`: `c.facet_query(field, ...)`, CLI `facet-query` Top-N most frequent values of `field` for events matching `filter`. @@ -124,7 +124,7 @@ subset from at least 500K matching events. --- -### `timeseriesQuery` — `c.timeseries_query(queries=[...])` — CLI `timeseries-query` +### `timeseriesQuery`: `c.timeseries_query(queries=[...])`, CLI `timeseries-query` Bucketed numeric data; multi-query per request. Each entry in `queries` may include: `filter`, `function` (`count` | `rate` | `mean(field)` | ...), @@ -132,11 +132,11 @@ include: `filter`, `function` (`count` | `rate` | `mean(field)` | ...), `priority`, plus cross-team fields. `createSummaries` (default `true`): create a precomputed timeseries for this -query. Backfill begins in 2–3 minutes, ~2 months/hour. Subsequent matching +query. Backfill begins in 2-3 minutes, ~2 months/hour. Subsequent matching queries become near-instant. `onlyUseSummaries` (default `false`): fail over to zeros if no precomputed -series exists — guarantees fast/cheap response but may be incomplete until +series exists, guarantees fast/cheap response but may be incomplete until backfill finishes. Novel query budget: >100 novel (uncached) queries/hour triggers rate limits. @@ -157,7 +157,7 @@ Response: --- -### `numericQuery` — `c.numeric_query(...)` — CLI `numeric-query` +### `numericQuery`: `c.numeric_query(...)`, CLI `numeric-query` Effectively superseded by `timeseriesQuery` with `createSummaries=false` and `onlyUseSummaries=false`. Keep it for two reasons: @@ -176,15 +176,15 @@ Response: `{"status": "success", "values": [n, n, ...], "cpuUsage": 12}`. Config files back every SDL customisation: parsers, dashboards, alerts, lookups, datatables. Paths look like `/logParsers/Foo`, `/dashboards/Bar`, -`/alerts`, etc. Parsers specifically must use `/logParsers/` — +`/alerts`, etc. Parsers specifically must use `/logParsers/`; the API also accepts `/parsers/` but the Log Parsers UI reads only `/logParsers/`. -### `listFiles` — `c.list_files()` — CLI `list-files` +### `listFiles`: `c.list_files()`, CLI `list-files` No params. Returns `{"status":"success","paths":["/a","/b/c","/z"]}` sorted alphabetically. -### `getFile` — `c.get_file(path, expected_version=None, prettyprint=False)` — CLI `get-file` +### `getFile`: `c.get_file(path, expected_version=None, prettyprint=False)`, CLI `get-file` Reads a single file. Response: @@ -203,11 +203,11 @@ Reads a single file. Response: - If the file does not exist: `{"status":"success/noSuchFile"}`. - If `expected_version` matches current: `{"status":"success/unchanged"}` with no `content`. -### `putFile` — `c.put_file(path, content=None, delete=False, expected_version=None, prettyprint=False)` — CLI `put-file` +### `putFile`: `c.put_file(path, content=None, delete=False, expected_version=None, prettyprint=False)`, CLI `put-file` Create, update, or delete. `delete=True` uses `{"deleteFile": true}` internally. -Content validation depends on file type — dashboards expect `"{graphs: []}"` +Content validation depends on file type, dashboards expect `"{graphs: []}"` as empty, parsers/datatables expect empty string. Pass a fresh `expected_version` from the preceding `getFile` for optimistic concurrency; a mismatch returns `{"status":"error/client/versionMismatch"}` and no write. @@ -215,5 +215,5 @@ from the preceding `getFile` for optimistic concurrency; a mismatch returns Response on success: `{"status":"success"}`. Requires Configuration Write Access key (or console token with config-write -permission). Console tokens are permitted but scope-aware — `S1-Scope` header +permission). Console tokens are permitted but scope-aware, `S1-Scope` header may be required. diff --git a/plugins/s1-secops-skills/skills/sdl-api/scripts/bootstrap_creds.sh b/plugins/s1-secops-skills/skills/sdl-api/scripts/bootstrap_creds.sh index 18e6cdd..b98342f 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/scripts/bootstrap_creds.sh +++ b/plugins/s1-secops-skills/skills/sdl-api/scripts/bootstrap_creds.sh @@ -9,10 +9,11 @@ # 4. $COWORK_WORKSPACE/.claude/sentinelone/credentials.json (legacy) # 5. $HOME/mnt//.sentinelone/credentials.json (legacy) # 6. $HOME/mnt//.claude/sentinelone/credentials.json (legacy) +# 7. $HOME/.config/sentinelone/credentials.json (host terminal fallback) # # Destination: $HOME/.claude/sentinelone/credentials.json # In the Cowork bash sandbox this resolves to -# /sessions//.claude/sentinelone/credentials.json — sandbox-local, +# /sessions//.claude/sentinelone/credentials.json, sandbox-local, # ephemeral per session, readable by every script and CLI in the skill. # # Idempotent. Safe to run before every workflow. Returns the path it used. @@ -31,8 +32,8 @@ DEST_DIR="$(dirname "$DEST")" # If the destination already exists and is non-empty, no-op. This makes # repeated calls cheap and avoids overwriting a user-managed file. if [ -s "$DEST" ]; then - echo "$DEST" - exit 0 + echo "$DEST" + exit 0 fi mkdir -p "$DEST_DIR" @@ -41,38 +42,43 @@ chmod 700 "$DEST_DIR" 2>/dev/null || true shopt -s nullglob 2>/dev/null || true candidates=() -# New (recommended) — credentials.json directly in the project folder. +# New (recommended): credentials.json directly in the project folder. if [ -n "${COWORK_WORKSPACE:-}" ]; then - candidates+=("$COWORK_WORKSPACE/credentials.json") + candidates+=("$COWORK_WORKSPACE/credentials.json") fi for mnt in "$HOME"/mnt/*/; do - base="$(basename "$mnt")" - case "$base" in - .claude|.auto-memory|.remote-plugins|outputs|uploads) continue ;; - esac - candidates+=("${mnt}credentials.json") + base="$(basename "$mnt")" + case "$base" in + .claude | .auto-memory | .remote-plugins | outputs | uploads) continue ;; + esac + candidates+=("${mnt}credentials.json") done -# Legacy layouts — kept for backwards compatibility. +# Legacy layouts: kept for backwards compatibility. if [ -n "${COWORK_WORKSPACE:-}" ]; then - candidates+=("$COWORK_WORKSPACE/.sentinelone/credentials.json") - candidates+=("$COWORK_WORKSPACE/.claude/sentinelone/credentials.json") + candidates+=("$COWORK_WORKSPACE/.sentinelone/credentials.json") + candidates+=("$COWORK_WORKSPACE/.claude/sentinelone/credentials.json") fi for mnt in "$HOME"/mnt/*/; do - base="$(basename "$mnt")" - case "$base" in - .claude|.auto-memory|.remote-plugins|outputs|uploads) continue ;; - esac - candidates+=("${mnt%/}/.sentinelone/credentials.json") - candidates+=("${mnt%/}/.claude/sentinelone/credentials.json") + base="$(basename "$mnt")" + case "$base" in + .claude | .auto-memory | .remote-plugins | outputs | uploads) continue ;; + esac + candidates+=("${mnt%/}/.sentinelone/credentials.json") + candidates+=("${mnt%/}/.claude/sentinelone/credentials.json") done +# Host terminal fallback (Claude Code CLI without Cowork), mirroring the +# plugin SessionStart hook's search order. +candidates+=("$HOME/.config/sentinelone/credentials.json") -for src in "${candidates[@]}"; do - if [ -f "$src" ]; then - cp "$src" "$DEST" - chmod 600 "$DEST" 2>/dev/null || true - echo "$DEST" - exit 0 - fi +# ${candidates[@]+...} guards the bash 3.2 "unbound variable" trap under +# set -u when the array is empty. +for src in ${candidates[@]+"${candidates[@]}"}; do + if [ -f "$src" ]; then + cp "$src" "$DEST" + chmod 600 "$DEST" 2>/dev/null || true + echo "$DEST" + exit 0 + fi done echo "bootstrap_creds: no credentials.json found." >&2 diff --git a/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_cli.py b/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_cli.py index fcd4de7..0b47752 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_cli.py +++ b/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_cli.py @@ -27,7 +27,7 @@ python scripts/sdl_cli.py numeric-query --function count --filter "status >= 500" --start 1h --buckets 30 # Put file (create/update) - # Parsers: use /logParsers/ — /parsers/ is API-accepted but invisible in the UI. + # Parsers: use /logParsers/; /parsers/ is API-accepted but invisible in the UI. python scripts/sdl_cli.py put-file /logParsers/MyParser --content-file ./parser.txt # Delete file @@ -53,27 +53,6 @@ def _print(obj) -> None: print(json.dumps(obj, indent=2, default=str)) -def _parse_kv(pairs): - out = {} - for p in pairs or []: - if "=" not in p: - raise SystemExit(f"invalid --attr '{p}': expected key=value") - k, v = p.split("=", 1) - # try to coerce numbers/bools - vs = v.strip() - if vs.lower() in ("true", "false"): - out[k] = vs.lower() == "true" - else: - try: - out[k] = int(vs) - except ValueError: - try: - out[k] = float(vs) - except ValueError: - out[k] = v - return out - - def cmd_list_files(c, args): _print(c.list_files()) diff --git a/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_client.py b/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_client.py index 5104fca..f6407dd 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_client.py +++ b/plugins/s1-secops-skills/skills/sdl-api/scripts/sdl_client.py @@ -56,7 +56,7 @@ # config files c.list_files() c.get_file("/alerts") - # Parsers: use /logParsers/ — /parsers/ is API-accepted but invisible in the UI. + # Parsers: use /logParsers/; /parsers/ is API-accepted but invisible in the UI. c.put_file("/logParsers/MyParser", content="// parser body") The client retries 429 and 5xx with exponential backoff and honours @@ -495,7 +495,7 @@ def query( priority: Optional[str] = None, team_emails: Optional[List[str]] = None, ) -> Dict[str, Any]: - """POST /api/query — retrieve log events matching `filter`. + """POST /api/query: retrieve log events matching `filter`. `filter` uses the same syntax as the UI search bar. Escape double quotes with \\". `start_time`/`end_time` accept UI time strings @@ -503,7 +503,7 @@ def query( default to the last 24h. `max_count` range is 1..5000 (default 100). Use `continuation_token` - to page beyond max_count — reuse the same query params and pin + to page beyond max_count, reuse the same query params and pin start/end to absolute times to avoid drift. """ body: Dict[str, Any] = {"queryType": "log", "maxCount": max_count} @@ -534,7 +534,7 @@ def numeric_query( buckets: int = 1, priority: Optional[str] = None, ) -> Dict[str, Any]: - """POST /api/numericQuery — bucketed numeric/graph data. + """POST /api/numericQuery: bucketed numeric/graph data. Effectively superseded by timeseriesQuery, but offers sub-30s buckets and is permitted for roles that cannot run @@ -564,7 +564,7 @@ def facet_query( max_count: int = 100, priority: Optional[str] = None, ) -> Dict[str, Any]: - """POST /api/facetQuery — top-N values of `field` in matching events. + """POST /api/facetQuery: top-N values of `field` in matching events. `max_count` range is 1..1000 (default 100). For very large result sets, returned values are sampled from at least 500K matching @@ -588,7 +588,7 @@ def timeseries_query( self, queries: List[Dict[str, Any]], ) -> Dict[str, Any]: - """POST /api/timeseriesQuery — one or more numeric queries. + """POST /api/timeseriesQuery: one or more numeric queries. Each entry in `queries` may include: filter, function, startTime, endTime, buckets, createSummaries, onlyUseSummaries, priority, @@ -610,7 +610,7 @@ def power_query( priority: Optional[str] = None, team_emails: Optional[List[str]] = None, ) -> Dict[str, Any]: - """POST /api/powerQuery — full pipeline query language. + """POST /api/powerQuery: full pipeline query language. `query` is limited to 10,000 chars; escape " in strings. Omit times for default 24h. Response has matchingEvents, omittedEvents, @@ -631,7 +631,7 @@ def power_query( # Configuration files # ========================================================================= def list_files(self) -> Dict[str, Any]: - """POST /api/listFiles — list every configuration file path.""" + """POST /api/listFiles: list every configuration file path.""" return self._request("POST", "/api/listFiles", chain="config_read", json_body={}) def get_file( @@ -640,7 +640,7 @@ def get_file( expected_version: Optional[int] = None, prettyprint: bool = False, ) -> Dict[str, Any]: - """POST /api/getFile — read a configuration file. + """POST /api/getFile: read a configuration file. If `expected_version` matches the stored version, status is 'success/unchanged' and no content is returned. @@ -660,7 +660,7 @@ def put_file( prettyprint: bool = False, delete: bool = False, ) -> Dict[str, Any]: - """POST /api/putFile — create, update, or delete a config file. + """POST /api/putFile: create, update, or delete a config file. Pass `delete=True` to delete. Otherwise `content` is required; content is validated per file type (e.g. dashboards expect @@ -730,6 +730,6 @@ def iter_query( if __name__ == "__main__": - # Smoke test — list configuration files. + # Smoke test: list configuration files. c = SDLClient() print(json.dumps(c.list_files(), indent=2)[:2000]) diff --git a/plugins/s1-secops-skills/skills/sdl-api/tests/smoke_test.py b/plugins/s1-secops-skills/skills/sdl-api/tests/smoke_test.py index f2c2394..12edb17 100644 --- a/plugins/s1-secops-skills/skills/sdl-api/tests/smoke_test.py +++ b/plugins/s1-secops-skills/skills/sdl-api/tests/smoke_test.py @@ -129,7 +129,7 @@ def main(): if pick_path: _run(f"getFile ({pick_path[:30]})", lambda: c.get_file(pick_path, prettyprint=False)) else: - print("[SKIP] getFile — no files present to read") + print("[SKIP] getFile; no files present to read") RESULTS.append(("getFile", "SKIP", 0, "no files", "tenant has no config files yet")) # --------------------------- CONFIG WRITE -------------------------------- diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/SKILL.md b/plugins/s1-secops-skills/skills/sdl-dashboard/SKILL.md index 056251e..90d5afe 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/SKILL.md +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/SKILL.md @@ -2,12 +2,12 @@ name: sdl-dashboard author: Prithvi Moses description: > - Use this skill any time the user wants to create, edit, design, generate, deploy, or debug a SentinelOne Singularity Data Lake (SDL) dashboard. Triggers include: "build me a dashboard", "create a dashboard panel", "write dashboard JSON", "add a panel to my dashboard", "deploy a dashboard to SDL", "I want a dashboard that shows...", "can you make a dashboard for...", "threat dashboard", "SOC dashboard", "network dashboard", "audit dashboard", "O365 dashboard", "hunting dashboard", or any request that involves SDL/Scalyr dashboard JSON. Also triggers when the user pastes dashboard JSON and wants help fixing, improving, or extending it. Use alongside sentinelone-sdl-api to deploy dashboards, and alongside sentinelone-powerquery to validate or compose the queries inside panels. Always use this skill when dashboards, dashboard panels, or SDL visualization is involved — even if the user just says "show me [metric] over time" in a security/SDL context. + Use this skill any time the user wants to create, edit, design, generate, deploy, or debug a SentinelOne Singularity Data Lake (SDL) dashboard. Triggers include: "build me a dashboard", "create a dashboard panel", "write dashboard JSON", "add a panel to my dashboard", "deploy a dashboard to SDL", "I want a dashboard that shows...", "can you make a dashboard for...", "threat dashboard", "SOC dashboard", "network dashboard", "audit dashboard", "O365 dashboard", "hunting dashboard", or any request that involves SDL/Scalyr dashboard JSON. Also triggers when the user pastes dashboard JSON and wants help fixing, improving, or extending it. Use alongside sentinelone-sdl-api to deploy dashboards, and alongside sentinelone-powerquery to validate or compose the queries inside panels. Always use this skill when dashboards, dashboard panels, or SDL visualization is involved, even if the user just says "show me [metric] over time" in a security/SDL context. --- # SentinelOne SDL Dashboard Skill -This skill helps you design, author, and deploy Singularity Data Lake (SDL) dashboards — from a single panel to a full multi-tab SOC dashboard. Dashboards live as configuration files in SDL and are authored as JSON (or a relaxed JavaScript-literal superset of it). You deploy them via the `sentinelone-sdl-api` skill's `put_file` method. +This skill helps you design, author, and deploy Singularity Data Lake (SDL) dashboards, from a single panel to a full multi-tab SOC dashboard. Dashboards live as configuration files in SDL and are authored as JSON (or a relaxed JavaScript-literal superset of it). You deploy them via the `sentinelone-sdl-api` skill's `put_file` method. > **Sandbox proxy blocked?** If `put_file` or SDL API calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). Use the `sdl_put_file` tool to deploy dashboards and `sdl_get_file` / `sdl_list_files` to inspect what's already deployed. @@ -15,21 +15,21 @@ This skill helps you design, author, and deploy Singularity Data Lake (SDL) dash This workflow is mandatory for every new or modified dashboard. Steps 0, 1, and 7 are non-negotiable: pre-flight discovery, the safety pre-flight check, and the post-deploy log-evidence report. Skipping any of them produces dashboards that look fine in isolation but mislead, hang, or silently drop data. -0. **Discovery (MANDATORY for every session)** — Re-enumerate connected data sources (`| group UniqueDataSourceNames = array_agg_distinct(dataSource.name) | limit 1000`), run V1-query schema discovery on every source the dashboard will touch, and validate the discriminator field for any `event.type` you intend to count. See **Pre-authoring discovery** below. Never start a panel from a remembered schema. +0. **Discovery (MANDATORY for every session)**: Re-enumerate connected data sources (`| group UniqueDataSourceNames = array_agg_distinct(dataSource.name) | limit 1000`), run V1-query schema discovery on every source the dashboard will touch, and validate the discriminator field for any `event.type` you intend to count. See **Pre-authoring discovery** below. Never start a panel from a remembered schema. **Execution path for schema discovery via s1-secops-mcp:** - 1. **PowerQuery enumeration** (`array_agg_distinct(dataSource.name)`) — run via `mcp__s1-secops-mcp__powerquery_run` directly. The s1-secops-mcp server runs locally and makes direct HTTPS calls without sandbox interference. - 2. **V1 query schema discovery** (full event JSON per source) — use `mcp__s1-secops-mcp__powerquery_schema_discover` to fetch sample events from each data source and inspect their field names and types. The MCP server runs on your local machine and bypasses the sandbox proxy entirely. -1. **Understand the ask** — What data should the dashboard show? Who is the audience (SOC analyst, manager, customer POC)? What time range makes sense? What posture should each panel reflect (a panel that legitimately returns 0 needs a markdown header explaining the SOC-positive interpretation, see **Empty results are valid evidence**). -2. **Design the structure** — Choose tabs (if multi-topic), then panels per tab. Match panel type to the data shape using the guide in `references/panel-type-cheatsheet.md`. Key decisions: flows/kill-chains → `sankey`; KPI vs SLA target → `bullet`; SOC queue health → `gauge`; 3D outlier detection → `scattered_bubble`; time-based density → `heatmap`; multiple queries in one panel → tabbed table. Where one `event.type` covers multiple semantic populations (delivery-time vs click-time, scheduled vs on-demand, inbound vs outbound), build separate sections per population, not a mixed section. -3. **Write the JSON** — Use the panel type reference below and real examples in `references/community-examples.md`. Compute explicit `x`/`y`/`w`/`h` for every panel. Apply the naming-hygiene rule from **Panel naming hygiene** so titles read as SLA-grade claims. -4. **Validate queries** — Sample 3-5 events per source/event-ID to confirm field semantics. Test each panel query via the `sentinelone-powerquery` skill. Run the parallel load test (see **Pre-deploy validation**), acceptance thresholds: slowest panel ≤ 2s, wall-clock ≤ 5s. Run `scripts/panel_safety_check.py` against the dashboard JSON; resolve every flag before deploy. -5. **Deploy** — Use the `sentinelone-sdl-api` skill to `put_file` to a path like `/dashboards/my-dashboard` with `expected_version` set from a prior `get_file` (CAS guard). Save a backup of the prior JSON first. Sleep 3s, then `get_file` to verify the version bumped AND grep the returned content for a canary string from your change. -6. **Iterate** — Show the user what was built, explain each panel, offer to tweak. If the dashboard hangs, follow the escalation ladder in **Pre-deploy validation**. -7. **Log-evidence report (MANDATORY)** — Run `scripts/validate_dashboard.py` against the deployed dashboard JSON to replay every panel, persist per-panel evidence (sample rows, row count, matchCount, elapsed, errors) to a JSON, and emit a markdown evidence file. Then run `scripts/render_validation_pdf.py` to render the PDF report (cover, per-tab sections, sample-data tables, empty-result appendix with SOC-meaningful interpretations). Deliver both alongside the dashboard. A dashboard delivered without an evidence report is incomplete. + 1. **PowerQuery enumeration** (`array_agg_distinct(dataSource.name)`): run via `mcp__s1-secops-mcp__powerquery_run` directly. The s1-secops-mcp server runs locally and makes direct HTTPS calls without sandbox interference. + 2. **V1 query schema discovery** (full event JSON per source): use `mcp__s1-secops-mcp__powerquery_schema_discover` to fetch sample events from each data source and inspect their field names and types. The MCP server runs on your local machine and bypasses the sandbox proxy entirely. +1. **Understand the ask**: What data should the dashboard show? Who is the audience (SOC analyst, manager, customer POC)? What time range makes sense? What posture should each panel reflect (a panel that legitimately returns 0 needs a markdown header explaining the SOC-positive interpretation, see **Empty results are valid evidence**). +2. **Design the structure**: Choose tabs (if multi-topic), then panels per tab. Match panel type to the data shape using the guide in `references/panel-type-cheatsheet.md`. Key decisions: flows/kill-chains → `sankey`; KPI vs SLA target → `bullet`; SOC queue health → `gauge`; 3D outlier detection → `scattered_bubble`; time-based density → `heatmap`; multiple queries in one panel → tabbed table. Where one `event.type` covers multiple semantic populations (delivery-time vs click-time, scheduled vs on-demand, inbound vs outbound), build separate sections per population, not a mixed section. +3. **Write the JSON**: Use the panel type reference below and real examples in `references/community-examples.md`. Compute explicit `x`/`y`/`w`/`h` for every panel. Apply the naming-hygiene rule from **Panel naming hygiene** so titles read as SLA-grade claims. +4. **Validate queries**: Sample 3-5 events per source/event-ID to confirm field semantics. Test each panel query via the `sentinelone-powerquery` skill. Run the parallel load test (see **Pre-deploy validation**), acceptance thresholds: slowest panel ≤ 2s, wall-clock ≤ 5s. Run `scripts/panel_safety_check.py` against the dashboard JSON; resolve every flag before deploy. +5. **Deploy**: Use the `sentinelone-sdl-api` skill to `put_file` to a path like `/dashboards/my-dashboard` with `expected_version` set from a prior `get_file` (CAS guard). Save a backup of the prior JSON first. Sleep 3s, then `get_file` to verify the version bumped AND grep the returned content for a canary string from your change. +6. **Iterate**: Show the user what was built, explain each panel, offer to tweak. If the dashboard hangs, follow the escalation ladder in **Pre-deploy validation**. +7. **Log-evidence report (MANDATORY)**: Run `scripts/validate_dashboard.py` against the deployed dashboard JSON to replay every panel, persist per-panel evidence (sample rows, row count, matchCount, elapsed, errors) to a JSON, and emit a markdown evidence file. Then run `scripts/render_validation_pdf.py` to render the PDF report (cover, per-tab sections, sample-data tables, empty-result appendix with SOC-meaningful interpretations). Deliver both alongside the dashboard. A dashboard delivered without an evidence report is incomplete. - **`validate_dashboard.py` MUST be run as a background process** — at ~10s per panel, a 30-panel dashboard takes 5 minutes; a 60-panel dashboard takes 10-30 minutes. Both exceed the MCP timeout. Start it with `python3 scripts/validate_dashboard.py ... > /tmp/validate_out.txt 2>&1 &`, confirm the PID, then poll `len(json.load(open(evidence_json)))` vs the expected panel count in short separate calls. The script persists results after every panel (idempotent), so a cancelled poll never loses work. When a `stacked_bar` or `line` panel using `| transpose` returns 0 rows in validation, cross-check whether the corresponding number panel for the same source shows data — if it does, the empty result is a V1-API artefact, not a broken query. Document it in the Appendix as confirmed false-empty and do not remove the panel. + **`validate_dashboard.py` MUST be run as a background process**, at ~10s per panel, a 30-panel dashboard takes 5 minutes; a 60-panel dashboard takes 10-30 minutes. Both exceed the MCP timeout. Start it with `python3 scripts/validate_dashboard.py ... > /tmp/validate_out.txt 2>&1 &`, confirm the PID, then poll `len(json.load(open(evidence_json)))` vs the expected panel count in short separate calls. The script persists results after every panel (idempotent), so a cancelled poll never loses work. When a `stacked_bar` or `line` panel using `| transpose` returns 0 rows in validation, cross-check whether the corresponding number panel for the same source shows data, if it does, the empty result is a V1-API artefact, not a broken query. Document it in the Appendix as confirmed false-empty and do not remove the panel. 8. **Screenshot review with the user (MANDATORY).** API validation proves each panel's query returns rows; it does NOT prove the panel RENDERS. Render-only failures happen in the browser, not the API, so `validate_dashboard.py` cannot see them: a panel showing "Couldn't load content", a markdown tile showing "Untitled", a number reading "34 principals" under a title that already says principals, an empty chart, or a broken legend. After EVERY deploy, ALWAYS ask the user to open the dashboard and send screenshots of each tab, then read them, diagnose each visual defect, fix the JSON, and re-deploy, without waiting to be asked. Prompt explicitly, e.g.: "The dashboard is deployed at `/dashboards/`. Please open it and send screenshots of each tab so I can catch any render-only issues and fix them automatically." Treat this as part of deployment, not optional polish. Fixes for the common render-only defects are in the **Quick triage** table. @@ -154,7 +154,7 @@ The patterns below produce HTTP 500s or silent renderer failures on current SDL Network device logs (FortiGate, Palo Alto, etc.) emit KV pairs where values are wrapped in double quotes: `app="HTTPS.BROWSER" appcat="Web.Client"`. The `| parse` format string is itself double-quoted, so you cannot embed a `"` to match the wrappers. The workaround is two passes: -**Pass 1** — capture the whole non-whitespace token including its surrounding quotes: +**Pass 1**, capture the whole non-whitespace token including its surrounding quotes: ```text | parse "app=$raw_app{regex=\\S+}$" from message @@ -162,7 +162,7 @@ Network device logs (FortiGate, Palo Alto, etc.) emit KV pairs where values are This extracts `"HTTPS.BROWSER"` (with quotes) into `raw_app`. -**Pass 2** — extract the clean value by matching the alphanumeric content, which skips the leading `"`: +**Pass 2**, extract the clean value by matching the alphanumeric content, which skips the leading `"`: ```text | parse "$app_name{regex=[A-Z0-9./_-]+}$" from raw_app @@ -262,7 +262,7 @@ When two semantically distinct event populations exist within the same `event.ty ## Dashboard JSON structure -A dashboard is a JSON object (SDL also accepts unquoted keys — JavaScript-literal format). Three top-level shapes: +A dashboard is a JSON object (SDL also accepts unquoted keys, JavaScript-literal format). Three top-level shapes: ### Single-tab dashboard @@ -297,7 +297,7 @@ A dashboard is a JSON object (SDL also accepts unquoted keys — JavaScript-lite | `graphs` | Array of panel objects (single-tab) | | `tabs` | Array of `{tabName, graphs}` objects when `configType: "TABBED"` | | `configType` | Set to `"TABBED"` for multi-tab dashboards | -| `parameters` | Array of `{name, values, defaultValue}` — creates dropdown/text filters | +| `parameters` | Array of `{name, values, defaultValue}`: creates dropdown/text filters | | `options` | `{"layout": {"fixed": 1}}` to lock drag-and-drop | | `teamEmails` | Array of account emails whose data is pooled | @@ -307,7 +307,7 @@ Every panel is an object inside `graphs`. The `graphStyle` property picks the pa ### Layout -Every panel **must** have explicit `x`, `y`, `w`, `h` in its `layout` object. Dashboards with many panels (observed at 18+) where `x`/`y` are omitted can hang the browser renderer indefinitely — the auto-layout pass appears to loop on collision detection when panels stack at the implicit (0,0) origin. The symptom is the browser tab becoming unresponsive before any query fires. +Every panel **must** have explicit `x`, `y`, `w`, `h` in its `layout` object. Dashboards with many panels (observed at 18+) where `x`/`y` are omitted can hang the browser renderer indefinitely, the auto-layout pass appears to loop on collision detection when panels stack at the implicit (0,0) origin. The symptom is the browser tab becoming unresponsive before any query fires. ```json "layout": { "w": 30, "h": 14, "x": 0, "y": 0 } @@ -412,7 +412,7 @@ Query **must return exactly one text column and one numeric column**. ### Table panel -`graphStyle`: `"table"` (or omit — table is the default for PowerQuery panels) +`graphStyle`: `"table"` (or omit, table is the default for PowerQuery panels) Best for: raw event lists, top-N tables, IOC lookups. @@ -445,9 +445,9 @@ Query must reduce to a single number (use `group count()`, `estimate_distinct()` } ``` -> **No "millions" (or thousands) number format.** SDL number panels scale only via `format: "auto"` (which may render K/M/B); there is no explicit millions option. To force a specific unit, divide in the query and label the title: `... | group ev = count() | let Events_M = ev / 1000000 | columns Events_M | limit 1` with title `"Total Events (M)"`. Always carry the unit (GiB, events, min, count, ratio) in the title or `suffix` — a number panel renders only a bare value. +> **No "millions" (or thousands) number format.** SDL number panels scale only via `format: "auto"` (which may render K/M/B); there is no explicit millions option. To force a specific unit, divide in the query and label the title: `... | group ev = count() | let Events_M = ev / 1000000 | columns Events_M | limit 1` with title `"Total Events (M)"`. Always carry the unit (GiB, events, min, count, ratio) in the title or `suffix`, a number panel renders only a bare value. > -> **Options — stick to the minimal set.** Production reference dashboards only set `{format, precision, suffix}`. Fields like `backgroundColor` and `color` are documented in some places but are not consistently honoured by the renderer — at best silently ignored, at worst the panel renders blank or hangs. Do not add them until tested against the specific tenant. +> **Options, stick to the minimal set.** Production reference dashboards only set `{format, precision, suffix}`. Fields like `backgroundColor` and `color` are documented in some places but are not consistently honoured by the renderer, at best silently ignored, at worst the panel renders blank or hangs. Do not add them until tested against the specific tenant. With trend indicator (S-25.1.5+): @@ -583,10 +583,10 @@ Accepts GitHub-flavored Markdown. Good for section headers, links, or explanatio > **CRITICAL:** the body field is `markdown`, **not** `content`. A panel with > `"content": "..."` is created successfully and renders as a **blank tile with -> no error** — the API accepts it, the UI just has nothing to display. Always +> no error**, the API accepts it, the UI just has nothing to display. Always > use `"markdown": "..."`. > -> **Title duplication:** the SDL UI renders the `"title"` field as a header above the panel body. Do NOT repeat the same heading inside the `"markdown"` body. A common mistake is setting `"title": "## Policy Enforcement"` (with the `##` markdown prefix) and then starting the markdown body with `## Policy Enforcement\nDescription...` — this produces the heading twice. Keep the `title` field as plain text and put only the descriptive prose (no repeated heading) inside `"markdown"`. Also: a markdown panel with NO `title` key renders an "Untitled" header in S-26.1 (observed live), so always set a short plain-text `title`. +> **Title duplication:** the SDL UI renders the `"title"` field as a header above the panel body. Do NOT repeat the same heading inside the `"markdown"` body. A common mistake is setting `"title": "## Policy Enforcement"` (with the `##` markdown prefix) and then starting the markdown body with `## Policy Enforcement\nDescription...`; this produces the heading twice. Keep the `title` field as plain text and put only the descriptive prose (no repeated heading) inside `"markdown"`. Also: a markdown panel with NO `title` key renders an "Untitled" header in S-26.1 (observed live), so always set a short plain-text `title`. ```json { @@ -600,23 +600,23 @@ Accepts GitHub-flavored Markdown. Good for section headers, links, or explanatio ## Common rendering pitfalls -These are silent failures — the API accepts the JSON, the panel mounts, but +These are silent failures, the API accepts the JSON, the panel mounts, but either nothing draws or the panel hangs on the spinner. Apply the fix preemptively when authoring panels of these shapes. | Symptom | Root cause | Fix | |---|---|---| -| Markdown panel renders blank, no error | Wrong body field | Use `markdown:` (NOT `content:`) — see Markdown panel section above | +| Markdown panel renders blank, no error | Wrong body field | Use `markdown:` (NOT `content:`): see Markdown panel section above | | Markdown panel header shows "Untitled" | No `title` key on the markdown panel (S-26.1) | Add a short plain-text `title`; keep prose (no repeated `##` heading) in `markdown` | | Number panel reads the unit twice, e.g. "34 principals" under "Active principals (24h)" | `options.suffix` duplicates a unit already in the `title` | Remove `suffix` (or drop the unit from the title); keep `{format, precision}` only | | Category bar/line panel errors "The first column ... should have numeric value in epoch" | `graphStyle: "bar"` / `"line"` / `"area"` default to a TIME x-axis and require an epoch first column; a `(category, count)` query has a string first column | Use `graphStyle: "stacked_bar"` with `"xAxis": "grouped_data"`; keep the `(category, value)` query. `bar` alone is NOT a categorical bar chart | | `area` chart with `query` field shows an indefinite spinner; no error in UI | `graphStyle: "area"` is built around the `plots: [...]` pattern. A query-driven multi-series chart that ends in `transpose` does not render under `area`. | Switch to `graphStyle: "stacked_bar"` (or `"line"`) with `xAxis: "time"`. The query body stays the same. | -| `plots`-based line or area panel returns "No results found" even though data clearly exists (confirmed via a number or table panel on the same source) | The `plots: [{ "filter": "...", "facet": "..." }]` filter mechanism silently ignores fields in the `unmapped.*` namespace. Any predicate like `unmapped.action='deny'` in a `filter` string inside `plots` matches 0 events regardless of actual data volume. No error is surfaced — the panel just shows empty. | Replace with a PowerQuery `stacked_bar` + `\| transpose` panel. The PowerQuery engine fully supports `unmapped.*` fields. The query body is equivalent: ` unmapped.action in ('deny', ...) \| group count=count() by timestamp=timebucket('1h'), action=unmapped.action \| transpose action on timestamp`. | -| `Couldn't load content` — `field=[DashboardPlotQuery.plotIndex] error=[Facet for plot at index: 0 is invalid]` | `"facet": "count()"` (with parentheses) is invalid in a `plots` array. Only `"facet": "count"` (no parentheses) is accepted. The community examples in older docs show `count()` — this is wrong. | Use `"facet": "count"` (no parentheses) in every plots entry. | -| `Couldn't load content` — `"transpose" can only be used as the last command in a query` | `transpose` is the terminal command in the PQ pipeline; nothing can follow it | Remove any `\| limit N` / `\| sort` / `\| filter` placed AFTER `transpose`. If you need a limit, apply it pre-transpose via a subquery or a column-list filter | -| `Couldn't load content` — `Identifier "x-y" is ambiguous. To subtract, add spaces: "x - y". Otherwise, add backslashes: "x\-y"` | The PQ parser reads hyphenated text as a single identifier, not as subtraction | Add spaces around `-` in arithmetic: `total - min`, `max - min`, `(a - b) / (c - d)`. Same applies to all PQ panels and rule bodies. | +| `plots`-based line or area panel returns "No results found" even though data clearly exists (confirmed via a number or table panel on the same source) | The `plots: [{ "filter": "...", "facet": "..." }]` filter mechanism silently ignores fields in the `unmapped.*` namespace. Any predicate like `unmapped.action='deny'` in a `filter` string inside `plots` matches 0 events regardless of actual data volume. No error is surfaced, the panel just shows empty. | Replace with a PowerQuery `stacked_bar` + `\| transpose` panel. The PowerQuery engine fully supports `unmapped.*` fields. The query body is equivalent: ` unmapped.action in ('deny', ...) \| group count=count() by timestamp=timebucket('1h'), action=unmapped.action \| transpose action on timestamp`. | +| `Couldn't load content`: `field=[DashboardPlotQuery.plotIndex] error=[Facet for plot at index: 0 is invalid]` | `"facet": "count()"` (with parentheses) is invalid in a `plots` array. Only `"facet": "count"` (no parentheses) is accepted. The community examples in older docs show `count()`; this is wrong. | Use `"facet": "count"` (no parentheses) in every plots entry. | +| `Couldn't load content`: `"transpose" can only be used as the last command in a query` | `transpose` is the terminal command in the PQ pipeline; nothing can follow it | Remove any `\| limit N` / `\| sort` / `\| filter` placed AFTER `transpose`. If you need a limit, apply it pre-transpose via a subquery or a column-list filter | +| `Couldn't load content`: `Identifier "x-y" is ambiguous. To subtract, add spaces: "x - y". Otherwise, add backslashes: "x\-y"` | The PQ parser reads hyphenated text as a single identifier, not as subtraction | Add spaces around `-` in arithmetic: `total - min`, `max - min`, `(a - b) / (c - d)`. Same applies to all PQ panels and rule bodies. | | `transpose on timestamp` hangs the renderer when field values contain hyphens (e.g. `db-prod-01`, ISO dates, UUIDs, container names) | The renderer must parse the transposed values as column names for the chart legend. The PQ parser reads `db-prod-01` as subtraction and throws `Identifier is ambiguous`, or hangs silently. The V1 API tolerates this; the renderer does not. | **Option A**, pre-process: `\| let host_safe = replace(host_raw, '-', '_')` then transpose on `host_safe`. `replace_all` does NOT exist in SDL PowerQuery (live-verified 2026-07-29); use `replace`. If the tenant's `replace` substitutes only the first occurrence, values with multiple hyphens (`db-prod-01`) still break, so treat Option A as best-effort. **Option B (preferred for by-host charts)**: avoid transpose on hyphenated values entirely and use `"xAxis": "grouped_data"` with a grouping query. Loses time dimension but renders reliably. **Option C**: only use `transpose` on fields whose values are guaranteed free of hyphens (numeric codes, single-token labels like `Success`/`Failure`). | -| Number panel, table panel, or whole dashboard slow to load on first open | "All API queries pass" ≠ "dashboard loads fast". The browser fires all panel queries in parallel; total load time ≈ slowest single panel. Serial validation in a script wildly overestimates wall-clock load time. | Run a parallel load test before every `put_file` — see **Pre-deploy validation** section below. Acceptance thresholds: slowest single panel ≤ 2s, wall-clock ≤ 5s, zero failures. | +| Number panel, table panel, or whole dashboard slow to load on first open | "All API queries pass" ≠ "dashboard loads fast". The browser fires all panel queries in parallel; total load time ≈ slowest single panel. Serial validation in a script wildly overestimates wall-clock load time. | Run a parallel load test before every `put_file`: see **Pre-deploy validation** section below. Acceptance thresholds: slowest single panel ≤ 2s, wall-clock ≤ 5s, zero failures. | | `get_file` returns HTTP 404 immediately after a successful `put_file` | `put_file` is synchronous but the file propagates across replicas with eventual consistency (~2-3s). | Always `time.sleep(3)` between `put_file` and the subsequent `get_file` verification call. | | Heatmap panel renders blank, no error, data confirmed in PowerQuery | `rangesCreation: "automatic"` requires empty-string middles in `heatmapRangeConfig`. Providing explicit numeric strings (e.g. `"10"`, `"50"`) conflicts with automatic mode and the renderer silently returns a blank panel. | Restore to `["-∞", "", "", "", "", "∞"]`. SDL auto-calculates the middle thresholds from live data. | | Heatmap (or any panel) renders blank after a config change, but the query returns data | Stale SDL UI session state can persist across config deployments. The browser renderer caches the prior render state and does not always reload after a `put_file`. | Log out and log back in to the SDL console. This clears session state and forces a fresh render. Do not assume a config bug until you have ruled out a stale session. | @@ -626,9 +626,9 @@ preemptively when authoring panels of these shapes. | Dashboard panel times out, indefinite spinner | A subquery inside the main query forces the engine to scan-and-aggregate twice. Dashboards rerun panels on every load, so the cost compounds. | Don't gate a panel query on a subquery if you can avoid it. Hardcode top-N values via inline OR clauses, or accept the full cardinality (often small after the initial filter). If a subquery is unavoidable, prefer a `lookup` against a precomputed datatable. | | Number panel slow on a busy index | Engine keeps scanning after the answer is computed | Always terminate number panels with `\| limit 1` after the `\| group` that reduces to one row | | Wide range + fine `timebucket` = thousands of points per series | E.g. `timebucket("10m")` over 7d = 1,008 points × N series | Match bucket to duration: 1d → `10m`, 7d → `1h` (minimum), 30d → `1 day` minimum | -| Two near-identical dashboards appear in *Configuration files* under `/dashboards/` and `/dashboards/id//` | The SDL UI's **Save** button writes to `/dashboards/id//`. `put_file("/dashboards/")` writes to the simpler path. Both render in the UI and both are visible to the file API; neither is access-controlled. | Pick one canonical path **before** the first deploy. Recommend the UI-native `/dashboards/id//` if the dashboard already exists in the UI; otherwise `/dashboards/`. Don't mix the two — each `put_file` to the alternate path creates a silent duplicate alongside the UI-saved copy. | -| `columns resources[0].name` or `vulnerabilities[0].cve.uid` returns HTTP 500 | PowerQuery does not accept bracket-array indexing in `columns`. The V1 query API exposes nested arrays as flattened keys (`resources[0].name`) for display, but those flattened keys are NOT valid PowerQuery field paths. | Use top-level scalar fields only (`severity_id`, `finding_info.title`, `metadata.product.name`, `class_name`, `time`). For first-element access inside a query, use `array_get(resources, 0).name` only inside `let`. For richer drill-down, switch from PowerQuery to the V1 query API (returns full event JSON) — see `sentinelone-sdl-api` skill. | -| `\| parse "app=$val$" from message` fails with "Start quote with no matching end quote" when the raw field value is wrapped in double quotes (e.g. `app="HTTPS.BROWSER"`) | The `\| parse` format string uses `"..."` as its outer delimiter. Any `"` character embedded in the format — to match quote-wrapped KV values common in network device logs — is treated as a string terminator. No escape sequence (backslash, single-quote outer, hex) works around this. | Use a two-pass parse: pass 1 captures the entire non-whitespace token including quotes (`{regex=\\S+}`), pass 2 extracts the clean value from that token. See **Two-pass parse for quoted KV values** below. | +| Two near-identical dashboards appear in *Configuration files* under `/dashboards/` and `/dashboards/id//` | The SDL UI's **Save** button writes to `/dashboards/id//`. `put_file("/dashboards/")` writes to the simpler path. Both render in the UI and both are visible to the file API; neither is access-controlled. | Pick one canonical path **before** the first deploy. Recommend the UI-native `/dashboards/id//` if the dashboard already exists in the UI; otherwise `/dashboards/`. Don't mix the two, each `put_file` to the alternate path creates a silent duplicate alongside the UI-saved copy. | +| `columns resources[0].name` or `vulnerabilities[0].cve.uid` returns HTTP 500 | PowerQuery does not accept bracket-array indexing in `columns`. The V1 query API exposes nested arrays as flattened keys (`resources[0].name`) for display, but those flattened keys are NOT valid PowerQuery field paths. | Use top-level scalar fields only (`severity_id`, `finding_info.title`, `metadata.product.name`, `class_name`, `time`). For first-element access inside a query, use `array_get(resources, 0).name` only inside `let`. For richer drill-down, switch from PowerQuery to the V1 query API (returns full event JSON); see `sentinelone-sdl-api` skill. | +| `\| parse "app=$val$" from message` fails with "Start quote with no matching end quote" when the raw field value is wrapped in double quotes (e.g. `app="HTTPS.BROWSER"`) | The `\| parse` format string uses `"..."` as its outer delimiter. Any `"` character embedded in the format, to match quote-wrapped KV values common in network device logs, is treated as a string terminator. No escape sequence (backslash, single-quote outer, hex) works around this. | Use a two-pass parse: pass 1 captures the entire non-whitespace token including quotes (`{regex=\\S+}`), pass 2 extracts the clean value from that token. See **Two-pass parse for quoted KV values** below. | --- @@ -636,7 +636,7 @@ preemptively when authoring panels of these shapes. SDL has two distinct filtering mechanisms that look similar but behave very differently depending on dashboard type. -### `filters[]` — use this in TABBED dashboards (actually works) +### `filters[]`: use this in TABBED dashboards (actually works) `filters[]` declared inside a tab object creates a live facet-based filter widget. Selecting a value from the dropdown applies that filter to **all panels in the tab** in real time. This is the correct filtering mechanism for `configType: "TABBED"` dashboards. Confirmed working. @@ -651,9 +651,9 @@ SDL has two distinct filtering mechanisms that look similar but behave very diff } ``` -The dropdown options are populated dynamically from live field values in the current time range. No query changes needed — SDL injects the filter automatically. +The dropdown options are populated dynamically from live field values in the current time range. No query changes needed, SDL injects the filter automatically. -### `#VarName#` substitution — works in FLAT and TABBED dashboards; refiltering applies on Search +### `#VarName#` substitution: works in FLAT and TABBED dashboards; refiltering applies on Search `#VarName#` query injection is confirmed working in flat dashboards (no `configType`, no `tabs`, top-level `parameters` and `graphs`; see `parameter_examples-v1.0.json`). @@ -684,7 +684,7 @@ Flat dashboard example (the only context where `#VarName#` works): Pre-quoting rule: if the field requires string matching, embed single quotes in the value string: `"'logVolume'"` so substitution produces `tag='logVolume'`. Use `"*"` (no inner quotes) for wildcard presence filter. -### `parameters[]` in TABBED dashboards — UI-only chrome +### `parameters[]` in TABBED dashboards: UI-only chrome `parameters[]` declared inside a tab (with `facet` or `values`) renders a dropdown in the tab header but does NOT apply any filter to panel queries. It is purely decorative UI. The `filters[]` mechanism described above is the functional equivalent. @@ -742,7 +742,7 @@ Hide a parameter from the UI (declared but not displayed): > ⚠️ **Schemas drift between sessions and tenants.** The patterns below are > starting points, not a registry. **Run live schema discovery (V1 query via > `sentinelone-sdl-api` skill) on every source you'll query before authoring -> panels.** PowerQuery's default projection is `timestamp + message` only — it +> panels.** PowerQuery's default projection is `timestamp + message` only; it > cannot discover schemas. Use the V1 `query` method which returns full event > JSON. @@ -752,18 +752,18 @@ Hide a parameter from the UI (declared but not displayed): `Identity`, and `ActivityFeed` carry **rich OCSF events**, not metadata stubs. The fields that *look* like they should exist based on the source name (`alert.severity`, `alert.classification`, `vulnerability.kevAvailable`, -`misconfiguration.severity`) frequently do NOT exist — the actual queryable +`misconfiguration.severity`) frequently do NOT exist, the actual queryable fields are OCSF-namespaced. | Source | OCSF class_uid | Severity field | Endpoint linkage | Notes | |---|---|---|---|---| | `alert` | 99602001 (S1 Security Alert) | `severity_id` (numeric 0-5) | `resources[].name`, `resources[].s1_metadata.site_name` (NOTE: `resources[N]` only readable via V1 query, not PowerQuery `columns`) | `finding_info.title` = alert name. `metadata.product.name` ∈ {STAR, EDR, Identity, CWS, EPP}. `class_name` = "S1 Security Alert" | -| `vulnerability` | 2002 (Vulnerability Finding) | `severity_id` + `severity_` (string, often empty) | `resource.s1_metadata.*`, `resource.uid` | `vulnerabilities[].cve.uid`, `vulnerabilities[].affected_packages[].{name,version,vendor_name}`. **No `kevAvailable` field in SDL** — KEV/EPSS metadata lives in the management console only | +| `vulnerability` | 2002 (Vulnerability Finding) | `severity_id` + `severity_` (string, often empty) | `resource.s1_metadata.*`, `resource.uid` | `vulnerabilities[].cve.uid`, `vulnerabilities[].affected_packages[].{name,version,vendor_name}`. **No `kevAvailable` field in SDL**, KEV/EPSS metadata lives in the management console only | | `misconfiguration` | 2003 (Compliance Finding) | `severity_id` | `resources[].s1_metadata.*` | `compliance.standards[]` (CIS_AKS, CIS_KUBERNETES, etc.), `compliance.requirements[]`, `policy.{name,uid,desc}`, `cloud.provider`, `finding_info.title` | -| `asset` | 3004 (Device Inventory) | `severity_id` + `severity_` | `device.agent.uuid`, `device.name`, `device.os.name` | 126 fields (live-confirmed). Rich endpoint inventory. Key fields: `device.agent.{uuid,version,network_status,network_status_title,is_active,is_decommissioned,is_uninstalled,network_quarantine_enabled,last_logged_in_user_name,scan_status}`, `device.os.{name,version,type}`, `device.ip_external`, `device.hw_info.*`, `device.network_interfaces[N].*`. `operation` = OPERATION_UPSERT. No `entity.uid`, no `entity_result.*`, no `agent.health.online` fields — use `device.agent.network_status` for connectivity state | -| `ActivityFeed` | n/a (Hyperautomation / mgmt activity audit) | n/a | `data.scope_id`, `site_id`, `account.id` | 41 fields (live-confirmed). Hyperautomation workflow execution audit log and management console activity log. Key fields: `activity_type` (numeric — e.g. 9207 = workflow execution event, NOT a string), `activity_uuid`, `primary_description`, `secondary_description`, `data.workflow_{id,name,execution_url}`, `data.{scope_id,scope_level,scope_name,site_name,user_id}`, `created_at`, `updated_at`, `context`. `sca:RetentionType = 'ACTIVITY_LOG'`. No `activityType` (camelCase) field. Not useful for threat hunting — use for Hyperautomation audit and compliance workflow tracking | +| `asset` | 3004 (Device Inventory) | `severity_id` + `severity_` | `device.agent.uuid`, `device.name`, `device.os.name` | 126 fields (live-confirmed). Rich endpoint inventory. Key fields: `device.agent.{uuid,version,network_status,network_status_title,is_active,is_decommissioned,is_uninstalled,network_quarantine_enabled,last_logged_in_user_name,scan_status}`, `device.os.{name,version,type}`, `device.ip_external`, `device.hw_info.*`, `device.network_interfaces[N].*`. `operation` = OPERATION_UPSERT. No `entity.uid`, no `entity_result.*`, no `agent.health.online` fields; use `device.agent.network_status` for connectivity state | +| `ActivityFeed` | n/a (Hyperautomation / mgmt activity audit) | n/a | `data.scope_id`, `site_id`, `account.id` | 41 fields (live-confirmed). Hyperautomation workflow execution audit log and management console activity log. Key fields: `activity_type` (numeric, e.g. 9207 = workflow execution event, NOT a string), `activity_uuid`, `primary_description`, `secondary_description`, `data.workflow_{id,name,execution_url}`, `data.{scope_id,scope_level,scope_name,site_name,user_id}`, `created_at`, `updated_at`, `context`. `sca:RetentionType = 'ACTIVITY_LOG'`. No `activityType` (camelCase) field. Not useful for threat hunting, use for Hyperautomation audit and compliance workflow tracking | | `Identity` | 3002 (Authentication) | `severity_id`, `status_id` | `user.name`, `user.domain`, `src_endpoint.ip`, `dst_endpoint.hostname` | `auth_protocol` (Kerberos, NTLM), `ref_event_code` (Win Event ID like 4624), `unmapped.type` ("Logon Success"/"Logon Failure"), `type_name` ("Authentication: Logon") | -| `finding` | n/a — **NOT security findings** | n/a | n/a | `dataSource.category='metrics'`, `tag='ingestionHealth'`, `processor='ocsf-findings'`. This source is OCSF processor latency/batch metrics, not findings | +| `finding` | n/a: **NOT security findings** | n/a | n/a | `dataSource.category='metrics'`, `tag='ingestionHealth'`, `processor='ocsf-findings'`. This source is OCSF processor latency/batch metrics, not findings | **OCSF severity_id mapping:** 0=Unknown, 1=Informational, 2=Low, 3=Medium, 4=High, 5=Critical, 6=Fatal. Filter via `severity_id >= 4` for High+Critical. @@ -772,10 +772,10 @@ fields are OCSF-namespaced. Field names ending in `_` (e.g. `severity_`, `status_`, `classification_`) are SDL's auto-rename when source data carries a field name colliding with an SDL -reserved name. The underscored form **IS** the canonical, queryable field — +reserved name. The underscored form **IS** the canonical, queryable field, not a sparse alternate. The numeric OCSF variants (`severity_id`, `status_id`, `class_uid`) live alongside the underscored string fields. The `severity_` -string can be case-mixed (`Critical` and `CRITICAL` both appear) — see +string can be case-mixed (`Critical` and `CRITICAL` both appear), see `sentinelone-powerquery/references/pitfalls.md` for handling. ### EDR / XDR telemetry (endpoint events from `dataSource.name='SentinelOne'`) @@ -792,7 +792,7 @@ event.category in ('process', 'file', 'ip', 'dns', 'indicators', 'logins', 'url' ```text dataSource.vendor = 'Microsoft' // O365, Azure AD -dataSource.name = 'FortiGate' // field namespaces differ per event.type — validate each type separately before authoring panels +dataSource.name = 'FortiGate' // field namespaces differ per event.type, validate each type separately before authoring panels // traffic: src_endpoint.ip, dst_endpoint.ip, app_name (populated), unmapped.action, traffic.bytes_out/in // vpn: unmapped.srcip (NOT src_endpoint.ip which is null), unmapped.action, unmapped.dstip // app-ctrl: app_name is null (not promoted by marketplace parser); extract via two-pass parse from message field @@ -802,7 +802,7 @@ dataSource.name = 'Zscaler Internet Access' // http_request.url.categories metadata.product.name = 'SharePoint' ``` -Re-validate every third-party source schema in Step 2b of session init — +Re-validate every third-party source schema in Step 2b of session init: field namespaces vary by parser version and tenant. ### Common PowerQuery patterns for panels @@ -913,7 +913,7 @@ Read the community examples before creating a new dashboard, and read `lessons-l These scripts are mandatory parts of the workflow, not optional tooling. - `scripts/panel_safety_check.py `: pre-deploy. Scans dashboard JSON for known-bad patterns (markdown `content` vs `markdown` field, `area` + `query`, transpose-not-terminal, hyphenated arithmetic, `count_if` / `sum(if())` / mid-pipeline `| union` (union-first is allowed) / named subqueries, `\\s`/`\\d` regex escapes inside `matches`, full-text combined with timebucket+transpose, missing layout, missing `| limit` on number/table panels). Exits non-zero on any flag. Run before every `put_file`. -- `scripts/validate_dashboard.py [--start 7d] [--out ]`: post-deploy. Replays every non-markdown panel against the SDL `power_query` API, persists per-panel evidence (style, query, elapsed, rowCount, matchCount, columns, sample rows, error) to a JSON keyed on `tab::title`, and emits a markdown evidence file. Idempotent, resumes cleanly, persists after each panel. Auth falls through to console JWT (force-clears scoped keys). **Always run as a background process** (`... &`) — see step 7 in the Workflow section. Do not wait for it inline. +- `scripts/validate_dashboard.py [--start 7d] [--out ]`: post-deploy. Replays every non-markdown panel against the SDL `power_query` API, persists per-panel evidence (style, query, elapsed, rowCount, matchCount, columns, sample rows, error) to a JSON keyed on `tab::title`, and emits a markdown evidence file. Idempotent, resumes cleanly, persists after each panel. Auth falls through to console JWT (force-clears scoped keys). **Always run as a background process** (`... &`); see step 7 in the Workflow section. Do not wait for it inline. - `scripts/render_validation_pdf.py [--out ]`: post-deploy. Reads the validation JSON and emits a PDF report with cover page, per-tab sections, sample-data tables (first 3 rows of N), and an Appendix listing every empty-result panel with the operator's prepared SOC-meaningful interpretation. The PDF is the leadership deliverable; the markdown evidence stays in version control. ## Log-evidence report (mandatory deliverable) @@ -942,9 +942,9 @@ See `references/evidence-report-template.md` for the exact structure. ## Query performance tips -Dashboard panels run their queries in the SDL console's built-in rendering engine — not via LRQ or any external API. Every panel loads when the user opens the dashboard, so slow queries directly delay the page. Apply these rules to every query you write. +Dashboard panels run their queries in the SDL console's built-in rendering engine, not via LRQ or any external API. Every panel loads when the user opens the dashboard, so slow queries directly delay the page. Apply these rules to every query you write. -### 1. Use `net_rfc1918()` — never hand-roll CIDR regex +### 1. Use `net_rfc1918()`: never hand-roll CIDR regex **Slow (avoid):** @@ -1005,17 +1005,17 @@ After a `| group count=count() by ...`, SDL may produce rows with `count=0` for Apply the same pattern to any aggregated numeric field you're visualising: `| filter bytes > 0`, `| filter value > 0`. -### 6. `| sort` must come before `| columns` — field projection is destructive +### 6. `| sort` must come before `| columns`: field projection is destructive `| columns` removes every field not listed. Any `| sort` placed after `| columns` that references a field not in the projected set is operating on a non-existent field and silently fails or hangs the panel (bullet panels are especially prone to this): ```text -// Wrong — severity_id is gone after | columns, sort fails silently +// Wrong: severity_id is gone after | columns, sort fails silently | group value=count(), target=..., label=... by severity_id | columns value, target, label | sort -severity_id ← severity_id no longer exists -// Correct — sort while severity_id is still in scope +// Correct: sort while severity_id is still in scope | group value=count(), target=..., label=... by severity_id | sort -severity_id | columns value, target, label @@ -1045,36 +1045,36 @@ Too-fine granularity creates thousands of data points per series, slowing both q | `14d` | `'1d'` | 14 | | `30d` | `'1d'` | 30 | -For a 24h dashboard, `'10m'` (144 points) can work for low-cardinality single-series panels but should not be the default — use `'1h'`. For a multi-series transpose, the data-point count compounds: `timebucket('10m')` on a 24h dashboard with a 7-series transpose = 1,008 cells per chart. +For a 24h dashboard, `'10m'` (144 points) can work for low-cardinality single-series panels but should not be the default; use `'1h'`. For a multi-series transpose, the data-point count compounds: `timebucket('10m')` on a 24h dashboard with a 7-series transpose = 1,008 cells per chart. -**Never use `timebucket('10m')` on a 7-day dashboard** — that's 1,008 points per series. +**Never use `timebucket('10m')` on a 7-day dashboard**; that's 1,008 points per series. -### 6. Push filters early — before the first pipe +### 6. Push filters early: before the first pipe The initial filter (before the first `|`) is evaluated as an index predicate. Conditions placed there are far cheaper than `| filter` commands applied after a full scan: ```text -// Good — index-level filter +// Good: index-level filter event.category = 'ip' event.network.direction = 'OUTGOING' dataSource.category = 'security' | group count=count() by dst.ip.address | sort -count | limit 20 -// Bad — scans all events then filters +// Bad: scans all events then filters dataSource.category = 'security' | filter event.category = 'ip' && event.network.direction = 'OUTGOING' | group count=count() by dst.ip.address | sort -count | limit 20 ``` -### 7. Use `estimate_distinct()` for cardinality — not `count(distinct …)` +### 7. Use `estimate_distinct()` for cardinality: not `count(distinct …)` `estimate_distinct()` uses HyperLogLog and is orders of magnitude faster on high-cardinality fields like `agent.uuid`, `threat_id`, `src.process.storyline.id`. ### 8. Avoid `nolimit` in dashboard panels -`nolimit` raises the row cap to 3 GB and blocks concurrent queries. It is never appropriate in a dashboard panel — always use an explicit `| limit N` instead. +`nolimit` raises the row cap to 3 GB and blocks concurrent queries. It is never appropriate in a dashboard panel; always use an explicit `| limit N` instead. ### 9. Wrap string-prone numeric fields with `number()` before arithmetic -SDL/Scalyr column types are locked at first ingest. A field that *should* be numeric — `severity_id`, `traffic.bytes_in/out`, `traffic.packets_in/out`, `unmapped.duration` — can be string-typed at the index level (because a parser declared `type: "string"` for many tenant generations, or the field was first-written before the type was set). When that happens, `sum()` / `avg()` / `max()` / `>=` predicates return NaN or fail silently *even though the values are populated and visible in Event Search*. +SDL/Scalyr column types are locked at first ingest. A field that *should* be numeric, `severity_id`, `traffic.bytes_in/out`, `traffic.packets_in/out`, `unmapped.duration`, can be string-typed at the index level (because a parser declared `type: "string"` for many tenant generations, or the field was first-written before the type was set). When that happens, `sum()` / `avg()` / `max()` / `>=` predicates return NaN or fail silently *even though the values are populated and visible in Event Search*. **Failsafe pattern for every dashboard panel that does numeric work:** @@ -1184,7 +1184,7 @@ for m in res.get("matches") or []: print(f" {k} = {str(attrs[k])[:80]}") ``` -This is the same V1-query schema-discovery pattern from the `sentinelone-sdl-api` skill — apply it per-event-ID, not just per-source. +This is the same V1-query schema-discovery pattern from the `sentinelone-sdl-api` skill, apply it per-event-ID, not just per-source. --- @@ -1267,13 +1267,13 @@ POST-DEPLOY (MANDATORY) - **Use tabs** for dashboards covering multiple topics (threat overview, policy changes, user activity). Keep each tab focused. - **Start with number panels** at the top for KPIs, then tables and charts below. -- **Avoid breakdown graphs** in production dashboards — they can time out and can't be pre-cached. Use explicit labeled plots instead. +- **Avoid breakdown graphs** in production dashboards: they can time out and can't be pre-cached. Use explicit labeled plots instead. - **Lock layout** with `options: {"layout": {"fixed": 1}}` to prevent accidental repositioning. - **Use `showBarsColumn: "true"`** on table panels with a count column to get inline bar charts. -- **Time range**: set `duration` to match how "fresh" the data needs to be. Use `"24h"` for security operations / alert-triage dashboards (the standard for SOC real-time views), `"7 days"` for trend and capacity dashboards. Never default to `"7 days"` for an operations dashboard — analysts lose the short-window density that makes operational dashboards useful. +- **Time range**: set `duration` to match how "fresh" the data needs to be. Use `"24h"` for security operations / alert-triage dashboards (the standard for SOC real-time views), `"7 days"` for trend and capacity dashboards. Never default to `"7 days"` for an operations dashboard, analysts lose the short-window density that makes operational dashboards useful. - **Test queries first** with the `sentinelone-powerquery` skill before embedding them in dashboard JSON. -- **Use `estimate_distinct()`** for cardinality counts — exact distinct is expensive on large datasets. -- **Add a markdown panel** to each tab explaining what it covers — this helps both users and future editors understand the dashboard at a glance. +- **Use `estimate_distinct()`** for cardinality counts: exact distinct is expensive on large datasets. +- **Add a markdown panel** to each tab explaining what it covers: this helps both users and future editors understand the dashboard at a glance. ## Sandbox proxy blocked? Use Desktop Commander diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/examples/panel-showcase.json b/plugins/s1-secops-skills/skills/sdl-dashboard/examples/panel-showcase.json index 547971d..321a930 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/examples/panel-showcase.json +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/examples/panel-showcase.json @@ -1,7 +1,7 @@ { "configType": "TABBED", "duration": "24h", - "description": "Panel Showcase — every supported panel type and dashboard feature in one dashboard. Deployed at /dashboards/panel-showcase.", + "description": "Panel Showcase: every supported panel type and dashboard feature in one dashboard. Deployed at /dashboards/panel-showcase.", "tabs": [ { "tabName": "SOC Overview", @@ -219,7 +219,7 @@ { "graphStyle": "markdown", "title": "Panel Features", - "markdown": "Demonstrates remaining panel features: **distribution** histogram of network destination ports, **area chart** using plots array (not PowerQuery), **gauge with estimate_distinct**, **number panel with console drill-through link**, **pie chart**, and **`filters[]`**: the Alert Product dropdown above is a tab-level `filters[]` widget — selecting a product filters all panels on this tab in real time. This is the correct filtering mechanism for TABBED dashboards. Note: `#VarName#` query substitution only works in flat (non-TABBED) dashboards.", + "markdown": "Demonstrates remaining panel features: **distribution** histogram of network destination ports, **area chart** using plots array (not PowerQuery), **gauge with estimate_distinct**, **number panel with console drill-through link**, **pie chart**, and **`filters[]`**: the Alert Product dropdown above is a tab-level `filters[]` widget, selecting a product filters all panels on this tab in real time. This is the correct filtering mechanism for TABBED dashboards. Note: `#VarName#` query substitution only works in flat (non-TABBED) dashboards.", "layout": { "h": 5, "w": 60, "x": 0, "y": 0 } }, { diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/references/community-examples.md b/plugins/s1-secops-skills/skills/sdl-dashboard/references/community-examples.md index 34f566e..d4afc7f 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/references/community-examples.md +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/references/community-examples.md @@ -400,7 +400,7 @@ Bubble scatter charts for outlier detection. x = distinct ports, y = distinct de graphs: [ { graphStyle: "heatmap", - title: "Off-Hours Process Execution by User (22:00–06:00)", + title: "Off-Hours Process Execution by User (22:00-06:00)", description: "Dark cells = high activity outside business hours. Top 10 users during off-hours.", startTime: "7d", query: "| left join\ntimeseries = (\n event.type = 'Process Creation'\n | filter !(src.process.user contains:anycase 'SYSTEM') AND src.process.user != null\n | let hour_local = number(strftime(event.time * 1_000_000, '%H', 'UTC'))\n | filter hour_local >= 22 OR hour_local < 6\n | group EventCount = count() by User = src.process.user, timestamp = timebucket('1h')\n),\ntop10 = (\n event.type = 'Process Creation'\n | filter !(src.process.user contains:anycase 'SYSTEM') AND src.process.user != null\n | let hour_local = number(strftime(event.time * 1_000_000, '%H', 'UTC'))\n | filter hour_local >= 22 OR hour_local < 6\n | group Total = count() by User = src.process.user\n | sort -Total | limit 10\n)\non User\n| filter !isempty(Total)\n| columns User, EventCount, timestamp\n| transpose User on timestamp", @@ -527,7 +527,7 @@ Standard 4-panel KPI row pattern. Width = 15 per panel × 4 = 60 total. Combine SDL has two filtering mechanisms that work in different dashboard types. -### `filters[]` in TABBED dashboards — the correct approach +### `filters[]` in TABBED dashboards: the correct approach Declare `filters[]` inside a tab object. SDL populates the dropdown from live field values and applies the selection to all panels in that tab automatically. No query changes needed. @@ -555,15 +555,15 @@ Declare `filters[]` inside a tab object. SDL populates the dropdown from live fi Selecting "STAR" from the Alert Product dropdown filters all panels on the tab to `metadata.product.name='STAR'` without any query edits. -### `#VarName#` substitution — flat (non-TABBED) dashboards only +### `#VarName#` substitution: flat (non-TABBED) dashboards only `#VarName#` query injection works only in flat dashboards (no `configType`, no `tabs`). The reference implementation is `parameter_examples-v1.0.json`. In a TABBED dashboard, `#VarName#` is passed literally to the query engine and throws `Don't understand [#]`. -Pre-quoting rule: string values must embed single quotes — `"'logVolume'"` so substitution produces `tag='logVolume'`. Use `"*"` for wildcard. +Pre-quoting rule: string values must embed single quotes, `"'logVolume'"` so substitution produces `tag='logVolume'`. Use `"*"` for wildcard. ```javascript { - // NO configType, NO tabs — flat dashboard only + // NO configType, NO tabs: flat dashboard only parameters: [ { name: "Specified Tag", @@ -625,7 +625,7 @@ Common activity types for audit dashboards: | let Threat_URL = format("https://your-console.sentinelone.net/incidents/threats/%s/overview", threat_id) ``` -### Normalize values to 0–100 for honeycomb +### Normalize values to 0-100 for honeycomb ``` | let max=overall_max(value), min=overall_min(value) | let normalized = ((value - min)/(max - min))*100 diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/references/lessons-learned.md b/plugins/s1-secops-skills/skills/sdl-dashboard/references/lessons-learned.md index ca35682..2b1f5ee 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/references/lessons-learned.md +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/references/lessons-learned.md @@ -355,7 +355,7 @@ End of document. Treat this file as a living artefact: append new gotchas as the --- -## 11. S1-internal SDL sources `asset` and `ActivityFeed` — corrected live schemas +## 11. S1-internal SDL sources `asset` and `ActivityFeed`: corrected live schemas **Confirmed 2026-05-01 (GRC dashboard engagement). Root cause: sandbox proxy block misread as empty source.** @@ -375,7 +375,7 @@ The fabrication was only caught when the user asked to re-verify the schemas, at **Prevention:** Always use s1-secops-mcp tools for SDL operations. They bypass the sandbox proxy and succeed where direct bash calls would fail. -### `dataSource.name='asset'` — 126-field rich endpoint inventory (OCSF class_uid 3004) +### `dataSource.name='asset'`: 126-field rich endpoint inventory (OCSF class_uid 3004) This is the full endpoint device inventory, not pipeline metrics. Key confirmed fields: @@ -392,12 +392,12 @@ s1_metadata.{site_id,site_name,group_id,group_name} Fields that do NOT exist in this source: `entity.uid`, `entity_result.*`, `agent.health.online`, `agent.uuid` (use `device.agent.uuid`). -### `dataSource.name='ActivityFeed'` — 41-field Hyperautomation/management activity audit log +### `dataSource.name='ActivityFeed'`: 41-field Hyperautomation/management activity audit log This is the management console activity and Hyperautomation workflow execution log (`sca:RetentionType = 'ACTIVITY_LOG'`), not pipeline metrics. Key confirmed fields: ``` -activity_type (numeric — e.g. 9207 = workflow execution event; NOT a string) +activity_type (numeric, e.g. 9207 = workflow execution event; NOT a string) activity_uuid primary_description secondary_description data.workflow_id data.workflow_name data.workflow_execution_url data.scope_id data.scope_level data.scope_name @@ -416,13 +416,13 @@ Useful for Hyperautomation workflow audit trails and compliance tracking. Not us The MCP tool call layer imposes a hard ~2-minute timeout on any `start_process` call. Two operations that exceed this in typical engagements: -- **Schema discovery across many sources** — V1 `query` calls take 5-10s each. For 15+ sources that is 2+ minutes. -- **`validate_dashboard.py` on large dashboards** — 63 panels at 8-25s each = 10-30 minutes. +- **Schema discovery across many sources**: V1 `query` calls take 5-10s each. For 15+ sources that is 2+ minutes. +- **`validate_dashboard.py` on large dashboards**: 63 panels at 8-25s each = 10-30 minutes. **Pattern: background the process, poll the output file with fast separate calls.** ```bash -# 1. Start in background — returns immediately with PID +# 1. Start in background: returns immediately with PID python3 /tmp/my_script.py > /tmp/out.txt 2>&1 & echo "PID: $!" @@ -440,7 +440,7 @@ for _ in range(N): ``` Key rules: -- Never put `sleep N` inside a `start_process` call where `N * iterations > 90s` — the MCP layer will time out the whole call. +- Never put `sleep N` inside a `start_process` call where `N * iterations > 90s`: the MCP layer will time out the whole call. - Write completion sentinels to the output file (`print("DONE: ...", flush=True)`) so polling can detect finish without relying on process exit alone. - Use `flush=True` on every progress `print()` so the output file is readable while the script is still running. - The output file is idempotent if the script persists results incrementally (as `validate_dashboard.py` does). A cancelled poll does not lose work. @@ -477,17 +477,17 @@ This also applies to the dashboard renderer: the V1 API has a 30s hard cap; the --- -## 14. `transpose` panels consistently return 0 rows via the V1 validation API — this is not a real empty result +## 14. `transpose` panels consistently return 0 rows via the V1 validation API; this is not a real empty result During validation of stacked-bar panels using `| transpose on timestamp`, the V1 `power_query` endpoint frequently returns 0 rows even when the underlying data exists and the KPI panels for the same source confirm thousands of matching events. This is an artefact of the deprecated V1 API's execution path, not a problem with the query or the dashboard. **Confirmed example (2026-05-01 GRC engagement):** -- `Critical + High Alerts` number panel returned `448` events via V1 API — confirmed data exists. +- `Critical + High Alerts` number panel returned `448` events via V1 API: confirmed data exists. - `High + Critical Alerts per Day` stacked-bar panel using `| group count=count() by timestamp=timebucket('1d'), severity_id | transpose severity_id on timestamp` returned 0 rows via the same V1 API. - The browser renderer executed the same query without issue. -**Rule:** when `validate_dashboard.py` marks a stacked-bar or line chart panel as empty (`row_count=0`), check whether the corresponding number panel for the same source shows data. If the number panel has data and the trend panel is empty, the empty result is a V1-API artefact, not a broken query. Document it as such in the evidence report Appendix with the note: `"0 rows via deprecated V1 API — confirmed live data from corresponding KPI panel; expect correct render in browser."` +**Rule:** when `validate_dashboard.py` marks a stacked-bar or line chart panel as empty (`row_count=0`), check whether the corresponding number panel for the same source shows data. If the number panel has data and the trend panel is empty, the empty result is a V1-API artefact, not a broken query. Document it as such in the evidence report Appendix with the note: `"0 rows via deprecated V1 API, confirmed live data from corresponding KPI panel; expect correct render in browser."` Do not remove or rewrite trend panels based on V1 validation empty results alone. The final authority is the browser renderer. @@ -497,7 +497,7 @@ Do not remove or rewrite trend panels based on V1 validation empty results alone **Confirmed 2026-05-04 (FortiGate showcase dashboard engagement).** -### 15.1 `plots` filter silently drops `unmapped.*` fields — always use stacked_bar+transpose instead +### 15.1 `plots` filter silently drops `unmapped.*` fields; always use stacked_bar+transpose instead The `plots: [{ "filter": "...", "facet": "count" }]` mechanism used for `line` and `area` chart panels silently ignores any predicate that references the `unmapped.*` field namespace. A panel like: @@ -511,7 +511,7 @@ The `plots: [{ "filter": "...", "facet": "count" }]` mechanism used for `line` a } ``` -renders as "No results found" even when PowerQuery confirms tens of thousands of matching events (confirmed: 93k deny events in a 24h window). No error is surfaced — the panel appears healthy but is completely empty. +renders as "No results found" even when PowerQuery confirms tens of thousands of matching events (confirmed: 93k deny events in a 24h window). No error is surfaced, the panel appears healthy but is completely empty. **Root cause:** the `plots` filter path does not evaluate the `unmapped.*` field namespace. The filtering silently returns 0 matches. @@ -537,7 +537,7 @@ field=[DashboardPlotQuery.plotIndex] error=[Facet for plot at index: 0 is invalid] ``` -Older community examples and some internal docs show `"facet": "count()"` — this is wrong and breaks every `plots`-based panel. The correct form is `"facet": "count"` for event counts, `"facet": "field_name"` for other facet targets. The SKILL.md example has been corrected to reflect this. +Older community examples and some internal docs show `"facet": "count()"`; this is wrong and breaks every `plots`-based panel. The correct form is `"facet": "count"` for event counts, `"facet": "field_name"` for other facet targets. The SKILL.md example has been corrected to reflect this. ### 15.3 Always verify field population before using presence filters (`field=*`) @@ -549,7 +549,7 @@ dataSource.name='FortiGate' event.type='app-ctrl' app_name=* | limit 1 ``` -If this returns 0, every panel using `app_name=*` as a filter will return nothing. The FortiGate marketplace parser does not populate `app_name` for `event.type='app-ctrl'` events — the field is null universally for this source. Pivot to grouping by whatever structured fields are populated (`unmapped.action`, `src_endpoint.svc_name`) and update the panel title to reflect the parser limitation. +If this returns 0, every panel using `app_name=*` as a filter will return nothing. The FortiGate marketplace parser does not populate `app_name` for `event.type='app-ctrl'` events, the field is null universally for this source. Pivot to grouping by whatever structured fields are populated (`unmapped.action`, `src_endpoint.svc_name`) and update the panel title to reflect the parser limitation. **General rule:** run a field-population check before every panel that relies on `field=*` as a meaningful filter criterion, not just as a null-drop. A field can be present in raw event JSON but unpopulated at the structured-column level for all events. @@ -579,9 +579,9 @@ Rule: `title` is always plain text. The `markdown` body starts directly with des ### 15.5 Operational dashboards default to `"duration": "24h"`, not `"7 days"` -Security operations dashboards (firewall visibility, threat triage, VPN health, alert queue) should default to `"duration": "24h"`. Use `"7 days"` only for trend dashboards (weekly capacity, historic comparison). Always set the correct default before the first deploy — changing it requires a re-deploy and a page reload for the user to see the new default. +Security operations dashboards (firewall visibility, threat triage, VPN health, alert queue) should default to `"duration": "24h"`. Use `"7 days"` only for trend dashboards (weekly capacity, historic comparison). Always set the correct default before the first deploy, changing it requires a re-deploy and a page reload for the user to see the new default. -### 15.6 Use ternary `?:` chaining for field-mapping in `let` — not `if()` function +### 15.6 Use ternary `?:` chaining for field-mapping in `let`, not `if()` function When mapping a numeric code field to a human-readable label (e.g. protocol numbers to names), use ternary `?:` chaining, not `if()`: @@ -612,13 +612,13 @@ Schema validated against live tenant data (2026-05-04): | Event type | Key fields | |---|---| | `traffic` | `unmapped.action` (deny/accept/close/pass/timeout), `src_endpoint.ip`, `dst_endpoint.ip`, `src_endpoint.location.country`, `dst_endpoint.location.country`, `dst_endpoint.port`, `connection_info.protocol_num`, `traffic.bytes_in` (string-typed), `traffic.bytes_out` (string-typed), `app_name` (populated), `src_endpoint.svc_name` | -| `vpn` | `unmapped.action` (accept/deny/ssl-login-fail/ssl-alert/tunnel-up/tunnel-down), `unmapped.srcip` (source IP — NOT `src_endpoint.ip` which is null for vpn events), `src_endpoint.svc_name` (also null for vpn) | -| `app-ctrl` | OCSF class "Security Finding". `unmapped.action` (pass/start/accept/deny/close/passthrough/ssl-login-fail), `applist` (AC policy name e.g. "Fusion_Base_AppCtrl"), `unmapped.level`. ALL of the following are NULL: `app_name`, `src_endpoint.ip`, `dst_endpoint.ip`, `dst_endpoint.port`, `finding_info.title`, `unmapped.appcat`, `unmapped.appid`, `unmapped.msg`, `src_endpoint.svc_name`. The FortiGate raw `app` field (actual app name like "YouTube") is NOT extracted by this parser — it lives in `raw_data` only and cannot be grouped. Group by `unmapped.action` + `applist` only. | +| `vpn` | `unmapped.action` (accept/deny/ssl-login-fail/ssl-alert/tunnel-up/tunnel-down), `unmapped.srcip` (source IP: NOT `src_endpoint.ip` which is null for vpn events), `src_endpoint.svc_name` (also null for vpn) | +| `app-ctrl` | OCSF class "Security Finding". `unmapped.action` (pass/start/accept/deny/close/passthrough/ssl-login-fail), `applist` (AC policy name e.g. "Fusion_Base_AppCtrl"), `unmapped.level`. ALL of the following are NULL: `app_name`, `src_endpoint.ip`, `dst_endpoint.ip`, `dst_endpoint.port`, `finding_info.title`, `unmapped.appcat`, `unmapped.appid`, `unmapped.msg`, `src_endpoint.svc_name`. The FortiGate raw `app` field (actual app name like "YouTube") is NOT extracted by this parser; it lives in `raw_data` only and cannot be grouped. Group by `unmapped.action` + `applist` only. | | `virus` | Presence panel only; details in `unmapped.*` | Use `net_rfc1918(src_endpoint.ip)` to identify internal source IPs for `traffic` events. The `dst_endpoint.location.country` field is populated and usable for geo panels; filter `!(country in ('Reserved'))` to exclude RFC-1918 and loopback ranges from destination geo charts. -### 15.9 Field namespaces differ per event type — validate each event type separately +### 15.9 Field namespaces differ per event type, validate each event type separately The root cause of the `unmapped.srcip` miss: schema discovery was performed against `event.type='traffic'` and the field mapping was assumed to carry across to `vpn` events. It does not. The FortiGate marketplace parser uses `src_endpoint.ip` for `traffic` events and `unmapped.srcip` for `vpn` events. `src_endpoint.ip` is null for all `vpn` events; `src_endpoint.svc_name` is null for both `vpn` and `app-ctrl` events. @@ -655,7 +655,7 @@ For `app="HTTPS.BROWSER"`, `raw_app` becomes `"HTTPS.BROWSER"` and `app_name` be - The dashboard JSON stores query strings as JSON string values, so backslashes must be JSON-escaped. - `\\S+` in the PowerQuery string (what the engine sees) requires `\\\\S+` in the JSON source. -- When using the `powerquery_run` MCP tool directly (Python string), pass `\\S+` — Python string escaping takes one step. +- When using the `powerquery_run` MCP tool directly (Python string), pass `\\S+`: Python string escaping takes one step. **Why `| parse` with embedded `"` fails:** diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/references/panel-type-cheatsheet.md b/plugins/s1-secops-skills/skills/sdl-dashboard/references/panel-type-cheatsheet.md index 80d5cc4..6f5d2ed 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/references/panel-type-cheatsheet.md +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/references/panel-type-cheatsheet.md @@ -21,8 +21,8 @@ | `funnel` | Funnel chart | PQ | Shows volume drop-off across sequential stages. Query returns `stage` (text) + `value` (number) via a union-FIRST query (one subquery per stage; `union` must be the query's first command). | | `distribution` | Distribution histogram | filter+facet | Uses `filter` + `facet` (not `query`). Good for port/packet-size distributions. No PQ. | | `markdown` | Text panel | none | GitHub-flavored markdown. Use `markdown:` field (NOT `content:` which renders blank). | -| `alerts_table` | Built-in alert widget | none | Uses `dataSource: "[[DataSource.ALERTS_DISTRIBUTION]]"` + `fieldId`. Not a PQ panel — pull from console widget library. | -| Filter widget | Parameter dropdown | none | NOT a `graphStyle` — declared in the tab's `parameters: []` array. Renders as a dropdown above the tab. See Filter/Parameter section below. | +| `alerts_table` | Built-in alert widget | none | Uses `dataSource: "[[DataSource.ALERTS_DISTRIBUTION]]"` + `fieldId`. Not a PQ panel, pull from console widget library. | +| Filter widget | Parameter dropdown | none | NOT a `graphStyle`: declared in the tab's `parameters: []` array. Renders as a dropdown above the tab. See Filter/Parameter section below. | --- @@ -167,7 +167,7 @@ Use `array(0, 1, 2).expand()` to fan a single event row into multiple Sankey lin ```javascript { graphStyle: "heatmap", - title: "Off-Hours Activity by User (22:00–06:00)", + title: "Off-Hours Activity by User (22:00-06:00)", query: "// Join timeseries to top-10 users\nevent.type = 'Process Creation'\n| filter !(src.process.user contains:anycase 'SYSTEM')\n| let hour = number(strftime(event.time * 1_000_000, '%H', 'UTC'))\n| filter hour >= 22 OR hour < 6\n| group EventCount = count() by User = src.process.user, timestamp = timebucket('1h')\n| transpose User on timestamp", startTime: "7d", colorScheme: "red", @@ -190,7 +190,7 @@ Use `array(0, 1, 2).expand()` to fan a single event row into multiple Sankey lin ## Gauge panel Radial arc/dial with color-coded threshold bands. Shows a single value in context (good/warn/critical). -Distinct from `number` — `gauge` renders a visual arc; `number` is text only. +Distinct from `number`, `gauge` renders a visual arc; `number` is text only. ```javascript { @@ -214,7 +214,7 @@ Distinct from `number` — `gauge` renders a visual arc; `number` is text only. ## Tabbed table panel -A table panel where multiple sub-queries can be toggled via tabs inside the panel — without needing separate dashboard tabs. +A table panel where multiple sub-queries can be toggled via tabs inside the panel, without needing separate dashboard tabs. ```javascript { @@ -407,7 +407,7 @@ The "Filter" panel in the UI is implemented as a `parameters` array on the tab o "defaultValue": "*" }, { - "name": "HiddenVar", // internal variable — not shown to user + "name": "HiddenVar", // internal variable, not shown to user "label": "Hidden Filter", "defaultValue": "severity_id >= 3", "options": { "display": "hidden" } @@ -428,7 +428,7 @@ endpoint.os = #OS# - `facet` populates dropdown choices from live SDL data. Omit `facet` for free-text input. - `defaultValue: "*"` means "match all" and typically appears as "All" in the dropdown. - Hidden parameters (`options.display: "hidden"`) are useful for injecting pre-computed filter strings or internal constants. -- Use `#VarName#` in any query string on that tab — works in PQ, UQL `datasource`, and `plots filter` expressions. +- Use `#VarName#` in any query string on that tab: works in PQ, UQL `datasource`, and `plots filter` expressions. --- @@ -437,22 +437,22 @@ endpoint.os = #OS# - **Pie/Donut**: PowerQuery must return exactly one text column and one numeric column. `| group count() by field` is the canonical pattern. - **Number/Gauge**: Reduce to a single row. `| group estimate_distinct(field)` or `| group count()` work. - **Honeycomb**: Use `| columns LabelCol=text_field, ValueCol=numeric_field` to set column names, then reference them in `honeyCombGroupBy` and thresholds. -- **Distribution**: Does NOT use `query`: use `filter` (search expression) and `facet` (the numeric field). The `filter` field uses the old-style SDL filter syntax — do NOT use `field != null` for null checks, as this causes `field=[filter] error=[Illegal value [null]]`. Use `field=*` instead (matches any non-null value). The `facet` field MUST be a native NUMBER field in the SDL schema — string fields (even ones that look numeric like `traffic.bytes_in`) silently return an empty panel. Confirm the field type with `| group min=min(field), max=max(field)` before using it; if min/max return NaN or STRING, the field is not numeric. The `number()` cast in the `facet` expression (e.g. `facet: "number(traffic.bytes_in)"`) does NOT work for distribution panels — SDL checks the schema-level field type at render time, before the cast runs, so a string field stays blank even after casting. +- **Distribution**: Does NOT use `query`: use `filter` (search expression) and `facet` (the numeric field). The `filter` field uses the old-style SDL filter syntax; do NOT use `field != null` for null checks, as this causes `field=[filter] error=[Illegal value [null]]`. Use `field=*` instead (matches any non-null value). The `facet` field MUST be a native NUMBER field in the SDL schema, string fields (even ones that look numeric like `traffic.bytes_in`) silently return an empty panel. Confirm the field type with `| group min=min(field), max=max(field)` before using it; if min/max return NaN or STRING, the field is not numeric. The `number()` cast in the `facet` expression (e.g. `facet: "number(traffic.bytes_in)"`) does NOT work for distribution panels, SDL checks the schema-level field type at render time, before the cast runs, so a string field stays blank even after casting. - **Sankey**: Query must output exactly `source`, `target`, `c` column names. Use `array(...).expand()` for multi-hop link expansion. - **Scattered bubble**: First 3 numeric columns = x, y, size. Add `label` column for point labels. - **Heatmap/multi-series line**: time mode uses `timebucket()` in `group by` with the anchor named `timestamp` (`transpose field on timestamp`). Heatmap also supports a categorical x-axis (S-26.x+): `group by , | transpose on ` plus `xAxis: "grouped_data"`. - **Bullet**: First numeric column = actual value; second numeric column = SLA/target. Third column = row label. - **Tabbed table**: `tabbed: "true"` and `tabVariant: "tile"` are both required. Outer `query` is the fallback. -- **Null check — always use `field=*`, never `field != null`**: `field=*` is the SDL predicate for "field is present and non-null". `field != null` is parsed as a literal string comparison to `"null"` in old-style filter syntax and returns wrong results or a parse error. Applies in both the initial filter predicate (before the first `|`) and in `| filter` commands: `dataSource.name='alert' severity_id=*` not `severity_id != null`. -- **Zero suppression — `| filter count > 0` after group**: After `| group count=count() by ...`, SDL can produce zero-count rows for sparse key combinations (common after `transpose` or wide key spaces). These render as empty heatmap cells and spurious table rows. Always add `| filter EventCount > 0` (or `| filter value > 0`) after any group that feeds a heatmap, donut, or table panel where zero rows are meaningless. +- **Null check: always use `field=*`, never `field != null`**: `field=*` is the SDL predicate for "field is present and non-null". `field != null` is parsed as a literal string comparison to `"null"` in old-style filter syntax and returns wrong results or a parse error. Applies in both the initial filter predicate (before the first `|`) and in `| filter` commands: `dataSource.name='alert' severity_id=*` not `severity_id != null`. +- **Zero suppression: `| filter count > 0` after group**: After `| group count=count() by ...`, SDL can produce zero-count rows for sparse key combinations (common after `transpose` or wide key spaces). These render as empty heatmap cells and spurious table rows. Always add `| filter EventCount > 0` (or `| filter value > 0`) after any group that feeds a heatmap, donut, or table panel where zero rows are meaningless. - **`| sort` must come before `| columns`**: `| columns` removes every field not listed. A `| sort` placed after `| columns` that references a projected-away field silently fails or hangs the panel. Move `| sort` before `| columns`. Most common victim: bullet panels that sort by a severity field but project it away in the final `| columns value, target, label`. -- **`in` operator restriction**: The `in (...)` set-membership operator only works inside `| filter` commands. It does NOT work in the initial filter predicate (the part before the first `|`). Use `dataSource.name='X'\n| filter field in ('a','b','c')` — not `field in ('a','b','c') | group ...`. Violating this causes a silent parse failure that surfaces as a frontend `TypeError: e.toLowerCase is not a function`. +- **`in` operator restriction**: The `in (...)` set-membership operator only works inside `| filter` commands. It does NOT work in the initial filter predicate (the part before the first `|`). Use `dataSource.name='X'\n| filter field in ('a','b','c')`, not `field in ('a','b','c') | group ...`. Violating this causes a silent parse failure that surfaces as a frontend `TypeError: e.toLowerCase is not a function`. - **Funnel**: Query must return exactly one text column (stage label) and one numeric column (count). Build stages with a union-FIRST query (`union` as the query's very first command, one subquery per stage; mid-pipeline `| union` returns HTTP 400). Keep stage labels free of hyphens. Rows should be in stage order; rows are NOT auto-sorted. `orientation: "vertical"` stacks top-to-bottom; `"horizontal"` is left-to-right. -- **Filter widget (parameters) — fully working on TABBED dashboards, including runtime refiltering (visually verified live 2026-07-29)**: Parameters (`parameters: []` on a tab) render a dropdown or text input in the tab header, and a panel query referencing `#VarName#` works on a TABBED dashboard. A live test tab with `dataSource.name=#SrcName#` (facet-populated dropdown, `defaultValue: "*"`) rendered correctly with the default substituted, and selecting a dropdown value then pressing **Search** re-ran the panel filtered to that value only. The one gotcha: changing the dropdown does NOT auto-refresh; the new value applies only after the user hits Search. The earlier claims that the parser sees a literal `#` and throws `Don't understand [#]`, and that parameters are UI-only with no query injection, were both wrong. Two sub-types: `facet` (dropdown populated from live field values) and `values` (static list of options). +- **Filter widget (parameters): fully working on TABBED dashboards, including runtime refiltering (visually verified live 2026-07-29)**: Parameters (`parameters: []` on a tab) render a dropdown or text input in the tab header, and a panel query referencing `#VarName#` works on a TABBED dashboard. A live test tab with `dataSource.name=#SrcName#` (facet-populated dropdown, `defaultValue: "*"`) rendered correctly with the default substituted, and selecting a dropdown value then pressing **Search** re-ran the panel filtered to that value only. The one gotcha: changing the dropdown does NOT auto-refresh; the new value applies only after the user hits Search. The earlier claims that the parser sees a literal `#` and throws `Don't understand [#]`, and that parameters are UI-only with no query injection, were both wrong. Two sub-types: `facet` (dropdown populated from live field values) and `values` (static list of options). - **Breakdown graphs** (`breakdownFacet` property): Very slow, not cached. Use only for exploratory work. - **Stacked bar with time x-axis**: Set `xAxis: "time"` and `yScale: "linear"`. - **Stacked bar with category x-axis**: Set `xAxis: "grouped_data"`. -- **`stacked_bar` vs `stacked-bar`**: The official SentinelOne community docs (article 000006455) list `"stacked-bar"` with a hyphen. All real deployed dashboard examples use `"stacked_bar"` with an underscore. Use the underscore form — it is what the current SDL frontend expects. +- **`stacked_bar` vs `stacked-bar`**: The official SentinelOne community docs (article 000006455) list `"stacked-bar"` with a hyphen. All real deployed dashboard examples use `"stacked_bar"` with an underscore. Use the underscore form; it is what the current SDL frontend expects. - **`graphStyle` empty string behaviour**: When `graphStyle` is `""` and a `query` is present, SDL defaults to a table. When `graphStyle` is omitted/empty and no `query` is present (only `filter`/`facet`), it defaults to a line chart. This is why the tabbed table panel uses `graphStyle: ""`. - **`duration` (top-level)**: Sets the default time range shown in the global time picker when the dashboard is first loaded. Accepts any time string: `"24h"`, `"1 day"`, `"30m"`, `"7d"`, `"2 weeks"`. (Source: official SDL dashboard syntax article.) - **`startTime` on individual panels**: Pins that panel to a fixed time window, overriding the global time picker. Omit `startTime` from panels if you want them to follow the global `duration` selector. Set it only when a panel must always show a fixed window (e.g., a 30-day trend card on a dashboard with a 24h default). @@ -460,6 +460,6 @@ endpoint.os = #OS# - **Layout grid**: Total width = 60 units. Height: ~14 units ≈ half-page height. KPI rows typically h=10, w=15 (4 across). Full-width panels use w=60. - **Markdown**: Use `markdown:` field, NOT `content:` which renders blank. Set a short plain-text `title` (no `##` prefix) and put prose only in `markdown`. In S-26.1 a markdown panel with NO `title` key renders an "Untitled" header (observed live), so always include a `title`. Do not repeat the title as a heading inside the body. - **Categorical bar chart**: use `graphStyle: "stacked_bar"` with `xAxis: "grouped_data"` and a `(category, value)` query. Plain `graphStyle: "bar"` (like `line` / `area`) defaults to a TIME x-axis and errors with "first column ... should have numeric value in epoch" when the first column is a category string. -- **Heatmap with `rangesCreation: "automatic"`**: The `heatmapRangeConfig` array must use empty strings `""` for all middle elements — SDL auto-calculates those boundaries from live data. Providing explicit non-empty values (e.g. `"10"`, `"50"`) conflicts with automatic mode and silently produces a blank panel. Correct form: `["-∞", "", "", "", "", "∞"]`. If data density is very sparse (e.g. a 24h window with few events per cell), SDL may also fail to compute thresholds — extend to `startTime: "7d"` with `timebucket('4h')` if automatic mode remains blank on confirmed-sparse data. +- **Heatmap with `rangesCreation: "automatic"`**: The `heatmapRangeConfig` array must use empty strings `""` for all middle elements, SDL auto-calculates those boundaries from live data. Providing explicit non-empty values (e.g. `"10"`, `"50"`) conflicts with automatic mode and silently produces a blank panel. Correct form: `["-∞", "", "", "", "", "∞"]`. If data density is very sparse (e.g. a 24h window with few events per cell), SDL may also fail to compute thresholds, extend to `startTime: "7d"` with `timebucket('4h')` if automatic mode remains blank on confirmed-sparse data. - **Honeycomb option schemas, BOTH valid (visually verified live 2026-07-29)**: two alternative option families render correctly and neither is "required". Variant A (solution-template style): `honeyCombColor` object (`{hover, label, value}` hex colors) + `honeyCombThresholds` (string array, e.g. `["0","25","50","75"]`) + `honeyCombGroupBy` (category column name). Variant B (this file's style): `honeycombColorScheme` (string, e.g. `"red"`) + `honeycombRangeConfig` (numeric array, e.g. `[0, 25, 50, 75]`). A side-by-side test dashboard rendered both variants with correct legends and coloring; the earlier claim that variant B's fields are mandatory and their absence throws `TypeError: e.toLowerCase is not a function` was not reproducible. Pick one family per panel; do not mix keys from both. - **Bullet `coloringMode`**: Only confirmed valid value from real examples is `"ranges"`. The value `"kpiReach"` is not confirmed and may cause a render error. diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/panel_safety_check.py b/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/panel_safety_check.py index d34e6b8..2ff3de6 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/panel_safety_check.py +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/panel_safety_check.py @@ -166,8 +166,10 @@ def rule_P06_named_subquery(query: str) -> Optional[Tuple[str, str]]: def rule_P07_regex_escapes(query: str) -> Optional[Tuple[str, str]]: - # Detect `matches '...\\s...'` / `\\d` literally inside the regex literal. - if re.search(r"matches\s+'[^']*\\\\[sd][^']*'", query, flags=re.IGNORECASE): + # Detect a backslash escape (\s or \d) inside a `matches '...'` literal. + # After json.loads, real panel queries hold ONE literal backslash, so the + # pattern must match a single `\\` in the compiled regex (raw `\\` here). + if re.search(r"matches\s+'[^']*\\[sd][^']*'", query, flags=re.IGNORECASE): return ("P07", "Regex escapes `\\s` / `\\d` inside `matches '...'` produce HTTP 500. " "Use simple character classes ([0-9], [ \\t]) or `field in (...)` for fixed lists.") return None diff --git a/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/validate_dashboard.py b/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/validate_dashboard.py index 02ec4ef..7e75702 100644 --- a/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/validate_dashboard.py +++ b/plugins/s1-secops-skills/skills/sdl-dashboard/scripts/validate_dashboard.py @@ -83,7 +83,9 @@ def _parse_dashboard(dash: Dict[str, Any]) -> List[Dict[str, Any]]: def _panel_key(panel: Dict[str, Any], idx: int) -> str: tab = panel.get("_tab") or "tab" title = panel.get("title") or f"panel-{idx}" - return f"{tab}::{title}" + # idx keeps duplicate titles distinct; old resume/evidence files keyed + # without idx will simply re-validate. + return f"{tab}::{idx}::{title}" def _is_runnable(panel: Dict[str, Any]) -> bool: diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/SKILL.md b/plugins/s1-secops-skills/skills/sdl-log-parser/SKILL.md index b58f335..97849db 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/SKILL.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/SKILL.md @@ -1,14 +1,14 @@ --- name: sdl-log-parser author: Prithvi Moses -description: Use whenever the user wants to author, edit, debug, validate, or explain a SentinelOne Singularity Data Lake (SDL) log parser — the augmented-JSON files at /logParsers/ that extract fields from raw log text before ingestion. Trigger on "SDL parser", "Skylight parser", "log parser", "parser editor", "write a parser", "test parser", or any pasted raw log the user wants turned into structured fields. Also trigger on parser-DSL keywords like `formats:`, `patterns:`, `lineGroupers:`, `rewrites:`, `discardAttributes:`, `aliasTo:`, `{parse=...}`, `{regex=...}`. Especially trigger when the user pastes a raw log (CEF, syslog, JSON, key=value, multi-line, CSV) and asks to extract fields, normalize timestamps, or drop noise. If the project is SDL/Singularity/Scalyr and the user says "parse this log", use this skill. Always validates end-to-end via putFile → HEC ingest (parser applied) → query. NOT for PowerQuery (use sentinelone-powerquery), NOT for plain ingest without a parser (use sentinelone-sdl-api). +description: Use whenever the user wants to author, edit, debug, validate, or explain a SentinelOne Singularity Data Lake (SDL) log parser, the augmented-JSON files at /logParsers/ that extract fields from raw log text before ingestion. Trigger on "SDL parser", "Skylight parser", "log parser", "parser editor", "write a parser", "test parser", or any pasted raw log the user wants turned into structured fields. Also trigger on parser-DSL keywords like `formats:`, `patterns:`, `lineGroupers:`, `rewrites:`, `discardAttributes:`, `aliasTo:`, `{parse=...}`, `{regex=...}`. Especially trigger when the user pastes a raw log (CEF, syslog, JSON, key=value, multi-line, CSV) and asks to extract fields, normalize timestamps, or drop noise. If the project is SDL/Singularity/Scalyr and the user says "parse this log", use this skill. Always validates end-to-end via putFile → HEC ingest (parser applied) → query. NOT for PowerQuery (use sentinelone-powerquery), NOT for plain ingest without a parser (use sentinelone-sdl-api). --- # SentinelOne SDL Log Parser Authoring This skill turns raw log samples into deployed, validated SDL parser definitions. A parser is an *augmented-JSON* file at `/logParsers/` on the SDL tenant that extracts fields from each ingested line. The parser editor and the `Test Parser` button in the console run the parser client-side in JavaScript; this skill mirrors that workflow programmatically and finishes by ingesting a sample through the deployed parser to confirm the actual ingest path works. -> **Sandbox proxy blocked?** If `putFile` or HEC ingest calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). Use `sdl_put_file` to deploy the parser and `hec_ingest` to run the ingest validation step — both execute from your machine, not the sandbox. +> **Sandbox proxy blocked?** If `putFile` or HEC ingest calls to `*.sentinelone.net` fail with a connection or proxy error inside the Claude sandbox, use the `s1-secops-mcp` server instead. It runs locally via `node` and bypasses the sandbox proxy entirely. Setup: add it to `claude_desktop_config.json` (see `s1-secops-mcp/README.md`). Use `sdl_put_file` to deploy the parser and `hec_ingest` to run the ingest validation step, both execute from your machine, not the sandbox. ## Two hard rules (every parser, every time) @@ -45,20 +45,20 @@ The rest of this skill assumes both rules are upheld. If either is unclear for a These are the DSL traps that cost the most iteration cycles when authoring parsers on the current S1 tenant. They are repeated in the long gotcha list below with more context, but if you're about to write a new parser, internalize these first. Items 1-9 are tenant-validated as of 2026-05-26; items 10-12 as of 2026-06-22. -1. **Key=value catch-all REQUIRES leading `.*`**. The canonical form is `".*$_=identifier$=$_=quoteOrSpace$"` with `repeat: true`. Without the `.*` the format anchors at position 0 of the message and fires zero times on any line starting with a syslog priority ``, a CEF header, an XML envelope, or a timestamp — i.e. virtually every real log source. The leading `.*` lets the engine scan forward to the first `key=value` pair and then `repeat: true` walks the rest. This is the same pattern the built-in `keyValue` parser uses. Also: **`{parse=keyValue}` is NOT a valid sub-parser directive**; built-in parsers like `keyValue` are only usable via root-level `aliasTo:`. -2. **v1 mappings are FIRST-MATCH-WINS**, which means **renames must be duplicated into every per-subtype block** alongside the constants. A catch-all `predicate: "true"` rename block placed at the end NEVER fires for events that matched an earlier per-subtype block — only the truly-unmatched events get those renames. If you have per-subtype `constant` blocks for OCSF class/activity fan-out (e.g. `subtype=='forward'` → `activity_id=6`), you must put the full rename list inside EACH of those blocks. Verbose but correct. +1. **Key=value catch-all REQUIRES leading `.*`**. The canonical form is `".*$_=identifier$=$_=quoteOrSpace$"` with `repeat: true`. Without the `.*` the format anchors at position 0 of the message and fires zero times on any line starting with a syslog priority ``, a CEF header, an XML envelope, or a timestamp, i.e. virtually every real log source. The leading `.*` lets the engine scan forward to the first `key=value` pair and then `repeat: true` walks the rest. This is the same pattern the built-in `keyValue` parser uses. Also: **`{parse=keyValue}` is NOT a valid sub-parser directive**; built-in parsers like `keyValue` are only usable via root-level `aliasTo:`. +2. **v1 mappings are FIRST-MATCH-WINS**, which means **renames must be duplicated into every per-subtype block** alongside the constants. A catch-all `predicate: "true"` rename block placed at the end NEVER fires for events that matched an earlier per-subtype block, only the truly-unmatched events get those renames. If you have per-subtype `constant` blocks for OCSF class/activity fan-out (e.g. `subtype=='forward'` → `activity_id=6`), you must put the full rename list inside EACH of those blocks. Verbose but correct. 3. **v0 `constants:` block is REJECTED on the current tenant.** `putFile` returns `400: Syntax error at position -1: Assertion failed: Expected a field` whenever a v0 mapping body contains a `constants:` array. v0 `renames:` and `copies:` work fine; only `constants:` fails. Practical impact: prefer **v1** (`{ constant: { field, value } }`) for any new parser that needs OCSF class fan-out. Stay on v0 only when extending an existing v0 parser that doesn't add new constants. -4. **Same-name rename silently NULLS the field.** Writing `{ rename: { from: "action", to: "action" } }` to "keep" a captured raw field under its own name actually deletes the value. The KV catch-all already extracts raw vendor field names directly into the event — to "keep" one, OMIT the rename. Only write a rename when the target name is genuinely different from the source. -5. **Unquoted numerics from `quoteOrSpace` are auto-typed as NUMBER columns.** A FortiGate `srcport=44321 sentbyte=8421` line going through the KV catch-all produces `srcport: 44321` (number), `sentbyte: 8421` (number) — queryable with `avg()` / `sum()` / `> N` without `number()` wrapping. Quoted values stay as strings even if they look numeric (`level="6"` → string). Caveat: SDL column type-locking still applies, so wrap numerics with `number()` in dashboard panels and STAR rule bodies if the column has ever been written as string in this tenant's history. +4. **Same-name rename silently NULLS the field.** Writing `{ rename: { from: "action", to: "action" } }` to "keep" a captured raw field under its own name actually deletes the value. The KV catch-all already extracts raw vendor field names directly into the event, to "keep" one, OMIT the rename. Only write a rename when the target name is genuinely different from the source. +5. **Unquoted numerics from `quoteOrSpace` are auto-typed as NUMBER columns.** A FortiGate `srcport=44321 sentbyte=8421` line going through the KV catch-all produces `srcport: 44321` (number), `sentbyte: 8421` (number), queryable with `avg()` / `sum()` / `> N` without `number()` wrapping. Quoted values stay as strings even if they look numeric (`level="6"` → string). Caveat: SDL column type-locking still applies, so wrap numerics with `number()` in dashboard panels and STAR rule bodies if the column has ever been written as string in this tenant's history. Two related queryability rules (not DSL traps, but they matter for any consumer of the parser): 1. **The raw `message` field is preserved on every event regardless of parser activity.** SDL never lets a parser overwrite `message`; the raw event body always survives. So `parse "field=$x$" from message` queries continue to work alongside the typed columns the parser produces. This is the backward-compat escape hatch during a parser rollout. 2. **When two ingest paths produce OCSF for the same source, the schema can drift.** A common case: upstream collector (Observo etc.) flattens `type=traffic, subtype=forward` to just `event.type='forward'` while the downstream parser keeps both fields populated. Consumers (dashboards, STAR rules, hunts) should write subtype filters as `(event.subtype='forward' OR event.type='forward')` until the rollout fully converges. -3. **Trailing `.*` at the END of a format string suffers the leading-`.*`-strip too.** A field marker like `$process.cmd_line{regex=.*}$` placed at the end of a format string captures the EMPTY STRING. The SDL stripping rule applies whether `.*` starts the regex or IS the entire regex. Use `[\\s\\S]+` (one-or-more) or `[\\s\\S]*` (zero-or-more) for "everything that remains on the line" semantics — those forms don't begin with `.` and survive intact. -4. **Regex alternation matches in DECLARATION ORDER, not longest-leftmost.** `regex=CRON|CROND` is a bug — `CRON` matches the prefix of `CROND` and leaves `D` dangling. Put longer alternatives first: `regex=CROND|CRON|crond|cron`. Applies to named patterns, inline `{regex=...}`, and any other alternation. When alternatives share a prefix, sort by length descending. +3. **Trailing `.*` at the END of a format string suffers the leading-`.*`-strip too.** A field marker like `$process.cmd_line{regex=.*}$` placed at the end of a format string captures the EMPTY STRING. The SDL stripping rule applies whether `.*` starts the regex or IS the entire regex. Use `[\\s\\S]+` (one-or-more) or `[\\s\\S]*` (zero-or-more) for "everything that remains on the line" semantics; those forms don't begin with `.` and survive intact. +4. **Regex alternation matches in DECLARATION ORDER, not longest-leftmost.** `regex=CRON|CROND` is a bug, `CRON` matches the prefix of `CROND` and leaves `D` dangling. Put longer alternatives first: `regex=CROND|CRON|crond|cron`. Applies to named patterns, inline `{regex=...}`, and any other alternation. When alternatives share a prefix, sort by length descending. 5. **gron expands arrays into `[N]`-indexed attributes; index with `[N]`, NOT `.N.`** Do not believe "gron drops arrays." `$unmapped.{parse=gron}$` emits one queryable attribute per array leaf: `unmapped.signInEventTypes[0]`, `unmapped.additionalDetails[0].key`, `unmapped.targetResources[0].modifiedProperties[0].newValue`. The trap that makes arrays look dropped is querying with dot-index (`unmapped.targetResources.0.id` → null); the real key is bracket-indexed (`unmapped.targetResources[0].id`). gron/dottedJson = each element its own attribute (use for "extract every field"); `strict*` = array kept as one JSON value for `array_from_json()`. Scalar/object flattening is identical across all three. Caveat: a raw PowerQuery `columns`/`filter` clause can't type the `[`, so validate `[N]` fields with `powerquery_schema_discover`, not a `columns` projection. To lift a whole array subtree to OCSF, `rename_tree { from: "unmapped.targetResources[0].modifiedProperties", to: "entity.data" }`. Tenant-validated 2026-06-22 (Microsoft Entra ID). See `references/parse-directives.md`. -6. **`copy` first-of-N treats an empty string `""` as "exists" and lets it win.** `copy {from: ["userId","servicePrincipalId"]}` where `userId` is `""` copies the empty string, not the fallback — silently breaking identity-coalesce (e.g. service-principal / managed-identity sign-ins whose `userPrincipalName`/`userId` are empty but `servicePrincipalName`/`servicePrincipalId` hold the identity). Fix by dropping empty strings upstream (the collector/Lua serializer should omit `""` values), or `drop` the empty source before the `copy`. Tenant-validated 2026-06-22. +6. **`copy` first-of-N treats an empty string `""` as "exists" and lets it win.** `copy {from: ["userId","servicePrincipalId"]}` where `userId` is `""` copies the empty string, not the fallback, silently breaking identity-coalesce (e.g. service-principal / managed-identity sign-ins whose `userPrincipalName`/`userId` are empty but `servicePrincipalName`/`servicePrincipalId` hold the identity). Fix by dropping empty strings upstream (the collector/Lua serializer should omit `""` values), or `drop` the empty source before the `copy`. Tenant-validated 2026-06-22. 7. **On a LIVE source, a "still broken" event is usually pre-propagation, not a parser bug.** Parser activation is ~3-5 min and a continuously-ingesting source keeps producing events through the OLD version during that window; SDL never re-parses historical events. Bump `metadata.version` every deploy and confirm via `| group count() by metadata.version` (or `powerquery_schema_discover`) which version parsed a given event before chasing a "bug." Related: if the parser sets event time from a log field, events are stamped at the log's own time, so widen validation query windows (`24h`/`7d`) or filter by a nonce field instead of time, or you get zero rows and a false negative. ## When to use this skill @@ -67,7 +67,7 @@ Use this skill when the user wants to turn raw log text into structured SDL even - "Write a parser for this `` log." - "Why isn't `` showing up after ingest?" -- A pasted log line — CEF, syslog, JSON-per-line, key=value, multi-line, vendor-specific. +- A pasted log line: CEF, syslog, JSON-per-line, key=value, multi-line, vendor-specific. - Edits to an existing parser ("add a rewrite that masks the password", "tag every event with `dataset=fortinet`"). - Migration ("alias the new parser to the old one"). @@ -77,11 +77,11 @@ Do **not** use this skill for PowerQuery authoring (use `sentinelone-powerquery` Follow this loop. Skipping steps 1 (catalog check) and 5 (end-to-end validation) are the two most common reasons a parser goes live with surprises, so do not skip them. -1. **Check the ai-siem catalog first.** Before writing anything, search for the vendor/product. The repo has ~150 community + marketplace parsers; most common sources (Cloudflare, FortiGate, Palo Alto, Corelight, AWS RDS, Okta, Abnormal, Juniper, pfSense, Cisco ASA, etc.) are already there. If a parser exists, download it and diff against the user's requirements — far less work than authoring from scratch. See `references/ai-siem-catalog.md` for the recipe and a map of template parsers by shape. +1. **Check the ai-siem catalog first.** Before writing anything, search for the vendor/product. The repo has ~150 community + marketplace parsers; most common sources (Cloudflare, FortiGate, Palo Alto, Corelight, AWS RDS, Okta, Abnormal, Juniper, pfSense, Cisco ASA, etc.) are already there. If a parser exists, download it and diff against the user's requirements, far less work than authoring from scratch. See `references/ai-siem-catalog.md` for the recipe and a map of template parsers by shape. 2. **Inspect the sample.** Read every line the user pasted. Look for: leading priority/timestamp/host (syslog framing), the body shape (CEF | JSON | key=value | positional CSV | freeform), any obvious sub-structures (`uri=...`, embedded JSON, base64), and whether multiple physical lines belong to one logical event (stack traces, MySQL slow queries, Postgres SQL). 3. **Decide on strategy.** See *Strategy decision tree* below. Most logs are one of: alias an existing built-in, single line format with `$field$` markers, repeating key/value catch-all, JSON parser with `discardAttributes`, line-grouper for multi-line, or a mapper for OCSF-style restructuring. -4. **Draft the parser.** Use the templates in `examples/` as starting points, or (from step 1) a catalog parser as a base. Always start minimal — extract the *outer* frame first (timestamp + host + body), then add fragment formats or `{parse=...}` directives to crack the body open. -5. **Deploy in place and validate on the live stream (DEFAULT).** Update the SAME parser name the source already uses (`/logParsers/`) via `sdl_put_file` with the current `expectedVersion` from `sdl_get_file`, bumping `metadata.version` on every deploy. Then validate against events the source is already sending: after ~3-5 min propagation, query `dataSource.name='' metadata.version=''` and confirm the expected fields are populated and not null. Do NOT stand up a `claude_test_*` parser and do NOT synthetically HEC-ingest samples when the source is live — saved parser edits are non-destructive (they apply only to newly ingested events and never re-parse history), so editing the real parser is safe and the live feed is the authoritative test. The synthetic-ingest recipe in *Validation* is a FALLBACK, only for a source that is not currently ingesting. Before you deploy, commit the current live definition as a baseline, and after you deploy commit the new version — both to git in the **local project folder only** (see *Validation → Version control & rollback*). See *Validation* below. **Do not call this skill done before the live query shows the fields populated.** +4. **Draft the parser.** Use the templates in `examples/` as starting points, or (from step 1) a catalog parser as a base. Always start minimal, extract the *outer* frame first (timestamp + host + body), then add fragment formats or `{parse=...}` directives to crack the body open. +5. **Deploy in place and validate on the live stream (DEFAULT).** Update the SAME parser name the source already uses (`/logParsers/`) via `sdl_put_file` with the current `expectedVersion` from `sdl_get_file`, bumping `metadata.version` on every deploy. Then validate against events the source is already sending: after ~3-5 min propagation, query `dataSource.name='' metadata.version=''` and confirm the expected fields are populated and not null. Do NOT stand up a `claude_test_*` parser and do NOT synthetically HEC-ingest samples when the source is live, saved parser edits are non-destructive (they apply only to newly ingested events and never re-parse history), so editing the real parser is safe and the live feed is the authoritative test. The synthetic-ingest recipe in *Validation* is a FALLBACK, only for a source that is not currently ingesting. Before you deploy, commit the current live definition as a baseline, and after you deploy commit the new version, both to git in the **local project folder only** (see *Validation → Version control & rollback*). See *Validation* below. **Do not call this skill done before the live query shows the fields populated.** 6. **Iterate.** If a field is missing or wrong, identify which format/rewrite/mapping was responsible, edit, bump `metadata.version`, redeploy the same parser, wait for propagation, and re-query the live stream filtering on the new `metadata.version`. (Only for a non-live source: re-ingest the sample with a fresh nonce.) 7. **Hand off.** Show the user the final parser file (path + version), the sample they gave, and the parsed fields the query returned. @@ -169,7 +169,7 @@ A parser file is augmented JSON (unquoted keys allowed, `//` and `/* */` comment attributes: { // REQUIRED defaults on every parser "metadata.version": "1.0.0", - "dataSource.category": "security", // always "security" — hardcoded, never change + "dataSource.category": "security", // always "security", hardcoded, never change "dataSource.name": "Juniper SRX", "dataSource.vendor": "Juniper", // OCSF class metadata + vendor product metadata @@ -209,9 +209,9 @@ $fieldName=patternName{parse=...}{regex=...}{attrWhitelist=...}{attrBlacklist=.. Rules that bite people often: - `$field$` alone uses the `quotable` pattern by default, which stops at whitespace or quote boundaries. -- `$field{regex=\\d+}$` inlines a regex — backslash metacharacters double-escape (`\\d` not `\d`). +- `$field{regex=\\d+}$` inlines a regex: backslash metacharacters double-escape (`\\d` not `\d`). - Two adjacent `$a$$b$` with no delimiter between them require a pattern or regex on `$a$` so it knows when to stop. -- `message` is reserved — it's the raw event text. You cannot capture into `message` from a format. You *can* `discardAttributes: ["message"]` to drop it. +- `message` is reserved: it's the raw event text. You cannot capture into `message` from a format. You *can* `discardAttributes: ["message"]` to drop it. - A literal `$` in the log requires `\$$` (escape the dollar, then close the field). - Any space in the format matches `\s+`. To match a single literal space use `\\` (backslash-space). @@ -245,7 +245,7 @@ When in doubt, `marketplace-cloudflare-latest/` is the most complete reference f ## Strategy decision tree -Apply in order — first match wins: +Apply in order; first match wins: 1. **Is there a parser in the ai-siem catalog?** Search `Sentinel-One/ai-siem` for the vendor/product name. If so, start from that parser (see `references/ai-siem-catalog.md` for the fetch recipe and per-shape template map). On copy, immediately audit and fix: - The **4 mandatory attributes** (`dataSource.category` hardcoded to `"security"`, `dataSource.name`, `dataSource.vendor`, `metadata.version`). About 1/3 of community parsers miss `dataSource.category` outright; many that include it use `application`/`network`/`system`/`audit` instead of `"security"`. Force them to `"security"`. Add `metadata.version` if missing, bump it if you're changing the parser. @@ -256,7 +256,7 @@ Apply in order — first match wins: 2. **Is there a built-in parser?** Web access logs → `accessLog`. Pure JSON-per-line → `json` or `dottedJson`. Syslog → `systemLog`. Key=value pairs → `keyValue`. Heroku logplex → `heroku-logplex`. MySQL/Postgres → their dedicated parsers. CloudFront/ELB/S3/Redshift → AWS parsers. See `references/builtin-parsers.md`. If a built-in fits, recommend it and (optionally) just author an alias parser: `{ aliasTo: "json" }`. 3. **Is the log JSON-per-line but with a vendor envelope?** Use one format that captures the envelope and applies `{parse=json}` (or `dottedJson`/`escapedJson`/`urlEncodedJson`/`base64EncodedJson`) on the embedded body. Add `discardAttributes: ["message"]` to save storage. 4. **Is the whole line an OCSF/JSON blob you want flattened?** Use the gron-capture-then-mappings idiom: `format: "$unmapped.{parse=gron}$"` at the top, then rename/copy/cast everything in a `mappings` block. See `examples/08-gron-capture-template.json` and the `community/PARSER_TEMPLATE/` reference. -5. **Is the body a sequence of `key=value` pairs?** Use the two-format key/value idiom. The repeating catch-all format MUST be exactly `".*$_=identifier$=$_=quoteOrSpace$"` (with the leading `.*`) and have `repeat: true`. Without the `.*` the format only anchors at position 0 of the message and fires zero times on any line that starts with a syslog priority ``, a CEF header, an XML envelope, or anything else that isn't bare `identifier=`. The `_` field name means "use the captured token as the field name". `{parse=keyValue}` is NOT a valid sub-parser directive — it returns `Unknown parser "keyValue"`. The `keyValue` built-in can only be referenced via `aliasTo: "keyValue"` at the parser root (one-line alias parser), not via `{parse=...}`. Canonical references: built-in `keyValue` parser; `examples/03-key-value.json`; `sentinelone/marketplace-fortinetfortigate-latest/` (FortiGate syslog, key=value with quoted strings). +5. **Is the body a sequence of `key=value` pairs?** Use the two-format key/value idiom. The repeating catch-all format MUST be exactly `".*$_=identifier$=$_=quoteOrSpace$"` (with the leading `.*`) and have `repeat: true`. Without the `.*` the format only anchors at position 0 of the message and fires zero times on any line that starts with a syslog priority ``, a CEF header, an XML envelope, or anything else that isn't bare `identifier=`. The `_` field name means "use the captured token as the field name". `{parse=keyValue}` is NOT a valid sub-parser directive; it returns `Unknown parser "keyValue"`. The `keyValue` built-in can only be referenced via `aliasTo: "keyValue"` at the parser root (one-line alias parser), not via `{parse=...}`. Canonical references: built-in `keyValue` parser; `examples/03-key-value.json`; `sentinelone/marketplace-fortinetfortigate-latest/` (FortiGate syslog, key=value with quoted strings). 6. **Is it CEF or LEEF?** Treat the header as a positional pipe-delimited line, then apply key/value catch-all to the extension. See `examples/01-cef-over-syslog.json`. 7. **Is it positional / CSV / TSV?** Use `commaSeparatedValues` / `commaSeparatedvalues` or `pipeSeparatedValues` parse directives with `skipNumericConversion: true`, and name the columns in a `mappings` block by positional index (`attr[N]`). Palo Alto Networks Firewall in ai-siem is the canonical reference. 8. **Does the source emit multiple distinct event shapes** (e.g. MySQL error vs MySQL general vs Postgres from one RDS stream)? Give each `format` an `id:` and fan mapping entries out with `predicate: "='true'"`. See the AWS RDS marketplace parser. @@ -268,19 +268,19 @@ Apply in order — first match wins: ## Common gotchas (memorize) - **Double-escape every regex metacharacter.** `\\d`, `\\s`, `\\.`, `\\\\`. The augmented-JSON layer eats one backslash before the regex engine sees it. -- **`severity` is a RESERVED field coerced to 0–6 integer.** The ingest pipeline maps `info`/`warn`/`error` strings to 0–6 using its own vocabulary. OCSF labels like `"Informational"` / `"Medium"` collide and get rewritten. For the OCSF string, emit `severity_name` (or any non-colliding name); for the integer, emit `severity_id` directly (int; the 0-6 range is validated, 99 "Other" is unvalidated). Never emit both `severity` and `severity_id` from the same parser. Tenant-validated April 2026. -- **gron-captured dotted keys are FLAT, not nested.** A source JSON key like `"user.email": "alice"` becomes `unmapped.user.email` as a single flat field — mappings must reference it with `from: "unmapped.user.email"` (no escaping). `from: "unmapped.user\\.email"` does NOT match on current tenants, contrary to the escape-the-dots pattern in ai-siem's PARSER_TEMPLATE.conf. +- **`severity` is a RESERVED field coerced to 0-6 integer.** The ingest pipeline maps `info`/`warn`/`error` strings to 0-6 using its own vocabulary. OCSF labels like `"Informational"` / `"Medium"` collide and get rewritten. For the OCSF string, emit `severity_name` (or any non-colliding name); for the integer, emit `severity_id` directly (int; the 0-6 range is validated, 99 "Other" is unvalidated). Never emit both `severity` and `severity_id` from the same parser. Tenant-validated April 2026. +- **gron-captured dotted keys are FLAT, not nested.** A source JSON key like `"user.email": "alice"` becomes `unmapped.user.email` as a single flat field, mappings must reference it with `from: "unmapped.user.email"` (no escaping). `from: "unmapped.user\\.email"` does NOT match on current tenants, contrary to the escape-the-dots pattern in ai-siem's PARSER_TEMPLATE.conf. - **Saved parsers apply only to newly ingested events.** Historical logs are not re-parsed. So during iteration you must re-ingest the sample after every parser edit. -- **A `parser=`-tagged source with NO `/logParsers/` file ingests raw (passthrough).** If events carry `parser='auditd'` but `dataSource.name` / `class_uid` are null, the named parser file does not exist yet: the collector tags the events but SDL has nothing to apply. Deploy `/logParsers/` and NEW events get parsed. After deploy, the parser's root `attributes` (e.g. `dataSource.name`) are the canary that the parser is RUNNING AT ALL — if they are still null on fresh events the parser has not propagated yet (not a format bug); if they are populated but a captured field is null, that IS a format/mapping bug. `metadata.version` is the canary for WHICH version is live: bump it on every deploy so you can tell from the live stream when a specific change has propagated (poll `| group c=count() by metadata.version` until the new version appears). Propagation observed at ~3-5 min on this tenant. Tenant-validated 2026-06-01. +- **A `parser=`-tagged source with NO `/logParsers/` file ingests raw (passthrough).** If events carry `parser='auditd'` but `dataSource.name` / `class_uid` are null, the named parser file does not exist yet: the collector tags the events but SDL has nothing to apply. Deploy `/logParsers/` and NEW events get parsed. After deploy, the parser's root `attributes` (e.g. `dataSource.name`) are the canary that the parser is RUNNING AT ALL, if they are still null on fresh events the parser has not propagated yet (not a format bug); if they are populated but a captured field is null, that IS a format/mapping bug. `metadata.version` is the canary for WHICH version is live: bump it on every deploy so you can tell from the live stream when a specific change has propagated (poll `| group c=count() by metadata.version` until the new version appears). Propagation observed at ~3-5 min on this tenant. Tenant-validated 2026-06-01. - **`halt: true` stops the format engine after a match.** Use it for mutually exclusive formats (e.g., TCP vs UDP variants in pfSense). Without it, all matching formats merge their captures. - **`repeat: true` reapplies the same format from where it left off.** Required for the key/value catch-all idiom, otherwise only the first pair is captured. - **`discardAttributes` MUST be per-format for scratch fields, NOT parser-root.** A `discardAttributes: [...]` block at the parser root does NOT reliably drop fields created by named captures inside a format string (`$_xxx{regex=...}$` scratch markers leak through to the event). Put `discardAttributes: ["_pre", "_tail", ...]` ON THE FORMAT OBJECT itself, alongside `format:`. The built-in `json` parser shows the shape: `formats: [ { format: "$json{parse=json}$", repeat: true, discardAttributes: ["message"] } ]`. Parser-root scope only works for fields produced by `{parse=json}` / `{parse=dottedJson}` flat expansion (vendor noise keys like `flipkart_not_secure`), not for format captures. Tenant-validated 2026-05-13. - **There is NO `from:` directive on a `format` entry.** Only `id`, `attributes`, `format`, `discard`, `halt`, `repeat`, and `rewrites` are honored. A `from: ""` next to `format:` is silently ignored, and the format then runs against the raw line; a greedy regex like `[\s\S]+` will clobber every targeted field with the entire log message on every event. The `from:` key only exists in `mappings` ops (`{rename: {from, to}}`, `{copy: {from, to}}`). To run a format-like rewrite against a specific captured field, use `rewrites:` on the same format with `input: ""`, or do the work in a `mappings` op. - **The parser only sees the `message` field.** Ingest-time attributes (`app_id`, `cluster`, `region`, custom enrichments from collectors / HEC ingest) are NOT visible to format strings, format-level `discard:` filters, or `rewrites` regex inputs. They ARE visible to `mappings` predicates and `mappings` op `from:` paths since mappings run after parsing. Encode any sentinel you need to gate a format on into the message body or anchor on a string the message itself contains. -- **v1 `mappings` is FIRST-MATCH-WINS.** Mapping entries are tried in declaration order; only the first entry whose `predicate` matches an event runs. A `predicate: "true"` catch-all therefore MUST go LAST in the list — placed first, it shadows every per-app/per-class entry below it (renames don't apply, class constants stay generic). Pattern: most specific predicates first, generic catch-all last. If two predicates would both fire on the same event and you want both effects, fold their transformations into a single entry. Tenant-validated April 2026. -- **Fragment-format anchors must live INSIDE the prefix's regex, not as separate format-string text.** The format `$_pre{regex=[\s\S]*}$/actuator/health$_suf{regex=[\s\S]*}$` (greedy `[\s\S]*` followed by literal text in the format string between the field markers) does NOT match — the engine commits each field's regex independently and won't backtrack across literal-text gaps. Working form: `$_pre{regex=[\s\S]*\/actuator\/health}$$_suf{regex=[\s\S]*}$` (literal anchor inside the prefix's regex). Same shape as Phase-10 IOC formats (`[\s\S]*X-Forwarded-For=[\[]?` baked into the prefix). +- **v1 `mappings` is FIRST-MATCH-WINS.** Mapping entries are tried in declaration order; only the first entry whose `predicate` matches an event runs. A `predicate: "true"` catch-all therefore MUST go LAST in the list, placed first, it shadows every per-app/per-class entry below it (renames don't apply, class constants stay generic). Pattern: most specific predicates first, generic catch-all last. If two predicates would both fire on the same event and you want both effects, fold their transformations into a single entry. Tenant-validated April 2026. +- **Fragment-format anchors must live INSIDE the prefix's regex, not as separate format-string text.** The format `$_pre{regex=[\s\S]*}$/actuator/health$_suf{regex=[\s\S]*}$` (greedy `[\s\S]*` followed by literal text in the format string between the field markers) does NOT match, the engine commits each field's regex independently and won't backtrack across literal-text gaps. Working form: `$_pre{regex=[\s\S]*\/actuator\/health}$$_suf{regex=[\s\S]*}$` (literal anchor inside the prefix's regex). Same shape as Phase-10 IOC formats (`[\s\S]*X-Forwarded-For=[\[]?` baked into the prefix). - **Greedy `[\s\S]*ANCHOR` lands on the LAST occurrence of `ANCHOR`.** That is the right behaviour when the captured token follows the rightmost anchor on the line (Dropwizard `[\s\S]*\[dw-[0-9]+ -` is unique to the request-line bracket). It fails when the anchor is too generic: `[\s\S]*\[` followed by a `UT-[0-9]+` capture fails on any line whose last `[` is something else (e.g. `[#033[36m...]` ANSI brackets). Two fixes: (a) make the anchor multi-character and discriminating (`[\s\S]*\[UT-`), accepting that the literal is consumed by the anchor and your capture holds only the trailing portion (`$user_task_id_num{regex=[0-9]+}$`); or (b) use a lazy quantifier (`[\s\S]*?`) plus a discriminating literal when the FIRST occurrence is the right one. -- **Greedy `[\\s\\S]*` collides with COMPOUND field names that contain the anchor as a substring.** Anchoring a record-type capture on bare `type=` (`$_pre{regex=[\\s\\S]*type=}$$rectype{regex=[A-Z0-9_]+}$`) silently mis-fires on auditd PATH records because `nametype=NORMAL` (and `objtype=`) contain `type=` — the greedy match lands on the LAST `type=` (the one inside `nametype=`), captures `NORMAL`, and the rest of the format then fails. Fix: widen the anchor with the delimiter that precedes the REAL token, e.g. `type=` with a leading space (`$_pre{regex=[\\s\\S]* type=}$`), since the real record-type follows a space (`audispd: type=PATH`) whereas `nametype=`/`objtype=` are preceded by a letter. General rule: when your anchor is a short substring that also appears inside longer field names, disambiguate it with a neighbouring delimiter. Tenant-validated 2026-06-01 on a Linux auditd parser: bare `type=` parsed SYSCALL/EXECVE/PROCTITLE but dropped every PATH record; `type=` fixed all record types. +- **Greedy `[\\s\\S]*` collides with COMPOUND field names that contain the anchor as a substring.** Anchoring a record-type capture on bare `type=` (`$_pre{regex=[\\s\\S]*type=}$$rectype{regex=[A-Z0-9_]+}$`) silently mis-fires on auditd PATH records because `nametype=NORMAL` (and `objtype=`) contain `type=`, the greedy match lands on the LAST `type=` (the one inside `nametype=`), captures `NORMAL`, and the rest of the format then fails. Fix: widen the anchor with the delimiter that precedes the REAL token, e.g. `type=` with a leading space (`$_pre{regex=[\\s\\S]* type=}$`), since the real record-type follows a space (`audispd: type=PATH`) whereas `nametype=`/`objtype=` are preceded by a letter. General rule: when your anchor is a short substring that also appears inside longer field names, disambiguate it with a neighbouring delimiter. Tenant-validated 2026-06-01 on a Linux auditd parser: bare `type=` parsed SYSCALL/EXECVE/PROCTITLE but dropped every PATH record; `type=` fixed all record types. - **Per-event parse limit is just under 50,000 chars.** Long events get truncated *before* parsing. - **Line groupers max 100,000 chars per joined event.** Above that, the grouper still emits but truncated. - **`intermittentTimestamps: true`** is required for logs (like MySQL general query log) that emit a timestamp only on the second they roll over. Without it, every line missing a timestamp gets the ingest time. @@ -289,30 +289,30 @@ Apply in order — first match wins: - **SDL strips the leading `.*` from a regex before passing it to the Java engine.** This means using `.*?` (non-greedy) at the start of a regex produces an orphaned `?` which the engine rejects as "Dangling meta character '?' near index 0". Use plain `.*` and rely on normal greedy matching. If you need non-greedy behaviour, restructure the capture into two segments (see below). - **Trailing `.*` at the END of a format string is also stripped (same root cause as leading `.*`).** A format ending in `$_body{regex=.*}$` or `$process.cmd_line{regex=.*}$` (the field marker is the last thing on the line, regex is exactly `.*`) silently captures the EMPTY STRING instead of "everything to end of line". The SDL leading-`.*`-strip rule applies regardless of whether the `.*` is the entire regex or merely starts it; with the `.*` stripped, the regex becomes empty and the field defaults to a zero-length capture. Tenant-validated 2026-05-26 on a linuxLogsParser sudo format: `COMMAND=$process.cmd_line{regex=.*}$` captured `""` (empty), whereas the same format with `regex=[\\s\\S]+` captured the full command-line including embedded spaces. Use `[\\s\\S]+` (one or more, including newlines) or `[\\s\\S]*` (zero or more, including newlines) at any field marker where you want "everything that remains on the line" semantics. Both forms avoid the leading-`.*` strip and survive intact. - **Regex alternation matches in DECLARATION ORDER, not longest-leftmost.** `regex=CRON|CROND` is a bug: `CRON` is tried first and matches the literal prefix of `CROND`, leaving `D` to fail against the next literal in the format string. The fix is to put the LONGER alternative FIRST: `regex=CROND|CRON|crond|cron`. This applies anywhere alternation appears (named patterns, inline `{regex=...}`, regex in rewrites). Tenant-validated 2026-05-26: linuxLogsParser cron_cmd format with `CRON|CROND` matched zero CROND events; same format with `CROND|CRON` matched every cron variant. General rule: when alternatives share a prefix, sort by length descending. -- **`[\s\S]*?` (lazy) at the start of a prefix regex silently matches almost nothing — same family of bugs as `.*?`, but no error.** A fragment format like `$_pre{regex=[\s\S]*?}$$field{regex=PATTERN}$$_suf{regex=[\s\S]*}$` will fire on a tiny fraction of events instead of the expected matches, because the SDL regex engine does not backtrack across field boundaries when the prefix is lazy. The fix is the same shape as the multi-char-anchor rule: use greedy `[\s\S]*` plus a discriminating literal anchor inside the prefix regex itself (e.g. `[\s\S]*\"merchant_transaction_id\":\"` to anchor on a JSON key before capturing a CL transaction id). Tenant-validated 2026-05-13. If you actually need first-match semantics, anchor on a literal that only appears once per line (e.g. `\[log\.`, `\"url\":\"`), do not reach for `*?`. -- **Two-segment sequential capture pattern for JSON values inside a raw string.** When a log line is a raw JSON string (with `\"` escaping) and you need to extract a field value, use a two-segment format with a `$$` transition. First segment grabs everything up to and including the opening quote of the value into a scratch field; second segment captures the value up to the closing quote. Example for extracting `severity_name` before SDL coerces it: `$_ps{regex=.*\\\"severity\\\":\\\"}$$severity_name{regex=[^\\\"]*}$`. The `$$` boundary: the first `$` closes seg 1, the second `$` opens seg 2. The scratch field (`_ps`) must be in the format's OWN `discardAttributes: ["_ps"]` array (per-format, alongside `format:`) — parser-root `discardAttributes` does not reliably drop format-capture scratch fields on this tenant. This pattern works for any quoted string value in a JSON-encoded log line. +- **`[\s\S]*?` (lazy) at the start of a prefix regex silently matches almost nothing, same family of bugs as `.*?`, but no error.** A fragment format like `$_pre{regex=[\s\S]*?}$$field{regex=PATTERN}$$_suf{regex=[\s\S]*}$` will fire on a tiny fraction of events instead of the expected matches, because the SDL regex engine does not backtrack across field boundaries when the prefix is lazy. The fix is the same shape as the multi-char-anchor rule: use greedy `[\s\S]*` plus a discriminating literal anchor inside the prefix regex itself (e.g. `[\s\S]*\"merchant_transaction_id\":\"` to anchor on a JSON key before capturing a CL transaction id). Tenant-validated 2026-05-13. If you actually need first-match semantics, anchor on a literal that only appears once per line (e.g. `\[log\.`, `\"url\":\"`), do not reach for `*?`. +- **Two-segment sequential capture pattern for JSON values inside a raw string.** When a log line is a raw JSON string (with `\"` escaping) and you need to extract a field value, use a two-segment format with a `$$` transition. First segment grabs everything up to and including the opening quote of the value into a scratch field; second segment captures the value up to the closing quote. Example for extracting `severity_name` before SDL coerces it: `$_ps{regex=.*\\\"severity\\\":\\\"}$$severity_name{regex=[^\\\"]*}$`. The `$$` boundary: the first `$` closes seg 1, the second `$` opens seg 2. The scratch field (`_ps`) must be in the format's OWN `discardAttributes: ["_ps"]` array (per-format, alongside `format:`), parser-root `discardAttributes` does not reliably drop format-capture scratch fields on this tenant. This pattern works for any quoted string value in a JSON-encoded log line. - **`$pri{parse=syslogPriority}$` can cause silent event drops on some tenants.** If you suspect priority parsing is the culprit, capture the priority as a plain field (`$pri{regex=\\d+}$`) and skip the parse directive. - **Indexed positional access `attr[N]` only works in `mappings.version: 1`.** v0 mappings reject `attr[0]`/`attr[1]` syntax. If the source is positional CSV (Palo Alto Firewall is the canonical case), use v1. Reference: `parsers/sentinelone/marketplace-paloaltonetworksfirewall-latest/`. - **`{parse=gron}` flattens nested JSON to dotted keys, but the keys themselves contain dots.** A source `{"Resource": {"Id": 5}}` becomes the single flat field `unmapped.Resource.Id` (one key with two dots), not a nested object. To rename it use `from: "unmapped.Resource.Id"` (no escapes). To rename a whole subtree use `rename_tree: { from: "unmapped.Resource", to: "resource" }` and the engine walks the dotted-prefix subtree. Reference: `parsers/sentinelone/marketplace-cloudflare-latest/`. - **`attrBlacklist={field1,field2}` only filters subfields produced by a `{parse=...}` directive.** It does NOT filter top-level captured fields you named explicitly in the format string. To drop a top-level field use `discardAttributes: ["fieldname"]` at the parser root. Reference: `parsers/sentinelone/marketplace-fortinetfortigate-latest/`. -- **`{parse=...}` subfield naming is ``** (per SDL KB 000006743). Field `details` parsing `?apple=w&banana=x` yields `detailsApple` and `detailsBanana`, NOT `details_apple` / `detailsQuery_apple` / `details.apple`. Same convention for `{parse=json}` (camelCase): `details` parsing `{"foo":"hello"}` produces `detailsFoo`, not `details_foo`. Confirm the exact field name with a sample query if unsure — every "obvious" alternative spelling fails silently. +- **`{parse=...}` subfield naming is ``** (per SDL KB 000006743). Field `details` parsing `?apple=w&banana=x` yields `detailsApple` and `detailsBanana`, NOT `details_apple` / `detailsQuery_apple` / `details.apple`. Same convention for `{parse=json}` (camelCase): `details` parsing `{"foo":"hello"}` produces `detailsFoo`, not `details_foo`. Confirm the exact field name with a sample query if unsure, every "obvious" alternative spelling fails silently. - **`{parse=uri}` and `{parse=uriAttributes}` consume the parent capture instead of preserving it.** After parsing, the original captured value is gone from the event; only the generated subfields remain (validated against current tenant April 2026). If you also need the raw URL/query string, capture it twice: once with the parse directive, once into a sibling scratch field, and `rename` the scratch one in `mappings`. Or split path/query directly in the format: `$path{regex=[^? ]+}$\??$qs{regex=[^ ]*}{parse=uriAttributes}$`. -- **`{parse=uri}` on relative URLs (no scheme/host) silently drops the query subfields on tested tenants.** It still emits `Path`, but `` siblings for query parameters never materialize. Use `{parse=uriAttributes}` on the query-string portion (split manually with regex) instead — it works regardless of whether the URL is absolute. +- **`{parse=uri}` on relative URLs (no scheme/host) silently drops the query subfields on tested tenants.** It still emits `Path`, but `` siblings for query parameters never materialize. Use `{parse=uriAttributes}` on the query-string portion (split manually with regex) instead; it works regardless of whether the URL is absolute. - **`skipNumericConversion: true` is required when columns contain numeric strings you want preserved as strings.** Without it, `commaSeparatedvalues` and `pipeSeparatedValues` parse will coerce `"00123"` → `123` (loses leading zeros), `"0xDEADBEEF"` → `3735928559`, and `"1.0"` → `1`. Set `skipNumericConversion: true` on the format whenever any column is an opaque ID or a hex/octal string. Canonical: Palo Alto Firewall. - **`intermittentTimestamps: true` is the only fix for sources where only the first record on each second has a timestamp.** Common with MySQL general query log, AWS RDS, sometimes VPC flow logs. Without it, every line that lacks a timestamp gets the ingest timestamp, not the inferred one. Reference: `parsers/sentinelone/marketplace-awsvpcflowlogs-latest/` and `parsers/community/sql_database_logs-latest/`. -- **`enum` cast in v1 mappings without `enum_default` leaves unmapped values UNCHANGED, not null.** If you want unknowns to map to a known sentinel, set `enum_default: ` on the cast. Cloudflare uses `enum_default: 99` ("Unknown") consistently — copy that pattern. +- **`enum` cast in v1 mappings without `enum_default` leaves unmapped values UNCHANGED, not null.** If you want unknowns to map to a known sentinel, set `enum_default: ` on the cast. Cloudflare uses `enum_default: 99` ("Unknown") consistently, copy that pattern. - **`severity_id` takes the OCSF integer enum; `severity` is RESERVED and coerced by ingest.** Setting `severity_id: 999` silently fails; the 0-6 range is validated, 99 ("Other") is unvalidated. Emit `severity_id` (int) plus optionally `severity_name` (the OCSF label string). Never emit `severity`, and never emit BOTH `severity` and `severity_id` from the same parser. - **Rewrites run during format parsing; mappings run after all formats.** A field renamed in `mappings.rename` cannot be referenced by a `rewrites:` block on a later format on the same line because `rewrites:` runs per-format during capture. If you need a derived field from a renamed one, do the derivation inside `mappings` (use `copy` then `cast`, or `replace`). - **Mixing `mappings.version: 0` and `mappings.version: 1` syntax in the same block is a hard error.** The engine rejects with "expected list got object" or "unsupported event mapper version -1". Pick one version per parser and stick to it. - **Windows Event Log XML payloads ship with double-escaped tabs/newlines.** A parser for Windows EventLog in the catalog (`parsers/community/microsoft_windows_eventlog-latest/`) deals with `\\t` and `\\n` literals embedded inside XML strings; capturing them needs `\\\\t` / `\\\\n` (four backslashes) at the augmented-JSON layer. - **Some catalog parsers ship without `dataSource.category` at all (~33% of community).** When you copy from `Sentinel-One/ai-siem`, audit the top-level `attributes:` block. If `dataSource.category` is missing, add it as `"security"`. If present with another value, change it to `"security"`. Same audit for `dataSource.name` and `dataSource.vendor`. -- **`$_=identifier$=$_=quoteOrSpace$` repeating idiom REQUIRES a leading `.*` AND `repeat: true`.** This is the canonical built-in `keyValue` parser shape and it is documented in the public KB as `".*$_=identifier$=$_=quoteOrSpace$"`. Without the leading `.*`, the format anchors at position 0 of the message and fires zero times on any line that doesn't start with an identifier — including every syslog log (`<189>date=...`), CEF (`CEF:0|...`), Windows Event (``), or anything with a leading timestamp/priority. The format extracts **nothing** in that case, silently. The `.*` lets the engine scan forward to the first `key=` and then `repeat: true` walks the remaining pairs from there. Tenant-validated 2026-05-26 on FortiGate syslog (`<189>date=2026-05-25 time=18:07:18 devname="..." ...`): without `.*` zero fields captured; with `.*` all 30+ key=value pairs captured. The `keyValue` built-in parser uses exactly this shape (see `examples/03-key-value.json`). If you also need a separate static-prefix capture (e.g. to extract a syslog priority), put it in a SIBLING format that runs before the catch-all — each format runs against the full original `message` independently, so the prefix format and the `.*`-anchored KV format don't compete. +- **`$_=identifier$=$_=quoteOrSpace$` repeating idiom REQUIRES a leading `.*` AND `repeat: true`.** This is the canonical built-in `keyValue` parser shape and it is documented in the public KB as `".*$_=identifier$=$_=quoteOrSpace$"`. Without the leading `.*`, the format anchors at position 0 of the message and fires zero times on any line that doesn't start with an identifier, including every syslog log (`<189>date=...`), CEF (`CEF:0|...`), Windows Event (``), or anything with a leading timestamp/priority. The format extracts **nothing** in that case, silently. The `.*` lets the engine scan forward to the first `key=` and then `repeat: true` walks the remaining pairs from there. Tenant-validated 2026-05-26 on FortiGate syslog (`<189>date=2026-05-25 time=18:07:18 devname="..." ...`): without `.*` zero fields captured; with `.*` all 30+ key=value pairs captured. The `keyValue` built-in parser uses exactly this shape (see `examples/03-key-value.json`). If you also need a separate static-prefix capture (e.g. to extract a syslog priority), put it in a SIBLING format that runs before the catch-all, each format runs against the full original `message` independently, so the prefix format and the `.*`-anchored KV format don't compete. - **Conditional class assignment (one parser, multiple OCSF classes) is best done by stamping `class_uid`/`class_name` on each `format`'s `attributes:` block, not on the parser root.** The root attributes are baseline; per-format attributes override. Reference for fan-out via format-id sentinel + mapping predicates: `parsers/sentinelone/marketplace-awsrdslogs-latest/`. -- **Same-name `rename` in v1 mappings silently NULLS the field.** Writing `{ rename: { from: "action", to: "action" } }` to "keep" a captured raw field under its own name actually deletes the value. The KV catch-all extracts `action` (or any other raw vendor field) directly into the event under its native name — if you want to keep it, OMIT the rename. Only write a rename when the target name is different from the source. Tenant-validated 2026-05-26: identical FortiGate `action="perf-stats"` event returned `action=null` with the self-rename present, `action="perf-stats"` after removing the self-rename. This bites you when "promoting" raw fields that the catch-all already captures. -- **`raw_data` JSON blob is duplicate storage.** Many upstream Observo / collector extractions leave the entire raw event in a `raw_data` field alongside the typed-OCSF fields they extract. If your parser is also extracting those same fields via KV catch-all or named captures, the `raw_data` field is redundant and storage-wasteful. Either `discardAttributes: ["raw_data"]` at parser root or strip upstream. Don't store the same key=value pair three times (typed + unmapped + raw_data) — this was the Netskope anti-pattern. Audit on copy. -- **Unquoted numerics captured by `quoteOrSpace` are auto-typed as NUMBER columns.** No explicit cast required. A FortiGate `srcport=44321 dstport=443 sentbyte=8421` line going through `.*$_=identifier$=$_=quoteOrSpace$` produces `srcport: 44321` (number), `dstport: 443` (number), `sentbyte: 8421` (number) — all queryable with `avg()`, `sum()`, `> 100`, etc. without `number()` wrapping. The auto-inference fires when the captured token is purely numeric AND unquoted in the source. Quoted values (`level="notice"`) stay as strings even if they look numeric. Tenant-validated 2026-05-26 on FortiGate. Caveat: SDL's column type-locking still applies — if a column was ingested as string earlier, new numeric writes coerce back to string and `avg()` returns NaN. The CLAUDE.md project rule "wrap with `number()` before arithmetic" is still the bulletproof pattern for dashboard panels and STAR rule bodies, especially for counter columns (`traffic.bytes_*`, `traffic.packets_*`, `duration`). -- **`message` field is reserved and preserved on every event regardless of parser activity.** SDL never lets a parser overwrite `message`; the raw event body always survives. Practical consequence: dashboards and PowerQuery hunts that use `parse "fieldname=$x$ " from message` continue to work even after a parser renames the typed columns (`srcip` → `src_endpoint.ip`). This is the backward-compat escape hatch during parser rollout — old events still parse via message-text extraction, new events parse via typed columns. To migrate a dashboard from parse-from-message to typed columns without losing coverage on legacy events, use `(typed_field == * OR raw_field == *)` or `coalesce(typed_field, raw_field)` patterns. Tenant-validated 2026-05-26 on FortiGate dashboard rewrite: panels that switched to `src_endpoint.ip` continued returning the same row counts because the upstream Observo path was already producing typed src_endpoint.ip too; panels using `tls.sni` only show fortigateParser-tagged events because Observo didn't extract SNI. -- **When two ingest paths produce OCSF from the same source, they may flatten `event.type` / `event.subtype` differently.** Common pattern: upstream Observo collector flattens FortiGate `type=traffic subtype=forward` into a single `event.type='forward'` (drops the parent type). The downstream parser keeps both: `event.type='traffic', event.subtype='forward'`. Same source, two schema shapes coexisting on different events. Dashboards and hunts that filter on subtype must use OR: `(event.subtype='forward' OR event.type='forward')` — this matches both legacy and parser-tagged events. The rule: every time you migrate a downstream consumer to typed OCSF columns, audit each subtype filter for backward compat with the upstream shape during the rollover window. +- **Same-name `rename` in v1 mappings silently NULLS the field.** Writing `{ rename: { from: "action", to: "action" } }` to "keep" a captured raw field under its own name actually deletes the value. The KV catch-all extracts `action` (or any other raw vendor field) directly into the event under its native name, if you want to keep it, OMIT the rename. Only write a rename when the target name is different from the source. Tenant-validated 2026-05-26: identical FortiGate `action="perf-stats"` event returned `action=null` with the self-rename present, `action="perf-stats"` after removing the self-rename. This bites you when "promoting" raw fields that the catch-all already captures. +- **`raw_data` JSON blob is duplicate storage.** Many upstream Observo / collector extractions leave the entire raw event in a `raw_data` field alongside the typed-OCSF fields they extract. If your parser is also extracting those same fields via KV catch-all or named captures, the `raw_data` field is redundant and storage-wasteful. Either `discardAttributes: ["raw_data"]` at parser root or strip upstream. Don't store the same key=value pair three times (typed + unmapped + raw_data); this was the Netskope anti-pattern. Audit on copy. +- **Unquoted numerics captured by `quoteOrSpace` are auto-typed as NUMBER columns.** No explicit cast required. A FortiGate `srcport=44321 dstport=443 sentbyte=8421` line going through `.*$_=identifier$=$_=quoteOrSpace$` produces `srcport: 44321` (number), `dstport: 443` (number), `sentbyte: 8421` (number), all queryable with `avg()`, `sum()`, `> 100`, etc. without `number()` wrapping. The auto-inference fires when the captured token is purely numeric AND unquoted in the source. Quoted values (`level="notice"`) stay as strings even if they look numeric. Tenant-validated 2026-05-26 on FortiGate. Caveat: SDL's column type-locking still applies, if a column was ingested as string earlier, new numeric writes coerce back to string and `avg()` returns NaN. The CLAUDE.md project rule "wrap with `number()` before arithmetic" is still the bulletproof pattern for dashboard panels and STAR rule bodies, especially for counter columns (`traffic.bytes_*`, `traffic.packets_*`, `duration`). +- **`message` field is reserved and preserved on every event regardless of parser activity.** SDL never lets a parser overwrite `message`; the raw event body always survives. Practical consequence: dashboards and PowerQuery hunts that use `parse "fieldname=$x$ " from message` continue to work even after a parser renames the typed columns (`srcip` → `src_endpoint.ip`). This is the backward-compat escape hatch during parser rollout, old events still parse via message-text extraction, new events parse via typed columns. To migrate a dashboard from parse-from-message to typed columns without losing coverage on legacy events, use `(typed_field == * OR raw_field == *)` or `coalesce(typed_field, raw_field)` patterns. Tenant-validated 2026-05-26 on FortiGate dashboard rewrite: panels that switched to `src_endpoint.ip` continued returning the same row counts because the upstream Observo path was already producing typed src_endpoint.ip too; panels using `tls.sni` only show fortigateParser-tagged events because Observo didn't extract SNI. +- **When two ingest paths produce OCSF from the same source, they may flatten `event.type` / `event.subtype` differently.** Common pattern: upstream Observo collector flattens FortiGate `type=traffic subtype=forward` into a single `event.type='forward'` (drops the parent type). The downstream parser keeps both: `event.type='traffic', event.subtype='forward'`. Same source, two schema shapes coexisting on different events. Dashboards and hunts that filter on subtype must use OR: `(event.subtype='forward' OR event.type='forward')`; this matches both legacy and parser-tagged events. The rule: every time you migrate a downstream consumer to typed OCSF columns, audit each subtype filter for backward compat with the upstream shape during the rollover window. - **`parser=''` field may only be tagged for very recent events.** Some tenants are configured to stamp the `parser` field only on events ingested in the last N minutes (e.g., last 30 minutes). Queries filtering on `parser='myparser'` against a 24h window return only that recent slice, not 24h of data. For broad coverage validation, filter on `dataSource.name` + `metadata.version` (which IS retained per-event) instead, and use `parser=` only for isolating a specific recent ingest test. Tenant-validated 2026-05-26. ### Ingest-path gotchas (discovered empirically via live validation) @@ -328,7 +328,7 @@ These are quirks of the ingest pipeline itself, not the parser DSL. They bite yo ### `mappings` block gotchas -Two syntaxes coexist on live tenants and both work. You must commit to one per parser — mixing them in the same mappings block produces confusing "expected list got object" errors. +Two syntaxes coexist on live tenants and both work. You must commit to one per parser, mixing them in the same mappings block produces confusing "expected list got object" errors. **v1 (singular, preferred for new parsers, tenant-validated April 2026):** @@ -336,22 +336,22 @@ Two syntaxes coexist on live tenants and both work. You must commit to one per p - **Each transformation is `{: {...body}}`**, where the op name is the **outer key** (e.g. `{rename: {from, to}}`). The public-doc form `{op: "rename", from: ..., to: ...}` is rejected. - **`rename.from` is a single string**, not a list. Use `copy` (which does accept a list) if you need "first of N". - **`cast` uses `type:`**, not `to:`. Example: `{cast: {field: "x", type: "int"}}`. -- **`cast` overwrites the source field.** There is no `output:` parameter — `copy` first, then `cast` the copy. +- **`cast` overwrites the source field.** There is no `output:` parameter, `copy` first, then `cast` the copy. - **Predicates use `==`** (double equals). -**v0 (plural-grouped, used by most S1 Marketplace parsers — AWS RDS, Corelight, Cloudflare, FortiGate):** +**v0 (plural-grouped, used by most S1 Marketplace parsers, AWS RDS, Corelight, Cloudflare, FortiGate):** - **`mappings.version: 0`**. Same block, different body shape. - **Ops are plural arrays on the mapping entry**: `renames: [...]`, `copies: [...]`, `constants: [...]`. No `transformations:` wrapper. -- **Every op entry uses `inputs: [list]` + `output:` + `type:`** — even `rename`. `type: "string"` is the safe default. +- **Every op entry uses `inputs: [list]` + `output:` + `type:`**: even `rename`. `type: "string"` is the safe default. - **Predicates use `=`** (single equals) in v0, both on the mapping entry and inside `constants`. -- **WARNING: v0 `constants:` block is rejected on the current S1 tenant.** `putFile` returns `400: Syntax error at position -1: Assertion failed: Expected a field` when a `constants:` array is present, even with the documented body shape `[{output, value, type}]`. v0 `renames:` and `copies:` work fine; only `constants:` fails. Tenant-validated 2026-05-26: identical mapping block with `constants` removed deploys cleanly, with `constants` present is rejected. If you need conditional `class_uid` / `activity_id` fan-out from one parser to multiple OCSF classes, use **v1** — the v1 `{ constant: { field, value } }` op works reliably. This means: prefer v1 for any new parser that needs OCSF class fan-out. Stay on v0 only if you're extending an existing v0 parser that doesn't add new constants. +- **WARNING: v0 `constants:` block is rejected on the current S1 tenant.** `putFile` returns `400: Syntax error at position -1: Assertion failed: Expected a field` when a `constants:` array is present, even with the documented body shape `[{output, value, type}]`. v0 `renames:` and `copies:` work fine; only `constants:` fails. Tenant-validated 2026-05-26: identical mapping block with `constants` removed deploys cleanly, with `constants` present is rejected. If you need conditional `class_uid` / `activity_id` fan-out from one parser to multiple OCSF classes, use **v1**, the v1 `{ constant: { field, value } }` op works reliably. This means: prefer v1 for any new parser that needs OCSF class fan-out. Stay on v0 only if you're extending an existing v0 parser that doesn't add new constants. -If you inherit a marketplace parser, keep it on v0 rather than rewriting (unless you need to add `constants` — then migrate to v1). For new parsers, pick v1. See `references/mappers.md` for the full side-by-side. +If you inherit a marketplace parser, keep it on v0 rather than rewriting (unless you need to add `constants`, then migrate to v1). For new parsers, pick v1. See `references/mappers.md` for the full side-by-side. -**`constant` / `constants` op** (both versions) is the workhorse for conditional OCSF class/activity assignment — give it a `predicate` and it only fires when matched, so you can fan one vendor-native state code (`conn_state`, `action`, etc.) out into `activity_id` + `activity_name` + `type_uid` triples. +**`constant` / `constants` op** (both versions) is the workhorse for conditional OCSF class/activity assignment, give it a `predicate` and it only fires when matched, so you can fan one vendor-native state code (`conn_state`, `action`, etc.) out into `activity_id` + `activity_name` + `type_uid` triples. -**Inline `predicate:` on individual `constant` ops is the cleanest escape hatch from first-match-wins in v1.** When you want a long list of unconditional renames/copies AND a handful of conditional `constant` writes (severity bucketing, OCSF enum derivation from a vendor string, action/status/disposition fan-out), DO NOT split them across multiple top-level mapping entries — only the first matching entry fires. Instead, put EVERYTHING in one `predicate: "true"` entry and attach a `predicate:` field directly to each conditional `constant` op: +**Inline `predicate:` on individual `constant` ops is the cleanest escape hatch from first-match-wins in v1.** When you want a long list of unconditional renames/copies AND a handful of conditional `constant` writes (severity bucketing, OCSF enum derivation from a vendor string, action/status/disposition fan-out), DO NOT split them across multiple top-level mapping entries, only the first matching entry fires. Instead, put EVERYTHING in one `predicate: "true"` entry and attach a `predicate:` field directly to each conditional `constant` op: ```js mappings: { @@ -362,7 +362,7 @@ mappings: { // ... unconditional renames / copies / casts ... { copy: { from: "raw_severity", to: "vendor.severity_raw" } }, - // Conditional constants — predicate lives ON THE OP, not the mapping entry. + // Conditional constants: predicate lives ON THE OP, not the mapping entry. { constant: { field: "severity_id", value: 1, predicate: "vendor.severity_raw >= 0 && vendor.severity_raw <= 3" } }, { constant: { field: "severity_id", value: 3, predicate: "vendor.severity_raw >= 4 && vendor.severity_raw <= 6" } }, { constant: { field: "severity_id", value: 4, predicate: "vendor.severity_raw >= 7 && vendor.severity_raw <= 8" } }, @@ -376,49 +376,49 @@ mappings: { } ``` -This pattern preserves first-match-wins semantics at the mapping-entry level (which can't be worked around) while still letting you express N independent conditional writes without duplicating the rename list across N per-subtype blocks. Use it whenever you have a flat schema (one event shape, many conditional derivations) — severity bucketing, action/status/disposition fan-out from a vendor enum, HTTP-status → OCSF status_id, and so on. The alternative — splitting into per-subtype top-level mapping entries — only makes sense when the per-subtype rename lists are genuinely different (different OCSF classes per event subtype). Tenant-validated May 2026 on a CEF source with ~20 conditional ops: all fired from a single `predicate: "true"` mapping entry; the same logic split across multiple top-level entries produced zero hits on every conditional write because only the first entry ran. See `examples/11-*-cef-ocsf.json` for the runnable reference. +This pattern preserves first-match-wins semantics at the mapping-entry level (which can't be worked around) while still letting you express N independent conditional writes without duplicating the rename list across N per-subtype blocks. Use it whenever you have a flat schema (one event shape, many conditional derivations), severity bucketing, action/status/disposition fan-out from a vendor enum, HTTP-status → OCSF status_id, and so on. The alternative, splitting into per-subtype top-level mapping entries, only makes sense when the per-subtype rename lists are genuinely different (different OCSF classes per event subtype). Tenant-validated May 2026 on a CEF source with ~20 conditional ops: all fired from a single `predicate: "true"` mapping entry; the same logic split across multiple top-level entries produced zero hits on every conditional write because only the first entry ran. See `examples/11-*-cef-ocsf.json` for the runnable reference. -**Predicate type-mismatch silently fails on captured numerics.** The KV catch-all auto-types unquoted values as NUMBER (pitfall #5 in *Critical pitfalls*). That means a predicate like `raw_severity == '5'` — quoted string — never matches a `raw_severity` captured as integer 5. Use bare numerics in predicates for numeric fields (`raw_severity >= 4`, `http_response.code < 400`) and quoted strings only for actually-string fields (`raw_action == 'alert'`, format-id sentinels `mySqlErrorLog == 'true'`). When in doubt, run a quick query on a recent parsed event and check `cellType` in the response — STRING vs NUMBER — before writing the predicate. A string predicate against a numeric field silently drops every dependent op; the only symptom is the target field being null on every event, which can take several deploy/iterate cycles to localize. Tenant-validated May 2026. +**Predicate type-mismatch silently fails on captured numerics.** The KV catch-all auto-types unquoted values as NUMBER (pitfall #5 in *Critical pitfalls*). That means a predicate like `raw_severity == '5'`, quoted string; never matches a `raw_severity` captured as integer 5. Use bare numerics in predicates for numeric fields (`raw_severity >= 4`, `http_response.code < 400`) and quoted strings only for actually-string fields (`raw_action == 'alert'`, format-id sentinels `mySqlErrorLog == 'true'`). When in doubt, run a quick query on a recent parsed event and check `cellType` in the response, STRING vs NUMBER, before writing the predicate. A string predicate against a numeric field silently drops every dependent op; the only symptom is the target field being null on every event, which can take several deploy/iterate cycles to localize. Tenant-validated May 2026. -**OCSF `severity_id` is an enum `{0,1,2,3,4,5,6,99}`, NOT a vendor passthrough (0-6 is tenant-validated; 99 is unvalidated).** Many sources (CEF 0-10, syslog 0-7, custom 0-100) ship a wider-range numeric severity. Renaming the raw value directly into `severity_id` produces invalid OCSF (e.g. `severity_id=10` when a vendor uses 0-10) AND semantically false detections (vendor "5 out of 10" means Medium for that vendor, but `severity_id=5` is OCSF "Critical" — every routine event suddenly looks Critical to downstream consumers). Always bucket via per-op predicates and preserve the raw value under a vendor namespace (`vendor.severity_raw`, `cef.severity`) for source fidelity. Reference bucketing for a 0-10 scale: `0-3 → 1 Informational, 4-6 → 3 Medium, 7-8 → 4 High, 9-10 → 5 Critical`. For 0-7 syslog: `0-1 → 5 Critical, 2-3 → 4 High, 4 → 3 Medium, 5-7 → 1 Informational`. Same `severity` (no suffix) is RESERVED and coerced to 0-6 by ingest, so emit `severity_id` (the integer) and optionally `severity_name` (a label string) — never both `severity` and `severity_id` from the same parser. Tenant-validated May 2026: a parser that passed CEF 0-10 directly into `severity_id` emitted invalid OCSF values (`severity_id=10`) AND tagged the bulk of routine traffic as Critical; the bucketed replacement produced semantically correct severity_ids for the same input stream. +**OCSF `severity_id` is an enum `{0,1,2,3,4,5,6,99}`, NOT a vendor passthrough (0-6 is tenant-validated; 99 is unvalidated).** Many sources (CEF 0-10, syslog 0-7, custom 0-100) ship a wider-range numeric severity. Renaming the raw value directly into `severity_id` produces invalid OCSF (e.g. `severity_id=10` when a vendor uses 0-10) AND semantically false detections (vendor "5 out of 10" means Medium for that vendor, but `severity_id=5` is OCSF "Critical", every routine event suddenly looks Critical to downstream consumers). Always bucket via per-op predicates and preserve the raw value under a vendor namespace (`vendor.severity_raw`, `cef.severity`) for source fidelity. Reference bucketing for a 0-10 scale: `0-3 → 1 Informational, 4-6 → 3 Medium, 7-8 → 4 High, 9-10 → 5 Critical`. For 0-7 syslog: `0-1 → 5 Critical, 2-3 → 4 High, 4 → 3 Medium, 5-7 → 1 Informational`. Same `severity` (no suffix) is RESERVED and coerced to 0-6 by ingest, so emit `severity_id` (the integer) and optionally `severity_name` (a label string), never both `severity` and `severity_id` from the same parser. Tenant-validated May 2026: a parser that passed CEF 0-10 directly into `severity_id` emitted invalid OCSF values (`severity_id=10`) AND tagged the bulk of routine traffic as Critical; the bucketed replacement produced semantically correct severity_ids for the same input stream. -**Format-id-as-sentinel predicate**: `format: { id: "mySqlErrorLog", ... }` auto-sets a boolean-string field `mySqlErrorLog='true'` on events that matched that format. Use `predicate: "mySqlErrorLog='true'"` (v0) or `"mySqlErrorLog == 'true'"` (v1) to fan mapping entries out to sub-shapes. Quote the `'true'` — it's a string, not a bare boolean. +**Format-id-as-sentinel predicate**: `format: { id: "mySqlErrorLog", ... }` auto-sets a boolean-string field `mySqlErrorLog='true'` on events that matched that format. Use `predicate: "mySqlErrorLog='true'"` (v0) or `"mySqlErrorLog == 'true'"` (v1) to fan mapping entries out to sub-shapes. Quote the `'true'`; it's a string, not a bare boolean. -**`mappings.version: 1` uses FIRST-MATCH-WINS, not all-match.** The first mapping block whose predicate matches consumes the event — no subsequent blocks run. This is the single most important structural constraint when using v1. Consequences: +**`mappings.version: 1` uses FIRST-MATCH-WINS, not all-match.** The first mapping block whose predicate matches consumes the event; no subsequent blocks run. This is the single most important structural constraint when using v1. Consequences: - A `predicate: "true"` unconditional block placed FIRST will fire on every event and prevent all per-app conditional blocks from ever executing. Always place the catch-all at the END. - `drop` / `drop_tree` transformations cannot be factored into a standalone unconditional block at the start and shared across per-app blocks. They must be duplicated into each per-app block. Verbose but correct. -- **`rename` ops have the SAME problem as `drop`.** If you have a catch-all rename block at the end (typed-OCSF migration: srcip → src_endpoint.ip, devname → device.name, etc.) AND per-subtype `constant` blocks earlier (for activity_id fan-out), the catch-all rename NEVER fires for events that matched a per-subtype block — only the catch-all events get renamed. The per-subtype events keep raw vendor field names. To make the parser produce typed OCSF on ALL events, you MUST duplicate the rename list into every per-subtype block alongside its constants. Tenant-validated 2026-05-26 on FortiGate v1.1.0: with renames only in catch-all, event.subtype='forward' events had activity_id=6 from the constant block but src_endpoint.ip=null because the rename never ran; with renames duplicated into the per-subtype block, all fields populated. Pattern: each per-subtype block = its own constants + the full rename list. Verbose but correct. -- v0 mappings DO run all matching blocks (marketplace parsers like Cloudflare and FortiGate rely on this: an unconditional first block handles common renames, then conditional blocks handle sub-types). If you need multiple pass-through effects, consider whether v0 is a better fit — but note v0 lacks `drop`/`drop_tree` AND v0's `constants:` is currently rejected on this tenant (see WARNING above), so v0 is only viable if you don't need either. +- **`rename` ops have the SAME problem as `drop`.** If you have a catch-all rename block at the end (typed-OCSF migration: srcip → src_endpoint.ip, devname → device.name, etc.) AND per-subtype `constant` blocks earlier (for activity_id fan-out), the catch-all rename NEVER fires for events that matched a per-subtype block, only the catch-all events get renamed. The per-subtype events keep raw vendor field names. To make the parser produce typed OCSF on ALL events, you MUST duplicate the rename list into every per-subtype block alongside its constants. Tenant-validated 2026-05-26 on FortiGate v1.1.0: with renames only in catch-all, event.subtype='forward' events had activity_id=6 from the constant block but src_endpoint.ip=null because the rename never ran; with renames duplicated into the per-subtype block, all fields populated. Pattern: each per-subtype block = its own constants + the full rename list. Verbose but correct. +- v0 mappings DO run all matching blocks (marketplace parsers like Cloudflare and FortiGate rely on this: an unconditional first block handles common renames, then conditional blocks handle sub-types). If you need multiple pass-through effects, consider whether v0 is a better fit, but note v0 lacks `drop`/`drop_tree` AND v0's `constants:` is currently rejected on this tenant (see WARNING above), so v0 is only viable if you don't need either. -**`discardAttributes` MUST be placed per-format, not at parser root, for scratch fields created by format captures.** The parser-root `discardAttributes: [...]` block does NOT reliably drop fields that named-capture markers `$_xxx{...}$` produced inside a format string. Scratch fields like `_dw_pre`, `_dw_tail`, `_lc_pre`, `_lc_suf`, etc. leak through to the final event despite being listed at the root. The reliable form is to put `discardAttributes: ["_dw_pre", "_dw_tail", ...]` ON THE FORMAT OBJECT ITSELF, as a sibling key to `format:`. This matches the built-in `json` parser's shape: `formats: [ { format: "$json{parse=json}$", repeat: true, discardAttributes: ["message"] } ]`. Tenant-validated 2026-05-13. Parser-root `discardAttributes` can still be used for noise fields produced by `{parse=json}` / `{parse=dottedJson}` flat-expansion of vendor JSON keys (e.g. `flipkart_not_secure`, `upstream_addr`) — those are not format captures and do get dropped from the root. +**`discardAttributes` MUST be placed per-format, not at parser root, for scratch fields created by format captures.** The parser-root `discardAttributes: [...]` block does NOT reliably drop fields that named-capture markers `$_xxx{...}$` produced inside a format string. Scratch fields like `_dw_pre`, `_dw_tail`, `_lc_pre`, `_lc_suf`, etc. leak through to the final event despite being listed at the root. The reliable form is to put `discardAttributes: ["_dw_pre", "_dw_tail", ...]` ON THE FORMAT OBJECT ITSELF, as a sibling key to `format:`. This matches the built-in `json` parser's shape: `formats: [ { format: "$json{parse=json}$", repeat: true, discardAttributes: ["message"] } ]`. Tenant-validated 2026-05-13. Parser-root `discardAttributes` can still be used for noise fields produced by `{parse=json}` / `{parse=dottedJson}` flat-expansion of vendor JSON keys (e.g. `flipkart_not_secure`, `upstream_addr`); those are not format captures and do get dropped from the root. **`discardAttributes` also does NOT remove fields produced by `{parse=gron}` at the top level.** If `{parse=gron}` extracts `host`, `facility`, `sndr`, etc. directly to the event root, adding them to `discardAttributes` (root OR per-format) has zero effect. Use `mappings.drop` / `mappings.drop_tree` for those instead (see the next two gotchas). Tenant-validated May 2026. -**`attrBlacklist` on a bare `{parse=gron}` format cannot drop top-level fields.** The `attrBlacklist` directive only filters subfields when a NAMED PREFIX is in use — e.g. `$payload{parse=gron}{attrBlacklist=debug}$` drops `payload.debug`. Without a named prefix (`${parse=gron}{attrBlacklist=host,sndr}$`), the blacklist is ignored for top-level keys because there is no prefix namespace to filter within. This means `{parse=gron}` with `attrBlacklist` cannot be used to suppress noise fields at the root level. Tenant-validated May 2026. +**`attrBlacklist` on a bare `{parse=gron}` format cannot drop top-level fields.** The `attrBlacklist` directive only filters subfields when a NAMED PREFIX is in use, e.g. `$payload{parse=gron}{attrBlacklist=debug}$` drops `payload.debug`. Without a named prefix (`${parse=gron}{attrBlacklist=host,sndr}$`), the blacklist is ignored for top-level keys because there is no prefix namespace to filter within. This means `{parse=gron}` with `attrBlacklist` cannot be used to suppress noise fields at the root level. Tenant-validated May 2026. -**The correct mechanism for dropping top-level gron-produced fields is `mappings.drop` / `mappings.drop_tree`.** Add `{ drop: { field: "host" } }` (scalars) and `{ drop_tree: { field: "object" } }` (subtrees) in the `transformations` of every applicable mapping block. Because v1 is first-match-wins, these drop ops must be duplicated into each per-app block AND in the catch-all block — there is no shortcut. +**The correct mechanism for dropping top-level gron-produced fields is `mappings.drop` / `mappings.drop_tree`.** Add `{ drop: { field: "host" } }` (scalars) and `{ drop_tree: { field: "object" } }` (subtrees) in the `transformations` of every applicable mapping block. Because v1 is first-match-wins, these drop ops must be duplicated into each per-app block AND in the catch-all block; there is no shortcut. ### `computeFields` gotchas - **Use PowerQuery ternary `a ? b : c`**, not `if(a, b, c)`. The latter returns `Unknown function 'if'`. - **Use `==` for equality**, not `=`. - **Cannot reference dashed field names.** `protocol-id` is parsed as subtraction. Rename via `mappings` first, or do the translation entirely in the mappings block. -- **Place the rewrite on the format that captures the source field.** If a repeating key/value sub-format is what produces the field, the rewrite belongs on the sub-format — not on the frame format above it. +- **Place the rewrite on the format that captures the source field.** If a repeating key/value sub-format is what produces the field, the rewrite belongs on the sub-format, not on the frame format above it. - **The `replace` MAPPER op is a runtime no-op on this tenant; use a `computeFields` + PowerQuery `replace()` rewrite instead.** Two traps with `{ replace: {...} }` in a `mappings` block: (1) the regex key is `regexp`, NOT `pattern`: `pattern` returns `400: Missing required key 'regexp'` on `putFile`; (2) even with the correct `regexp` key the op silently does NOT transform the value at ingest (validated on both a dotted target `process.cmd_line` and a flat scratch field, 2026-06-01). The working substitute is a `computeFields` rewrite calling the PowerQuery `replace(field, regex, replacement)` string function. PowerQuery string literals are SINGLE-quoted, so a regex containing double-quotes needs no escaping inside the expression: `expression: "| let _cmdline = replace(_cmdline, 'a[0-9]+=\"([^\"]*)\"', '$1')"`. Capture into a FLAT scratch field (computeFields and `replace` address flat names cleanly; dotted paths are unreliable), then `rename` the scratch field to the dotted OCSF target in `mappings`. This is how the auditd parser turns an EXECVE arg vector `a0="cp" a1="/x" a2="/y"` into a readable `process.cmd_line` = `cp /x /y`. - **There is NO hex / base16 decode primitive anywhere in the DSL or in `computeFields`.** The `{parse=...}` directives offer `base64EncodedJson` / `urlEncodedJson` but no hex; the PowerQuery subset available to `computeFields` has no position-aware hex decoder either. auditd `proctitle` (and individual hex-encoded `EXECVE` args) are NUL-separated hex and cannot be turned into ASCII in-parser. Source the readable command line from the EXECVE arg vector instead (auditd stores those as plain ASCII), and leave the hex `proctitle` as-is. Do not burn iterations trying `replace`/regex to hex-decode. ### Interaction between `halt: true` and repeat formats -- **`halt: true` stops ALL further format matching on that line** — including repeating key/value catch-alls. If you have a two-format pattern (frame + repeating extractor), do NOT put `halt: true` on the frame format; the extractor will never fire. +- **`halt: true` stops ALL further format matching on that line**: including repeating key/value catch-alls. If you have a two-format pattern (frame + repeating extractor), do NOT put `halt: true` on the frame format; the extractor will never fire. ## Validation (mandatory) -Always validate against the live tenant — the only authoritative test is "did the field actually appear in a query after the parser ran." Syntactic plausibility of the JSON is not validation. +Always validate against the live tenant, the only authoritative test is "did the field actually appear in a query after the parser ran." Syntactic plausibility of the JSON is not validation. ### Default: update the real parser in place, validate on the live stream -When the source is already ingesting (the normal case), **edit the real parser and validate on real traffic.** Do NOT create a `claude_test_*` parser and do NOT synthetically ingest — saved parser edits are non-destructive (they apply only to newly ingested events and never re-parse history), so editing the live parser is safe, and the feed the source is already sending is the authoritative test. +When the source is already ingesting (the normal case), **edit the real parser and validate on real traffic.** Do NOT create a `claude_test_*` parser and do NOT synthetically ingest, saved parser edits are non-destructive (they apply only to newly ingested events and never re-parse history), so editing the live parser is safe, and the feed the source is already sending is the authoritative test. ```python # Use the s1-secops-mcp tools (sdl_get_file / sdl_put_file / powerquery_run). @@ -436,18 +436,18 @@ sdl_put_file("/logParsers/", content=parser_body, expectedVersion=cur["ver # then: dataSource.name='' metadata.version='' | columns | limit 10 ``` -A successful validation means: (a) `sdl_put_file` returned `success`, (b) the live query returns rows tagged with the new `metadata.version`, (c) the expected fields are populated and not null. If a subtype is rare and no event has arrived yet, widen the window or wait for one — do NOT fall back to synthetic ingest just to force a row. +A successful validation means: (a) `sdl_put_file` returned `success`, (b) the live query returns rows tagged with the new `metadata.version`, (c) the expected fields are populated and not null. If a subtype is rare and no event has arrived yet, widen the window or wait for one; do NOT fall back to synthetic ingest just to force a row. -If a field is missing, do NOT just retry — diagnose. Common causes: wrong escape level on a regex, a delimiter that didn't match (the format silently fails to apply), `halt: true` on an earlier format catching the line first, or `discardAttributes` dropping the field by mistake. +If a field is missing, do NOT just retry, diagnose. Common causes: wrong escape level on a regex, a delimiter that didn't match (the format silently fails to apply), `halt: true` on an earlier format catching the line first, or `discardAttributes` dropping the field by mistake. ### Version control & rollback (local project folder ONLY) -Keep every parser you touch under git in the **local project folder** — the user's Cowork project folder — and nowhere else. Do NOT commit parser definitions into the skill repo, an `ai-siem` checkout, the scratch/outputs dir, or any other location. The local project folder is the single source of truth for rollback. +Keep every parser you touch under git in the **local project folder**, the user's Cowork project folder, and nowhere else. Do NOT commit parser definitions into the skill repo, an `ai-siem` checkout, the scratch/outputs dir, or any other location. The local project folder is the single source of truth for rollback. On every deploy: 1. Mirror the parser to `/parsers/.json` in the local project folder. -2. On the FIRST touch of an existing live parser, commit the current live definition (from `sdl_get_file`) as the baseline BEFORE your edit — this is the rollback point. +2. On the FIRST touch of an existing live parser, commit the current live definition (from `sdl_get_file`) as the baseline BEFORE your edit; this is the rollback point. 3. After deploying, `git add` + `git commit` the new version there (commit message = the new `metadata.version` + what changed). Rollback is then a local operation: `git checkout -- parsers/.json`, then `sdl_put_file("/logParsers/", content=..., expectedVersion=)` to push the previous content back. Bump `metadata.version` on the rollback too so you can confirm from the live stream which definition is active. @@ -467,35 +467,35 @@ time.sleep(8) # ingest-to-search latency ## Bundled references -When a question goes deeper than this file, read the relevant reference. Each is a focused deep-dive — load only what you need. +When a question goes deeper than this file, read the relevant reference. Each is a focused deep-dive, load only what you need. -- `references/ai-siem-catalog.md` — **Check this first** before writing a new parser. Map of the public S1 parser repo (~150 parsers across community + marketplace), per-shape template recommendations, style-variance cheat sheet, and the fetch recipe. -- `references/ocsf-mapping.md` — **Then start here** for any new parser. OCSF class quick-pick (4001/4002/3002/1001/etc.), field-to-dotted-path mapping tables for Network Activity, Authentication, and File Activity, and the two authoring idioms: capture directly into dotted names vs capture vendor-native then rename via a `mappings` block. Also covers boolean/enum normalization (`YES`/`NO`/`UNKNOWN` → `tls.is_encrypted`). Points at `ocsf-schema-documentation.md` for authoritative field names. -- `references/ocsf-schema-documentation.md` — **Authoritative OCSF field catalog** — the full SentinelOne community-documented schema: 7 categories × 96 articles × ~25,759 field entries across every OCSF event class (System Activity, Findings, IAM, Network Activity, Discovery, Application Activity, Unified Alert Management). Grep this file for any OCSF field name you're about to emit — don't invent names. Always check this before choosing a dotted path, especially for classes beyond Network/Auth/File. -- `references/syntax.md` — Full augmented-JSON parser syntax: formats, patterns, attributes, lineGroupers, rewrites (including `computeFields` and `timeDelta`), special fields (timestamp/severity/message), discard, halt, repeat, association, intermittentTimestamps, skipNumericConversion. Read when authoring anything beyond a simple line format. -- `references/parse-directives.md` — Every `{parse=...}` sub-parser (json/dottedJson/escaped/urlEncoded/base64Encoded variants, strict variants for arrays, uri/uriMultivalue/uriAttributes, commaKeyValues, commaSeparated/pipeSeparated, sqlToSignature, syslogPriority, dateTime{Seconds,Ms,Ns}, hoursMinutesSeconds, seconds/milliseconds, bytes/kb/mb/gb, plus per-directive `attrWhitelist`/`attrBlacklist` rules). Read whenever the body of a field is itself structured. -- `references/builtin-parsers.md` — Catalog of all 16 built-in parsers (`accessLog`, `cloudfront`, `json`, `dottedJson`, `dottedEscapedJson`, `elb-access`, `heroku-logplex`, `keyValue`, `leveldbLog`, `mysqlGeneralQueryLog`, `mysqlSlowQueryLog`, `postgresLog`, `redshift`, `s3_bucket_access`, `spot_instance_data`, `systemLog`) and when to alias vs override. Read first when sizing up a new log source — you may not need to write a parser at all. -- `references/mappers.md` — `mappings` block (gron-style transformations: `cast`, `copy`, `copy_tree`, `drop`, `drop_tree`, `hash`, `reduce_array`, `rename`, `rename_tree`, `replace`, `zip`), array index syntax, predicate semantics. Read when restructuring events to OCSF or another target schema. -- `references/testing-workflow.md` — Detailed validation recipe with the `sentinelone-sdl-api` skill, including how to scope queries with a unique host tag, how to interpret common error responses, and how to clean up. +- `references/ai-siem-catalog.md`: **Check this first** before writing a new parser. Map of the public S1 parser repo (~150 parsers across community + marketplace), per-shape template recommendations, style-variance cheat sheet, and the fetch recipe. +- `references/ocsf-mapping.md`: **Then start here** for any new parser. OCSF class quick-pick (4001/4002/3002/1001/etc.), field-to-dotted-path mapping tables for Network Activity, Authentication, and File Activity, and the two authoring idioms: capture directly into dotted names vs capture vendor-native then rename via a `mappings` block. Also covers boolean/enum normalization (`YES`/`NO`/`UNKNOWN` → `tls.is_encrypted`). Points at `ocsf-schema-documentation.md` for authoritative field names. +- `references/ocsf-schema-documentation.md`: **Authoritative OCSF field catalog**, the full SentinelOne community-documented schema: 7 categories × 96 articles × ~25,759 field entries across every OCSF event class (System Activity, Findings, IAM, Network Activity, Discovery, Application Activity, Unified Alert Management). Grep this file for any OCSF field name you're about to emit; don't invent names. Always check this before choosing a dotted path, especially for classes beyond Network/Auth/File. +- `references/syntax.md`: Full augmented-JSON parser syntax: formats, patterns, attributes, lineGroupers, rewrites (including `computeFields` and `timeDelta`), special fields (timestamp/severity/message), discard, halt, repeat, association, intermittentTimestamps, skipNumericConversion. Read when authoring anything beyond a simple line format. +- `references/parse-directives.md`: Every `{parse=...}` sub-parser (json/dottedJson/escaped/urlEncoded/base64Encoded variants, strict variants for arrays, uri/uriMultivalue/uriAttributes, commaKeyValues, commaSeparated/pipeSeparated, sqlToSignature, syslogPriority, dateTime{Seconds,Ms,Ns}, hoursMinutesSeconds, seconds/milliseconds, bytes/kb/mb/gb, plus per-directive `attrWhitelist`/`attrBlacklist` rules). Read whenever the body of a field is itself structured. +- `references/builtin-parsers.md`: Catalog of all 16 built-in parsers (`accessLog`, `cloudfront`, `json`, `dottedJson`, `dottedEscapedJson`, `elb-access`, `heroku-logplex`, `keyValue`, `leveldbLog`, `mysqlGeneralQueryLog`, `mysqlSlowQueryLog`, `postgresLog`, `redshift`, `s3_bucket_access`, `spot_instance_data`, `systemLog`) and when to alias vs override. Read first when sizing up a new log source; you may not need to write a parser at all. +- `references/mappers.md`: `mappings` block (gron-style transformations: `cast`, `copy`, `copy_tree`, `drop`, `drop_tree`, `hash`, `reduce_array`, `rename`, `rename_tree`, `replace`, `zip`), array index syntax, predicate semantics. Read when restructuring events to OCSF or another target schema. +- `references/testing-workflow.md`: Detailed validation recipe with the `sentinelone-sdl-api` skill, including how to scope queries with a unique host tag, how to interpret common error responses, and how to clean up. ## Bundled examples Annotated, runnable parser definitions. Copy and adapt rather than starting from scratch. -- `examples/01-cef-over-syslog.json` — Syslog-framed CEF (`timestamp host CEF:0|...|...|key=value`). Demonstrates: `syslogPriority` parse, named timestamp pattern, positional pipe-delimited CEF header, key/value catch-all on the extension. -- `examples/02-json-with-envelope.json` — ` {"...json..."}`. Demonstrates: timestamp + host extraction, `{parse=dottedJson}` on the body, `discardAttributes: ["message"]`. -- `examples/03-key-value.json` — Pure `key=value` lines. Demonstrates: the `$_=identifier$=$_=quoteOrSpace$` repeating idiom and a leading static prefix. -- `examples/04-multiline-stack.json` — Java/Python stack traces. Demonstrates: `lineGroupers` with `continueThrough`, attribute tagging. -- `examples/05-rewrite-and-mask.json` — Single line format plus `rewrites` to mask `password=...` values and compute a derived field via `computeFields`. -- `examples/06-alias.json` — One-line alias parser (`{ aliasTo: "json" }`) for the case where a built-in already does the job. -- `examples/07-juniper-srx-rtflow-ocsf.json` — Juniper SRX RT_FLOW_SESSION_CREATE (structured-data syslog, RFC 5424-ish). Demonstrates: the **vendor-native capture + `mappings.rename` to OCSF** idiom end-to-end (source-address → `src_endpoint.ip`, nat-source-address → `connection_info.src_translated.ip`, etc.), repeating key/value catch-all on the structured-data body, `computeFields` for protocol-id → `connection_info.protocol_name` and encrypted YES/NO → `tls.is_encrypted`, Network Activity 4001 class tagging. -- `examples/08-gron-capture-template.json` — The PARSER_TEMPLATE shape lifted from `ai-siem`: capture the entire event with `$unmapped.{parse=gron}$`, then do every rename/copy/cast/constant in a single v1 `mappings` block. Ideal scaffold for JSON-shaped sources when you want all OCSF work in one place. -- `examples/12-linux-auditd-ocsf.json` — Linux auditd over syslog (` ts audispd: type= msg=audit(:): k=v ...`). Demonstrates: a `type=`-anchored record-type + audit-event-id capture (with the leading space that avoids the `nametype=` collision), the KV catch-all, v1 first-match-wins `mappings` fanning the record type out to OCSF classes (SYSCALL/EXECVE/PROCTITLE → Process 1007, PATH/CWD → File 1001, USER_*/CRED_* → Authentication 3002, ANOM_*/AVC/SECCOMP → Detection Finding 2004, SOCKADDR → Network 4001), per-op `predicate` status/severity derivation, and cleaning the EXECVE arg vector into a readable `process.cmd_line` via a `computeFields` PowerQuery `replace()` (the `replace` mapper op is a no-op and there is no hex decode for `proctitle`). -- `examples/README.md` — When to pick which template. +- `examples/01-cef-over-syslog.json`: Syslog-framed CEF (`timestamp host CEF:0|...|...|key=value`). Demonstrates: `syslogPriority` parse, named timestamp pattern, positional pipe-delimited CEF header, key/value catch-all on the extension. +- `examples/02-json-with-envelope.json`: ` {"...json..."}`. Demonstrates: timestamp + host extraction, `{parse=dottedJson}` on the body, `discardAttributes: ["message"]`. +- `examples/03-key-value.json`: Pure `key=value` lines. Demonstrates: the `$_=identifier$=$_=quoteOrSpace$` repeating idiom and a leading static prefix. +- `examples/04-multiline-stack.json`: Java/Python stack traces. Demonstrates: `lineGroupers` with `continueThrough`, attribute tagging. +- `examples/05-rewrite-and-mask.json`: Single line format plus `rewrites` to mask `password=...` values and compute a derived field via `computeFields`. +- `examples/06-alias.json`: One-line alias parser (`{ aliasTo: "json" }`) for the case where a built-in already does the job. +- `examples/07-juniper-srx-rtflow-ocsf.json`: Juniper SRX RT_FLOW_SESSION_CREATE (structured-data syslog, RFC 5424-ish). Demonstrates: the **vendor-native capture + `mappings.rename` to OCSF** idiom end-to-end (source-address → `src_endpoint.ip`, nat-source-address → `connection_info.src_translated.ip`, etc.), repeating key/value catch-all on the structured-data body, `computeFields` for protocol-id → `connection_info.protocol_name` and encrypted YES/NO → `tls.is_encrypted`, Network Activity 4001 class tagging. +- `examples/08-gron-capture-template.json`: The PARSER_TEMPLATE shape lifted from `ai-siem`: capture the entire event with `$unmapped.{parse=gron}$`, then do every rename/copy/cast/constant in a single v1 `mappings` block. Ideal scaffold for JSON-shaped sources when you want all OCSF work in one place. +- `examples/12-linux-auditd-ocsf.json`: Linux auditd over syslog (` ts audispd: type= msg=audit(:): k=v ...`). Demonstrates: a `type=`-anchored record-type + audit-event-id capture (with the leading space that avoids the `nametype=` collision), the KV catch-all, v1 first-match-wins `mappings` fanning the record type out to OCSF classes (SYSCALL/EXECVE/PROCTITLE → Process 1007, PATH/CWD → File 1001, USER_*/CRED_* → Authentication 3002, ANOM_*/AVC/SECCOMP → Detection Finding 2004, SOCKADDR → Network 4001), per-op `predicate` status/severity derivation, and cleaning the EXECVE arg vector into a readable `process.cmd_line` via a `computeFields` PowerQuery `replace()` (the `replace` mapper op is a no-op and there is no hex decode for `proctitle`). +- `examples/README.md`: When to pick which template. ## Summary of the contract you're holding -When a user pastes a log and asks you to parse it, you owe them: (1) a parser file written against the SDL augmented-JSON DSL, (2) proof it actually extracts the right fields when ingested through the live SDL pipeline (not just the editor preview), (3) a clean handoff (final path, fields, sample query). The bundled references and examples exist so you don't have to hold the entire DSL in your head — load them as needed and reach for the templates first. +When a user pastes a log and asks you to parse it, you owe them: (1) a parser file written against the SDL augmented-JSON DSL, (2) proof it actually extracts the right fields when ingested through the live SDL pipeline (not just the editor preview), (3) a clean handoff (final path, fields, sample query). The bundled references and examples exist so you don't have to hold the entire DSL in your head, load them as needed and reach for the templates first. ## Parser deployment via s1-secops-mcp @@ -514,7 +514,7 @@ Use this pattern when a single parser handles events from many distinct services 1. **Extract a discriminator field** (e.g. `app_name` from a raw JSON `app_id` key) using a two-segment capture format. 2. **Create one format-id sentinel per service**: `{ id: "my_app", format: "$_scratch{regex=.*\"app_id\":\"my-app-id\"}$" }`. This sets `my_app='true'` on matching events. 3. **List all sentinel field names in `discardAttributes`** so they don't appear in the output event. -4. **Add one v1 mappings block per sentinel** with the OCSF constants and any drop ops. Because v1 is first-match-wins, drops cannot be factored into a shared block — duplicate them in every block including the catch-all. +4. **Add one v1 mappings block per sentinel** with the OCSF constants and any drop ops. Because v1 is first-match-wins, drops cannot be factored into a shared block, duplicate them in every block including the catch-all. 5. **End with a `predicate: "true"` catch-all** that applies drops but assigns no class. Place it last or it will consume every event. ### How to add a new service diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/01-cef-over-syslog.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/01-cef-over-syslog.json index c411620..f846d02 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/01-cef-over-syslog.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/01-cef-over-syslog.json @@ -36,7 +36,7 @@ syslogTs: "[A-Z][a-z]{2}\\s+\\d{1,2}\\s+\\d{2}:\\d{2}:\\d{2}", // CEF pipe-delimited field body: anything that isn't a pipe. Required because the // CEF `name` field is free-form text WITH SPACES ("Connection Allowed"), and the - // default capture (`quotable`) stops at whitespace — so the format silently fails + // default capture (`quotable`) stops at whitespace, so the format silently fails // to match. `notPipe` lets the capture span spaces up to the next `|`. notPipe: "[^|]*" }, @@ -50,7 +50,7 @@ // digit field and capture the classic-syslog stamp as `ts_raw` (we're ingesting // close to real-time so the pipeline's own receive-time is fine). // - // DO NOT set `halt: true` here — the extension k/v extractor below must still + // DO NOT set `halt: true` here: the extension k/v extractor below must still // run on the same line to populate `src`, `dst`, etc. With halt, format 1 // still matches and emits the header fields, but the event ends up with a // null `src`/`dst`. diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/02-json-with-envelope.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/02-json-with-envelope.json index fcf213d..1cff1ba 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/02-json-with-envelope.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/02-json-with-envelope.json @@ -9,7 +9,7 @@ // `unmapped.user`, `unmapped.action`, `unmapped.meta.ip`, `unmapped.meta.country`. // // Three things the tenant's parser insists on for this shape: -// (1) The JSON capture MUST have an explicit `=json` pattern — without a pattern +// (1) The JSON capture MUST have an explicit `=json` pattern; without a pattern // the default `quotable` stops at the first whitespace and the whole format // fails to match. // (2) `{parse=dottedJson}` only flattens JSON subfields when the capture NAME @@ -17,7 +17,7 @@ // (`$payload{parse=dottedJson}$`) captures the raw JSON string but emits no // dotted subfields. // (3) Downstream mappings can `rename` the `unmapped.*` fields to OCSF or -// vendor-native names — this is the canonical ai-siem community pattern. +// vendor-native names: this is the canonical ai-siem community pattern. { attributes: { diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/04-multiline-stack.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/04-multiline-stack.json index a90230f..ba47b31 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/04-multiline-stack.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/04-multiline-stack.json @@ -38,8 +38,8 @@ // NOTE: // - `timestamp` is reserved; capturing a non-epoch string there silently // drops the event. Use `ts_raw`. - // - `severity` is ALSO reserved — the ingest pipeline coerces any value - // to an integer 0–6 against its own `info`/`warn`/`error` vocabulary. + // - `severity` is ALSO reserved: the ingest pipeline coerces any value + // to an integer 0-6 against its own `info`/`warn`/`error` vocabulary. // Capture the word ERROR/WARN/INFO as `severity_name` (or any // non-colliding field) so the raw string survives. { diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/05-rewrite-and-mask.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/05-rewrite-and-mask.json index 4d1a012..1c2c78c 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/05-rewrite-and-mask.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/05-rewrite-and-mask.json @@ -38,7 +38,7 @@ rewrites: [ // Redact the secret inside `message` so the raw log stops leaking it. // NOTE: This tenant REQUIRES an explicit `output:` field on regex-based - // rewrites — without it, put_file returns + // rewrites; without it, put_file returns // `Syntax error: No output field specified`. Set output = input to // modify the field in place. { input: "message", match: "password=[^ ]+", replacement: "password=[REDACTED]", replaceAll: true, output: "message" }, @@ -47,14 +47,14 @@ // rather than a regex-match rewrite: per the docs, "a rule whose regex // matches the entire value is silently ignored" (this wording appears // about `message`, but on this tenant the same behavior applies to any - // captured field — `.*`, `.+`, and `^.+$` all leave the value empty or + // captured field: `.*`, `.+`, and `^.+$` all leave the value empty or // unchanged). The PowerQuery `| let` form sidesteps the issue and also // doesn't require an `output:` field, since computeFields writes to the // LHS of the assignment. { action: "computeFields", expression: "| let password = '[REDACTED]'" }, // Derive severity_band from the numeric sev. Uses the PowerQuery subset allowed - // inside computeFields — TERNARY (a ? b : c), NOT if(a, b, c). `if(...)` returns + // inside computeFields: TERNARY (a ? b : c), NOT if(a, b, c). `if(...)` returns // `Unknown function 'if'` on the live tenant. Equality is `==`, not `=`. { action: "computeFields", expression: "| let severity_band = sev >= 5 ? 'high' : (sev >= 3 ? 'medium' : 'low')" } diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/06-alias.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/06-alias.json index 5828201..aa78bc1 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/06-alias.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/06-alias.json @@ -5,7 +5,7 @@ // // Caveats: // - aliasTo cannot chain (target must be a real parser, not another alias). -// - aliasTo is MUTUALLY EXCLUSIVE with everything else — including the required +// - aliasTo is MUTUALLY EXCLUSIVE with everything else, including the required // default attributes (metadata.version, dataSource.category, dataSource.name, // dataSource.vendor). If you need those attributes to land on every event, you // cannot use aliasTo. Instead, copy the built-in's body into a full parser and diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/07-juniper-srx-rtflow-ocsf.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/07-juniper-srx-rtflow-ocsf.json index 8b351ab..94190a8 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/07-juniper-srx-rtflow-ocsf.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/07-juniper-srx-rtflow-ocsf.json @@ -12,7 +12,7 @@ { attributes: { - // Required pipeline defaults — present on every parser. + // Required pipeline defaults: present on every parser. "metadata.version": "1.0.0", "dataSource.category": "security", "dataSource.name": "Juniper SRX", @@ -47,7 +47,7 @@ id: "rtflow-extension", format: ".*$_=identifier$=\"$_=quotableNoEscape$\"", repeat: true, - // computeFields must run AFTER the k=v pairs have been extracted — so it lives on + // computeFields must run AFTER the k=v pairs have been extracted, so it lives on // this (repeating) format rather than the frame format. rewrites: [ { action: "computeFields", @@ -56,7 +56,7 @@ } ], - // Mappings block — rename vendor-native dashed names to OCSF dotted names. + // Mappings block: rename vendor-native dashed names to OCSF dotted names. // Tenant expects: version:1, and transformations shaped as { "": { ... } }. mappings: { version: 1, diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/08-gron-capture-template.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/08-gron-capture-template.json index c29cd99..3c11b8e 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/08-gron-capture-template.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/08-gron-capture-template.json @@ -12,14 +12,14 @@ // - The source emits JSON-per-line or dotted-key lines. // - You want all field-mapping logic in one place (easier to // review, diff, and bump `metadata.version`). - // - You expect to add more target fields over time — extending + // - You expect to add more target fields over time: extending // the `mappings` array is cheaper than adding new formats. // // When NOT to use this: // - Source is CSV/pipe/positional (use `commaSeparatedvalues`). // - Source has a vendor envelope + embedded body you want to // unwrap (use `{parse=dottedJson}` on the body field instead). - // - Multiple distinct event shapes in one stream — prefer + // - Multiple distinct event shapes in one stream: prefer // format-id-as-sentinel (see examples/07 or the AWS RDS parser). // ----------------------------------------------------------- "attributes": { @@ -109,8 +109,8 @@ // --- Severity ---------------------------------------------- // NOTE: do NOT set `severity` to OCSF string labels ("Informational", - // "Medium", etc.) — `severity` is a RESERVED SDL field that the - // ingest pipeline coerces to an integer 0–6 against its own + // "Medium", etc.), `severity` is a RESERVED SDL field that the + // ingest pipeline coerces to an integer 0-6 against its own // vocabulary (`info`/`warn`/`error`/...). OCSF labels collide. // Emit `severity_id` (integer) only, or use a non-colliding field // name like `severity_name` if you really need the OCSF string. diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/09-aws-cloudtrail-assumerole-ocsf.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/09-aws-cloudtrail-assumerole-ocsf.json index 7b05c81..43f104d 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/09-aws-cloudtrail-assumerole-ocsf.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/09-aws-cloudtrail-assumerole-ocsf.json @@ -7,7 +7,7 @@ // log-forwarder that unrolls `Records[]` into NDJSON). // // Why Authentication 3002 (not API Activity 6003)? - // sts:AssumeRole mints temporary credentials — a session grant. + // sts:AssumeRole mints temporary credentials, a session grant. // OCSF's Authentication class is the idiomatic fit; it carries // `session.credential_uid`, `session.expiration_time`, and // `session.issuer` which line up exactly with CloudTrail's @@ -26,7 +26,7 @@ // as one JSON value, see the format comment below). // 2. Rename/copy into OCSF dotted names inside a single v1 // mappings block. Dotted source keys (e.g. `user.email`) stay - // FLAT under `unmapped.*` — reference them literally, do NOT + // FLAT under `unmapped.*`: reference them literally, do NOT // escape the dots (tenant-validated April 2026). // 3. Emit reserved-field-safe severity via `severity_id` only // (OCSF string labels collide with SDL's reserved `severity`). @@ -43,7 +43,7 @@ "metadata.product.name": "CloudTrail", "metadata.log_provider": "CloudTrail", - // OCSF class — Authentication (3002) under Identity & Access Management (3) + // OCSF class: Authentication (3002) under Identity & Access Management (3) "class_uid": 3002, "class_name": "Authentication", "category_uid": 3, @@ -74,7 +74,7 @@ // (Directive switch pending demo-tenant validation.) // // NOTE: Do NOT add a `rewrites` that pulls `unmapped.eventTime` - // into the reserved `timestamp` field — combined with the + // into the reserved `timestamp` field: combined with the // `copy → cast` pair on `time` below, the event gets silently // dropped on this tenant. Mapping `time` in the mappings block // is sufficient for hunts; the event-time field the ingest @@ -122,14 +122,14 @@ // ---- Network / source endpoint --------------------------- { "rename": { "from": "unmapped.sourceIPAddress", "to": "src_endpoint.ip" } }, - // ---- HTTP request (user-agent only — CloudTrail doesn't + // ---- HTTP request (user-agent only: CloudTrail doesn't // carry method/URL; for TLS details see tlsDetails.*) { "rename": { "from": "unmapped.userAgent", "to": "http_request.user_agent" } }, // ---- API operation -------------------------------------- // The CloudTrail event itself is an API call. OCSF `api.*` // is the universal place to stash operation metadata that - // doesn't fit anywhere else — keep it even for Auth 3002 + // doesn't fit anywhere else: keep it even for Auth 3002 // so hunts can filter by eventName. { "rename": { "from": "unmapped.eventName", "to": "api.operation" } }, { "rename": { "from": "unmapped.eventSource", "to": "api.service.name" } }, @@ -176,7 +176,7 @@ // ---- Constants for Authentication 3002 ------------------- // OCSF activity_id for sts:AssumeRole is "Authentication Ticket" (3) - // — the event mints a temporary credential, it is not a user logon. + // The event mints a temporary credential; it is not a user logon. { "constant": { "value": 3, "field": "activity_id", "predicate": "api.operation == 'AssumeRole'" } }, { "constant": { "value": "Authentication Ticket", "field": "activity_name", @@ -196,7 +196,7 @@ { "constant": { "value": 1, "field": "status_id", "predicate": "true" } }, { "constant": { "value": "Success", "field": "status", "predicate": "true" } }, - // Severity — emit integer `severity_id` (reserved-field-safe) + // Severity: emit integer `severity_id` (reserved-field-safe) // and OCSF string label as `severity_name`. Never set `severity` // directly: SDL's reserved pipeline rewrites it to an int 0-6 // against its own vocabulary. diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/10-linux-pam-session-ocsf.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/10-linux-pam-session-ocsf.json index f9ff476..c2e669d 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/10-linux-pam-session-ocsf.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/10-linux-pam-session-ocsf.json @@ -15,7 +15,7 @@ // PRI decoding (e.g. `<86>`): // facility = floor(86/8) = 10 (security/authorization) // severity = 86 % 8 = 6 (informational) - // We capture `pri` as a plain digit field — `{parse=syslogPriority}` + // We capture `pri` as a plain digit field: `{parse=syslogPriority}` // has caused silent event drops on this tenant. // // Classic-syslog timestamps carry no timezone, so `timezone: "UTC"` @@ -36,7 +36,7 @@ "metadata.product.name": "PAM (pam_unix)", "metadata.log_provider": "pam_unix", - // OCSF class — Authentication (3002) under Identity & Access Management (3). + // OCSF class: Authentication (3002) under Identity & Access Management (3). "class_uid": 3002, "class_name": "Authentication", "category_uid": 3, @@ -51,7 +51,7 @@ "formats": [ { // Capture the RFC 3164 frame AND the pam_unix(...) body in one - // format. `$pri=digits$` keeps PRI as a plain integer — we + // format. `$pri=digits$` keeps PRI as a plain integer; we // decode facility/severity in the mappings block below. // `actor.process.name` / `actor.process.pid` are OCSF-dotted; // SDL captures them as flat field names without any escaping. @@ -74,7 +74,7 @@ // for forensic use. // // IMPORTANT: do NOT capture the stamp into the reserved - // `timestamp` field as a string — it makes the ingest + // `timestamp` field as a string: it makes the ingest // pipeline drop the event silently. We use `ts_raw` above // precisely to avoid that. { "copy": { "from": "ts_raw", "to": "unmapped.ts_raw" } }, @@ -83,7 +83,7 @@ // ---- PRI → facility / severity (syslog semantics) -------- // NOTE: v1 mapper engine has no arithmetic. We keep `pri` // as-is (cast to int for cheap filtering) and emit the - // OCSF severity constants below based on the pam_action — + // OCSF severity constants below based on the pam_action: // PAM session open/close are always informational. If you // need dynamic severity from PRI, compute it in PowerQuery // with `floor(pri/8)` and `pri mod 8`. @@ -108,7 +108,7 @@ // ---- Status -------------------------------------------- // pam_unix only emits "session opened/closed" on success. // Authentication failures surface via a different line - // ("authentication failure; ...") — handle those in a + // ("authentication failure; ..."); handle those in a // separate format + mapping entry branched on a format-id // sentinel. { "constant": { "value": 1, "field": "status_id", "predicate": "true" } }, @@ -116,7 +116,7 @@ // ---- Severity ------------------------------------------ // Emit `severity_id` (int) and `severity_name` (string). - // NEVER set `severity` directly — it is reserved and the + // NEVER set `severity` directly: it is reserved and the // ingest pipeline coerces to 0-6 against its own vocabulary. { "constant": { "value": 1, "field": "severity_id", "predicate": "true" } }, { "constant": { "value": "Informational", "field": "severity_name", "predicate": "true" } }, @@ -136,7 +136,7 @@ ] }, - // Keep the original message during iteration — uncomment for + // Keep the original message during iteration: uncomment for // production to save storage. "discardAttributes": [] } diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/11-akamai-siem-cef-ocsf.json b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/11-akamai-siem-cef-ocsf.json index 639aec7..fa15a3c 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/examples/11-akamai-siem-cef-ocsf.json +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/examples/11-akamai-siem-cef-ocsf.json @@ -1,5 +1,5 @@ { - // Akamai SIEM — CEF log parser + // Akamai SIEM: CEF log parser // OCSF class: HTTP Activity (4002) // // Reference example for the **inline-predicate-on-`constant`-op** pattern that @@ -9,7 +9,7 @@ // Why this example exists: // // 1. CEF over syslog without the syslog frame (Akamai SIEM ships the bare - // CEF body via their SIEM connector — no `timestamp host` prefix). + // CEF body via their SIEM connector: no `timestamp host` prefix). // 2. Live demonstration of the inline-predicate technique: // • 4 conditional `severity_id` ops (CEF 0-10 → OCSF enum bucketing) // • 9 conditional `action`/`action_id`/`firewall_rule.name` ops @@ -17,12 +17,12 @@ // • 4 conditional `status`/`status_id` ops // All 21 conditional ops fire from a single `predicate: "true"` mapping // entry. Splitting them into multiple entries breaks first-match-wins. - // 3. OCSF `severity_id` bucketing — NEVER pass through raw vendor severity. + // 3. OCSF `severity_id` bucketing: NEVER pass through raw vendor severity. // Akamai's CEF 0-10 maps to OCSF enum {1, 3, 4, 5}; raw value preserved // under `akamai.severity`. // 4. Dual-emit for back-compat: events keep both `http_request.url.text` // (native naming used by other parsers on the tenant) AND - // `http_request.url.url_string` (OCSF canonical) — same for `cef_sig_id` + // `http_request.url.url_string` (OCSF canonical): same for `cef_sig_id` // → `unmapped.cef_sig_id` + `akamai.sig_id`. Useful when an existing // parser version's field names are baked into dashboards/STAR rules. // 5. Vendor-specific gotcha: Akamai SIEM puts the HTTP version on CEF @@ -49,7 +49,7 @@ "activity_id": 3, "activity_name": "Traffic", "type_uid": 400203 - // severity_id is NOT set here — derived per-event in mappings below. + // severity_id is NOT set here: derived per-event in mappings below. }, patterns: { @@ -139,7 +139,7 @@ // ===================================================================== // INLINE-PREDICATE-ON-CONSTANT-OP PATTERN // - // The 21 ops below are conditional — each `constant` carries its own + // The 21 ops below are conditional: each `constant` carries its own // `predicate:` field. Do NOT split these into multiple top-level mapping // entries; v1 mappings are first-match-wins and only the first matching // entry fires. By keeping them inside this `predicate: "true"` entry diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/ai-siem-catalog.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/ai-siem-catalog.md index 2972b2f..c1e657b 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/ai-siem-catalog.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/ai-siem-catalog.md @@ -1,4 +1,4 @@ -# ai-siem Parser Catalog — Always Check First +# ai-siem Parser Catalog: Always Check First Before writing a parser from scratch, check the **`Sentinel-One/ai-siem`** GitHub repo. It is the canonical open catalog of community + marketplace SDL parsers maintained by S1 and partners, and a large fraction of the sources a prospect will ask about already have a working parser there. @@ -12,7 +12,7 @@ Before writing a parser from scratch, check the **`Sentinel-One/ai-siem`** GitHu 1. Search ai-siem for the vendor or product name (e.g. "juniper", "okta", "fortigate", "palo alto", "corelight", "abnormal"). 2. If a parser exists, download it. It becomes your starting point. -3. Diff what the user asked for against what the catalog parser emits. Audit the **4 mandatory attributes** (`dataSource.category` hardcoded to `"security"`, `dataSource.name`, `dataSource.vendor`, `metadata.version`) and add or correct any that are missing or wrong. Shift to OCSF field names if the parser uses vendor-native — every emitted dotted path must come from `references/ocsf-schema-documentation.md`, not from the catalog parser. **Always increment `metadata.version`** to mark this build as different from upstream (patch for fixes, minor for additive changes, major for breaking schema changes). +3. Diff what the user asked for against what the catalog parser emits. Audit the **4 mandatory attributes** (`dataSource.category` hardcoded to `"security"`, `dataSource.name`, `dataSource.vendor`, `metadata.version`) and add or correct any that are missing or wrong. Shift to OCSF field names if the parser uses vendor-native, every emitted dotted path must come from `references/ocsf-schema-documentation.md`, not from the catalog parser. **Always increment `metadata.version`** to mark this build as different from upstream (patch for fixes, minor for additive changes, major for breaking schema changes). 4. Validate end-to-end via `sentinelone-sdl-api` (the usual loop). Only write from scratch when no catalog parser matches. @@ -21,38 +21,38 @@ Only write from scratch when no catalog parser matches. Two buckets: -- `parsers/marketplace/-latest/` — supported, version-tagged parsers shipped in the S1 Marketplace (cloudflare, fortinet fortigate, aws rds, corelight-conn, palo alto networks firewall, and ~60 others). -- `parsers/community/-/` — community-contributed, less polished, more varied in style (abnormal_security_logs, juniper_networks_logs, okta_ocsf_logs, cisco_asa, pfsense_firewall, etc.). +- `parsers/marketplace/-latest/`: supported, version-tagged parsers shipped in the S1 Marketplace (cloudflare, fortinet fortigate, aws rds, corelight-conn, palo alto networks firewall, and ~60 others). +- `parsers/community/-/`: community-contributed, less polished, more varied in style (abnormal_security_logs, juniper_networks_logs, okta_ocsf_logs, cisco_asa, pfsense_firewall, etc.). Each folder typically contains: - The `.conf` parser file. -- A `samples/` directory with raw log lines (use these as your validation input — real vendor samples are hard to synthesize correctly). +- A `samples/` directory with raw log lines (use these as your validation input, real vendor samples are hard to synthesize correctly). - Sometimes a `README.md` with field mapping or known-issues. ## Useful reference parsers by shape When you need a template for a specific log shape, start from one of these: -- **JSON-per-line, dottedJson envelope** — `community/json_generic/`. Two-line parser, pure `${parse=dottedJson}$ repeat:true`. -- **JSON with nested KV body** — `community/json_nested_kv/`. Outer JSON then repeating KV sub-format against a nested `message` field. -- **CEF over syslog** — `community/generic_access/` header + KV extension cascade. -- **LEEF** — `community/leef_template/`. Timestamp prefix + repeating KV patterns. -- **Positional CSV with complex mapping** — `marketplace/palo_alto_networks_firewall-latest/`. Uses `{parse=commaSeparatedvalues}` + `skipNumericConversion: true` + `attr[N]` positional indexing in mappings. -- **Multi-format progressive extraction** — `community/pfsense_firewall/`. Frame → subtype → protocol-specific cascade; uses `discard: true` to drop IPv6 and a final-format rewrite for computed fields. -- **Multiple per-format OCSF class tagging** — `community/abnormal_security_logs/` and `community/juniper_networks_logs/`. Each format has its own `attributes: { class_uid, ... }` so one parser emits multiple OCSF classes. -- **Gron-capture + mappings template** — `community/PARSER_TEMPLATE/`. The "capture everything via `$unmapped.{parse=gron}$`, then rename/copy/cast in mappings" idiom. Great scaffold when the source is JSON-ish and you want all rewrites in one block. -- **Format-id sentinel for mapping fan-out** — `marketplace/awsrdslogs-latest/`. Names each format (`id: "mySqlErrorLog"`, `id: "mySqlGeneralLog"`, `id: "postgresqlLog"`) and then fans mapping predicates out via `predicate: "mySqlErrorLog='true'"` — elegant way to apply different OCSF class rules to different sub-shapes of the same source. -- **Plural-grouped mapping syntax** — `marketplace/corelight-conn-latest/` and `marketplace/awsrdslogs-latest/`. `renames: [...], copies: [...], constants: [...]` arrays inside a single mapping entry (see `mappers.md` §"Two equivalent syntaxes"). -- **Rewrite-first legacy style (pre-mappings)** — `community/okta_ocsf_logs/`. Pure `rewrites:` on the format (no `mappings` block). Still works — useful when you need a minimal diff from a published parser. +- **JSON-per-line, dottedJson envelope**: `community/json_generic/`. Two-line parser, pure `${parse=dottedJson}$ repeat:true`. +- **JSON with nested KV body**: `community/json_nested_kv/`. Outer JSON then repeating KV sub-format against a nested `message` field. +- **CEF over syslog**: `community/generic_access/` header + KV extension cascade. +- **LEEF**: `community/leef_template/`. Timestamp prefix + repeating KV patterns. +- **Positional CSV with complex mapping**: `marketplace/palo_alto_networks_firewall-latest/`. Uses `{parse=commaSeparatedvalues}` + `skipNumericConversion: true` + `attr[N]` positional indexing in mappings. +- **Multi-format progressive extraction**: `community/pfsense_firewall/`. Frame → subtype → protocol-specific cascade; uses `discard: true` to drop IPv6 and a final-format rewrite for computed fields. +- **Multiple per-format OCSF class tagging**: `community/abnormal_security_logs/` and `community/juniper_networks_logs/`. Each format has its own `attributes: { class_uid, ... }` so one parser emits multiple OCSF classes. +- **Gron-capture + mappings template**: `community/PARSER_TEMPLATE/`. The "capture everything via `$unmapped.{parse=gron}$`, then rename/copy/cast in mappings" idiom. Great scaffold when the source is JSON-ish and you want all rewrites in one block. +- **Format-id sentinel for mapping fan-out**: `marketplace/awsrdslogs-latest/`. Names each format (`id: "mySqlErrorLog"`, `id: "mySqlGeneralLog"`, `id: "postgresqlLog"`) and then fans mapping predicates out via `predicate: "mySqlErrorLog='true'"`, elegant way to apply different OCSF class rules to different sub-shapes of the same source. +- **Plural-grouped mapping syntax**: `marketplace/corelight-conn-latest/` and `marketplace/awsrdslogs-latest/`. `renames: [...], copies: [...], constants: [...]` arrays inside a single mapping entry (see `mappers.md` §"Two equivalent syntaxes"). +- **Rewrite-first legacy style (pre-mappings)**: `community/okta_ocsf_logs/`. Pure `rewrites:` on the format (no `mappings` block). Still works, useful when you need a minimal diff from a published parser. ## Style variance to expect (and tolerate) The repo predates the current mapper engine, and not every author hand-converges on the same style. When copying from the catalog: -- **Two mapping syntaxes coexist.** Older parsers use `version: 0` with plural grouped arrays (`renames`, `copies`, `constants`). Newer tenant-validated parsers use `version: 1` with `transformations: [{: {...}}]`. Both work. Pick one and stick to it within a parser — do not mix. +- **Two mapping syntaxes coexist.** Older parsers use `version: 0` with plural grouped arrays (`renames`, `copies`, `constants`). Newer tenant-validated parsers use `version: 1` with `transformations: [{: {...}}]`. Both work. Pick one and stick to it within a parser; do not mix. - **`class_uid` as string vs integer.** Both appear. String form (`"4001"`) is tolerated by the ingest pipeline, integer (`4001`) is the OCSF spec. Prefer integers in new work. -- **Predicate equality `=` vs `==`.** Marketplace parsers use `=`. Tenant `computeFields` and the newer `version:1` mappings style use `==`. If one fails validation, try the other — the engine error message will tell you. (See `mappers.md` for the split.) +- **Predicate equality `=` vs `==`.** Marketplace parsers use `=`. Tenant `computeFields` and the newer `version:1` mappings style use `==`. If one fails validation, try the other, the engine error message will tell you. (See `mappers.md` for the split.) - **Required default attributes often missing.** The catalog predates the current four-attribute requirement (`metadata.version`, `dataSource.category/name/vendor`). Add them to the top-level `attributes:` block on every parser you ship, even when copying verbatim from the catalog. ## Quick recipe for downloading a parser @@ -83,10 +83,10 @@ Common issues in catalog parsers that you should fix before shipping. Empirical 3. **Stray `class_uid` as a string** (`"4001"`). Change to integer (`4001`). Both forms ingest, but downstream consumers and OCSF spec want integer. 4. **Using deprecated `rewrites:` on the format for what should be `mappings`.** Modern parsers do field renames/casts/copies in `mappings`. Prefer `mappings` for anything that runs after field capture. Leave `rewrites:` for timestamp normalization (the one thing it still does well). 5. **Hard-coded tenant-specific attributes** like `"site.id": "..."` (seen in pfSense and a few community parsers). Strip these before shipping to a different tenant. -6. **Predicates that match a vendor-native field after that field has already been renamed to OCSF.** Order matters inside `transformations: [...]` — predicates evaluate against the field NAME at the time the predicate runs, so a predicate referencing `source_ip` after a `rename` to `src_endpoint.ip` always evaluates to false. +6. **Predicates that match a vendor-native field after that field has already been renamed to OCSF.** Order matters inside `transformations: [...]`, predicates evaluate against the field NAME at the time the predicate runs, so a predicate referencing `source_ip` after a `rename` to `src_endpoint.ip` always evaluates to false. 7. **Mixed `mappings.version: 0` and `mappings.version: 1` syntaxes inside one parser.** Hard error. Pick one. New parsers prefer v1. 8. **Indexed positional access (`attr[0]`, `attr[1]`) used inside a `mappings.version: 0` block.** Rejected. Indexed access only works in v1. If the source is positional CSV, the mapping block must be v1. -9. **No `enum_default` on `cast: { type: "enum" }` in v1 mappings.** Without it, unmapped source values pass through unchanged instead of falling back to a sentinel. Cloudflare uses `enum_default: 99` consistently — copy that pattern. +9. **No `enum_default` on `cast: { type: "enum" }` in v1 mappings.** Without it, unmapped source values pass through unchanged instead of falling back to a sentinel. Cloudflare uses `enum_default: 99` consistently, copy that pattern. ## How the corpus splits diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/builtin-parsers.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/builtin-parsers.md index c9d8398..eaa5402 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/builtin-parsers.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/builtin-parsers.md @@ -1,11 +1,11 @@ # Built-in SDL Parsers -Before writing a parser by hand, check this catalog. If one of these matches the input, just reference it by name at HEC ingest (`parser: ` header) — no authoring required. If you need the same behaviour plus a couple of extra tags, write a trivial alias parser: +Before writing a parser by hand, check this catalog. If one of these matches the input, just reference it by name at HEC ingest (`parser: ` header); no authoring required. If you need the same behaviour plus a couple of extra tags, write a trivial alias parser: ```js { aliasTo: "json", - // (aliasTo is mutually exclusive with everything else — to add tags, + // (aliasTo is mutually exclusive with everything else: to add tags, // instead author a minimal parser that duplicates the built-in and // adds top-level `attributes: { ... }`. See section 18.) } @@ -34,20 +34,20 @@ Before writing a parser by hand, check this catalog. If one of these matches the ## Notes per parser -- **`accessLog`** — five ordered halting formats covering combined, common, and invalid-request shapes. Breaks the request line apart with `{parse=uri}`. Tags `dataset="accesslog"`. -- **`cloudfront`** — single format with 23 positional fields and a dedicated tab-tolerant timestamp pattern. -- **`json` / `dottedJson`** — the flattening differs: `json` becomes `fooBar`, `dottedJson` becomes `foo.bar`. Choose based on your team's query preference. Both uncomment `discardAttributes: ["message"]` to save storage. -- **`dottedEscapedJson`** — same as `dottedJson` but strips one layer of `\\` escapes first. Useful when JSON was double-encoded upstream. -- **`elb-access`** — two formats; the first tolerates a leading protocol token seen in some deployments. -- **`heroku-logplex`** — parses syslog envelope plus web/app/router variants. `dataset="herokulog"`. -- **`keyValue`** — optional bracketed timestamp, then a repeating catch-all. `dataset="keyValue"`. -- **`leveldbLog`** — general line split plus specialized fragments for compaction/generation metrics. -- **`mysqlGeneralQueryLog` / `mysqlSlowQueryLog`** — both set `intermittentTimestamps: true`; slow-query adds `lineGroupers` to reassemble multi-line records. -- **`postgresLog`** — two line groupers + many ordered halting formats for statement / statement_log / duration / connection / disconnection / statistics. UTC-targeted; other TZ needs Support involvement. -- **`redshift`** — line grouper + two formats (connectionLog, activityLog). -- **`s3_bucket_access`** — integration-guide style article; realized as a Marketplace app. -- **`spot_instance_data`** — single format; UTC timestamps. -- **`systemLog`** — accepts both classic syslog (`Feb 3 03:47:01`) and ISO-8601 with offset. Two halting formats (with/without PID). +- **`accessLog`**: five ordered halting formats covering combined, common, and invalid-request shapes. Breaks the request line apart with `{parse=uri}`. Tags `dataset="accesslog"`. +- **`cloudfront`**: single format with 23 positional fields and a dedicated tab-tolerant timestamp pattern. +- **`json` / `dottedJson`**: the flattening differs: `json` becomes `fooBar`, `dottedJson` becomes `foo.bar`. Choose based on your team's query preference. Both uncomment `discardAttributes: ["message"]` to save storage. +- **`dottedEscapedJson`**: same as `dottedJson` but strips one layer of `\\` escapes first. Useful when JSON was double-encoded upstream. +- **`elb-access`**: two formats; the first tolerates a leading protocol token seen in some deployments. +- **`heroku-logplex`**: parses syslog envelope plus web/app/router variants. `dataset="herokulog"`. +- **`keyValue`**: optional bracketed timestamp, then a repeating catch-all. `dataset="keyValue"`. +- **`leveldbLog`**: general line split plus specialized fragments for compaction/generation metrics. +- **`mysqlGeneralQueryLog` / `mysqlSlowQueryLog`**: both set `intermittentTimestamps: true`; slow-query adds `lineGroupers` to reassemble multi-line records. +- **`postgresLog`**: two line groupers + many ordered halting formats for statement / statement_log / duration / connection / disconnection / statistics. UTC-targeted; other TZ needs Support involvement. +- **`redshift`**: line grouper + two formats (connectionLog, activityLog). +- **`s3_bucket_access`**: integration-guide style article; realized as a Marketplace app. +- **`spot_instance_data`**: single format; UTC timestamps. +- **`systemLog`**: accepts both classic syslog (`Feb 3 03:47:01`) and ISO-8601 with offset. Two halting formats (with/without PID). ## Decision hints diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/mappers.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/mappers.md index fed1b2c..5234f8f 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/mappers.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/mappers.md @@ -2,10 +2,10 @@ Mappers run *after* the parser emits an event and restructure it in place. They're the mechanism for conforming events to OCSF, ECS, or any other target schema without authoring a custom ingest pipeline. -> **Two equivalent syntaxes are in the wild.** Both work on current tenants. Pick one and stick to it within a parser — do not mix. +> **Two equivalent syntaxes are in the wild.** Both work on current tenants. Pick one and stick to it within a parser; do not mix. > -> - **`version: 1` / singular-op** — tenant-validated April 2026, used by the `PARSER_TEMPLATE` and by parsers authored against the latest mapper engine. Each transformation is `{: {...body}}`. Predicates use `==`. This is what you should prefer for new parsers — see §"Block shape (v1, preferred)". -> - **`version: 0` / plural-grouped** — used by most S1 Marketplace parsers (AWS RDS, Corelight, Cloudflare, Fortinet). Operations are plural arrays at the top level of each mapping entry: `renames: [...], copies: [...], constants: [...]`. Predicates use `=`. See §"Block shape (v0, marketplace)". +> - **`version: 1` / singular-op**, tenant-validated April 2026, used by the `PARSER_TEMPLATE` and by parsers authored against the latest mapper engine. Each transformation is `{: {...body}}`. Predicates use `==`. This is what you should prefer for new parsers, see §"Block shape (v1, preferred)". +> - **`version: 0` / plural-grouped**: used by most S1 Marketplace parsers (AWS RDS, Corelight, Cloudflare, Fortinet). Operations are plural arrays at the top level of each mapping entry: `renames: [...], copies: [...], constants: [...]`. Predicates use `=`. See §"Block shape (v0, marketplace)". > > If one syntax fails validation, the engine error message will tell you (`unsupported event mapper version -1` means `version:` is missing; predicate parse errors usually flag the equality operator). When adapting a catalog parser, check the version at the top of the `mappings` block and keep the matching syntax. @@ -20,7 +20,7 @@ mappings: { predicate: "metadata.event_code == 'RT_FLOW_SESSION_CREATE'", // first match wins; see "Notes that bite people" below transformations: [ // Each transformation is { : { ...body... } }. - // op_name is the OUTER key — NOT an `op:` field. + // op_name is the OUTER key: NOT an `op:` field. { rename: { from: "source-address", to: "src_endpoint.ip" } }, { cast: { field: "src_endpoint.port", type: "int" } }, { drop: { field: "debug" } }, @@ -37,10 +37,10 @@ Notes that bite people: - **First-match-wins.** Mapping entries are tried in declaration order; only the first entry whose `predicate` matches an event runs its `transformations`. A `predicate: "true"` catch-all therefore MUST go last in the list, otherwise it shadows every entry below it and they silently never fire (renames don't apply, per-class constants stay overridden by the catch-all). When you want a default-then-overrides pattern, structure the entries as: most specific predicates first, generic catch-all last. If two predicates are equally specific and both should fire on the same event, fold their transformations into a single entry. Validated against tenant April 2026. - `version: 1` at the top of the block is mandatory. -- Each transformation's op is the **outer key**. Public docs sometimes show `{op: "rename", from: ..., to: ...}` — that is wrong. Use `{rename: {...}}`. +- Each transformation's op is the **outer key**. Public docs sometimes show `{op: "rename", from: ..., to: ...}`; that is wrong. Use `{rename: {...}}`. - `from` on `rename` is a **single string**, not a list. If you need "first of N matches", use `copy` first (which does accept a list) then `rename`/`drop`. - `cast` takes `type: "..."`, not `to: "..."`. So `{cast: {field: "x", type: "int"}}`. -- `cast` does NOT honor an `output:` key — it overwrites the source field. To cast into a different field, `copy` first, then `cast` the copy. +- `cast` does NOT honor an `output:` key: it overwrites the source field. To cast into a different field, `copy` first, then `cast` the copy. - Predicate uses `==` (double-equals), not `=`. - `rename` silently no-ops when the source field is absent, which is the idiom that lets a single catch-all entry hold renames for several different vendor-native key sets (e.g. `verb` → `http_request.http_method` for app A, `method` → `http_request.http_method` for app B). Each rename only fires on events that actually carry that source key. @@ -50,7 +50,7 @@ Most S1 Marketplace parsers (AWS RDS, Corelight, Cloudflare, Fortinet FortiGate) ```js mappings: { - version: 0, // NOT 1 — must match the body shape below. + version: 0, // NOT 1, must match the body shape below. mappings: [ { predicate: "true", // unconditional @@ -75,9 +75,9 @@ mappings: { Differences from v1: - Top-level ops are **plural arrays**: `copies`, `renames`, `constants` (not `transformations`). -- Each op entry has `inputs: [list]` (even for `rename` — always a list in v0) + `output: "..."` + `type: "..."`. +- Each op entry has `inputs: [list]` (even for `rename`: always a list in v0) + `output: "..."` + `type: "..."`. - Predicate inside a constant uses `=` (single equals). Engine-level predicates (the outer `predicate:` on the mapping entry) also accept `=` in v0. -- `type:` on copies/renames is a soft coerce — `"string"` is the universal safe choice when in doubt. +- `type:` on copies/renames is a soft coerce: `"string"` is the universal safe choice when in doubt. - No `transformations` wrapper. The ops are direct keys on the mapping entry. **When to use v0:** when you are copying a marketplace parser and want a minimal diff. **When to use v1:** for all new parsers, because `transformations` keeps ordering explicit and makes fan-out patterns (`cast` after `copy`, multiple `constant` with different predicates) easier to read. @@ -115,15 +115,15 @@ SKU: Ops Center only; not available on FedRAMP or self-hosted at time of writing ## Gron-style field references -- `a.b`, `a.b.c` — nested object fields. -- `a.b[1]` — array element by index. -- `a.b[-1]` — **append** to array. -- `a.b[x]` — **labeled index**; appends once, then later operations referencing `[x]` target the same slot. -- `a.b[*]` — **wildcard**; apply the operation to every element. +- `a.b`, `a.b.c`: nested object fields. +- `a.b[1]`: array element by index. +- `a.b[-1]`: **append** to array. +- `a.b[x]`: **labeled index**; appends once, then later operations referencing `[x]` target the same slot. +- `a.b[*]`: **wildcard**; apply the operation to every element. ## Operations (tenant-validated shapes) -### `rename` — rename a field +### `rename`: rename a field ```js { rename: { from: "source-address", to: "src_endpoint.ip" } } @@ -133,7 +133,7 @@ SKU: Ops Center only; not available on FedRAMP or self-hosted at time of writing - `to` is the target path. - If `from` doesn't exist on the event, the transformation silently no-ops. -### `copy` — copy a field (supports first-of-N) +### `copy`: copy a field (supports first-of-N) ```js { copy: { from: ["client.ip", "source.ip"], to: "actor.session.terminal.ip", @@ -141,11 +141,11 @@ SKU: Ops Center only; not available on FedRAMP or self-hosted at time of writing ``` - `from` is a **list**; first existing key wins. -- `default` optional — used when no source hits. +- `default` optional: used when no source hits. - **An empty string `""` counts as "exists" and wins the first-of-N race.** `copy {from: ["userId", "servicePrincipalId"]}` where `userId` is present but `""` copies the empty string, NOT `servicePrincipalId`. This silently breaks identity-coalesce / fallback patterns (e.g. service-principal sign-ins where `userPrincipalName`/`userId` are empty but `servicePrincipalName`/`servicePrincipalId` hold the real identity). Fix by dropping empty strings upstream (best done in the collector/Lua serializer, which should omit `""` values), or `drop` the empty source field before the `copy`. Tenant-validated 2026-06-22 (Microsoft Entra ID service-principal sign-ins). - **Use `copy` (leaves source) vs `rename` (removes source) deliberately.** Copying a source into an OCSF field leaves the original under `unmapped.*` as a duplicate. When you don't need the original retained, prefer `rename` so the field doesn't linger in `unmapped` (e.g. `rename unmapped.createdDateTime -> metadata.original_time` rather than `copy`, to avoid a duplicate `unmapped.createdDateTime`). -### `cast` — convert a field's type or enum +### `cast`: convert a field's type or enum ```js // Primitive @@ -184,13 +184,13 @@ Semantic `type`: `iso8601TimestampToEpochSec`, `iso8601DateToEpochSec`, `epochSe enum: { "6": "TCP", "17": "UDP", "1": "ICMP" } } } ``` -### `constant` — set a field to a constant value (optionally conditional) +### `constant`: set a field to a constant value (optionally conditional) ```js // v1 (singular): { constant: { value: 4001, field: "class_uid" } } -// Conditional — only fires when the predicate matches. +// Conditional: only fires when the predicate matches. { constant: { value: "Fail", field: "activity_name", predicate: "conn_state == 'S0'" } } { constant: { value: 400104, field: "type_uid", @@ -201,13 +201,13 @@ In v0 `constants: [...]` these look like `{ value: ..., field: ..., predicate: " Think of `constant` as "add a field that the source didn't have, possibly because the raw event contained a code we want to translate." Unlike `cast {type: "enum"}`, `constant` can assign multiple target fields (one per transformation) from the same source condition, which is the common OCSF need. -### `drop` — remove a scalar field +### `drop`: remove a scalar field ```js { drop: { field: "debug" } } ``` -### `drop_tree` — remove an object/array subtree +### `drop_tree`: remove an object/array subtree ```js { drop_tree: { field: "raw_internals" } } @@ -215,7 +215,7 @@ Think of `constant` as "add a field that the source didn't have, possibly becaus **`drop` and `drop_tree` work on gron-flattened dotted AND `[N]`-indexed keys.** `drop_tree {field: "unmapped._ob"}` removes `unmapped._ob.source`; `drop_tree {field: "unmapped.timestamp"}` removes the whole `unmapped.timestamp.*` set; `drop {field: "unmapped._azure_event_type"}` removes the scalar. This is the right way to strip pipeline envelope noise (`_ob`, an `os.date` `timestamp` table, `_azure_event_type`, `host`, `port`, `source_type`) that a collector adds. Because v1 mappings are first-match-wins, duplicate these drops into EVERY per-shape mapping block (or strip the envelope upstream in the collector/Lua so the parser never sees it; do both for defense-in-depth). Tenant-validated 2026-06-22. -### `copy_tree` — copy a subtree +### `copy_tree`: copy a subtree ```js { copy_tree: { from: "headers", to: "http_request.headers" } } @@ -223,7 +223,7 @@ Think of `constant` as "add a field that the source didn't have, possibly becaus Object-to-object is additive; type mismatches replace. Empty-string `from: ""` copies the event root. -### `rename_tree` — rename a subtree +### `rename_tree`: rename a subtree Same shape as `rename`, but operates on an object subtree. Additive when types match, replacing otherwise. @@ -233,9 +233,9 @@ Same shape as `rename`, but operates on an object subtree. Additive when types m { rename_tree: { from: "unmapped.targetResources[0].modifiedProperties", to: "entity.data" } } ``` -moves every `unmapped.targetResources[0].modifiedProperties[i].{displayName,oldValue,newValue}` to `entity.data[i].{displayName,oldValue,newValue}`. Do NOT escape the brackets, and don't be misled by dot-index — the source keys are bracket-indexed (`[i]`). First-match-wins still applies, so place it in the block that matches the event shape. Tenant-validated 2026-06-22. +moves every `unmapped.targetResources[0].modifiedProperties[i].{displayName,oldValue,newValue}` to `entity.data[i].{displayName,oldValue,newValue}`. Do NOT escape the brackets, and don't be misled by dot-index, the source keys are bracket-indexed (`[i]`). First-match-wins still applies, so place it in the block that matches the event shape. Tenant-validated 2026-06-22. -### `hash` — hash a string field +### `hash`: hash a string field ```js { hash: { field: "actor.session.terminal.ip", to: "actor.session.terminal.ip_sha256", @@ -244,7 +244,7 @@ moves every `unmapped.targetResources[0].modifiedProperties[i].{displayName,oldV Algorithms: `sha1`, `sha256`. Output is lowercase hex with no `0x` prefix. -### `reduce_array` — collapse an array +### `reduce_array`: collapse an array ```js // Params array → dict @@ -263,9 +263,9 @@ Algorithms: `sha1`, `sha256`. Output is lowercase hex with no `0x` prefix. { reduce_array: { field: "flags", kind: "boolean_or", to: "any_flag_set" } } ``` -> **Tenant `reduce_array` v1 schema differs from the shapes above.** On the current Ops Center tenant (2026-06-22), `putFile` rejected `{ reduce_array: { field, kind, ... } }`: first with `400: Missing required key 'from'` (it wants **`from`**, not `field`), then with `400: Missing required key 'type'` (it wants **`type`**, not `kind`). So the deploy-validated shape is `{ reduce_array: { from: "...", type: "params"|"string_concat"|"find"|"boolean_or", key/separator/regexp: ..., to: "..." } }`. Also note `reduce_array` needs a real array input; if your source array was flattened to `[N]`-indexed scalars by gron/dottedJson (not a JSON value), `reduce_array` has nothing to fold — capture with a `strict*` variant if you need the array intact, or use `rename_tree` to relocate the `[N]` subtree instead. +> **Tenant `reduce_array` v1 schema differs from the shapes above.** On the current Ops Center tenant (2026-06-22), `putFile` rejected `{ reduce_array: { field, kind, ... } }`: first with `400: Missing required key 'from'` (it wants **`from`**, not `field`), then with `400: Missing required key 'type'` (it wants **`type`**, not `kind`). So the deploy-validated shape is `{ reduce_array: { from: "...", type: "params"|"string_concat"|"find"|"boolean_or", key/separator/regexp: ..., to: "..." } }`. Also note `reduce_array` needs a real array input; if your source array was flattened to `[N]`-indexed scalars by gron/dottedJson (not a JSON value), `reduce_array` has nothing to fold, capture with a `strict*` variant if you need the array intact, or use `rename_tree` to relocate the `[N]` subtree instead. -### `replace` — regex replace on a field value +### `replace`: regex replace on a field value ```js { replace: { field: "path", regexp: "/\\d+/", replacement: "//" } } @@ -274,10 +274,10 @@ Algorithms: `sha1`, `sha256`. Output is lowercase hex with no `0x` prefix. Supports `$1`…`$n` backreferences. Unchanged if no match. > **Two confirmed traps (tenant-validated 2026-06-01).** -> 1. The regex key is **`regexp`**, NOT `pattern`. A `pattern` key returns `400: Missing required key 'regexp'` on `putFile`. (`reduce_array { kind: "find", regexp: ... }` uses the same `regexp` key — be consistent.) -> 2. Even with the correct `regexp` key, the `replace` mapper op was observed to be a **runtime no-op** on this tenant — it passes schema validation and deploys, but the field value is unchanged at ingest (tested on both a dotted target like `process.cmd_line` and a flat scratch field). If your `replace` "succeeds" but the data is untransformed, this is why. The working substitute is a **`computeFields` rewrite** on the format that captures the field, calling the PowerQuery `replace(field, regex, replacement)` string function (PowerQuery string literals are single-quoted, so a double-quote inside the regex needs no escaping): `expression: "| let _cmdline = replace(_cmdline, 'a[0-9]+=\"([^\"]*)\"', '$1')"`. Capture into a flat scratch field, clean it with computeFields, then `rename` it to the dotted OCSF target. See `examples/12-linux-auditd-ocsf.json` (EXECVE arg vector → `process.cmd_line`). +> 1. The regex key is **`regexp`**, NOT `pattern`. A `pattern` key returns `400: Missing required key 'regexp'` on `putFile`. (`reduce_array { kind: "find", regexp: ... }` uses the same `regexp` key, be consistent.) +> 2. Even with the correct `regexp` key, the `replace` mapper op was observed to be a **runtime no-op** on this tenant; it passes schema validation and deploys, but the field value is unchanged at ingest (tested on both a dotted target like `process.cmd_line` and a flat scratch field). If your `replace` "succeeds" but the data is untransformed, this is why. The working substitute is a **`computeFields` rewrite** on the format that captures the field, calling the PowerQuery `replace(field, regex, replacement)` string function (PowerQuery string literals are single-quoted, so a double-quote inside the regex needs no escaping): `expression: "| let _cmdline = replace(_cmdline, 'a[0-9]+=\"([^\"]*)\"', '$1')"`. Capture into a flat scratch field, clean it with computeFields, then `rename` it to the dotted OCSF target. See `examples/12-linux-auditd-ocsf.json` (EXECVE arg vector → `process.cmd_line`). -### `zip` — interleave arrays +### `zip`: interleave arrays ```js { zip: { from: ["keys", "values"], to: "pairs" } } @@ -380,7 +380,7 @@ OCSF events optionally carry an `observables: [...]` array of `{name, type_id, t { constant: { value: "IP Address", field: "observables[dstip].type" } } ``` -Each `[srcip]` / `[dstip]` is a labeled index — referenced multiple times within the same mapping entry, the engine appends once and then targets that same array slot. Produces a clean array of dicts rather than separately-named scalars. Reference: `parsers/sentinelone/marketplace-fortinetfortigate-latest/` and `parsers/sentinelone/marketplace-cloudflare-latest/`. +Each `[srcip]` / `[dstip]` is a labeled index, referenced multiple times within the same mapping entry, the engine appends once and then targets that same array slot. Produces a clean array of dicts rather than separately-named scalars. Reference: `parsers/sentinelone/marketplace-fortinetfortigate-latest/` and `parsers/sentinelone/marketplace-cloudflare-latest/`. ### Tree operations on gron-flattened JSON @@ -390,11 +390,11 @@ Source `{"Resource": {"Id": "abc", "Type": "user"}}` after `${parse=gron}$` beco { rename_tree: { from: "unmapped.Resource", to: "resource" } } ``` -The engine walks every key with that dotted prefix and renames all of them. **Do NOT escape the dots inside the subtree path** (`from: "unmapped\\.Resource"` does not match — even though the published `PARSER_TEMPLATE.conf` shows escaped dots; that template is stale on current tenants). The dots in flat-gron keys are literal parts of the key string, not navigation operators. Reference: `parsers/sentinelone/marketplace-cloudflare-latest/`. +The engine walks every key with that dotted prefix and renames all of them. **Do NOT escape the dots inside the subtree path** (`from: "unmapped\\.Resource"` does not match, even though the published `PARSER_TEMPLATE.conf` shows escaped dots; that template is stale on current tenants). The dots in flat-gron keys are literal parts of the key string, not navigation operators. Reference: `parsers/sentinelone/marketplace-cloudflare-latest/`. ### Enum cast with default sentinel (v1) -`cast: { type: "enum", enum: {...} }` does not have a fallback by default — unmapped source values pass through unchanged. To map every unknown to a sentinel (so downstream queries can group "known" vs "unknown"), set `enum_default`: +`cast: { type: "enum", enum: {...} }` does not have a fallback by default, unmapped source values pass through unchanged. To map every unknown to a sentinel (so downstream queries can group "known" vs "unknown"), set `enum_default`: ```js { cast: { field: "action_id", type: "enum", @@ -402,7 +402,7 @@ The engine walks every key with that dotted prefix and renames all of them. **Do enum_default: 99 } } ``` -Cloudflare uses `enum_default: 99` (the OCSF "Unknown" sentinel) consistently — copy that pattern. Reference: `parsers/sentinelone/marketplace-cloudflare-latest/`. +Cloudflare uses `enum_default: 99` (the OCSF "Unknown" sentinel) consistently, copy that pattern. Reference: `parsers/sentinelone/marketplace-cloudflare-latest/`. ### Conditional class assignment via per-format `attributes:` diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-mapping.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-mapping.md index 52b5262..7e36f49 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-mapping.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-mapping.md @@ -6,36 +6,36 @@ The Open Cybersecurity Schema Framework (OCSF) is the schema this skill emits ** > ## NON-NEGOTIABLE: ALL OCSF mapping uses `ocsf-schema-documentation.md` > -> Before emitting any OCSF dotted path in a parser, **grep `references/ocsf-schema-documentation.md` for the exact string**. That file is the single source of truth for the ~25,759 documented OCSF field names. Do not invent. Do not copy from a catalog parser without verifying. Do not rely on memory or on the tables in this document — they are summaries for common cases, not the catalog. +> Before emitting any OCSF dotted path in a parser, **grep `references/ocsf-schema-documentation.md` for the exact string**. That file is the single source of truth for the ~25,759 documented OCSF field names. Do not invent. Do not copy from a catalog parser without verifying. Do not rely on memory or on the tables in this document; they are summaries for common cases, not the catalog. > > The two reasons people drift from this rule: > 1. "I'm sure it's `source.ip`." It is not. It is `src_endpoint.ip`. Many vendors use `source.ip` natively. OCSF does not. Always grep. > 2. "The catalog parser uses `attacker_ip`, so I'll keep it." Catalog parsers are full of vendor-native names. Replace them with the OCSF dotted path from the schema reference, then map via `mappings.rename`. -## Authoritative field list — `ocsf-schema-documentation.md` +## Authoritative field list: `ocsf-schema-documentation.md` Before inventing any OCSF field name, look it up in `references/ocsf-schema-documentation.md`. That file is the complete SentinelOne community-documented OCSF schema (7 categories × 96 articles × ~25,759 field entries) and is the canonical source of truth for field names and casing: -- `## System Activity` — File System (1001), Kernel Extension (1002), Kernel (1003), Memory (1004), Module (1005), Scheduled Job (1006), Process Activity (1007) -- `## Findings` — Security Finding (2001), Vulnerabilities, Misconfigurations -- `## Identity & Access Management` — Account Change (3001), Authentication (3002), Authorize Session (3003), Entity Management (3004), User Access Management (3005), Group Management (3006) -- `## Network Activity` — Network (4001), HTTP (4002), DNS (4003), DHCP (4004), RDP (4005), SMB (4006), SSH (4007), FTP (4008), Email (4009), Network File (4010), Email File (4011), Email URL (4012) -- `## Discovery` — Device Inventory Info (5001), Device Config State (5002) -- `## Application Activity` — Web Resources (6001), Application Lifecycle (6002), API (6003), Web Resource Access (6004) +- `## System Activity`: File System (1001), Kernel Extension (1002), Kernel (1003), Memory (1004), Module (1005), Scheduled Job (1006), Process Activity (1007) +- `## Findings`: Security Finding (2001), Vulnerabilities, Misconfigurations +- `## Identity & Access Management`: Account Change (3001), Authentication (3002), Authorize Session (3003), Entity Management (3004), User Access Management (3005), Group Management (3006) +- `## Network Activity`: Network (4001), HTTP (4002), DNS (4003), DHCP (4004), RDP (4005), SMB (4006), SSH (4007), FTP (4008), Email (4009), Network File (4010), Email File (4011), Email URL (4012) +- `## Discovery`: Device Inventory Info (5001), Device Config State (5002) +- `## Application Activity`: Web Resources (6001), Application Lifecycle (6002), API (6003), Web Resource Access (6004) - `## Unified Alert Management` **How to use it:** 1. Identify the class from the quick-pick table below (or from the section headers in `ocsf-schema-documentation.md`). -2. Grep the relevant section of that file for the OCSF concept you want (e.g., `src_endpoint`, `actor.user.email`, `file.hashes`). Each article lists every dotted field at that level — copy the name verbatim. +2. Grep the relevant section of that file for the OCSF concept you want (e.g., `src_endpoint`, `actor.user.email`, `file.hashes`). Each article lists every dotted field at that level, copy the name verbatim. 3. Use the tables lower in THIS file only as a shortcut for the most common classes. For anything beyond Network/Auth/File, consult `ocsf-schema-documentation.md` first. -Field names in OCSF are lowercase dotted-path, e.g. `actor.user.email_addr`, `src_endpoint.ip`, `file.hashes[].value`. Arrays use `[]`. Enums pair as `_id` (integer) + `` (string) — emit both. +Field names in OCSF are lowercase dotted-path, e.g. `actor.user.email_addr`, `src_endpoint.ip`, `file.hashes[].value`. Arrays use `[]`. Enums pair as `_id` (integer) + `` (string), emit both. ## Mechanics in an SDL parser -You have two choices for emitting OCSF names — pick based on parser complexity: +You have two choices for emitting OCSF names, pick based on parser complexity: -### Option A — Capture directly into OCSF dotted names +### Option A: Capture directly into OCSF dotted names For simple line formats, name the captures with the OCSF dotted path: ```js @@ -46,7 +46,7 @@ formats: [ SDL allows `.` and `_` in field names. Dotted names show up as nested objects in queries. Use this for clean, single-line formats. -### Option B — Capture vendor-native, then `mappings` block to rename +### Option B: Capture vendor-native, then `mappings` block to rename For multi-format or complex parsers, capture vendor-native names first (matches the source log's terminology, easier to reason about during authoring), then use a `mappings` block (see `mappers.md`) to rename to OCSF in one place. This is the cleanest pattern for repeated patterns and CEF/LEEF/structured-syslog where dozens of fields need renaming. Often a hybrid is best: capture the framing (timestamp, host, log-type) directly with OCSF names, and use `mappings.rename` for the long tail of vendor-specific fields inside the body. @@ -102,7 +102,7 @@ There is no TLS class in the bundled catalog; TLS attributes ride on `tls.*` / ` `class_uid = category_uid * 1000 + N`. The integer UIDs go on `attributes` so STAR rules can filter cheaply (`class_uid = 4001` is much faster than `class_name = 'Network Activity'`). -## Network Activity (4001) — the canonical mapping +## Network Activity (4001): the canonical mapping This is the most common class. Map this way unless the source has a better-fitting class: @@ -148,7 +148,7 @@ Per-format `activity_id`: | SESSION_DENY / connection blocked | 3 | | reset / RST | 4 | -## Authentication (3002) — common mapping +## Authentication (3002): common mapping | Vendor field | OCSF dotted name | |---|---| @@ -167,7 +167,7 @@ Per-format `activity_id`: `activity_id`: 1 = Logon, 2 = Logoff, 3 = Authentication Ticket, 4 = Service Ticket Request, 5 = Service Ticket Renew, 6 = Preauth. -## File Activity (1001) — common mapping +## File Activity (1001): common mapping | Vendor field | OCSF dotted name | |---|---| @@ -185,7 +185,7 @@ Per-format `activity_id`: Logs commonly carry `YES`/`NO`/`UNKNOWN` or `0`/`1` strings. Normalize via a `computeFields` rewrite or a `mappings` block. -### Option 1 — `computeFields` (ternary syntax, `==` for equality) +### Option 1: `computeFields` (ternary syntax, `==` for equality) ```js rewrites: [ @@ -198,17 +198,17 @@ Notes (**tenant-validated, April 2026**): - **Use ternary `a ? b : c`**. Nested `if(cond, a, b)` calls are rejected: `Unknown function 'if'`. - **Use `==` for equality**, not `=`. -- **computeFields cannot reference dashed field names** like `protocol-id` — the `-` is parsed as subtraction, and backtick/backslash escaping is rejected. Rename the field to a dot/underscore name via `mappings` first, then use computeFields on the renamed field. Or skip computeFields and do the whole enum-translation in the mappings block (see Option 2). -- Place the computeFields rewrite on the format that *captures* the source field. If the source field is captured by a repeating sub-format (e.g. a key/value extractor), put the rewrite on THAT format, not on the frame format — the frame's rewrites run before the sub-format has populated the field. +- **computeFields cannot reference dashed field names** like `protocol-id`: the `-` is parsed as subtraction, and backtick/backslash escaping is rejected. Rename the field to a dot/underscore name via `mappings` first, then use computeFields on the renamed field. Or skip computeFields and do the whole enum-translation in the mappings block (see Option 2). +- Place the computeFields rewrite on the format that *captures* the source field. If the source field is captured by a repeating sub-format (e.g. a key/value extractor), put the rewrite on THAT format, not on the frame format, the frame's rewrites run before the sub-format has populated the field. -### Option 2 — `mappings` block (recommended for clean dashed-field cases) +### Option 2: `mappings` block (recommended for clean dashed-field cases) ```js mappings: { version: 1, // required mappings: [{ transformations: [ - // cast overwrites the source — copy first if you need to preserve it + // cast overwrites the source: copy first if you need to preserve it { copy: { from: "encrypted", to: "tls.is_encrypted" } }, { cast: { field: "tls.is_encrypted", type: "enum", enum: { "YES": true, "NO": false } } }, @@ -222,4 +222,4 @@ See `references/mappers.md` for the full authoritative mapper syntax (it differs ## Confirm with the user when class is ambiguous -If the source could reasonably belong to multiple OCSF classes (e.g., a proxy log is HTTP Activity 4002 *or* Network Activity 4001 depending on what fields you keep), surface the choice rather than picking silently. Once chosen, stick with it for the whole parser — mixed classes break downstream filters. +If the source could reasonably belong to multiple OCSF classes (e.g., a proxy log is HTTP Activity 4002 *or* Network Activity 4001 depending on what fields you keep), surface the choice rather than picking silently. Once chosen, stick with it for the whole parser, mixed classes break downstream filters. diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-schema-documentation.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-schema-documentation.md index 47a6c00..5c7c10d 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-schema-documentation.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/ocsf-schema-documentation.md @@ -38,7 +38,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010500` - **URL:** https://community.sentinelone.com/s/article/000010500 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -48,7 +48,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010501` - **URL:** https://community.sentinelone.com/s/article/000010501 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -58,7 +58,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010502` - **URL:** https://community.sentinelone.com/s/article/000010502 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -72,7 +72,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010503` - **URL:** https://community.sentinelone.com/s/article/000010503 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -82,7 +82,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010504` - **URL:** https://community.sentinelone.com/s/article/000010504 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -110,7 +110,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010506` - **URL:** https://community.sentinelone.com/s/article/000010506 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -120,7 +120,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010507` - **URL:** https://community.sentinelone.com/s/article/000010507 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -134,7 +134,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010508` - **URL:** https://community.sentinelone.com/s/article/000010508 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -144,7 +144,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010509` - **URL:** https://community.sentinelone.com/s/article/000010509 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -158,7 +158,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010510` - **URL:** https://community.sentinelone.com/s/article/000010510 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -168,7 +168,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010511` - **URL:** https://community.sentinelone.com/s/article/000010511 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -182,7 +182,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010512` - **URL:** https://community.sentinelone.com/s/article/000010512 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -192,7 +192,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010513` - **URL:** https://community.sentinelone.com/s/article/000010513 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -202,7 +202,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010514` - **URL:** https://community.sentinelone.com/s/article/000010514 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -212,7 +212,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010515` - **URL:** https://community.sentinelone.com/s/article/000010515 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -230,7 +230,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010452` - **URL:** https://community.sentinelone.com/s/article/000010452 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -240,7 +240,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010453` - **URL:** https://community.sentinelone.com/s/article/000010453 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -286,7 +286,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010467` - **URL:** https://community.sentinelone.com/s/article/000010467 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -296,7 +296,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010468` - **URL:** https://community.sentinelone.com/s/article/000010468 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -310,7 +310,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010469` - **URL:** https://community.sentinelone.com/s/article/000010469 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -320,7 +320,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010470` - **URL:** https://community.sentinelone.com/s/article/000010470 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -330,7 +330,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010471` - **URL:** https://community.sentinelone.com/s/article/000010471 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -340,7 +340,7 @@ This event category spans 4 articles with a combined 1200 documented field entri - **Article ID:** `000010472` - **URL:** https://community.sentinelone.com/s/article/000010472 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -368,7 +368,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010474` - **URL:** https://community.sentinelone.com/s/article/000010474 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -378,7 +378,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010475` - **URL:** https://community.sentinelone.com/s/article/000010475 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -424,7 +424,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010478` - **URL:** https://community.sentinelone.com/s/article/000010478 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -434,7 +434,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010479` - **URL:** https://community.sentinelone.com/s/article/000010479 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -444,7 +444,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010480` - **URL:** https://community.sentinelone.com/s/article/000010480 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -486,7 +486,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010483` - **URL:** https://community.sentinelone.com/s/article/000010483 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -496,7 +496,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010484` - **URL:** https://community.sentinelone.com/s/article/000010484 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -506,7 +506,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010485` - **URL:** https://community.sentinelone.com/s/article/000010485 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -576,7 +576,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010490` - **URL:** https://community.sentinelone.com/s/article/000010490 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -586,7 +586,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010491` - **URL:** https://community.sentinelone.com/s/article/000010491 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -596,7 +596,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010492` - **URL:** https://community.sentinelone.com/s/article/000010492 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -610,7 +610,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010493` - **URL:** https://community.sentinelone.com/s/article/000010493 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -620,7 +620,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010494` - **URL:** https://community.sentinelone.com/s/article/000010494 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -634,7 +634,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010495` - **URL:** https://community.sentinelone.com/s/article/000010495 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -644,7 +644,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010496` - **URL:** https://community.sentinelone.com/s/article/000010496 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -654,7 +654,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010497` - **URL:** https://community.sentinelone.com/s/article/000010497 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -668,7 +668,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010498` - **URL:** https://community.sentinelone.com/s/article/000010498 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -678,7 +678,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010499` - **URL:** https://community.sentinelone.com/s/article/000010499 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -696,7 +696,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010454` - **URL:** https://community.sentinelone.com/s/article/000010454 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -706,7 +706,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010455` - **URL:** https://community.sentinelone.com/s/article/000010455 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -720,7 +720,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010456` - **URL:** https://community.sentinelone.com/s/article/000010456 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -730,7 +730,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010457` - **URL:** https://community.sentinelone.com/s/article/000010457 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -748,7 +748,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010458` - **URL:** https://community.sentinelone.com/s/article/000010458 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -758,7 +758,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010459` - **URL:** https://community.sentinelone.com/s/article/000010459 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -772,7 +772,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010460` - **URL:** https://community.sentinelone.com/s/article/000010460 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -782,7 +782,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010461` - **URL:** https://community.sentinelone.com/s/article/000010461 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -796,7 +796,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010462` - **URL:** https://community.sentinelone.com/s/article/000010462 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -806,7 +806,7 @@ This event category spans 2 articles with a combined 600 documented field entrie - **Article ID:** `000010463` - **URL:** https://community.sentinelone.com/s/article/000010463 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -820,7 +820,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010464` - **URL:** https://community.sentinelone.com/s/article/000010464 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -830,7 +830,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010465` - **URL:** https://community.sentinelone.com/s/article/000010465 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** @@ -840,7 +840,7 @@ This event category spans 3 articles with a combined 900 documented field entrie - **Article ID:** `000010466` - **URL:** https://community.sentinelone.com/s/article/000010466 -- **Field count:** 300 (paginated — more fields in subsequent parts) +- **Field count:** 300 (paginated, more fields in subsequent parts) **Fields:** diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/parse-directives.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/parse-directives.md index e29a8f0..1f6768b 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/parse-directives.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/parse-directives.md @@ -2,7 +2,7 @@ A `{parse=X}` directive inside a field matcher runs a secondary parser on the captured value, generating additional fields prefixed with the parent field name. Use `{attrWhitelist=rx}` / `{attrBlacklist=rx}` to filter which generated subfields are kept. -> **NOT a valid directive: `{parse=keyValue}`.** It returns `400: Syntax error: Unknown parser "keyValue"`. The `keyValue` built-in parser exists, but it is only usable as a root-level `aliasTo: "keyValue"` (a one-line alias parser). To extract key=value pairs INSIDE a format string, use the repeating idiom `".*$_=identifier$=$_=quoteOrSpace$"` with `repeat: true` — see SKILL.md decision-tree step 5 and `examples/03-key-value.json`. The leading `.*` is mandatory; without it the format anchors at position 0 of the message and captures nothing on any line that doesn't start with a bare `identifier=`. Tenant-validated 2026-05-26 on FortiGate syslog. **None of the other built-ins** (`accessLog`, `cloudfront`, `json`, `dottedJson`, `dottedEscapedJson`, `elb-access`, `heroku-logplex`, `leveldbLog`, `mysqlGeneralQueryLog`, `mysqlSlowQueryLog`, `postgresLog`, `redshift`, `s3_bucket_access`, `spot_instance_data`, `systemLog`) are accepted as `{parse=...}` directives either — they're root-level parsers only. The valid `{parse=X}` set is the one documented below (URI variants, JSON variants, key=value list, time/byte/syslog parsers). +> **NOT a valid directive: `{parse=keyValue}`.** It returns `400: Syntax error: Unknown parser "keyValue"`. The `keyValue` built-in parser exists, but it is only usable as a root-level `aliasTo: "keyValue"` (a one-line alias parser). To extract key=value pairs INSIDE a format string, use the repeating idiom `".*$_=identifier$=$_=quoteOrSpace$"` with `repeat: true`, see SKILL.md decision-tree step 5 and `examples/03-key-value.json`. The leading `.*` is mandatory; without it the format anchors at position 0 of the message and captures nothing on any line that doesn't start with a bare `identifier=`. Tenant-validated 2026-05-26 on FortiGate syslog. **None of the other built-ins** (`accessLog`, `cloudfront`, `json`, `dottedJson`, `dottedEscapedJson`, `elb-access`, `heroku-logplex`, `leveldbLog`, `mysqlGeneralQueryLog`, `mysqlSlowQueryLog`, `postgresLog`, `redshift`, `s3_bucket_access`, `spot_instance_data`, `systemLog`) are accepted as `{parse=...}` directives either, they're root-level parsers only. The valid `{parse=X}` set is the one documented below (URI variants, JSON variants, key=value list, time/byte/syslog parsers). > **Subfield naming convention (per SDL KB 000006743):** generated fields are named ``, with the source key's first letter uppercased and concatenated to the parent field name. There is NO underscore, dot, or `Query_` separator between prefix and key. Examples for a field captured as `uri`: > - `uriPath` (the parsed URL path component, from `{parse=uri}`) @@ -10,14 +10,14 @@ A `{parse=X}` directive inside a field matcher runs a secondary parser on the ca > - `uriBusinessProfile` for query param `businessProfile` > - For a field captured as `details`: `detailsApple`, `detailsBanana`, etc. > -> Likewise for `{parse=json}` / `{parse=dottedJson}`: a field captured as `details` parsing `{"foo":"hello"}` generates `detailsFoo` (camelCase) or `details.foo` (dotted), not `details_foo`. Verify the exact field name with a sample query if you are unsure — the obvious-looking `_` form does NOT exist on this engine. +> Likewise for `{parse=json}` / `{parse=dottedJson}`: a field captured as `details` parsing `{"foo":"hello"}` generates `detailsFoo` (camelCase) or `details.foo` (dotted), not `details_foo`. Verify the exact field name with a sample query if you are unsure, the obvious-looking `_` form does NOT exist on this engine. -> **`attrWhitelist` / `attrBlacklist` scope** — these only filter the SUBFIELDS produced by the `{parse=...}` directive, not top-level fields you captured by name in the format string. To drop a top-level field you named explicitly, use `discardAttributes: ["fieldname"]` at the parser root, NOT a blacklist on the parse directive. Catalog parsers like `cisco_firewall-latest` show liberal use of blacklists to drop noisy nested arrays (`{attrBlacklist=(targetResources)}`, `{attrBlacklist=(threatsInfoMap|messageParts)}`); the same authors use `discardAttributes: ["message"]` separately to drop the raw event body. +> **`attrWhitelist` / `attrBlacklist` scope**; these only filter the SUBFIELDS produced by the `{parse=...}` directive, not top-level fields you captured by name in the format string. To drop a top-level field you named explicitly, use `discardAttributes: ["fieldname"]` at the parser root, NOT a blacklist on the parse directive. Catalog parsers like `cisco_firewall-latest` show liberal use of blacklists to drop noisy nested arrays (`{attrBlacklist=(targetResources)}`, `{attrBlacklist=(threatsInfoMap|messageParts)}`); the same authors use `discardAttributes: ["message"]` separately to drop the raw event body. -> **Pipe vs parenthesized list syntax for `attrBlacklist=`** — both work in the wild: -> - Parenthesized: `{attrBlacklist=(field1|field2|field3)}` — common in Microsoft Eventhub parsers. -> - Bare list: `{attrBlacklist=field1|field2|field3}` — common in FortiGate / Cisco parsers. -> - Single field: `{attrBlacklist=tranip}` — no delimiters needed. +> **Pipe vs parenthesized list syntax for `attrBlacklist=`**, both work in the wild: +> - Parenthesized: `{attrBlacklist=(field1|field2|field3)}`, common in Microsoft Eventhub parsers. +> - Bare list: `{attrBlacklist=field1|field2|field3}`, common in FortiGate / Cisco parsers. +> - Single field: `{attrBlacklist=tranip}`; no delimiters needed. > Pick one style per parser for consistency. ## URI and URL-like values @@ -82,9 +82,9 @@ mappings: { This is how the community PARSER_TEMPLATE captures the entire event into `unmapped.*` and does every OCSF mapping in one place. -**Dotted source keys are flat, not nested.** When a source JSON key literally contains a dot (e.g. `"user.email": "alice@example.com"`), gron flattens it into `unmapped.user.email` as a FLAT field name. In mappings, reference it with the literal path — `from: "unmapped.user.email"` — and do NOT escape the dots. `from: "unmapped.user\\.email"` will NOT match on current tenants (tenant-validated April 2026). This contradicts the escape-the-dots guidance in the upstream PARSER_TEMPLATE.conf in ai-siem; prefer the tenant-validated form. +**Dotted source keys are flat, not nested.** When a source JSON key literally contains a dot (e.g. `"user.email": "alice@example.com"`), gron flattens it into `unmapped.user.email` as a FLAT field name. In mappings, reference it with the literal path, `from: "unmapped.user.email"`, and do NOT escape the dots. `from: "unmapped.user\\.email"` will NOT match on current tenants (tenant-validated April 2026). This contradicts the escape-the-dots guidance in the upstream PARSER_TEMPLATE.conf in ai-siem; prefer the tenant-validated form. -**gron DOES expand arrays — into `[N]`-indexed attributes, not lossy strings. Index with `[N]`, never `.N.`** This corrects the common misconception (including elsewhere in this skill) that "gron drops arrays" or "flattens arrays to a lossy string." gron emits one queryable attribute per array leaf, using bracket-index notation: +**gron DOES expand arrays, into `[N]`-indexed attributes, not lossy strings. Index with `[N]`, never `.N.`** This corrects the common misconception (including elsewhere in this skill) that "gron drops arrays" or "flattens arrays to a lossy string." gron emits one queryable attribute per array leaf, using bracket-index notation: ``` "signInEventTypes":["nonInteractiveUser"] -> unmapped.signInEventTypes[0] = "nonInteractiveUser" @@ -105,13 +105,13 @@ Choose the capture per goal: Scalar and nested-object flattening is identical across gron, dottedJson, and the strict variants; they differ ONLY in array handling. -**Querying `[N]` attributes: they are stored but a raw PowerQuery `columns`/`filter` clause cannot type the `[`.** `| columns unmapped.x[0].y` fails to parse ("Unable to parse the entire query"); backticks fail ("Don't understand [`]"); double-quotes turn the name into a string literal. The fields ARE present and queryable through the Event Search field picker and the V1 query / `powerquery_schema_discover` endpoint — so do not conclude extraction failed just because `columns` rejects the name. To confirm `[N]` fields during validation, use `powerquery_schema_discover` (returns full event JSON) rather than a `columns` projection. Tenant-validated 2026-06-22. +**Querying `[N]` attributes: they are stored but a raw PowerQuery `columns`/`filter` clause cannot type the `[`.** `| columns unmapped.x[0].y` fails to parse ("Unable to parse the entire query"); backticks fail ("Don't understand [`]"); double-quotes turn the name into a string literal. The fields ARE present and queryable through the Event Search field picker and the V1 query / `powerquery_schema_discover` endpoint, so do not conclude extraction failed just because `columns` rejects the name. To confirm `[N]` fields during validation, use `powerquery_schema_discover` (returns full event JSON) rather than a `columns` projection. Tenant-validated 2026-06-22. See `references/ai-siem-catalog.md` §"Useful reference parsers by shape" for the canonical example, and `examples/08-gron-capture-template.json` for a ready-to-use scaffold. ### Strict variants (keep arrays as one parseable JSON value) -Non-strict `gron`/`dottedJson` expand arrays into per-element `[N]`-indexed attributes (see the gron-array note above) — great when you want each leaf queryable, but you then cannot run PowerQuery array functions over the array as a whole. If you instead want the array preserved as a single JSON value that `array_from_json()` / `array_get()` can consume, use the `strict*` variant: +Non-strict `gron`/`dottedJson` expand arrays into per-element `[N]`-indexed attributes (see the gron-array note above), great when you want each leaf queryable, but you then cannot run PowerQuery array functions over the array as a whole. If you instead want the array preserved as a single JSON value that `array_from_json()` / `array_get()` can consume, use the `strict*` variant: - `strictJson`, `strictDottedJson` - `strictEscapedJson`, `strictDottedEscapedJson` diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/syntax.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/syntax.md index dd9ef69..ed840fe 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/syntax.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/syntax.md @@ -1,4 +1,4 @@ -# SDL Parser Syntax — Full Reference +# SDL Parser Syntax: Full Reference SDL parsers are **augmented JSON**: unquoted keys are allowed, string values can span lines, and `//` / `/* */` comments are supported. The file is stored at `/logParsers/` on the SDL tenant and applied by name at HEC ingest (`parser: ` header). @@ -35,7 +35,7 @@ SDL parsers are **augmented JSON**: unquoted keys are allowed, string values can - `timezone` applies when the parsed timestamp itself has no offset. Prefer IANA names (`America/New_York`) so DST is respected; avoid `EST` / `PST` which are fixed offsets. - `attributes` at the top level apply to every event this parser produces. -- `aliasTo` is mutually exclusive with the rest — it re-points this name to another parser file. Aliases cannot chain. +- `aliasTo` is mutually exclusive with the rest: it re-points this name to another parser file. Aliases cannot chain. ## Formats @@ -56,7 +56,7 @@ Formats are tried in declaration order against the **whole line**. A format that > **The parser only sees `message`.** Ingest-time attributes added by collectors, relays, or HEC ingest (`app_id`, `cluster`, `region`, custom enrichments, etc.) are NOT visible to format strings, format-level `discard:` filters, or `rewrites` regex inputs. They ARE visible to `mappings` predicates and `mappings` op `from:` paths, since mappings run after parsing. If you need to gate a format on a vendor or app sentinel, encode it in the message body or use a `format: "..."` that anchors on a string the message contains. Don't try to read those attributes from inside the format engine. -> **There is NO `from:` directive on `format` entries.** Only the keys listed in the example object above (`id`, `attributes`, `format`, `discard`, `halt`, `repeat`, plus `rewrites`) are honored. A spurious `from: ""` next to `format:` is silently ignored, and the format is run against the raw line — which, combined with a greedy regex like `[\s\S]+`, can clobber every captured field with the entire log message on every event. The `from:` key only exists inside `mappings` ops (`{rename: {from, to}}`, `{copy: {from, to}}`, etc.). If you want a format-like rewrite to operate against a specific captured field, you have two real options: (1) a `rewrites` entry on the same format with `input: ""`, or (2) a follow-up `mappings` op that reads from that field. +> **There is NO `from:` directive on `format` entries.** Only the keys listed in the example object above (`id`, `attributes`, `format`, `discard`, `halt`, `repeat`, plus `rewrites`) are honored. A spurious `from: ""` next to `format:` is silently ignored, and the format is run against the raw line, which, combined with a greedy regex like `[\s\S]+`, can clobber every captured field with the entire log message on every event. The `from:` key only exists inside `mappings` ops (`{rename: {from, to}}`, `{copy: {from, to}}`, etc.). If you want a format-like rewrite to operate against a specific captured field, you have two real options: (1) a `rewrites` entry on the same format with `input: ""`, or (2) a follow-up `mappings` op that reads from that field. ### Fragment formats @@ -68,7 +68,7 @@ When a fragment format pulls a token out of the middle of a line, the prefix's r 1. **The literal anchor must live INSIDE the prefix's regex, not as separate format-string text.** A pattern like `$_pre{regex=[\s\S]*}$/actuator/health$_suf{regex=[\s\S]*}$` (greedy `[\s\S]*` followed by literal `/actuator/health` between the two field markers) does NOT match. The format engine commits each captured field's regex independently and does not backtrack the previous field once a literal-text gap has been crossed. The working form puts the literal inside the regex of the prefix itself: `$_pre{regex=[\s\S]*\/actuator\/health}$$_suf{regex=[\s\S]*}$`. Phase-10-style IOC formats do this with anchors like `[\s\S]*X-Forwarded-For=[\[]?` baked into the prefix regex. -2. **`[\s\S]*ANCHOR` is greedy and lands on the LAST occurrence of `ANCHOR`.** That is correct when the desired token always follows the rightmost anchor on the line — Phase-5-style Dropwizard formats (`[\s\S]*\[dw-[0-9]+ - `) work because `[dw-N - ` is unique to the request-line bracket. It fails when the anchor is too generic: `[\s\S]*\[` followed by a capture of `UT-[0-9]+` will fail on any line where a later `[` exists (e.g. `[#033[36mClassName#033[0;39m]` ANSI brackets), because greedy match commits to the last `[` and `UT-` does not follow there. Fix: make the anchor multi-character and discriminating (`[\s\S]*\[UT-` so only the bracket that actually opens a UT- token is matched), accepting that the discriminating literal is consumed by the anchor and your capture holds only the trailing portion (`$user_task_id_num{regex=[0-9]+}$`). +2. **`[\s\S]*ANCHOR` is greedy and lands on the LAST occurrence of `ANCHOR`.** That is correct when the desired token always follows the rightmost anchor on the line, Phase-5-style Dropwizard formats (`[\s\S]*\[dw-[0-9]+ - `) work because `[dw-N - ` is unique to the request-line bracket. It fails when the anchor is too generic: `[\s\S]*\[` followed by a capture of `UT-[0-9]+` will fail on any line where a later `[` exists (e.g. `[#033[36mClassName#033[0;39m]` ANSI brackets), because greedy match commits to the last `[` and `UT-` does not follow there. Fix: make the anchor multi-character and discriminating (`[\s\S]*\[UT-` so only the bracket that actually opens a UT- token is matched), accepting that the discriminating literal is consumed by the anchor and your capture holds only the trailing portion (`$user_task_id_num{regex=[0-9]+}$`). 3. **DO NOT use `[\s\S]*?` lazy quantifier at the start of a prefix regex.** Same family as the documented `.*?` orphaned-`?` trap, but no error: the format silently matches almost nothing (tenant-validated 2026-05-13, `[\s\S]*?` prefixes hit 365 of ~190K events when greedy + literal anchor hit close to all). The SDL regex engine does not backtrack the lazy quantifier across field boundaries to find a position where the next field's regex matches. Always use greedy `[\s\S]*` plus a discriminating literal anchor (rule 2 above). If you actually need first-match-on-line semantics, encode it with a literal that only appears once per line (e.g. `[\s\S]*\"merchant_transaction_id\":\"` to anchor on a unique JSON key), do not reach for `*?`. @@ -80,11 +80,11 @@ Inside a format string, `$name=pattern{opt1}{opt2}$` captures a named field. All $fieldName = patternName {parse=json} {regex=\\d+} {attrWhitelist=foo.*} {timezone=UTC} $ ``` -- **`patternName`** — a name from `patterns:`, or a predefined pattern: `digits`, `number`, `alphanumeric`, `identifier`, `quotable`, `quotableNoEscape`, `quoteOrSpace`, `quoteOrSpaceNoEscape`, `json` (brace-matched with nesting support). -- **`{regex=...}`** — inline regex. Metacharacters **must be double-escaped** (augmented JSON eats one backslash): `\\d`, `\\s`, `\\.`, `\\\\`. -- **`{parse=directive}`** — apply a sub-parser to the captured value. See `parse-directives.md`. -- **`{attrWhitelist=rx}` / `{attrBlacklist=rx}`** — after a sub-parse, filter which generated subfields are kept. -- **`{timezone=...}`** — field-level override when the field is `timestamp`. +- **`patternName`**: a name from `patterns:`, or a predefined pattern: `digits`, `number`, `alphanumeric`, `identifier`, `quotable`, `quotableNoEscape`, `quoteOrSpace`, `quoteOrSpaceNoEscape`, `json` (brace-matched with nesting support). +- **`{regex=...}`**: inline regex. Metacharacters **must be double-escaped** (augmented JSON eats one backslash): `\\d`, `\\s`, `\\.`, `\\\\`. +- **`{parse=directive}`**: apply a sub-parser to the captured value. See `parse-directives.md`. +- **`{attrWhitelist=rx}` / `{attrBlacklist=rx}`**: after a sub-parse, filter which generated subfields are kept. +- **`{timezone=...}`**: field-level override when the field is `timestamp`. ### Default pattern quirks @@ -92,11 +92,11 @@ A `$field$` followed by a **space** with no explicit pattern defaults to the `qu ### Reserved field names -- `message` — the raw event text. Cannot be captured into from a format. Can be dropped with `discardAttributes: ["message"]`. -- `timestamp` — parsed as the event time (see *Special fields*). -- `severity` — mapped to 0–6 (see *Special fields*). -- `parser` — filled in by the ingest pipeline. -- `host` / `serverHost` — set from the `server-host` upload header. +- `message`: the raw event text. Cannot be captured into from a format. Can be dropped with `discardAttributes: ["message"]`. +- `timestamp`: parsed as the event time (see *Special fields*). +- `severity`: mapped to 0-6 (see *Special fields*). +- `parser`: filled in by the ingest pipeline. +- `host` / `serverHost`: set from the `server-host` upload header. ### Escaping literals @@ -143,13 +143,13 @@ Constant key/value pairs attached to every matching event. Can live at the top l ### Per-format override -A format's `attributes:` block **overrides** the top-level attributes for events that match that format. This is the idiomatic way to produce multiple OCSF classes from one parser (e.g., Abnormal Security's parser emits `class_uid: 2001` for email events and `class_uid: 3002` for authentication events from the same parser) — set the common attributes at top level, then let each format override `class_uid`, `activity_id`, `severity_id`, and `activity_name`. +A format's `attributes:` block **overrides** the top-level attributes for events that match that format. This is the idiomatic way to produce multiple OCSF classes from one parser (e.g., Abnormal Security's parser emits `class_uid: 2001` for email events and `class_uid: 3002` for authentication events from the same parser), set the common attributes at top level, then let each format override `class_uid`, `activity_id`, `severity_id`, and `activity_name`. The 4 mandatory attributes (`dataSource.category` hardcoded to `"security"`, `dataSource.name`, `dataSource.vendor`, `metadata.version`) should live at the parser-root `attributes:` block, not per-format. OCSF subtype fields (`activity_id`, `activity_name`, per-subtype `severity_id`) should live per-format. Per-format `attributes:` override parser-root `attributes:`, which is the mechanism for one parser fanning out to multiple OCSF classes (e.g. Windows Event 4624 → Authentication, 4720 → Account Change). `metadata.version` may also be overridden per-event from inside a `mappings.constant` op when the source carries its own schema version. ### `class_uid` string vs integer -OCSF defines these as integers. Many ai-siem catalog parsers emit them as strings (`"class_uid": "4001"`). Both survive ingest. Prefer integers in new work — integer form keeps PowerQuery filters simple (`class_uid = 4001` rather than `class_uid = '4001'`). +OCSF defines these as integers. Many ai-siem catalog parsers emit them as strings (`"class_uid": "4001"`). Both survive ingest. Prefer integers in new work, integer form keeps PowerQuery filters simple (`class_uid = 4001` rather than `class_uid = '4001'`). ## Line groupers (multi-line) @@ -194,14 +194,14 @@ Notes: - `$1..$n` reference regex capture groups. - `replaceAll: true` replaces every match, not just the first. - `outputIfNoMatch: false` suppresses the output field when the regex doesn't match (default is to copy `input` verbatim). -- `timeDelta` doesn't yet support a per-rule `timezone` — set it at parser level or inline in the source timestamp. +- `timeDelta` doesn't yet support a per-rule `timezone`: set it at parser level or inline in the source timestamp. - `computeFields` can read from lookup tables, add/overwrite fields, and drop events via `discard: { filter: "..." }` on the format. Supported PQ subset: `columns`, `filter`, `let`, `lookup`, `parse` plus most Array/Geolocation/Network/Numeric/String/Time/Timestamp functions. Excluded array functions: `array_agg`, `array_agg_distinct`, `array_from_json`, `array_to_json`, `extract_matches`, `extract_matches_matchcase`. ## Special fields: timestamp, severity, message -**`timestamp`** — the event time. SDL recognizes most common forms. Timezone precedence: a parsed `timezone` field > `{timezone=...}` option on the `$timestamp$` matcher > parser-level `timezone` > GMT. Prefer UTC at the source. +**`timestamp`**, the event time. SDL recognizes most common forms. Timezone precedence: a parsed `timezone` field > `{timezone=...}` option on the `$timestamp$` matcher > parser-level `timezone` > GMT. Prefer UTC at the source. -**`severity`** — mapped to an internal integer + label: +**`severity`**, mapped to an internal integer + label: | String | Int | Label | |---|---|---| @@ -215,18 +215,18 @@ Notes: Missing → `info` (3). -**`message`** — raw event text, reserved. Cannot be captured into. Rewrite rules can modify a portion (a rule whose regex matches the entire value is silently ignored). Drop it via `discardAttributes: ["message"]` — highly recommended for JSON-parsed logs to reduce storage. +**`message`**, raw event text, reserved. Cannot be captured into. Rewrite rules can modify a portion (a rule whose regex matches the entire value is silently ignored). Drop it via `discardAttributes: ["message"]`, highly recommended for JSON-parsed logs to reduce storage. ## Behaviour flags -- `discard: true` on a format — drop events matching the format. Discarded events don't count toward log volume. -- `discard: { filter: "keep = false" }` (S-24.4.5+) — conditional drop driven by a `computeFields` rewrite that sets a boolean field. -- `halt: true` — after this format matches, stop trying further formats on the same line. -- `repeat: true` — keep re-applying this format at the position after the last match (required for key/value catch-alls). -- `skipNumericConversion: true` — preserve string values that look numeric (e.g., postal code `00187`). Per-format flag. -- `intermittentTimestamps: true` — parser-level; for logs that emit a timestamp only when the clock rolls over. Lines without a timestamp inherit the most recent one instead of the ingest time. +- `discard: true` on a format: drop events matching the format. Discarded events don't count toward log volume. +- `discard: { filter: "keep = false" }` (S-24.4.5+): conditional drop driven by a `computeFields` rewrite that sets a boolean field. +- `halt: true`: after this format matches, stop trying further formats on the same line. +- `repeat: true`: keep re-applying this format at the position after the last match (required for key/value catch-alls). +- `skipNumericConversion: true`: preserve string values that look numeric (e.g., postal code `00187`). Per-format flag. +- `intermittentTimestamps: true`: parser-level; for logs that emit a timestamp only when the clock rolls over. Lines without a timestamp inherit the most recent one instead of the ingest time. -## `discardAttributes` — placement matters +## `discardAttributes`: placement matters `discardAttributes: ["field1", "field2", ...]` accepts a list of field names to drop from the final event. There are TWO valid placements with different scopes: @@ -254,13 +254,13 @@ This is the form the built-in `json` parser uses: `formats: [ { format: "$json{p } ``` -Use this for vendor-noise keys that show up at the event root because a `{parse=json}` directive flattened them out of the source body. Parser-root scope does NOT reliably drop fields created by named-capture markers inside format strings — those leak through on this tenant despite being listed at the root. The fix is to move them into the per-format `discardAttributes` of the format that creates them. Tenant-validated 2026-05-13. +Use this for vendor-noise keys that show up at the event root because a `{parse=json}` directive flattened them out of the source body. Parser-root scope does NOT reliably drop fields created by named-capture markers inside format strings; those leak through on this tenant despite being listed at the root. The fix is to move them into the per-format `discardAttributes` of the format that creates them. Tenant-validated 2026-05-13. **Neither scope drops `{parse=gron}` outputs at the event root.** Gron-expanded keys (`host`, `facility`, `sndr` directly on the root) require `mappings.drop` or `mappings.drop_tree`. Tenant-validated May 2026. ## Associations -Join non-adjacent lines that share a correlation key (e.g., request-start + request-end). Possibly deprecated — check with Support before relying on it. Association state is purged ~60 seconds after first sighting. +Join non-adjacent lines that share a correlation key (e.g., request-start + request-end). Possibly deprecated, check with Support before relying on it. Association state is purged ~60 seconds after first sighting. ```js { diff --git a/plugins/s1-secops-skills/skills/sdl-log-parser/references/testing-workflow.md b/plugins/s1-secops-skills/skills/sdl-log-parser/references/testing-workflow.md index da7fa8f..b4dd258 100644 --- a/plugins/s1-secops-skills/skills/sdl-log-parser/references/testing-workflow.md +++ b/plugins/s1-secops-skills/skills/sdl-log-parser/references/testing-workflow.md @@ -1,4 +1,4 @@ -# Validation Workflow — Using `sentinelone-sdl-api` to Test a Parser +# Validation Workflow: Using `sentinelone-sdl-api` to Test a Parser There is **no dedicated `testParser` REST endpoint** on the SDL tenant. The in-console `Test Parser` button at `/logImportTester` runs the parser client-side in JavaScript. To validate end-to-end you must deploy the parser, ingest a sample through it, and query the result back. This doc is the recipe. @@ -75,7 +75,7 @@ print(json.dumps(res, indent=2)) - HEC ingest → `{"status": "success", ...}` (a `bytesCharged` number appearing is normal). - `power_query` returns at least one row per line in the sample, and every expected field is present (not null) for at least the lines where it should be. -A duplicate-`Nonce` response (`status: "success", message: "ignoring request, due to duplicate nonce..."`) means the ingest was deduped — advance to a fresh nonce on iteration. +A duplicate-`Nonce` response (`status: "success", message: "ignoring request, due to duplicate nonce..."`) means the ingest was deduped, advance to a fresh nonce on iteration. ## Common failure modes @@ -84,7 +84,7 @@ A duplicate-`Nonce` response (`status: "success", message: "ignoring request, du | `put_file` → `error/client/badParam` | JSON syntax error. Run the body through a JSON5-tolerant validator; watch for unmatched braces or trailing commas inside format strings. | | HEC ingest → `error/client/badParam` with "unknown parser" | Wrong `parser:` header name, or putFile hadn't replicated yet (retry after a few seconds). | | `power_query` returns rows but expected fields are null | Line format didn't match. Check: regex escaping (`\\d` not `\d`), delimiter mismatches, `halt: true` on an earlier format eating the line, `message`-as-field-name mistake. | -| `power_query` returns zero rows | `host_tag` isn't set (upload header `server-host` missing) or too short a `start_time` window. Widen to 30m. **Also check event time:** if the parser sets event time from a field in the log (a `timestamp` rewrite off `createdDateTime`/`activityDateTime`/etc.), events are stamped at the log's own time, not ingest time — so a log a few hours old falls outside a `10m`/`1h` window seconds after you ingest it. Widen `start_time` to `24h`/`7d` (or filter by a `claude_test=` field instead of time). | +| `power_query` returns zero rows | `host_tag` isn't set (upload header `server-host` missing) or too short a `start_time` window. Widen to 30m. **Also check event time:** if the parser sets event time from a field in the log (a `timestamp` rewrite off `createdDateTime`/`activityDateTime`/etc.), events are stamped at the log's own time, not ingest time, so a log a few hours old falls outside a `10m`/`1h` window seconds after you ingest it. Widen `start_time` to `24h`/`7d` (or filter by a `claude_test=` field instead of time). | | Field X populated sometimes, null others | The format works for some variants and not others. Add a fragment format for the other shape, or widen the regex. | | Re-ingested event still shows the OLD shape on a LIVE source | Parser propagation is ~3-5 min; a continuously-ingesting source keeps producing events parsed by the PREVIOUS version during that window, and SDL does not re-parse historical events. A "still broken" event is usually pre-propagation, not a parser bug. Confirm with the version canary below before concluding anything. | | `| columns unmapped.x[0].y` → "Unable to parse the entire query" | You can't type a `[N]` array-index field name in a raw PowerQuery `columns`/`filter` clause (backticks and quotes don't help). The field exists; read it via `powerquery_schema_discover` or the Event Search field picker instead. | @@ -101,7 +101,7 @@ Parser propagation is ~3-5 min on the tenant, and on a live source events keep f start_time="30m") ``` -3. When validating a specific re-ingested sample, check `metadata.version` on that event — if it still shows the prior version, you're looking at a pre-propagation event; wait and re-ingest, don't "fix" a non-bug. +3. When validating a specific re-ingested sample, check `metadata.version` on that event, if it still shows the prior version, you're looking at a pre-propagation event; wait and re-ingest, don't "fix" a non-bug. ## Validating array (`[N]`) and bracketed fields @@ -112,7 +112,7 @@ Parser propagation is ~3-5 min on the tenant, and on a live source events keep f discover(dataSourceName="Microsoft Entra ID", maxEvents=30, startTime="24h") ``` -Caveat: for a source that also emits SDL metering, the sample mixes real events with `logVolume`/`logBytes` rows — read past those. This is the most reliable way to verify array-heavy parsers, since the values are unreachable via a normal `columns` projection. +Caveat: for a source that also emits SDL metering, the sample mixes real events with `logVolume`/`logBytes` rows, read past those. This is the most reliable way to verify array-heavy parsers, since the values are unreachable via a normal `columns` projection. ## Isolating which format matched @@ -139,7 +139,7 @@ c.put_file("/logParsers/FortiGate_CEF", content=content) c.put_file(f"/logParsers/{PARSER_NAME}", delete=True) ``` -Ask the user before promoting a `claude_test_` parser to a canonical name — it's their tenant. +Ask the user before promoting a `claude_test_` parser to a canonical name; it's their tenant. ## Synthesizing samples when the catalog parser ships without a `samples/` dir @@ -150,7 +150,7 @@ The vast majority of catalog parsers in `Sentinel-One/ai-siem` (none of marketpl 3. **Generate one sample per format.** If the parser has 5 formats with different `id`s, your sample file should have 5 lines so each format gets exercised. 4. **Run the validation loop** above. If a format never matches, your synthesized sample for that format is wrong; iterate. -Synthesizing samples is also the right move when the user is preparing a parser for a source they don't yet have flowing in production — validate end-to-end first, then turn it on at the source. +Synthesizing samples is also the right move when the user is preparing a parser for a source they don't yet have flowing in production, validate end-to-end first, then turn it on at the source. ## Pre-flight check: 4 mandatory attributes and OCSF field names diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/SKILL.md b/plugins/s1-secops-skills/skills/sdl-solutions/SKILL.md index 0dbb310..b65fa68 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/SKILL.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/SKILL.md @@ -105,7 +105,9 @@ endpoint class `1xxx` for events-rule asset auto-binding). Onboarding tokens: `{{DETECTION_NAME}}`, `{{DETECTION_DESCRIPTION}}`, `{{MITRE_TACTIC}}`, `{{MITRE_TECHNIQUE}}`, `{{SEVERITY}}`, `{{PQ_BODY_ENDING_WITH_COLUMNS_PROJECTION}}`, `{{RENOTIFY_MINUTES}}`, `{{ENTITY_COL_1}}`, `{{ENTITY_COL_2}}`, `{{ENTITY_COL_3}}` (entityMappings -is capped at 3), `{{SCOPE_KEY}}` (`accountIds`/`siteIds`), `{{SCOPE_ID}}`, `{{IP_SRC_FIELD}}`, +is capped at 3), `{{SCOPE_KEY}}` (`accountIds`/`siteIds`; MUST be `accountIds` for any detection +rule whose PQ body reads a lookup table or datatable, because lookups/datatables are account-level +objects and site-scoped creation of lookup-reading rules is invalid), `{{SCOPE_ID}}`, `{{IP_SRC_FIELD}}`, `{{IP_DST_FIELD}}`, `{{PORT_FIELD}}`, `{{ACTION_FIELD}}`, `{{USER_FIELD}}`, `{{SOURCE_LABEL}}`, `{{ACCOUNT_ID}}`, `{{VT_API_KEY}}`, `{{NOTIFY_WEBHOOK_URL}}`, `{{IOC_TTL_HOURS_NEG}}`. diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/alertnoise_autoresolve_ha.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/alertnoise_autoresolve_ha.template.json index 6735177..0f352a2 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/alertnoise_autoresolve_ha.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/alertnoise_autoresolve_ha.template.json @@ -1,7 +1,7 @@ { "name": "<> Auto-Resolve Mitigated <> Alerts", "description": "Auto-resolves already-mitigated ingested alerts (match set discovered live) and adds an explanatory note. Every filter group carries a MANDATORY runtime guard that the alert's action/disposition field equals the mitigated value, so only alerts the source actually blocked are auto-resolved. Import, publish to Shared Draft, review, bind the SentinelOne connection, then activate.", - "_comment": "<> / <> guard (added 2026-07-29): set <> to the source's action/disposition field on the ingested alert (e.g. the field that carries blocked/denied/quarantined) and <> to its blocked value, both discovered live at deploy time from the alert payloads. This third condition prevents auto-resolving alerts whose signature the firewall/product later starts PASSING: without it, a policy change that flips the signature from block to allow would keep silently closing now-unmitigated alerts. PENDING: validate on demo tenant. Remove this _comment key before import if the importer rejects unknown keys.", + "_comment": "<> / <> guard (added 2026-07-29): set <> to the source's action/disposition field on the ingested alert (e.g. the field that carries blocked/denied/quarantined) and <> to its blocked value, both discovered live at deploy time from the alert payloads. This third condition prevents auto-resolving alerts whose signature the firewall/product later starts PASSING: without it, a policy change that flips the signature from block to allow would keep silently closing now-unmitigated alerts. Live-validated 2026-07-31 on the demo tenant: alert-created trigger auto-fired on a synthetic UAM alert, the 3-condition filter-group path evaluated, and the run completed (guard bound to a synthetic field for the test). That run exposed a quoted-GraphQL-enum defect making the resolve+note a silent no-op; fixed in this template (status enum now unquoted per api-integration.md). Binding constraints live-proven 2026-08-01: the singularity-response trigger payload for INGESTED alerts exposes NO disposition/action/unmapped field (86-leaf payload dump), so <> must reference a scalar payload path the ingest controls (description carrying an action=blocked token worked in 42s); array-indexed paths like indicators.0.message never dispatch the trigger. Also: alert-created triggers only fire for TWO-CALL ingests (indicator first, then referencing alert); single-call inline ingests stitch into UAM but never dispatch. Remove this _comment key before import if the importer rejects unknown keys.", "actions": [ { "action": { @@ -164,7 +164,7 @@ "url": "{{Connection.protocol}}{{Connection.url}}/web/api/v2.1/unifiedalerts/graphql", "url_path": null, "url_prefix": null, - "payload": "{\"query\": \"mutation ResolveAlreadyMitigated { alertTriggerActions(actions: [{ id: \\\"S1/alert/statusUpdate\\\", payload: { status: { value: \\\"RESOLVED\\\" } } }, { id: \\\"S1/alert/addNote\\\", payload: { note: { value: \\\"{{Function.HTML_ENCODE(local_var.note)}}\\\" } } }], filter: { or: [ { and: [ { fieldId: \\\"id\\\", stringEqual: { value: \\\"{{singularity-response-trigger.data.id}}\\\" } } ] } ] }) { ... on ActionsTriggered { actions { actionId success { id } failure { id } skip { id } } } } }\"}", + "payload": "{\"query\": \"mutation ResolveAlreadyMitigated { alertTriggerActions(actions: [{ id: \\\"S1/alert/statusUpdate\\\", payload: { status: { value: RESOLVED } } }, { id: \\\"S1/alert/addNote\\\", payload: { note: { value: \\\"{{Function.HTML_ENCODE(local_var.note)}}\\\" } } }], filter: { or: [ { and: [ { fieldId: \\\"id\\\", stringEqual: { value: \\\"{{singularity-response-trigger.data.id}}\\\" } } ] } ] }) { ... on ActionsTriggered { actions { actionId success { id } failure { id } skip { id } } } } }\"}", "parameters": [], "retry_on_status_code": null, "retry_on_status_codes": [ diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/detection-as-code-starter/scripts/dac_sync.py b/plugins/s1-secops-skills/skills/sdl-solutions/assets/detection-as-code-starter/scripts/dac_sync.py index c38e160..aef5d26 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/detection-as-code-starter/scripts/dac_sync.py +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/detection-as-code-starter/scripts/dac_sync.py @@ -266,6 +266,18 @@ def __init__(self, path: Path, message: str): self.message = message +# Exception types that mean "this rule file is bad" and get reported per-file +# instead of crashing the whole run. Anything else (network errors, real bugs) +# is intentionally NOT caught so it surfaces loudly. ValueError covers +# tomllib.TOMLDecodeError and the built-in TOML parser; json.JSONDecodeError is +# a ValueError subclass but stays explicit for clarity. TypeError covers int() +# and arithmetic on wrongly-typed rule values in build_envelope. +_RULE_FILE_ERRORS: tuple = (RuleError, json.JSONDecodeError, ValueError, TypeError) +if _yaml is not None: + # Malformed YAML rule files are equally a per-file error. + _RULE_FILE_ERRORS = _RULE_FILE_ERRORS + (_yaml.YAMLError,) + + # --------------------------------------------------------------------------- # Loading rule files # --------------------------------------------------------------------------- @@ -761,7 +773,7 @@ def main(argv=None) -> int: rule = load_rule_file(f) env = build_envelope(rule, f, scope_override) envelopes.append((f, env)) - except (RuleError, json.JSONDecodeError, Exception) as e: + except _RULE_FILE_ERRORS as e: errors.append(str(e) if isinstance(e, RuleError) else f"{f}: {e}") print(f"Parsed {len(envelopes)} rule(s); {len(errors)} error(s).") diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection.template.json index 839eec4..834080b 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection.template.json @@ -1,5 +1,5 @@ { - "_comment": "STAR scheduled PowerQuery detection rule with a CSV-driven exclusion anti-join for third-party SDL sources. POST to /web/api/v2.1/cloud-detection/rules. The PQ body filters the base detection, then for each exclusion list adds: '| lookup excl_X = reason from
      .csv by | filter excl_X = null' (null = NOT on the list = kept). Chain multiple lists with distinct join vars (excl_asset, excl_domain). Always add the null-entity guard ' = *' to the base filter so a null asset is never alerted. queryType MUST be scheduled and queryLang MUST be 2.0. treatAsThreat is UNDEFINED and networkQuarantine false (no inline mitigation on scheduled rules; drive mitigation from a Hyperautomation flow off the alert). Keep aggregation inside group. Body MUST end with '| columns ...' projecting the metric + entity columns. entityMappings is capped at 3. coolOffSettings.renotifyMinutes ties to severity/cadence (do NOT default to 24h). New rules land Disabled; enable with PUT /cloud-detection/rules/enable. List with isLegacy=false or scheduled rules are hidden.", + "_comment": "STAR scheduled PowerQuery detection rule with a CSV-driven exclusion anti-join for third-party SDL sources. POST to /web/api/v2.1/cloud-detection/rules. SCOPE IS ACCOUNT-ONLY: the body reads exclusion lookup tables, and lookup tables / datatables are ACCOUNT-level objects, so a rule whose body reads one can only be created at account scope. Set {{SCOPE_KEY}} = accountIds and {{SCOPE_ID}} = the account id; site-scoped creation of lookup-reading rules is invalid (the inline single-event and correlation variants have no lookup and may stay site-scoped). The PQ body filters the base detection, then for each exclusion list adds: '| lookup excl_X = reason from
      .csv by | filter excl_X = null' (null = NOT on the list = kept). Chain multiple lists with distinct join vars (excl_asset, excl_domain). Always add the null-entity guard ' = *' to the base filter so a null asset is never alerted. queryType MUST be scheduled and queryLang MUST be 2.0. treatAsThreat is UNDEFINED and networkQuarantine false (no inline mitigation on scheduled rules; drive mitigation from a Hyperautomation flow off the alert). Keep aggregation inside group. Body MUST end with '| columns ...' projecting the metric + entity columns. entityMappings is capped at 3. coolOffSettings.renotifyMinutes ties to severity/cadence (do NOT default to 24h). New rules land Disabled; enable with PUT /cloud-detection/rules/enable. List with isLegacy=false or scheduled rules are hidden.", "data": { "name": "{{PREFIX}} - {{DETECTION_NAME}}", "description": "{{DETECTION_DESCRIPTION}} Known-good activity is suppressed at detection time via CSV exclusion lists ({{EXCL_TABLES_HUMAN}}). MITRE ATT&CK: {{MITRE_TACTIC}} / {{MITRE_TECHNIQUE}}.", diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection_ha_workflow.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection_ha_workflow.template.json index 06f2ab3..01a2358 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection_ha_workflow.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/exclusion_detection_ha_workflow.template.json @@ -1,7 +1,7 @@ { "name": "dnsExcl - {{SOURCE}} Asset-CIDR Excluded Detection + UAM Alert", "description": "Scheduled CIDR+domain-excluded failed-DNS detection that posts one self-contained OCSF S1 SecurityAlert (class_uid 99602001) per offender to UAM. ASYNC LRQ POLL LOOP: launch -> capture id + X-Dataset-Query-Forward-Tag -> loop {poll -> if done: count rows, and if any, iterate up to {{TOP_N}} offenders posting one alert each, then break; else delay 5s and re-poll (cap 60)}. All result-consuming actions live INSIDE the loop. Bind 'SentinelOne SDL' (Bearer) on the HTTP actions; hec_url={{HEC_INGEST_URL}}.", - "_comment": "2026-07-29 multi-offender restructure: the detection now returns up to {{TOP_N}} threshold-filtered offenders (| filter failed >= {{THRESHOLD}} ... | limit {{TOP_N}}) and a dynamic loop (Loop Offenders, object_to_iterate = poll-results.body.data.values) posts ONE UAM alert per row via Row Vars -> Post Alert. The loop and its post live INSIDE the poll-while-loop's done-branch so the result-consuming actions still reference the completed poll response in the same iteration (the prior single-post invariant is preserved). An 'Any Offenders' guard (rowcount > 0) skips iteration on an empty set. Per-alert UUIDs (ind/dev/user) are generated per row inside the loop; run-level hec_url/scope_id/now_ms stay in Config. {{RUN_WINDOW_HOURS}} must match the trigger cadence (24 for the daily 07:00 UTC trigger). PENDING: nested-loop shape validated on demo tenant by import round-trip; runtime pending. Remove this _comment key before import if the importer rejects unknown keys.", + "_comment": "2026-07-29 multi-offender restructure: the detection now returns up to {{TOP_N}} threshold-filtered offenders (| filter failed >= {{THRESHOLD}} ... | limit {{TOP_N}}) and a dynamic loop (Loop Offenders, object_to_iterate = poll-results.body.data.values) posts ONE UAM alert per row via Row Vars -> Post Alert. The loop and its post live INSIDE the poll-while-loop's done-branch so the result-consuming actions still reference the completed poll response in the same iteration (the prior single-post invariant is preserved). An 'Any Offenders' guard (rowcount > 0) skips iteration on an empty set. Per-alert UUIDs (ind/dev/user) are generated per row inside the loop; run-level hec_url/scope_id/now_ms stay in Config. {{RUN_WINDOW_HOURS}} must match the trigger cadence (24 for the daily 07:00 UTC trigger). Runtime live-validated 2026-07-31 on the demo tenant: activated run completed (17 actions, no errors), the nested loop posted exactly TOP_N=3 UAM alerts (one per offender row, values matching the LRQ output), and both anti-join exclusions were proven live (excluded IP and excluded value absent; matchCount fell 18,799 to 13,323). Remove this _comment key before import if the importer rejects unknown keys.", "actions": [ { "action": { diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth-watchdog-email-example-1.png b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth-watchdog-email-example-1.png new file mode 100644 index 0000000000000000000000000000000000000000..15e839639bfc7eaabc15fab6d508d0955d62dfba GIT binary patch literal 248042 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�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

      F>v6g87_=sMC)Qx8Tir{5 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

      \\\")|join(\\\"\\\")\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "dev_html", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"device\\\"))|map(\\\"\\\")|join(\\\"\\\")\", true)}}", "should_use_as_output": false, "is_secret": false}], "variables_scope": "local"}, "state": "active", "description": "Count result rows from poll.", "client_data": {"position": {"x": 505, "y": 530}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 10, "connected_to": [{"target": 0, "custom_handle": null}], "parent_action": 6}, {"action": {"type": "condition", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Any Silent Devices", "action_type": "condition", "condition_type": "multi", "condition": null, "conditions": [{"input_value": "{{local_var.rowcount}}", "compared_value": "0", "comparison_operator": "greater_than"}], "conditions_relationship": "and"}, "state": "active", "description": "Email if any silent.", "client_data": {"position": {"x": 505, "y": 730}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 0, "connected_to": [{"target": 3, "custom_handle": "true"}, {"target": 1, "custom_handle": "false"}], "parent_action": 6}, {"action": {"type": "send_email", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Email Silent Devices", "action_type": "send_email", "subject": "[SentinelOne] Ingest Health: monitored sources/devices stopped sending logs (last hour)", "to": ["{{NOTIFY_EMAIL}}"], "cc": [], "bcc": [], "reply_to": [], "mime_type": "text/html", "body": "
      Ingest Health alert: ingest loss
      SentinelOne Singularity Data Lake, automated monitor
      ACTION REQUIRED

      {{local_var.rowcount}} monitored entity(ies) that sent logs consistently for the last 7 days (active 151+ of the last 168 hours) produced zero events in the last hour. A continuous sender going silent usually means a broken collector, an agent or host outage, a network or firewall change, a license/quota stop, or a decommissioned asset.

      Source-level sources silent ({{local_var.src_count}})
      KV#+fSxkB&4zXQ6XLG*Z1jQL@}5^vGJpO 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
      Z461mW}muXGu+fyH0DQvO)pqqR5bW#lIZtDE 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 ^+3VsUf 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%0DeCawd{i_YOfzI&!ZQ*p8O}%&93qL? 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 literal 0 HcmV?d00001 diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_baseline_builder.workflow.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_baseline_builder.workflow.template.json index 533b177..daf387a 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_baseline_builder.workflow.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_baseline_builder.workflow.template.json @@ -1,6 +1,6 @@ { "name": "Ingest Health - Baseline Builder", - "description": "Daily per-device baseline rebuild over 168h. Each savelookup LRQ uses a POLL LOOP: launch -> capture id+forward-tag -> loop {poll(GET) -> if stepsCompleted = totalSteps break, else delay 5s and retry (cap 60)} -> next. Writes ingestHealthBaseline (now including per-(source, device, hod) sig_gib/sig_ev, computed over the same per-hod hourly samples as exp_*, so z-scores are no longer understated for diurnal devices) and ingestHealthSourceStats (kept for the watchdog and reference stats). Detections and dashboard read sigma from the per-hod baseline row. PENDING: validate on demo tenant. Bind 'SentinelOne SDL' (Bearer) on all http_request actions.", + "description": "Daily per-device baseline rebuild over 168h. Each savelookup LRQ uses a POLL LOOP: launch -> capture id+forward-tag -> loop {poll(GET) -> if stepsCompleted = totalSteps break, else delay 5s and retry (cap 60)} -> next. Writes ingestHealthBaseline (now including per-(source, device, hod) sig_gib/sig_ev, computed over the same per-hod hourly samples as exp_*, so z-scores are no longer understated for diurnal devices) and ingestHealthSourceStats (kept for the watchdog and reference stats). Detections and dashboard read sigma from the per-hod baseline row. Live-validated 2026-07-31 on the demo tenant: activated run completed in 60.5s (31 actions, both LRQ poll loops iterated, no errors) and wrote a 472-row baseline plus a 23-row source-stats table including the vendor column. Bind 'SentinelOne SDL' (Bearer) on all http_request actions.", "actions": [ { "action": { diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections.template.json index 10e68e2..b9519c4 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections.template.json @@ -1,5 +1,5 @@ { - "_comment": "Unified per-source/per-device STAR scheduled rules. POST each to /cloud-detection/rules; set {{SITE_ID}}. Tables ingestHealthBaseline / ingestHealthSourceStats must exist. Spike/Drop z-scores now read sig_gib/sig_ev from the per-(source, device, hod) ingestHealthBaseline row (same per-hod samples as exp_*), not the pooled per-device ingestHealthSourceStats sigma, which systematically understated z for diurnal devices. Requires the baseline builder that writes sig_* into ingestHealthBaseline. The Lag rule still gates on ingestHealthSourceStats (monitored-device check), which is unaffected. PENDING: validate on demo tenant (the lookup-dependent bodies were not syntax-validated read-only because they require the deployed lookup tables; the sigma-per-hod aggregation shape itself was live-validated 2026-07-29). Parser Drift ships separately (ingesthealth_detections_parser_drift_optional.template.json) and is OPTIONAL: needs per-environment tuning before enabling.", + "_comment": "Unified per-source/per-device STAR scheduled rules. POST each to /cloud-detection/rules at ACCOUNT scope: every body reads lookup tables (ingestHealthExclusions.csv, ingestHealthDeviceLevel.csv, ingestHealthBaseline, ingestHealthSourceStats), and lookup tables / datatables are ACCOUNT-level objects, so a rule whose body reads one can only be created with filter.accountIds (set {{ACCOUNT_ID}}); site-scoped creation of lookup-reading rules is invalid. Tables ingestHealthBaseline / ingestHealthSourceStats must exist. Spike/Drop z-scores now read sig_gib/sig_ev from the per-(source, device, hod) ingestHealthBaseline row (same per-hod samples as exp_*), not the pooled per-device ingestHealthSourceStats sigma, which systematically understated z for diurnal devices. Requires the baseline builder that writes sig_* into ingestHealthBaseline. The Lag rule still gates on ingestHealthSourceStats (monitored-device check), which is unaffected. PENDING: validate on demo tenant (the lookup-dependent bodies were not syntax-validated read-only because they require the deployed lookup tables; the sigma-per-hod aggregation shape itself was live-validated 2026-07-29). Parser Drift ships separately (ingesthealth_detections_parser_drift_optional.template.json) and is OPTIONAL: needs per-environment tuning before enabling.", "rules": [ { "data": { @@ -36,8 +36,8 @@ } }, "filter": { - "siteIds": [ - "{{SITE_ID}}" + "accountIds": [ + "{{ACCOUNT_ID}}" ] } }, @@ -76,8 +76,8 @@ } }, "filter": { - "siteIds": [ - "{{SITE_ID}}" + "accountIds": [ + "{{ACCOUNT_ID}}" ] } }, @@ -116,8 +116,8 @@ } }, "filter": { - "siteIds": [ - "{{SITE_ID}}" + "accountIds": [ + "{{ACCOUNT_ID}}" ] } } diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections_parser_drift_optional.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections_parser_drift_optional.template.json index bad0629..dcc002d 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections_parser_drift_optional.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_detections_parser_drift_optional.template.json @@ -33,8 +33,8 @@ } }, "filter": { - "siteIds": [ - "{{SITE_ID}}" + "accountIds": [ + "{{ACCOUNT_ID}}" ] } } diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_watchdog.workflow.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_watchdog.workflow.template.json index ee52dbd..afc60f1 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_watchdog.workflow.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ingesthealth_watchdog.workflow.template.json @@ -1 +1 @@ -{"name": "Ingest Health - Ingest Loss Watchdog", "description": "Hourly ingest-loss detector. Source level by default; device level for sources in ingestHealthDeviceLevel. Base = ingestHealthSourceStats minus ingestHealthExclusions (anti-joined on BOTH source name AND vendor, matching the live side; the vendor anti-join added 2026-07-29 requires the updated Baseline Builder that writes a vendor column into ingestHealthSourceStats, PENDING demo-tenant validation); live uses the same conditional device logic; anti-join finds silent entities. Email shows separate source-level and device-level tables with suggested steps. LRQ poll loop. Bind 'SentinelOne SDL' (Bearer).", "actions": [{"action": {"type": "scheduled_trigger", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Scheduled Trigger", "action_type": "scheduled_trigger", "schedule_method": "interval", "until": null, "max_runs": 1, "schedule_value": [{"schedule_method": "interval", "interval_unit": "hours", "interval_value": 1}], "start_at": "{{START_AT}}", "start_at_method": "date", "ends_on": "never"}, "state": "active", "description": "Hourly.", "client_data": {"position": {"x": 0, "y": 0}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 8, "connected_to": [{"target": 4, "custom_handle": null}], "parent_action": null}, {"action": {"type": "http_request", "tag": "integration", "connection_id": null, "connection_name": "", "use_connection_name": false, "integration_id": null, "data": {"name": "Find Silent Devices", "action_type": "http_request", "public_action_id": null, "method": "post", "url": "{{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries", "url_path": null, "url_prefix": null, "payload": "{\n \"queryType\": \"PQ\",\n \"tenant\": true,\n \"startTime\": \"{{Function.DELTA_NOW(1)}}\",\n \"endTime\": \"{{Function.DATETIME_NOW()}}\",\n \"queryPriority\": \"HIGH\",\n \"pq\": {\n \"query\": \"| left join base = (| dataset 'config://datatables/ingestHealthSourceStats' | filter active_hours >= 151 | lookup b_excl = reason from ingestHealthExclusions.csv by value =:anycase source | filter (b_excl = null) | lookup b_excl_v = reason from ingestHealthExclusions.csv by value =:anycase vendor | filter (b_excl_v = null) | lookup b_dfield = device_field from ingestHealthDeviceLevel.csv by source =:anycase source | let level = (b_dfield ? 'device' : 'source') | columns devkey, source, device, mean_ev, last_seen, active_hours, total_gib, level), live = (sca:bytesToCharge=* dataSource.name=* | lookup ih_excl_n = reason from ingestHealthExclusions.csv by value =:anycase dataSource.name | lookup ih_excl_v = reason from ingestHealthExclusions.csv by value =:anycase dataSource.vendor | filter (ih_excl_n = null and ih_excl_v = null) | lookup ih_dfield = device_field from ingestHealthDeviceLevel.csv by source =:anycase dataSource.name | let dpick = (ih_dfield == 'device.name' ? device.name : (ih_dfield == 'endpoint.name' ? endpoint.name : (ih_dfield == 'agent.uuid' ? agent.uuid : (ih_dfield == 'src_endpoint.hostname' ? src_endpoint.hostname : (ih_dfield == 'hostname' ? hostname : null))))) | let dauto = (device.name ? device.name : (endpoint.name ? endpoint.name : (agent.uuid ? agent.uuid : (src_endpoint.hostname ? src_endpoint.hostname : (hostname ? hostname : dataSource.name))))) | let device = (ih_dfield ? (dpick ? dpick : dauto) : dataSource.name) | group cur_events = count() by source = dataSource.name, device | let devkey = format('%s||%s', source, device) | columns devkey, cur_events) on devkey | filter !(cur_events = *) | columns devkey, source, device, mean_ev, active_hours, last_seen, total_gib, level | sort -mean_ev | limit 100\",\n \"resultType\": \"TABLE\"\n }\n}", "parameters": [], "retry_on_status_codes": [500], "ssl_verification": true, "timeout": 90, "headers": {"Content-Type": "application/json", "Accept": "application/json"}, "use_authentication_data": true, "use_proxy": false, "redirect_follow": true, "continue_on_fail": true, "body_type": "json"}, "state": "active", "description": "Launch async anti-join LRQ.", "client_data": {"position": {"x": 0, "y": 200}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 4, "connected_to": [{"target": 9, "custom_handle": null}], "parent_action": null}, {"action": {"type": "variable", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Set LRQ Refs", "action_type": "variable", "variables": [{"name": "query_id", "value": "{{find-silent-devices.body.id}}", "should_use_as_output": false, "is_secret": false}, {"name": "forward_tag", "value": "{{Function.JQ(find-silent-devices.headers, \"to_entries | map(select(.key|ascii_downcase==\\\"x-dataset-query-forward-tag\\\")) | .[0].value\", true)}}", "should_use_as_output": false, "is_secret": false}], "variables_scope": "local"}, "state": "active", "description": "Capture LRQ id + forward tag.", "client_data": {"position": {"x": 0, "y": 377}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 9, "connected_to": [{"target": 6, "custom_handle": null}], "parent_action": null}, {"action": {"type": "loop", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Poll Until Done", "action_type": "loop", "loop_type": "while", "number_of_iterations": "60", "object_to_iterate": "", "is_parallel": false}, "state": "active", "description": "Poll until stepsCompleted = totalSteps.", "client_data": {"position": {"x": -345, "y": 616}, "dimensions": {"width": 947, "height": 1350}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 6, "connected_to": [{"target": 5, "custom_handle": "inner"}], "parent_action": null}, {"action": {"type": "http_request", "tag": "integration", "connection_id": null, "connection_name": "", "use_connection_name": false, "integration_id": null, "data": {"name": "Poll Silent Devices", "action_type": "http_request", "public_action_id": null, "method": "get", "url": "{{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries/{{local_var.query_id}}?lastStepSeen=0", "url_path": null, "url_prefix": null, "payload": null, "parameters": [], "retry_on_status_codes": [500], "ssl_verification": true, "timeout": 90, "headers": {"Accept": "application/json", "X-Dataset-Query-Forward-Tag": "{{local_var.forward_tag}}"}, "use_authentication_data": true, "use_proxy": false, "redirect_follow": true, "continue_on_fail": true, "body_type": "json"}, "state": "active", "description": "Poll LRQ by id with forward-tag header (first inner action).", "client_data": {"position": {"x": 185, "y": 176}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 5, "connected_to": [{"target": 2, "custom_handle": null}], "parent_action": 6}, {"action": {"type": "condition", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Query Done", "action_type": "condition", "condition_type": "multi", "condition": null, "conditions": [{"input_value": "{{poll-silent-devices.body.stepsCompleted}}", "compared_value": "{{poll-silent-devices.body.totalSteps}}", "comparison_operator": "equals"}], "conditions_relationship": "and"}, "state": "active", "description": "Done when stepsCompleted = totalSteps (POLL body).", "client_data": {"position": {"x": 185, "y": 353}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 2, "connected_to": [{"target": 10, "custom_handle": "true"}, {"target": 7, "custom_handle": "false"}], "parent_action": 6}, {"action": {"type": "delay", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Retry Delay", "action_type": "delay", "time_unit": "seconds", "value": 5}, "state": "active", "description": "Wait, then re-poll (loop re-iterates).", "client_data": {"position": {"x": -135, "y": 530}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 7, "connected_to": [], "parent_action": 6}, {"action": {"type": "variable", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Set Row Count", "action_type": "variable", "variables": [{"name": "rowcount", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"length\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "src_count", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"source\\\"))|length\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "dev_count", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"device\\\"))|length\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "src_html", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"source\\\"))|map(\\\"
      \\\"+(.[1]//\\\"-\\\")+\\\"\\\"+((.[3]//0)|floor|tostring)+\\\"\\\"+((.[4]//0)|tostring)+\\\"\\\"+(if (.[6]//0) < 0.01 then \\\"<0.01\\\" else (((.[6]//0)*100|floor)/100|tostring) end)+\\\"
      \\\"+(.[1]//\\\"-\\\")+\\\"\\\"+(.[2]//\\\"-\\\")+\\\"\\\"+((.[3]//0)|floor|tostring)+\\\"\\\"+((.[4]//0)|tostring)+\\\"\\\"+(if (.[6]//0) < 0.01 then \\\"<0.01\\\" else (((.[6]//0)*100|floor)/100|tostring) end)+\\\"
      {{local_var.src_html}}
      SourceAvg events/hr (7d)Active hrs /1687d vol (GiB)

      {{local_var.dev_html}}
      SourceDeviceAvg events/hr (7d)Active hrs /1687d vol (GiB)
      1. Triage the highest avg events/hr first, they are the biggest blind spots.
      2. Confirm the source/device is not in maintenance or decommissioned. If it should be quiet, add it to ingestHealthExclusions (stop monitoring) or adjust ingestHealthDeviceLevel (granularity).
      3. Check the collector/agent: SentinelOne agent status, syslog forwarder, or cloud connector.
      4. Verify the network path: firewall egress and DNS to the SDL ingest endpoint.
      5. Check for recent parser edits, license or quota limits, or credential expiry.
      6. Confirm in the Ingest Health dashboard and watch the next hourly run.

      Baseline source: ingestHealthSourceStats (7-day hour-of-day model). Source level is the default; device level applies to sources in ingestHealthDeviceLevel. Automated SentinelOne Hyperautomation notification, please do not reply.

      ", "attachments": [], "continue_on_fail": false}, "state": "active", "description": "Notify.", "client_data": {"position": {"x": 595, "y": 931}, "dimensions": {"width": 256, "height": 120}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 3, "connected_to": [{"target": 1, "custom_handle": null}], "parent_action": 6}, {"action": {"type": "break_loop", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Break When Done", "action_type": "break_loop"}, "state": "active", "description": "Exit loop, query complete.", "client_data": {"position": {"x": 505, "y": 1152}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 1, "connected_to": [], "parent_action": 6}]} \ No newline at end of file +{"name": "Ingest Health - Ingest Loss Watchdog", "description": "Hourly ingest-loss detector. Source level by default; device level for sources in ingestHealthDeviceLevel. Base = ingestHealthSourceStats minus ingestHealthExclusions (anti-joined on BOTH source name AND vendor, matching the live side; the vendor anti-join added 2026-07-29 requires the updated Baseline Builder that writes a vendor column into ingestHealthSourceStats; run live-validated 2026-07-31: activated run completed error-free consuming that table, though the terminal email-vs-quiet branch is not observable via the execution API); live uses the same conditional device logic; anti-join finds silent entities. Email shows separate source-level and device-level tables with suggested steps. LRQ poll loop. Bind 'SentinelOne SDL' (Bearer).", "actions": [{"action": {"type": "scheduled_trigger", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Scheduled Trigger", "action_type": "scheduled_trigger", "schedule_method": "interval", "until": null, "max_runs": 1, "schedule_value": [{"schedule_method": "interval", "interval_unit": "hours", "interval_value": 1, "tz": "UTC"}], "start_at": "{{START_AT}}", "start_at_method": "date", "ends_on": "never"}, "state": "active", "description": "Hourly.", "client_data": {"position": {"x": 0, "y": 0}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 8, "connected_to": [{"target": 4, "custom_handle": null}], "parent_action": null}, {"action": {"type": "http_request", "tag": "integration", "connection_id": null, "connection_name": "", "use_connection_name": false, "integration_id": null, "data": {"name": "Find Silent Devices", "action_type": "http_request", "public_action_id": null, "method": "post", "url": "{{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries", "url_path": null, "url_prefix": null, "payload": "{\n \"queryType\": \"PQ\",\n \"tenant\": true,\n \"startTime\": \"{{Function.DELTA_NOW(1)}}\",\n \"endTime\": \"{{Function.DATETIME_NOW()}}\",\n \"queryPriority\": \"HIGH\",\n \"pq\": {\n \"query\": \"| left join base = (| dataset 'config://datatables/ingestHealthSourceStats' | filter active_hours >= 151 | lookup b_excl = reason from ingestHealthExclusions.csv by value =:anycase source | filter (b_excl = null) | lookup b_excl_v = reason from ingestHealthExclusions.csv by value =:anycase vendor | filter (b_excl_v = null) | lookup b_dfield = device_field from ingestHealthDeviceLevel.csv by source =:anycase source | let level = (b_dfield ? 'device' : 'source') | columns devkey, source, device, mean_ev, last_seen, active_hours, total_gib, level), live = (sca:bytesToCharge=* dataSource.name=* | lookup ih_excl_n = reason from ingestHealthExclusions.csv by value =:anycase dataSource.name | lookup ih_excl_v = reason from ingestHealthExclusions.csv by value =:anycase dataSource.vendor | filter (ih_excl_n = null and ih_excl_v = null) | lookup ih_dfield = device_field from ingestHealthDeviceLevel.csv by source =:anycase dataSource.name | let dpick = (ih_dfield == 'device.name' ? device.name : (ih_dfield == 'endpoint.name' ? endpoint.name : (ih_dfield == 'agent.uuid' ? agent.uuid : (ih_dfield == 'src_endpoint.hostname' ? src_endpoint.hostname : (ih_dfield == 'hostname' ? hostname : null))))) | let dauto = (device.name ? device.name : (endpoint.name ? endpoint.name : (agent.uuid ? agent.uuid : (src_endpoint.hostname ? src_endpoint.hostname : (hostname ? hostname : dataSource.name))))) | let device = (ih_dfield ? (dpick ? dpick : dauto) : dataSource.name) | group cur_events = count() by source = dataSource.name, device | let devkey = format('%s||%s', source, device) | columns devkey, cur_events) on devkey | filter !(cur_events = *) | columns devkey, source, device, mean_ev, active_hours, last_seen, total_gib, level | sort -mean_ev | limit 100\",\n \"resultType\": \"TABLE\"\n }\n}", "parameters": [], "retry_on_status_codes": [500], "ssl_verification": true, "timeout": 90, "headers": {"Content-Type": "application/json", "Accept": "application/json"}, "use_authentication_data": true, "use_proxy": false, "redirect_follow": true, "continue_on_fail": true, "body_type": "json"}, "state": "active", "description": "Launch async anti-join LRQ.", "client_data": {"position": {"x": 0, "y": 200}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 4, "connected_to": [{"target": 9, "custom_handle": null}], "parent_action": null}, {"action": {"type": "variable", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Set LRQ Refs", "action_type": "variable", "variables": [{"name": "query_id", "value": "{{find-silent-devices.body.id}}", "should_use_as_output": false, "is_secret": false}, {"name": "forward_tag", "value": "{{Function.JQ(find-silent-devices.headers, \"to_entries | map(select(.key|ascii_downcase==\\\"x-dataset-query-forward-tag\\\")) | .[0].value\", true)}}", "should_use_as_output": false, "is_secret": false}], "variables_scope": "local"}, "state": "active", "description": "Capture LRQ id + forward tag.", "client_data": {"position": {"x": 0, "y": 377}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 9, "connected_to": [{"target": 6, "custom_handle": null}], "parent_action": null}, {"action": {"type": "loop", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Poll Until Done", "action_type": "loop", "loop_type": "while", "number_of_iterations": "60", "object_to_iterate": "", "is_parallel": false}, "state": "active", "description": "Poll until stepsCompleted = totalSteps.", "client_data": {"position": {"x": -345, "y": 616}, "dimensions": {"width": 947, "height": 1350}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 6, "connected_to": [{"target": 5, "custom_handle": "inner"}], "parent_action": null}, {"action": {"type": "http_request", "tag": "integration", "connection_id": null, "connection_name": "", "use_connection_name": false, "integration_id": null, "data": {"name": "Poll Silent Devices", "action_type": "http_request", "public_action_id": null, "method": "get", "url": "{{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries/{{local_var.query_id}}?lastStepSeen=0", "url_path": null, "url_prefix": null, "payload": null, "parameters": [], "retry_on_status_codes": [500], "ssl_verification": true, "timeout": 90, "headers": {"Accept": "application/json", "X-Dataset-Query-Forward-Tag": "{{local_var.forward_tag}}"}, "use_authentication_data": true, "use_proxy": false, "redirect_follow": true, "continue_on_fail": true, "body_type": "json"}, "state": "active", "description": "Poll LRQ by id with forward-tag header (first inner action).", "client_data": {"position": {"x": 185, "y": 176}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 5, "connected_to": [{"target": 2, "custom_handle": null}], "parent_action": 6}, {"action": {"type": "condition", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Query Done", "action_type": "condition", "condition_type": "multi", "condition": null, "conditions": [{"input_value": "{{poll-silent-devices.body.stepsCompleted}}", "compared_value": "{{poll-silent-devices.body.totalSteps}}", "comparison_operator": "equals"}], "conditions_relationship": "and"}, "state": "active", "description": "Done when stepsCompleted = totalSteps (POLL body).", "client_data": {"position": {"x": 185, "y": 353}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 2, "connected_to": [{"target": 10, "custom_handle": "true"}, {"target": 7, "custom_handle": "false"}], "parent_action": 6}, {"action": {"type": "delay", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Retry Delay", "action_type": "delay", "time_unit": "seconds", "value": 5}, "state": "active", "description": "Wait, then re-poll (loop re-iterates).", "client_data": {"position": {"x": -135, "y": 530}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 7, "connected_to": [], "parent_action": 6}, {"action": {"type": "variable", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Set Row Count", "action_type": "variable", "variables": [{"name": "rowcount", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"length\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "src_count", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"source\\\"))|length\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "dev_count", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"device\\\"))|length\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "src_html", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"source\\\"))|map(\\\"\\\"+(.[1]//\\\"-\\\")+\\\"\\\"+((.[3]//0)|floor|tostring)+\\\"\\\"+((.[4]//0)|tostring)+\\\"\\\"+(if (.[6]//0) < 0.01 then \\\"<0.01\\\" else (((.[6]//0)*100|floor)/100|tostring) end)+\\\"\\\")|join(\\\"\\\")\", true)}}", "should_use_as_output": false, "is_secret": false}, {"name": "dev_html", "value": "{{Function.JQ(poll-silent-devices.body.data.values, \"map(select(.[7]==\\\"device\\\"))|map(\\\"\\\"+(.[1]//\\\"-\\\")+\\\"\\\"+(.[2]//\\\"-\\\")+\\\"\\\"+((.[3]//0)|floor|tostring)+\\\"\\\"+((.[4]//0)|tostring)+\\\"\\\"+(if (.[6]//0) < 0.01 then \\\"<0.01\\\" else (((.[6]//0)*100|floor)/100|tostring) end)+\\\"\\\")|join(\\\"\\\")\", true)}}", "should_use_as_output": false, "is_secret": false}], "variables_scope": "local"}, "state": "active", "description": "Count result rows from poll.", "client_data": {"position": {"x": 505, "y": 530}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 10, "connected_to": [{"target": 0, "custom_handle": null}], "parent_action": 6}, {"action": {"type": "condition", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Any Silent Devices", "action_type": "condition", "condition_type": "multi", "condition": null, "conditions": [{"input_value": "{{local_var.rowcount}}", "compared_value": "0", "comparison_operator": "greater_than"}], "conditions_relationship": "and"}, "state": "active", "description": "Email if any silent.", "client_data": {"position": {"x": 505, "y": 730}, "dimensions": {"width": 256, "height": 100}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 0, "connected_to": [{"target": 3, "custom_handle": "true"}, {"target": 1, "custom_handle": "false"}], "parent_action": 6}, {"action": {"type": "send_email", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Email Silent Devices", "action_type": "send_email", "subject": "[SentinelOne] Ingest Health: monitored sources/devices stopped sending logs (last hour)", "to": ["{{NOTIFY_EMAIL}}"], "cc": [], "bcc": [], "reply_to": [], "mime_type": "text/html", "body": "
      Ingest Health alert: ingest loss
      SentinelOne Singularity Data Lake, automated monitor
      ACTION REQUIRED

      {{local_var.rowcount}} monitored entity(ies) that sent logs consistently for the last 7 days (active 151+ of the last 168 hours) produced zero events in the last hour. A continuous sender going silent usually means a broken collector, an agent or host outage, a network or firewall change, a license/quota stop, or a decommissioned asset.

      Source-level sources silent ({{local_var.src_count}})
      {{local_var.src_html}}
      SourceAvg events/hr (7d)Active hrs /1687d vol (GiB)
      Device-level devices silent ({{local_var.dev_count}})
      {{local_var.dev_html}}
      SourceDeviceAvg events/hr (7d)Active hrs /1687d vol (GiB)
      Suggested steps
      1. Triage the highest avg events/hr first, they are the biggest blind spots.
      2. Confirm the source/device is not in maintenance or decommissioned. If it should be quiet, add it to ingestHealthExclusions (stop monitoring) or adjust ingestHealthDeviceLevel (granularity).
      3. Check the collector/agent: SentinelOne agent status, syslog forwarder, or cloud connector.
      4. Verify the network path: firewall egress and DNS to the SDL ingest endpoint.
      5. Check for recent parser edits, license or quota limits, or credential expiry.
      6. Confirm in the Ingest Health dashboard and watch the next hourly run.

      Baseline source: ingestHealthSourceStats (7-day hour-of-day model). Source level is the default; device level applies to sources in ingestHealthDeviceLevel. Automated SentinelOne Hyperautomation notification, please do not reply.

      ", "attachments": [], "continue_on_fail": false}, "state": "active", "description": "Notify.", "client_data": {"position": {"x": 595, "y": 931}, "dimensions": {"width": 256, "height": 120}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 3, "connected_to": [{"target": 1, "custom_handle": null}], "parent_action": 6}, {"action": {"type": "break_loop", "tag": "core_action", "connection_id": null, "connection_name": null, "use_connection_name": false, "integration_id": null, "data": {"name": "Break When Done", "action_type": "break_loop"}, "state": "active", "description": "Exit loop, query complete.", "client_data": {"position": {"x": 505, "y": 1152}, "dimensions": {"width": 256, "height": 76}, "collapsed": false}, "snippet_workflow_id": null, "snippet_version_id": null}, "export_id": 1, "connected_to": [], "parent_action": 6}]} \ No newline at end of file diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/onboarding_detection.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/onboarding_detection.template.json index 6a5b69c..05237bd 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/onboarding_detection.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/onboarding_detection.template.json @@ -1,5 +1,5 @@ { - "_comment": "STAR scheduled PowerQuery detection rule for an onboarded source. POST to /web/api/v2.1/cloud-detection/rules. queryType MUST be scheduled and queryLang MUST be 2.0 for a PowerQuery body. treatAsThreat is UNDEFINED and networkQuarantine false because inline mitigation is not supported on scheduled rules (drive mitigation from a Hyperautomation flow off the alert). Keep aggregation inside group. The PQ body MUST end with an explicit '| columns ...' that projects the metric, the key OCSF/vendor fields, AND the enriched device_*/user_* context (lookup after group), so the alert carries asset context and there are named columns for entityMappings to map. 'entityMappings' maps output columns to security entities and is CAPPED AT 3 ENTRIES (a 4th returns 400 'Longer than maximum length 3'); pick the 3 highest-value identity/asset columns (e.g. device_host, src_ip, dst_ip). 'coolOffSettings.renotifyMinutes' is the re-notify suppression per entity: tie it to severity and the run cadence, do NOT default to 24h (that masks an ongoing threat for a day). Suggested: High active-threat rules ~60 (re-notify each cycle), Medium recon/anomaly ~240. Scope via filter.accountIds or filter.siteIds. New rules land Disabled; enable with PUT /cloud-detection/rules/enable (rules show 'Activating' then become Active within ~1 hour).", + "_comment": "STAR scheduled PowerQuery detection rule for an onboarded source. POST to /web/api/v2.1/cloud-detection/rules. queryType MUST be scheduled and queryLang MUST be 2.0 for a PowerQuery body. treatAsThreat is UNDEFINED and networkQuarantine false because inline mitigation is not supported on scheduled rules (drive mitigation from a Hyperautomation flow off the alert). Keep aggregation inside group. The PQ body MUST end with an explicit '| columns ...' that projects the metric, the key OCSF/vendor fields, AND the enriched device_*/user_* context (lookup after group), so the alert carries asset context and there are named columns for entityMappings to map. 'entityMappings' maps output columns to security entities and is CAPPED AT 3 ENTRIES (a 4th returns 400 'Longer than maximum length 3'); pick the 3 highest-value identity/asset columns (e.g. device_host, src_ip, dst_ip). 'coolOffSettings.renotifyMinutes' is the re-notify suppression per entity: tie it to severity and the run cadence, do NOT default to 24h (that masks an ongoing threat for a day). Suggested: High active-threat rules ~60 (re-notify each cycle), Medium recon/anomaly ~240. Scope: if the body reads ANY lookup table or datatable (the recommended device_*/user_* enrichment lookup does), the rule can only be created at ACCOUNT scope ({{SCOPE_KEY}} = accountIds); lookup tables / datatables are account-level objects and site-scoped creation of lookup-reading rules is invalid. filter.siteIds is valid only for bodies that read no lookup. New rules land Disabled; enable with PUT /cloud-detection/rules/enable (rules show 'Activating' then become Active within ~1 hour).", "data": { "name": "{{PREFIX}} - {{DETECTION_NAME}}", "description": "{{DETECTION_DESCRIPTION}} MITRE ATT&CK: {{MITRE_TACTIC}} / {{MITRE_TECHNIQUE}}.", diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/README.md b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/README.md index 0fb69cc..ccc73f5 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/README.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/README.md @@ -15,7 +15,7 @@ is not an issue. ```bash cd rba_console python3 server.py -# then open http://localhost:8787 (use the localhost URL, NOT file:// — file:// has no proxy) +# then open http://localhost:8787 (use the localhost URL, NOT file://, file:// has no proxy) ``` Ctrl-C to stop. Override the port with `RBA_PORT=9000 python3 server.py`. diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/index.html b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/index.html index c8b6682..cb9bab3 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/index.html +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/index.html @@ -3,7 +3,7 @@ -RBA Console — SentinelOne +SentinelOne RBA Console +
      @@ -144,7 +149,7 @@

      Projected impact Projected impact `
      ${n??'—'}
      ${l} (24h)
      `).join(''); + .map(([l,n])=>`
      ${n??'n/a'}
      ${l} (24h)
      `).join(''); const max=Math.max(...rows.map(r=>+r.score||0),1); $('#leader').innerHTML=``+ rows.map(r=>{const t=(r.risk_object_type||'').toLowerCase();const fires=(t==='host'&&+r.score>=40)||(t==='user'&&+r.score>=50); diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/server.py b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/server.py index e04b6a9..61f1d63 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/server.py +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_console/server.py @@ -9,7 +9,7 @@ Run: python3 server.py Then open http://localhost:8787 in your browser. """ -import json, os, urllib.request, urllib.error, http.server, socketserver, pathlib, sys +import json, os, secrets, urllib.request, urllib.error, http.server, socketserver, pathlib, sys HERE = pathlib.Path(__file__).resolve().parent CONFIG = os.path.expanduser("~/Library/Application Support/Claude/claude_desktop_config.json") @@ -18,6 +18,12 @@ # The proxy injects a credentialed SDL Bearer, so a wildcard CORS policy would let any # site open in the browser drive SDL writes. Same-origin only; no cross-origin exposure. ALLOWED_ORIGINS = {f"http://localhost:{PORT}", f"http://127.0.0.1:{PORT}"} +# Second guard: the origin check alone still admits Origin-less requests (curl, +# any local process), which could otherwise drive /api/putFile with the +# config-write key. A per-session token is minted at startup, injected into the +# served HTML, and must be echoed back by the frontend as the X-RBA-Token +# header on every /api/ POST. +SESSION_TOKEN = secrets.token_hex(16) try: env = json.load(open(CONFIG))["mcpServers"]["sentinelone-mcp"]["env"] @@ -75,7 +81,11 @@ def do_GET(self): p = self.path.split("?")[0] if p in ("/", "/index.html"): try: - self._send(200, (HERE / "index.html").read_bytes(), "text/html; charset=utf-8") + html = (HERE / "index.html").read_text(encoding="utf-8") + # Inject the per-session API token so the frontend can echo it + # back as X-RBA-Token on /api/ POSTs (see do_POST). + html = html.replace("__RBA_SESSION_TOKEN__", SESSION_TOKEN) + self._send(200, html, "text/html; charset=utf-8") except Exception as e: self._send(500, f"cannot read index.html: {e}", "text/plain") else: @@ -86,6 +96,14 @@ def do_POST(self): if origin and origin not in ALLOWED_ORIGINS: self._send(403, json.dumps({"error": "cross-origin request rejected"})) return + # Per-session token check on every /api/ POST: rejects Origin-less + # local clients that never loaded the UI. compare_digest keeps the + # comparison constant-time. + if self.path.startswith("/api/"): + token = self.headers.get("X-RBA-Token") or "" + if not secrets.compare_digest(token, SESSION_TOKEN): + self._send(403, json.dumps({"error": "missing or invalid X-RBA-Token"})) + return n = int(self.headers.get("Content-Length", 0) or 0) raw = self.rfile.read(n) if n else b"{}" try: diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_risk_register.savelookup.pq b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_risk_register.savelookup.pq index 6b977d4..3e78ab8 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_risk_register.savelookup.pq +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/rba_risk_register.savelookup.pq @@ -17,9 +17,11 @@ // `union` is only valid as the FIRST command of a PowerQuery; a mid-pipeline `| union (subquery)` // returns HTTP 400 (live-verified 2026-07-29). The union-first skeleton of this body (two // subqueries -> group by key -> sort/limit) was validated read-only against dataSource.name='alert' -// on 2026-07-29; the `| dataset` read of the register inside a union subquery and the savelookup -// overwrite are PENDING: validate on demo tenant (they depend on a deployed register table and a -// write, neither of which the read-only validation covered). +// on 2026-07-29. The `| dataset` read of the register inside a union subquery, the savelookup +// overwrite, and the decay-and-merge mechanics were live-validated on the demo tenant 2026-07-31 +// over 5 consecutive cycles against real dataSource.name='risk' data: merge (decayed prior + fresh +// window) exact per entity, quiet entities retained with exact x{{DECAY}} decay over two empty +// windows, and the >= 0.5 prune working. Multi-day cadence behavior still needs calendar time. // // Tokens: {{PREFIX}} (register name), {{DECAY}} (0.9 ~= one-week half-life; lower = shorter memory). // Cadence must match the window: this body sums the last 24h, so run it once per day. @@ -27,9 +29,18 @@ // tune the floor to taste (it only drops entities whose score has decayed to noise). // // Bootstrap: on the very first run the register does not exist yet, so the `| dataset` subquery -// has nothing to read (and may error on a non-existent table). Seed it once by running ONLY -// subquery A's body followed by `| limit 100000 | savelookup '{{PREFIX}}RiskRegister'` (writes -// today's scores as the initial register), then switch to the full union body below. +// has nothing to read (and may error on a non-existent table). Seed it once with the query below, +// then switch to the full union body. The seed MUST emit the same column shape the full body +// writes, in particular the score column must be named risk_score_total: subquery B decays +// `number(risk_score_total)`, so a seed that writes `part_score` (the old instruction) makes the +// first full run read a missing column as 0 and silently wipe all seeded state (live-proven +// 2026-07-31: quiet entities pruned at 0 < 0.5, active entities restarted at window-only scores). +// +// dataSource.name='risk' risk_object=* +// | group risk_score_total = sum(number(risk_score)), tactics_today = estimate_distinct(mitre_tactic), last_seen = newest(timestamp) by risk_object, risk_object_type +// | columns factor_key = risk_object, risk_object_type, risk_score_total, tactics_today, last_seen +// | limit 100000 +// | savelookup '{{PREFIX}}RiskRegister' // // Read it back for a persistent leaderboard with: from {{PREFIX}}RiskRegister ... (dashboard // panel or | lookup), or query the savelookup like any datatable. diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_baseline_savelookup.pq b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_baseline_savelookup.pq index 2e48fea..e0a2388 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_baseline_savelookup.pq +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_baseline_savelookup.pq @@ -12,9 +12,19 @@ // then persists the result as the lookup table {{BASELINE_TABLE}} that the // detection rule and dashboard join against. // -// Pairs with < 2 active days (stddev undefined) or stddev == 0 (perfectly flat, -// z would be infinite) are dropped. Top {{TOPK}} pairs by baseline_avg are kept -// so the table stays under the 150 MB datatable cap on high-cardinality sources. +// Pairs with < 2 active days (stddev undefined) are dropped: with under 2 days of +// history the pair is genuinely "new" and belongs in the NEW-BEHAVIOR panel. Pairs +// with FLAT history (stddev 0, e.g. a service account or scheduled job emitting the +// same count every day) are KEPT and marked is_constant = 1: a perfectly regular +// pair is the strongest baseline there is, and dropping it (the pre-2026-08 design) +// misclassified a spike on it as new-behavior and never flagged a silence. The +// detection rule and dashboard score any deviation from a constant as sentinel +// z = 999 (above) / -999 (below), and an exact match as 0, so no division by the +// zero stddev ever happens (see ueba_detection.template.json). Ported from the +// proven fix in sentinelone-mgmt-console-api/scripts/baseline_anomaly.py +// (2026-07-29); build query shape live-validated read-only on 'Okta' 2026-08-01. +// Top {{TOPK}} pairs by baseline_avg are kept so the table stays under the +// 150 MB datatable cap on high-cardinality sources. // // Run through the sentinelone-powerquery LRQ runner over the baseline window // (startTime = now - {{BASELINE_HOURS}}h, endTime = now). @@ -45,7 +55,8 @@ dataSource.name = '{{SOURCE}}' {{NOISE_FILTER}} | let dmin = overall_min(day), dmax = overall_max(day) | filter day > dmin AND day < dmax | group baseline_avg = avg(day_count), baseline_stddev = stddev(day_count), n_days = count() by action_v, principal_v -| filter n_days >= 2 AND baseline_stddev > 0 +| filter n_days >= 2 +| let is_constant = (baseline_stddev > 0 ? 0 : 1) | sort -baseline_avg | limit {{TOPK}} | savelookup '{{BASELINE_TABLE}}' diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_dashboard.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_dashboard.template.json index ae1a264..432fd12 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_dashboard.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_dashboard.template.json @@ -1,5 +1,5 @@ { - "_comment": "UEBA anomaly dashboard for the ueba-anomaly-detection solution. Deploy with sdl_put_file to /dashboards/{{PREFIX}} {{SOURCE}} Anomalies. Panels join the live window against the baseline lookup {{BASELINE_TABLE}} (built by ueba_baseline_savelookup.pq) and compute z = (live - baseline_avg) / baseline_stddev, mirroring the detection rule. RENDERING RULES (validated S-26.1, learned the hard way): (1) ARITHMETIC needs spaces around every operator inside `let`: write `(live_count - baseline_avg) / baseline_stddev`, NOT `(live_count-baseline_avg)/baseline_stddev`, the unspaced form fails the whole panel with 'Couldn't load content: Identifier live_count-baseline_avg is ambiguous'. (2) MARKDOWN panel needs a PLAIN-TEXT `title` (no title key renders 'Untitled'); put prose only in `markdown`, do not repeat the title as a `##` heading. (3) NUMBER panels: do NOT set a `suffix` that repeats the unit already in the title (title 'Active principals' + suffix ' principals' reads '34 principals'). (4) Number panels end with `| limit 1`. Replace {{TOKENS}} with the discovered fields and rendered table name.", + "_comment": "UEBA anomaly dashboard for the ueba-anomaly-detection solution. Deploy with sdl_put_file to /dashboards/{{PREFIX}} {{SOURCE}} Anomalies. Panels join the live window against the baseline lookup {{BASELINE_TABLE}} (built by ueba_baseline_savelookup.pq) and compute the same FAILSAFE z as the detection rule: pairs with sd > 0 use z = (live_count - baseline_avg) / sd; flat-history pairs (is_constant = 1, stddev 0, kept by the baseline build) score any deviation from their constant as sentinel z = 999 (above) / -999 (below) and an exact match as 0, so the zero stddev is never divided by. number(baseline_stddev) guards string-typed columns. RENDERING RULES (validated S-26.1, learned the hard way): (1) ARITHMETIC needs spaces around every operator inside `let`: write `(live_count - baseline_avg) / baseline_stddev`, NOT `(live_count-baseline_avg)/baseline_stddev`, the unspaced form fails the whole panel with 'Couldn't load content: Identifier live_count-baseline_avg is ambiguous'. (2) MARKDOWN panel needs a PLAIN-TEXT `title` (no title key renders 'Untitled'); put prose only in `markdown`, do not repeat the title as a `##` heading. (3) NUMBER panels: do NOT set a `suffix` that repeats the unit already in the title (title 'Active principals' + suffix ' principals' reads '34 principals'). (4) Number panels end with `| limit 1`. Replace {{TOKENS}} with the discovered fields and rendered table name.", "configType": "TABBED", "duration": "24h", "description": "UEBA behavioral anomaly view for {{SOURCE}}. principal={{PRINCIPAL}} action={{ACTION}} baseline={{BASELINE_TABLE}} (|z| >= {{Z_HARD}}).", @@ -10,20 +10,20 @@ { "graphStyle": "markdown", "title": "{{SOURCE}}: UEBA Behavioral Anomalies", - "markdown": "Live 24h volume per **(action, principal)** scored against the {{BASELINE_DAYS}}-day baseline `{{BASELINE_TABLE}}`. **SPIKE / DROP** = `|z| >= {{Z_HARD}}` standard deviations from normal. **New-behavior** = a pair active now with no baseline row. Caveat: pairs with FLAT history (stddev 0) or under 2 active days are excluded from the baseline build, so they also land in New-behavior even though they are not strictly new (PENDING deeper fix on demo tenant). The 24h window matches the baseline unit. principal = `{{PRINCIPAL}}`, action = `{{ACTION}}`.", + "markdown": "Live 24h volume per **(action, principal)** scored against the {{BASELINE_DAYS}}-day baseline `{{BASELINE_TABLE}}`. **SPIKE / DROP** = `|z| >= {{Z_HARD}}` standard deviations from normal. Pairs with FLAT history (stddev 0) are baselined with `is_constant = 1`: any live deviation from their constant scores sentinel `z = 999` (SPIKE) or `z = -999` (DROP), an exact match scores 0. **New-behavior** = a pair active now with no baseline row, meaning genuinely new or under 2 active days of history (too little to baseline). The 24h window matches the baseline unit. principal = `{{PRINCIPAL}}`, action = `{{ACTION}}`.", "layout": { "w": 60, "h": 4, "x": 0, "y": 0 } }, { "graphStyle": "number", "title": "Anomalies (|z| >= {{Z_HARD}})", - "query": "dataSource.name='{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}}=* AND {{ACTION}}=* | group live_count=count() by action_v={{ACTION}}, principal_v={{PRINCIPAL}} | lookup baseline_avg=baseline_avg, baseline_stddev=baseline_stddev from {{BASELINE_TABLE}} by action_v=action_v, principal_v=principal_v | filter baseline_avg=* | let z = (live_count - baseline_avg) / baseline_stddev | filter z >= {{Z_HARD}} OR z <= -{{Z_HARD}} | group n=count() | limit 1", + "query": "dataSource.name='{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}}=* AND {{ACTION}}=* | group live_count=count() by action_v={{ACTION}}, principal_v={{PRINCIPAL}} | lookup baseline_avg=baseline_avg, baseline_stddev=baseline_stddev from {{BASELINE_TABLE}} by action_v=action_v, principal_v=principal_v | filter baseline_avg=* | let sd = number(baseline_stddev) | let z = (sd > 0 ? (live_count - baseline_avg) / sd : (live_count == baseline_avg ? 0 : (live_count > baseline_avg ? 999 : -999))) | filter z >= {{Z_HARD}} OR z <= -{{Z_HARD}} | group n=count() | limit 1", "options": { "format": "commas", "precision": "0" }, "layout": { "w": 20, "h": 8, "x": 0, "y": 4 } }, { "graphStyle": "number", "title": "New-behavior pairs (no baseline)", - "description": "Includes pairs excluded from the baseline build: flat history (stddev 0) or under 2 active days. Not all rows here are strictly new. PENDING deeper fix on demo tenant.", + "description": "Pairs active now with no baseline row: genuinely new, or under 2 active days of history (too little to baseline). Flat-history (stddev 0) pairs are baselined with is_constant = 1 and scored by the anomaly panels, not listed here.", "query": "dataSource.name='{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}}=* AND {{ACTION}}=* | group live_count=count() by action_v={{ACTION}}, principal_v={{PRINCIPAL}} | lookup baseline_avg=baseline_avg from {{BASELINE_TABLE}} by action_v=action_v, principal_v=principal_v | filter !(baseline_avg=*) | group n=count() | limit 1", "options": { "format": "commas", "precision": "0" }, "layout": { "w": 20, "h": 8, "x": 20, "y": 4 } @@ -54,13 +54,13 @@ { "graphStyle": "table", "title": "Top SPIKE / DROP anomalies (by |z|)", - "query": "dataSource.name='{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}}=* AND {{ACTION}}=* | group live_count=count() by action_v={{ACTION}}, principal_v={{PRINCIPAL}} | lookup baseline_avg=baseline_avg, baseline_stddev=baseline_stddev from {{BASELINE_TABLE}} by action_v=action_v, principal_v=principal_v | filter baseline_avg=* | let z = (live_count - baseline_avg) / baseline_stddev | let az = abs(z) | filter az >= {{Z_HARD}} | let direction = (z >= 0 ? 'SPIKE' : 'DROP') | sort -az | columns principal_v, action_v, live_count, baseline_avg, baseline_stddev, z, direction | limit 50", + "query": "dataSource.name='{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}}=* AND {{ACTION}}=* | group live_count=count() by action_v={{ACTION}}, principal_v={{PRINCIPAL}} | lookup baseline_avg=baseline_avg, baseline_stddev=baseline_stddev, is_constant=is_constant from {{BASELINE_TABLE}} by action_v=action_v, principal_v=principal_v | filter baseline_avg=* | let sd = number(baseline_stddev) | let z = (sd > 0 ? (live_count - baseline_avg) / sd : (live_count == baseline_avg ? 0 : (live_count > baseline_avg ? 999 : -999))) | let az = abs(z) | filter az >= {{Z_HARD}} | let direction = (z >= 0 ? 'SPIKE' : 'DROP') | sort -az | columns principal_v, action_v, live_count, baseline_avg, baseline_stddev, is_constant, z, direction | limit 50", "layout": { "w": 60, "h": 14, "x": 0, "y": 24 } }, { "graphStyle": "table", "title": "New-behavior (active now, no baseline)", - "description": "Includes pairs excluded from the baseline build: flat history (stddev 0) or under 2 active days. Not all rows here are strictly new. PENDING deeper fix on demo tenant.", + "description": "Pairs active now with no baseline row: genuinely new, or under 2 active days of history (too little to baseline). Flat-history (stddev 0) pairs are baselined with is_constant = 1 and scored by the anomaly panels, not listed here.", "query": "dataSource.name='{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}}=* AND {{ACTION}}=* | group live_count=count() by action_v={{ACTION}}, principal_v={{PRINCIPAL}} | lookup baseline_avg=baseline_avg from {{BASELINE_TABLE}} by action_v=action_v, principal_v=principal_v | filter !(baseline_avg=*) | sort -live_count | columns principal_v, action_v, live_count | limit 50", "layout": { "w": 30, "h": 14, "x": 0, "y": 38 } }, diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_detection.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_detection.template.json index 78275df..776810d 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_detection.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_detection.template.json @@ -1,8 +1,8 @@ { - "_comment": "UEBA z-score anomaly detection rule for the ueba-anomaly-detection solution. STAR scheduled PowerQuery rule. POST to /web/api/v2.1/cloud-detection/rules. queryType MUST be scheduled and queryLang MUST be 2.0; treatAsThreat UNDEFINED and networkQuarantine false (scheduled rules do not mitigate). The body counts the live window per (action_v, principal_v), JOINS the persisted baseline lookup {{BASELINE_TABLE}} built by ueba_baseline_savelookup.pq, computes z = (live - baseline_avg)/baseline_stddev, and keeps |z| >= {{Z_HARD}}. CADENCE MUST MATCH THE BASELINE UNIT: the baseline is per-DAY counts, so runIntervalMinutes and lookbackWindowMinutes are 1440 (24h) so the live count is one day vs the daily baseline. 'filter baseline_avg = *' drops pairs with no baseline (those are NEW-BEHAVIOR; surface them with the new-behavior variant in the playbook). entityMappings binds the UEBA principal (principal_v) as the alert entity (cap 3). alertPerRow true raises one bound alert per anomalous principal; at the z>=3 hard tier this is low-volume. renotifyMinutes 1440 suppresses re-alert within a day per entity. Tenant-validated body on 'Okta' (usea1-purple / pmoses demo, 2026-06-18): returned 7 SPIKE/DROP anomalies (z -7.51..+7.42), identical to the engine's client-side detection. Rule lands Disabled; enable with PUT /web/api/v2.1/cloud-detection/rules/enable.", + "_comment": "UEBA z-score anomaly detection rule for the ueba-anomaly-detection solution. STAR scheduled PowerQuery rule. POST to /web/api/v2.1/cloud-detection/rules. SCOPE IS ACCOUNT-ONLY: {{BASELINE_TABLE}} is a datatable, and lookup tables / datatables are ACCOUNT-level objects, so a rule whose body reads one can only be created at account scope. Set {{SCOPE_KEY}} = accountIds and {{SCOPE_ID}} = the account id; site-scoped creation of lookup-reading rules is invalid. queryType MUST be scheduled and queryLang MUST be 2.0; treatAsThreat UNDEFINED and networkQuarantine false (scheduled rules do not mitigate). The body counts the live window per (action_v, principal_v), JOINS the persisted baseline lookup {{BASELINE_TABLE}} built by ueba_baseline_savelookup.pq, and scores with a FAILSAFE z: normal pairs (sd > 0) use z = (live - baseline_avg) / sd unchanged; flat-history pairs (is_constant = 1, stddev 0, now KEPT by the baseline build) score any deviation from the constant as sentinel z = 999 (above) / -999 (below) and an exact match as 0, so the zero stddev is never divided by. number(baseline_stddev) guards string-typed columns. Keeps |z| >= {{Z_HARD}} (sentinels always pass). CADENCE MUST MATCH THE BASELINE UNIT: the baseline is per-DAY counts, so runIntervalMinutes and lookbackWindowMinutes are 1440 (24h) so the live count is one day vs the daily baseline. 'filter baseline_avg = *' drops pairs with no baseline row; after the flat-pair fix those are genuinely new or under 2 active days, i.e. true NEW-BEHAVIOR (surface them with the new-behavior variant in the playbook). entityMappings binds the UEBA principal (principal_v) as the alert entity (cap 3). alertPerRow true raises one bound alert per anomalous principal; at the z>=3 hard tier this is low-volume. renotifyMinutes 1440 suppresses re-alert within a day per entity. Pre-fix body tenant-validated on 'Okta' (usea1-purple / pmoses demo, 2026-06-18): returned 7 SPIKE/DROP anomalies (z -7.51..+7.42). Failsafe-z body live-validated read-only 2026-08-01 via LRQ: the exact pipeline shape (group, 4-column 2-key lookup from a real datatable, presence filter, number() cast, ternary z, direction, sort, columns, limit) ran end-to-end and returned 32 joined anomaly rows (z 5.0 to 114.7, sd>0 branch); all four z branches returned correct values over real events (normal branch over 203k Okta events; constant branches via a crafted flat baseline: 79 pairs z -999, 28 pairs z 0, 60 pairs z 999). No UEBA baseline datatable existed in that session, so the lookup against a real is_constant column is validated by construction; rule-engine acceptance of the changed body is not re-verified (no tenant writes). Rule lands Disabled; enable with PUT /web/api/v2.1/cloud-detection/rules/enable.", "data": { "name": "{{PREFIX}} - {{SOURCE}} behavioral anomaly (|z|>={{Z_HARD}})", - "description": "UEBA z-score anomaly detection on {{SOURCE}}. Flags (action, principal) pairs whose {{LIVE_LABEL}} volume deviates >= {{Z_HARD}} standard deviations from the {{BASELINE_DAYS}}-day behavioral baseline ({{BASELINE_TABLE}}). principal={{PRINCIPAL}} action={{ACTION}} strategy={{STRATIFY}}. MITRE ATT&CK: {{MITRE_TACTIC}} / {{MITRE_TECHNIQUE}}.", + "description": "UEBA z-score anomaly detection on {{SOURCE}}. Flags (action, principal) pairs whose {{LIVE_LABEL}} volume deviates >= {{Z_HARD}} standard deviations from the {{BASELINE_DAYS}}-day behavioral baseline ({{BASELINE_TABLE}}). Flat-history pairs (is_constant=1) score any deviation from their constant as sentinel z +/-999. principal={{PRINCIPAL}} action={{ACTION}} strategy={{STRATIFY}}. MITRE ATT&CK: {{MITRE_TACTIC}} / {{MITRE_TECHNIQUE}}.", "queryType": "scheduled", "queryLang": "2.0", "severity": "{{SEVERITY}}", @@ -15,7 +15,7 @@ { "columnName": "principal_v" } ], "scheduledParams": { - "query": "dataSource.name = '{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}} = * AND {{ACTION}} = * | group live_count = count() by action_v = {{ACTION}}, principal_v = {{PRINCIPAL}} | lookup baseline_avg = baseline_avg, baseline_stddev = baseline_stddev, n_days = n_days from {{BASELINE_TABLE}} by action_v = action_v, principal_v = principal_v | filter baseline_avg = * | let z = (live_count - baseline_avg) / baseline_stddev | filter z >= {{Z_HARD}} OR z <= -{{Z_HARD}} | let direction = (z >= 0 ? 'SPIKE' : 'DROP') | sort -z | columns principal_v, action_v, live_count, baseline_avg, baseline_stddev, z, direction | limit 100", + "query": "dataSource.name = '{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}} = * AND {{ACTION}} = * | group live_count = count() by action_v = {{ACTION}}, principal_v = {{PRINCIPAL}} | lookup baseline_avg = baseline_avg, baseline_stddev = baseline_stddev, n_days = n_days, is_constant = is_constant from {{BASELINE_TABLE}} by action_v = action_v, principal_v = principal_v | filter baseline_avg = * | let sd = number(baseline_stddev) | let z = (sd > 0 ? (live_count - baseline_avg) / sd : (live_count == baseline_avg ? 0 : (live_count > baseline_avg ? 999 : -999))) | filter z >= {{Z_HARD}} OR z <= -{{Z_HARD}} | let direction = (z >= 0 ? 'SPIKE' : 'DROP') | sort -z | columns principal_v, action_v, live_count, baseline_avg, baseline_stddev, is_constant, z, direction | limit 100", "runIntervalMinutes": 1440, "lookbackWindowMinutes": 1440, "alertPerRow": true, diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_refresh_workflow.template.json b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_refresh_workflow.template.json index c88b759..cb05fc7 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_refresh_workflow.template.json +++ b/plugins/s1-secops-skills/skills/sdl-solutions/assets/ueba_refresh_workflow.template.json @@ -84,7 +84,7 @@ "url": "{{Connection.protocol}}{{Connection.url}}/sdl/v2/api/queries", "url_path": null, "url_prefix": null, - "payload": "{\n \"queryType\": \"PQ\",\n \"tenant\": true,\n \"startTime\": \"{{Function.DELTA_NOW({{BASELINE_HOURS}})}}\",\n \"endTime\": \"{{Function.DATETIME_NOW()}}\",\n \"queryPriority\": \"HIGH\",\n \"pq\": {\n \"query\": \"dataSource.name = '{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}} = * AND {{ACTION}} = * | group day_count = count() by day = timebucket('1d'), action_v = {{ACTION}}, principal_v = {{PRINCIPAL}} | let dmin = overall_min(day), dmax = overall_max(day) | filter day > dmin AND day < dmax | group baseline_avg = avg(day_count), baseline_stddev = stddev(day_count), n_days = count() by action_v, principal_v | filter n_days >= 2 AND baseline_stddev > 0 | sort -baseline_avg | limit {{TOPK}} | savelookup '{{BASELINE_TABLE}}'\",\n \"resultType\": \"TABLE\"\n }\n}", + "payload": "{\n \"queryType\": \"PQ\",\n \"tenant\": true,\n \"startTime\": \"{{Function.DELTA_NOW({{BASELINE_HOURS}})}}\",\n \"endTime\": \"{{Function.DATETIME_NOW()}}\",\n \"queryPriority\": \"HIGH\",\n \"pq\": {\n \"query\": \"dataSource.name = '{{SOURCE}}' {{NOISE_FILTER}} | filter {{PRINCIPAL}} = * AND {{ACTION}} = * | group day_count = count() by day = timebucket('1d'), action_v = {{ACTION}}, principal_v = {{PRINCIPAL}} | let dmin = overall_min(day), dmax = overall_max(day) | filter day > dmin AND day < dmax | group baseline_avg = avg(day_count), baseline_stddev = stddev(day_count), n_days = count() by action_v, principal_v | filter n_days >= 2 | let is_constant = (baseline_stddev > 0 ? 0 : 1) | sort -baseline_avg | limit {{TOPK}} | savelookup '{{BASELINE_TABLE}}'\",\n \"resultType\": \"TABLE\"\n }\n}", "parameters": [], "retry_on_status_code": null, "retry_on_status_codes": [ diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/references/asset-enrichment.md b/plugins/s1-secops-skills/skills/sdl-solutions/references/asset-enrichment.md index cbd9fa5..daff089 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/references/asset-enrichment.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/references/asset-enrichment.md @@ -22,14 +22,14 @@ or the user volunteers a change. - **Required, single-select, the deployment mode:** "How do you want the enrichment applied, ingest time with a parser, query-time lookup, or an automatic lookup?" Always ask this; do not assume a default. The three modes: - - **Ingest time (parser)** — the context is stamped on every event at ingest by an SDL log parser. + - **Ingest time (parser)**: the context is stamped on every event at ingest by an SDL log parser. This **requires the parser to be deployed in AI SIEM (Singularity Data Lake)**. Once deployed the context is always-on and queryable like any native field, and this is the only mode that lets STAR detections auto-map the asset, because the parser also stamps `device.uid` / `user.uid` + `class_uid` from the enriched ids. Best for always-on context on a source. - - **Lookup (query time)** — no parser; the analyst joins the lookup table at query or dashboard time + - **Lookup (query time)**: no parser; the analyst joins the lookup table at query or dashboard time with `| lookup`. Lean storage, nothing is written on the event, fields are chosen per query. - - **Auto lookup (automatic lookup)** — a tenant-wide automatic lookup applied at query time, for small + - **Auto lookup (automatic lookup)**: a tenant-wide automatic lookup applied at query time, for small shared reference sets only (100-row / 5 MB / 50-col cap). It does NOT cover the full asset tables and does not apply inside dashboards, alert triggers, or parser PowerQueries. - **Optional toggle (default: daily):** Hyperautomation refresh cadence, or none. diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/references/custom-detection-exclusions.md b/plugins/s1-secops-skills/skills/sdl-solutions/references/custom-detection-exclusions.md index 024455c..9abd8ed 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/references/custom-detection-exclusions.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/references/custom-detection-exclusions.md @@ -264,7 +264,7 @@ with its own `{{BASE_SUBQUERY}} AND NOT (...)`) per stage of a multi-event or se | `{{RUN_INTERVAL_MINUTES}}` / `{{LOOKBACK_MINUTES}}` | cadence + window | 60 / 60 | | `{{THRESHOLD_VALUE}}` / `{{THRESHOLD_OP}}` | fire condition on row count | 0 / Greater | | `{{RENOTIFY_MINUTES}}` | per-entity re-alert suppression | 240 | -| `{{SCOPE_KEY}}` / `{{SCOPE_ID}}` | `accountIds` / `siteIds` + id | account | +| `{{SCOPE_KEY}}` / `{{SCOPE_ID}}` | scope key + id; MUST be `accountIds` for the lookup-based rule (lookup tables are account-level, site scope invalid); `siteIds` allowed only for the inline variants | account | | `{{MITRE_TACTIC}}` / `{{MITRE_TECHNIQUE}}` | optional ATT&CK tag | source-dependent | ## Step 1: get the exclusion list into a lookup table @@ -348,7 +348,10 @@ asset never becomes an alert. ## Step 3: deploy the rule `POST /web/api/v2.1/cloud-detection/rules` with the rendered envelope, scoped via -`filter.{{SCOPE_KEY}}`. New rules land Disabled. Validate by running the body once through the LRQ +`filter.{{SCOPE_KEY}}`. For the lookup-based rule, `{{SCOPE_KEY}}` MUST be `accountIds`: lookup +tables / datatables are account-level objects, so a rule whose body reads one can only be created +at account scope (the inline single-event and correlation variants may stay site-scoped). New +rules land Disabled. Validate by running the body once through the LRQ runner, confirm it parses and returns the expected rows, then enable with `PUT /web/api/v2.1/cloud-detection/rules/enable`. The rule shows `Activating` then `Active` within about an hour. List rules with `isLegacy=false` or scheduled PowerQuery rules are silently omitted. diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/references/data-source-onboarding.md b/plugins/s1-secops-skills/skills/sdl-solutions/references/data-source-onboarding.md index f88d8d1..48bf51b 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/references/data-source-onboarding.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/references/data-source-onboarding.md @@ -26,7 +26,7 @@ question at Step 4. Do not front-load a long form. | `VENDOR` | parent company (e.g. `Cisco`) | derive from source | | `PREFIX` | short artifact-naming code | derive from source | | `HOST_FIELD` / `USER_FIELD` / `IP_FIELD` | fields in the parsed event used to key asset enrichment | discovered from the sample | -| `SITE` / `SCOPE` | where to deploy STAR rules and the HA flow | ask at Step 4 only | +| `SITE` / `SCOPE` | where to deploy STAR rules and the HA flow; any rule whose body reads a lookup table or datatable (the recommended asset-enrichment lookup does) is account scope only | ask at Step 4 only | ## Step 0: locate the source and decide if it is editable in SDL diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/references/ingest-health-monitoring.md b/plugins/s1-secops-skills/skills/sdl-solutions/references/ingest-health-monitoring.md index 89a092e..872083d 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/references/ingest-health-monitoring.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/references/ingest-health-monitoring.md @@ -50,7 +50,7 @@ and the watchdog, so one set of baseline tables serves both levels and every ale | silence / continuity | hourly / active_hours >= round(0.9*window_h) | | parser drift | ratio >= 0.05 | | notify email | ask (required) | -| site/scope | ask at deploy | +| site/scope | ask at deploy (detection rules: account scope only, they read the ingestHealth* lookups) | ## Source exclusions (maintainable lookup, no hardcoding) @@ -95,7 +95,9 @@ Mechanics: 2. Baseline: `flows/ha_flow_1_baseline_builder.json` (2 per-device savelookups/7d, daily). Bind "SentinelOne SDL" (Bearer). Seed once before anything reads the tables. 3. Detections: POST the unified rules in `assets/ingesthealth_detections.template.json` to - `/cloud-detection/rules` (`scheduled`, `queryLang 2.0`), scope siteIds/accountIds. One Spike, one Drop, + `/cloud-detection/rules` (`scheduled`, `queryLang 2.0`), scope accountIds ONLY: the rule bodies read + the ingestHealth* lookup tables, which are account-level objects, so site-scoped creation of these + rules is invalid. One Spike, one Drop, one Lag, each handles both levels via the conditional device logic and tags every alert with a `level` column. Land Disabled; enable via `PUT /cloud-detection/rules/enable`. Lookback 60 (= 1h). Parser Drift ships separately in `assets/ingesthealth_detections_parser_drift_optional.template.json` and is OPTIONAL: @@ -156,6 +158,27 @@ Add this as `references/ingest-health-monitoring.md`, tokenized templates in `as {{FLOOR_HR}} {{STAT_HRS}} {{STAT_EV}} {{CONTINUITY_H}} {{DRIFT}} {{START_AT}}`), a catalog row, and trigger terms in the frontmatter. +`{{START_AT}}` format (bisected live 2026-08-01 on two otherwise-identical copies): the +scheduler requires millisecond-precision ISO-8601, e.g. `2026-08-02T00:00:00.000Z`. With +`"tz": "UTC"` present in the interval `schedule_value` entry (as shipped), the millisecond +form activated with HTTP 204 while the plain `2026-08-02T00:00:00Z` form still imported and +published cleanly but failed activation with HTTP 500. The 500 is therefore caused by the +missing milliseconds alone; carrying `tz` does not compensate for a millisecond-less +`start_at`. Keep `"tz": "UTC"` in the template and always render `{{START_AT}}` with +milliseconds. + + +## Example alert emails + +Real Watchdog alert emails from the demo tenant (hourly runs, 2026-07-31 and 2026-08-01). +Both show the two-table layout: source-level silent sources and device-level silent devices, +each row carrying the 7-day avg events/hr, active hours out of 168, and 7-day volume that +justify the alert. Note how device-level granularity isolates a single silent FortiGate +serial while the rest of the source keeps flowing. + +![Watchdog alert email: one silent source (syslogs) and one silent FortiGate device](../assets/ingesthealth-watchdog-email-example-1.png) + +![Watchdog alert email: three silent sources and one silent FortiGate device](../assets/ingesthealth-watchdog-email-example-2.png) ## Tested vs not tested @@ -172,6 +195,8 @@ Not fully tested (needs the console or a live cycle): "SentinelOne SDL" (Bearer) connection bound and activation in the console; the Watchdog counts poll result rows via `Function.JQ(poll-slug.body.data.values, "length", true)` (the raw LRQ response has no `totalRows` field). Validated 2026-06-25 end to end via run-now: both flows Completed, `error_actions:[]`. + Email DELIVERY confirmed 2026-08-01: operator received the hourly Watchdog alert mails in the inbox + (see Example alert emails above). - Detection alerts firing on the next evaluation (rules go Active within ~1 hour, then run on the interval) and the Alert Notifier emailing. - Dashboard rendering at very wide time windows: heavy full-scan volume/parser panels can hit diff --git a/plugins/s1-secops-skills/skills/sdl-solutions/references/ueba-anomaly-detection.md b/plugins/s1-secops-skills/skills/sdl-solutions/references/ueba-anomaly-detection.md index 6beb653..dec931f 100644 --- a/plugins/s1-secops-skills/skills/sdl-solutions/references/ueba-anomaly-detection.md +++ b/plugins/s1-secops-skills/skills/sdl-solutions/references/ueba-anomaly-detection.md @@ -13,6 +13,11 @@ action key; source matching by `dataSource.name` or `serverHost`; the staggered and daily failure-notifier flows; and the dashboard All Data vs XDR scope. GEO-NEW, IMPOSSIBLE-TRAVEL, and RBA are shipped, not roadmap. +Deployment scope: the STAR detection rule (`assets/ueba_detection.template.json`) reads the persisted +baseline datatable (`{{BASELINE_TABLE}}`), and lookup tables / datatables are ACCOUNT-level objects, +so the rule can only be created at account scope (`filter.accountIds`); site-scoped creation of +lookup-reading rules is invalid. + This solution is part of the `sentinelone-sdl-solutions` skill; it orchestrates the primitive skills (`sentinelone-mgmt-console-api`, `sentinelone-powerquery`, `sentinelone-hyperautomation`, `sentinelone-sdl-dashboard`) rather than reimplementing them. diff --git a/plugins/s1-secops-skills/skills/soc-investigator/SKILL.md b/plugins/s1-secops-skills/skills/soc-investigator/SKILL.md index 5863c7c..00e2385 100644 --- a/plugins/s1-secops-skills/skills/soc-investigator/SKILL.md +++ b/plugins/s1-secops-skills/skills/soc-investigator/SKILL.md @@ -1,24 +1,27 @@ --- name: soc-investigator author: Joel Mora -description: Autonomous DFIR investigation for Claude Cowork. Interrogates user for alert context, executes SHORT/MEDIUM/LONG investigation modes on SentinelOne alerts, then optionally expands to third-party data sources (M365, Entra, Sharepoint, etc.) for deep correlation and anomaly detection. -compatibility: Requires sentinelone-powerquery, sentinelone-mgmt-console-api, sentinelone-sdl-api, sentinelone-sdl-log-parser, sentinelone-hyperautomation, sentinelone-sdl-dashboard, purple MCP (VirusTotal/threat intel). Works with Claude Cowork. -metadata: - author: Joel Mora - version: "1.1" - tags: - - dfir - - event-correlation - - threat-intelligence - - third-party-correlation - - mitre-mapping - - investigation-reporting +description: >- + Autonomous DFIR investigation orchestrator for SentinelOne alerts in Claude Cowork. Use + whenever the user wants to investigate, triage, or work a SentinelOne alert or incident: + "investigate this alert", "triage this alert id", "is this a true positive", "run a DFIR + investigation", or any request for alert investigation, incident response, or a forensic + deep-dive on a SentinelOne tenant. Interrogates the user for alert context, then executes + SHORT (quick triage), MEDIUM (correlation sweep), or LONG (full forensic timeline) + investigation modes with threat-intel enrichment, MITRE ATT&CK mapping, and strict verdict + gates. Optionally expands to third-party data sources (M365, Entra ID, Okta, SharePoint, + firewalls) for cross-source correlation and anomaly detection. Produces a calibrated + verdict (true positive, false positive, or suspicious) plus a structured investigation + report with a mandatory query appendix. Trigger on "investigate", "triage", "DFIR", + "alert investigation", "incident response". --- # SOC Investigator - Iterative DFIR with Third-Party Expansion Autonomous investigation orchestrator with user intake, three investigation modes (SHORT/MEDIUM/LONG) focused on SentinelOne alerts, then optional iterative deep-dive into third-party data sources for correlation and anomaly detection. +Compatibility: requires the `sentinelone-powerquery`, `sentinelone-mgmt-console-api`, `sentinelone-sdl-api`, `sentinelone-sdl-log-parser`, `sentinelone-hyperautomation`, and `sentinelone-sdl-dashboard` skills, plus the purple MCP (VirusTotal / threat intel). Works with Claude Cowork. + --- ## Evidence discipline and verdict gates (non-negotiable) From 997e534a1bb16aaad3ed075b75df49efa14eb7ff Mon Sep 17 00:00:00 2001 From: Prithvi Moses Date: Sat, 1 Aug 2026 12:51:51 +1000 Subject: [PATCH 2/2] docker: bring the vendored s1-mcps image build current with v1.2.16 Bump IMAGE_VERSION 1.2.3 -> 1.2.5 and the bundled sentinelone-mcp pin 1.2.2 -> 1.2.4 (build.sh + README), and add server-arg pass-through in the entrypoint dispatcher (e.g. transport/port flags). Preserves the ai-siem image identity: Sentinel-One URLs, s1-secops-mcp dispatch name, and mcp/docker paths. --- mcp/docker/README.md | 10 +++++----- mcp/docker/build.sh | 6 +++--- mcp/docker/entrypoint.sh | 11 ++++++++--- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/mcp/docker/README.md b/mcp/docker/README.md index 0c8630f..fe64116 100644 --- a/mcp/docker/README.md +++ b/mcp/docker/README.md @@ -28,14 +28,14 @@ When bumping a pin, edit both. They are checked once via `grep` in CI; a mismatc | What | Source | Current pin | |---|---|---| -| Image version (`IMAGE_VERSION`) | this repo | `1.2.3` | -| `@pmoses-s1/sentinelone-mcp` | npm | `1.2.2` | +| Image version (`IMAGE_VERSION`) | this repo | `1.2.5` | +| `@pmoses-s1/sentinelone-mcp` | npm | `1.2.4` | | `@burtthecoder/mcp-virustotal` | npm | `1.0.21` | | `purple-mcp` | git | `07d4992` (Sentinel-One/purple-mcp `v0.7.0`, 2026-06-26) | `purple-mcp` is pinned to the `v0.7.0` release commit rather than a floating `main`, per upstream security guidance. When a newer release ships, repin here and in `mcp/docker/build.sh`. -`IMAGE_VERSION` is the tag the image is published under (`ghcr.io/pmoses-s1/s1-mcps:1.2.3`). It is independent of the underlying MCP versions: bump it when the Dockerfile, dispatcher, or bundled CLAUDE.md changes, even if all three MCP pins stay the same. +`IMAGE_VERSION` is the tag the image is published under (`ghcr.io/pmoses-s1/s1-mcps:1.2.5`). It is independent of the underlying MCP versions: bump it when the Dockerfile, dispatcher, or bundled CLAUDE.md changes, even if all three MCP pins stay the same. ## Build locally @@ -44,9 +44,9 @@ When bumping a pin, edit both. They are checked once via `grep` in CI; a mismatc docker/build.sh # Smoke test -docker run -i --rm s1-mcps:1.2.3 help +docker run -i --rm s1-mcps:1.2.5 help echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}' \ - | docker run -i --rm s1-mcps:1.2.3 s1-secops-mcp + | docker run -i --rm s1-mcps:1.2.5 s1-secops-mcp ``` The dispatcher accepts `sentinelone-mcp`, `purple-mcp`, `virustotal-mcp`, or `help`. diff --git a/mcp/docker/build.sh b/mcp/docker/build.sh index 2f7163e..0181ed0 100755 --- a/mcp/docker/build.sh +++ b/mcp/docker/build.sh @@ -6,7 +6,7 @@ # docker/build.sh # local single-arch build, tag s1-mcps: # PUSH=true docker/build.sh # multi-arch build + push to ghcr.io # TAG=dev docker/build.sh # override tag -# S1_MCP_VERSION=1.2.2 docker/build.sh # override a pin +# S1_MCP_VERSION=1.2.3 docker/build.sh # override a pin # # All version pins live in the "Pinned versions" block below. Bump them # there and the GHA workflow at .github/workflows/docker-publish.yml, @@ -18,10 +18,10 @@ set -euo pipefail # The version of THIS image. Independent of the underlying MCP versions # below, bump this when the image content (Dockerfile, dispatcher, bundled # CLAUDE.md) changes, even if all three MCP pins stay the same. -IMAGE_VERSION="${IMAGE_VERSION:-1.2.3}" +IMAGE_VERSION="${IMAGE_VERSION:-1.2.5}" # ── Pinned MCP versions ────────────────────────────────────────────────────── -S1_MCP_VERSION="${S1_MCP_VERSION:-1.2.2}" +S1_MCP_VERSION="${S1_MCP_VERSION:-1.2.4}" VT_MCP_PACKAGE="${VT_MCP_PACKAGE:-@burtthecoder/mcp-virustotal}" VT_MCP_VERSION="${VT_MCP_VERSION:-1.0.21}" # purple-mcp v0.7.0 (2026-06-26). Pinned to the release commit, not a floating diff --git a/mcp/docker/entrypoint.sh b/mcp/docker/entrypoint.sh index 4454a55..bc15aa9 100755 --- a/mcp/docker/entrypoint.sh +++ b/mcp/docker/entrypoint.sh @@ -4,15 +4,20 @@ # JSON-RPC over stdio per the MCP spec. set -e +# Extra arguments after the server name are passed through to the server +# binary (e.g. `s1-secops-mcp --transport http --port 8765`). case "${1:-help}" in s1-secops-mcp|sentinelone-mcp|s1) - exec sentinelone-mcp + shift + exec sentinelone-mcp "$@" ;; purple-mcp|purple) - exec purple-mcp-bin --mode stdio + shift + exec purple-mcp-bin --mode stdio "$@" ;; virustotal-mcp|virustotal|vt) - exec mcp-virustotal + shift + exec mcp-virustotal "$@" ;; help|--help|-h|"") cat <<'EOF'
      Risk objectTypeScoreEventsTactics

      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 z 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 baX4#cq(?FKH2ZaS#TSDd1mj2$dsh4pcsutY diff --git a/plugins/s1-secops-skills/dist/sdl-solutions.skill b/plugins/s1-secops-skills/dist/sdl-solutions.skill index 37e550d2ba0827fd280220dc5d981a91e4a72ce6..5888cc7f73a0d66a0a98b7aab09e28ed82eb7873 100644 GIT binary patch delta 504660 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%0D4!dde z;$zicmim&)A$-peP?gDCL5jLA*=guief?@FpP)aci4QzWMU=!T>GYK1qW1{ENP&H$l0#Ve0K`QN?sU0=ddNoWZt?KInmk~Y-bMGnCV0Zf%c5< z-*$y$mOt#Yuoh-poGVEc%li;R-CMOub`Zixvg~I{X(J{ch%p438v;l%O4F7ayT)GN z)CKuXO+fj-#(CxlY`jBn(2h9VfS*P2$gHwyJB%+gO`vL~#|xUP%Mq1UQ2vzs#+UbSgC!OhJf5)l0YOB z>ySZN*=o7Fmr>_s>Hr4F(RmlwLFo8`Q>LRBp+~4d(LVzgF`n1%b+m zI63lH9?C}4Es)&Cv4Ds7wcrWY!wLL(8#;=JYI}%7^Y#(*$&jhZ)S~jj1Sz!tTzJ77 z#4&FRUySFc&p`o0znMeu3E+dPdkcyqcNMI2Gq%Zagf8`oGy*_q?i-EHN47H4MB_u_ zViIHnNQVjT;Mp7GwTieWT^tGe0&?R`SLPC7!u8TG{W4Z{aQdV{s&&}I`6iX(@EP9E<(4_6hxTG&jIcMai)T$q9XpE3T)$5a$IBW3I7-z zl?47IoHB932cI!@E>U1niS zL5nx2c_SGls}mBn&VEid#LE;|MUWBLuSyD#aX!W=*8}RtL*N4WZYFRs;8|5Bf(p8| zmE&WW!;~xo)hiCEj&W_UEb!QLo2jmlIPltWoA}^ufJcs2(|J*R;17cBSZfMR7O6|G z(JN(|1mltlw3tU*uGn^-M1Nrll{PA6dZSgO^C8FmibnueNg0+Uy82Bq?Q)&d8c~Y~j)XyRAB2^VRw`jdONrC2;Gem9 z5hq|UEu}Y2PKG@4_Vju>fqS8{fq_v0W%w)sxpDk+qXm^%keo=d&pjR%tD+l$`Y3-> zUfa}bXD<09VC%sOa-Cc?m}D#b*fwgqcwv5n;{wD?YS7!}w6npXUhNve??Mz1o-LU4 zA?#{Kxj%7qn-GUt56v1vi1kC8idH&<@B_CjNcD@c2h#-%Ayw7(ydMw7R~I1>_aDB0Y~F zzWVViQfnbmA^R#`r?Z@Y47 z*V0AB5fW@o#dg}2ut2l&%HzZKAdN{{sjp!(AXkuZ-W}*rsh~_Bd`_?5IJheJ^y;4(vN%3_*)iGaFBtX4 zDGGTfnV2#DLtlM6f96cCL2p$^=1j)a#JLqeIP?F_S&VINIh_Wja~~u~>l);)F-$!!WdlO1D~oPj z+pDMVc5A#2xXlm44B)RoB_WTB6GHw7Oid~xTFK=ye7Ggo%jr1iL_19I0i+k0ZXiOU zFM&hfguA%GQ;QxSG1s)M2IKA8T*5g1eg-kj=mlpJ@Y$QLui>fD54Of`3Y*Km(KN4y zAjc@Y(t?QjiD8-Y!RdM4)B}h*br(nXlODWL#cSm6tBOHZWztHkrtO6_P@|!y%EpYy z%gQXFK6X+ke1E5t)YMNMOs$!A0tqiElo46mti?ckH2ZsJSxb`|+l7pS#=CX#n26}D z@NPNMnl-a9=F6fhkC|raDG<*`xPlz^^0PD9cZE;av5Z`-CI|m^4F|Z)iXl*|X{zKq zWLNG9(lQ?#btk*!_J^MFR_*21{fmhcf1GQ$GGuLd6@b-9q>NE=|oLT>aBqv)2NyD}dKQR^L5=O48DcH|c3>w01EP|Lz*9#i$#D9Gi=*Er907rxC zv4=pI>wE%YD^*zQRM^9y*aPb)if#{3Qz!#~y9r3Dg=OX43G;CueyKtI8Kt@j!Twta zJ%<-O{SVGY@@splGs}%%h@9WOn1xah8$(ex?fB6K7GFcFI|!hoU54SPmal;S%>bX) zL|?^MdWe#TeNxt9kpH)Jfa|WG;J|K|5V0Hij(x6tFMFKm78-ufXI|l~b6`EG!!kp62Yx0 zR?Y9iWmYILsoo`WOyiB9rEhTDlmjte;#_1|U7R6Z`O5h9+7ugJf8-2zfL5;jMrHew z1CATzW>CXl&t$Y^t7;S=@jWsJREj8a_KtK33}u6;hYzUO(gSQyY$wo`>?dg~aLH)O z=@iVwbD2~v2QD75_vp;Up1B<7ba~q|K82ASzv~J1#OtbWDD&1Q=VwtP2oC2dIBi8D zwwUs=qbcmo!w1*xbt>NFe!P4>n`)I&qaVP(vVJ%z^_?4KI1{T@G0LmJAe%iQ0BZ;WDf2XKTm#|oj?L#_ikh!%`bHC%WNswqIwSmo;kuYg=jo6ka`#NgBe*NyX zS|BqSY<2;iL=Iz@O)_ySYmRGf+#^QjO&Xpt6?dm{r-;fK7j7eQr?9!*TFapO&oKm- z!IdmWmtb*}xrs&Nch!t(!?W~N4~kEn0ZSzrZ%ZDIn z985q{)&$Mc?Oa}{8v-I<3mO6@JcF4W(?lqc{&RvrXhVRsVKeT34u0hSbK`%J{+4_k zig*5kw)w`Fn?H-Ge*BL`iA?{;Bmi#tR8!2)!udEP9E#Y;eQSc`9EuU}s>c8E>>ugn z_ai{aTLmNN6^&t&|C==9dR_xL1~h_CRL(;;!o%3N77!uWhAiB(Z5I5~nze~IFgSj- z`DgIoPx*kF0>wk&fPjKbfq;1aXL}FY|1lF{=YZRR{KJ&&zYt(!Hq~;!>c(0H&0ZVt zkTYI&XJ{utU}=$&l66nhNwg8uKs$>&W4vNKpNfAcS@&+RZMN@66e`xc&)9e5%I19K zb^oB3h9OlmUwgE-urN6!N7c%v&CmiYuCKlP<#l&+{rGyhPq&K`17w{#BuECM!_Q4m$Izz0PSgAHM${p!sUbRg|6c5Zo{zHnnKRPyVnf^#jy)w; zQqacK2Ju%_WVZc;+IQ*1&?HLlQH`&|_|G1|j>3HOS(Xij`o_<>nYJ6&`wFlou`#e_ zu>R-kP9d~99S;a>Zue5aBrkeS7AKW@(lfD~naK+Mp8LlK(jDxk65V6Nwr$f6W*tq5 zEE*e4ip40l3`_jFzdY$Glaj?8TxslnfQ6ofxXuWy3n>t~CM8rVb#jP_XcQu(l@u=q ziuX!o1eRA>`wK$WiDal%GZz45560@84or8b1=p^w@bT2k+pBBkunXPwHG&WlQX>pC zgJMOe0-8(^UR6PVo1&BIj2m+{El5#chyUbf@O`VK<+T$U69yo9tUk;~D3V0a z$cba$i?}oF6OhJTNsF*PkQ;-AE<2j>WUGR1o#5_BHTHc-POoDLQvr#r-B0f`!W1dU z88PUiMQVg7)Jk{~Vyf2=;q`?zHh5TzDkUC1eacL^SCA za`$%qfSkp>82UlITR*)?_cK_;{z(EBIkp{44T`9r2*jDS9|C9&te;0kK6CH|1R-Js zS)k&D!tN)~8`fR`kdbj*{#-l6f3a-9juq~ME+8uuk^pBA-6aI0+Bg&c6hh-o)rP~M z)TUH8Ca1L4QF3}5MF5dN%7RE2gAd?ua2O69OBBK214}e8C8Tl}23k%XlZA!3nr@mh z{|fYehqTy=-2jZ8c7&^D4)}%27TR0ILj!eVu95%;l4cB9Xcy$z2GMm0*@A%rN5|tz zh?$CHKrgn-<29%b55&Z;8|4OlVq~a!-zS@TLF*t@6ic$I66t;?PhTix(vTjilb5RC zN9nk(%0y<3K@Tc*2yS7?0?}7PLxbW|c$lA&aj;XZW&#u@Oirep>}udxuBNZpvbwt7 zed?a{`7V3CpPUiD+@3dB0(2<_QZv@TZTB{vRLiG*`A&SjsTzOGaN11`~ z*zOrSgMNM<(8Gd^k#7kg1=P;Y-6Tv_XPE5Kz7aYcD*w`c|3nR!!kFZu)AVifzIPGXb}-| z0gjC<>9z7mpW-JkVRMaM1*Sryb$E4{ecsRda{{QcG44(Ea~2^GoGcBWUJt>xe%=X% znD)|EPwZ|>m7CXY?1fxtgc$F#%*c8oTwp%6rsG&D!<;(E?^xkEPGC8PkNcYP<$CrP zK1v8MME7FC;}LrT63*d+{2q-*91Yu}e;lJN5^Q8dwE{-t zXa_K|)>8J^AmpNC-CHFN-LYJ6(H}{s9geX~r-6Z`KWgrOHZZSZm+u=Brv+gMzv~7B zP4|n`khSRk`RIXDBA8-j2(QbT$8OwX~TLrk-~;Qeud8Ru(us#TR|?FKy?|HX|0x^x37zW=pI5yFX;epbq^D@}5*qE4K6 zg2cwAFpW2>*2&eV-pm{p=Fbs2nf(}bWRvrEpb3_;Y0zIC94uUm-msJ0_XYOF6$OB4 zugP!wS6pbxO3YzsdhDGp#_{i8o5Qa)Aa)Sr4v~SRW?!{M;JxjNLG(&+vBfc<=POb9 zO3?60W4=eOu&3we5qy_l`6S&iRVqTZb&!Frx-;uBZQ9}Vw7u&PiqozmevZ3_?s9V{ z&a`VbxoDTa=lLuw)Ve7|n3~LoX59f&q3nH?uk2+0Ox$rR0aYhFVa7uq&v|*pj(N2K zZg+?K7_w!)bmhc_NHi4X&@R*DhrW=b0y%l@x`a1Da&JjL9f=Yy>l(~fM4!#2-dxq% zQiW{thAt~1LAbDSH4;`dgj@B`U}E7A#-xy~5auTC$G>WUgBEGnYwzuBfI0wKksnCT zyq=5G)}7xD+sUD*hsrG|2Z%vt@XeV_U4uJD+IaNj%f^aj>x7K*zZ&l(1-U3Z*@W>y zRHFRB^bgW=_C2fJ={b#`%zu!t)Mj!kA7Ii9jrxe)Vz(iXpszK} z7r7B9k56qFd}~(t^#n9R!d-j@v zdFs1Xq`q^;lSD)W2l4B8emDU1^%wgHCLPhP> zntd)cn^2m@v2pAX{CKM1lb5T{x^kMOQdVKfd@@BMcP3;8ob|^9g zr{t zoLs@am3K@OSCJ1%X9F-;Y$;^g2dU(W*u~2=d^bc%8FVq@4nvLVyoa&D!s|h0Z`;3m zKAg!{EB3*2<(W&5+&=F)!&oYx=*HP`V=d_f_|jxd6>UHzR_6|C{zOlgVD0vt4GWzM z6>IL?Z;nN=5pDJk4Dp59vHPssC*(+&YdSk2A?bDvW`X*+cWK=P8{%kPy z(!28g|9*QVvk+|Ts4l<4h&c6SO@V~zdMYV@Z(S(@Nw46zyvMDOSFQE^;_ zgXAsepy2^L1wxc;XTcCT|26vmA@~)B>sr~oL?6t->31mE-LXCvmJopw5q@QqIJF=5 z2CutZRB0u9$@^^95_?n}+&PN`fErFdVKGpdDY04OQ4#NB=q*O|BZ zcYm{~6P(TpFCL8B87-Wq^wZ|3Cm!|Pi+~e*Uw4`PQ%w9lAkP>AdyMQsUbB=;(rXk7 zK7GUN*JzVX*0JyxVe`M;|NePX zegi20L;HlHYD>WI_FS^;(?S_b3SZ`l8W-GqR;RA^=Lea&>v7QFQckHv@v3k z%lA6ytrDWqUJSBpj$X4*sPI*9m-We8NLX_f`8BMC-*{64iyLNi>U)YOp3B+^*0^B4UY$7zvjyX$11nt*5U zjCkO>Xr9{prkc8BGNqR~3(6(3obLMeEMVD*FdDL{z^I6tFBm50zW&4A$&%-ko6tTL ziF>(@t6O*)DR^AKr*MFj!i>*Bs1&*48Krg8ByUBa^_LLW{|JDV=2~1Ug(+Mkak)Or z+>tpIgX#Z-a0-sFUhG}#F#jgSgIi!3F6!*kVY{J&2XOJ90ETjr7NTGX>tIa=3 zYHF3Z#h=~JAQjLfs-}G3pp+~kGM!-N;S`Sjo+yt^EnPw!wNq?~8-|gmpUkK`{A@5# zOww#WBtvunDA$ z3?V{4+jcAO%(GjZ)A1NUquAT-W z_dY+(%C^^W{jwb%TI6gmf4w^&m+*6tG#WjRZ8VobUK)K@u8XUQBZN5P-e`Om@OX#w zraMaHLl;Wr7_zL<9<_=%Cn3XiMmgzQG{+laSx#k#@A=-cb5y80KnW44N+W3UH;*f$ zE8kEWrT{P(UMMl6S5Z5JJ|LuwdFK=!g${`EyP=kjrx8a3^B=ZSk^u%--I56Y>3bZ24B4 zr!KrBqqdKZRWUdYht;VoXJkX-OQx-b6g;ixUj^sCOYKCZb7~K-zUL_ghInP;(2&)h zRNd+)4@4+hj7{0PO={CZL`inMAN-|6$9!0M`TVtJKh z3jjjY)|NN)5n=XXUw)2K9t=YaG1%pK99)zt_e3@CRki)}B(H zGRv@v)L6`C#t3jjlkt-QYC21YQ z%^l01Qm=%c+!b&23ia682g?03Z1l+xJ*51$#-w^mXV~cOPA<*EAAZ7Z1f661s^idB9s`t4b(u?Sb0TEsvd z9>GP98YbPW5Y*rF2}H^p%6&00;d1tpi8bug2fX6^!R_>^lU8(XU%p0j&49ljj?5H! zUpv`LU4}aYA@v9n}e zR;}*pKB%sPx*uHkEc*2vqn+UteMqYHi}r5NNihe_5ADymTCS!r+tN@?u;*4ytrrkOKxA^^gOxA81%zJZ9#@w;`#Mx5B9Y1P$!GMgLb~k9l zJ6KA0HU3gi>H1)cQ!VWF zQmMlj+D@pIh@&|S<9kgUHc-JfHUzZh=-lX#tN)yUN{*o9dZ1U16v-2i0~FjEi>JqU zLt|oWt(c_*pSYbAG$`+0*>)Q(zH7ww;vXY5Ym9MyOU4{vTo6Xj=bkP#R!e#%t0%$i zG7Wz;5W-<zMTOZSo`)&G!scP#s&iTsJJ$++zO7Z zQ_>;Y)@cGClHXcZ%qws=R@Fs_?W|e`>N14sX8Hw2;%s_4l`hkHtGcP)J@ZhHY4H%M z`pGPedo|lZ?yG0;bR1Bidq-&ab$vy22X$FQ^P2Clzl$QOhONK>&%=L70VyMCOuDy_ zxZ>Q*ug*vgUJ{SM<`!WG!Rsb(XKv|%)@B~@C#V!Q_VF*`2qMyhZ-R0~pPEg|L~7#4 zSQgo456b%RvrK(JW+WnGQ63U6w%1K#p*KNrpulkcsSY4C5KW+ z1vD8VMF_gyL zr}6}dTJzF8@gaPudIlz%N)XV#94GcR*Dq~I;_nccbuJ?Smz{$G&#(!X?rn zJjNWnX;N+gxevTB)o!szK6ubk6M@H*>wEwv_doM!G~;>`kC{$wQ@;=9t!FFqK-P?{-|MF@WQnn3SG};Ys)&u z^X)T-n3`3rn=oJ1G-ph_vuj%i2H5B;6aaR=+6yC~8Q5R78Xo_=V!dsZ9xthro;yrd zus`+s?UEjpusPzG?Hw58{kh(Ksszk1!UK zh`ah3SlBw44f_}I61akghXM@{wf-{E7~pC<;tPenu`y+ilNcbRazhh`f$V5bSM43r-z`jq3Fgr@)bn~t20ud)ll_vqo4))9A{_AY5aQHSAEz|Syi5zD;&}#x z&!jD>VRgRN2Q-T!gjVPLpriPfkCrl%9T6xOByNM#yo4*gs`wTK0oI5JY`yI9F*(2X z@$ECPg$E7tV4LXh+<_}e7rBX3g=}>JLuz=KD+zjKhBKRAKs^+ zatjZ?O>S25!=jTW>wy--UL2& zxodLe;cOQL*Q8uQ30!3zpYmH@=VtMza&vJxq4c6IhJQo%+WZ*rfcQjht4d1%LxnqW z-xPm@K-&qII$ZExC3$RR)axa13UysI!m=z(4-%Smt0>Ui_iMKwl`BZ;6*6B|8N?lJ`u=5r9nRVle{g5iLd@0ki8u#fi*FXrx5^ux|5j8B1Xew< z8E<0~_$1&02mFr^lJ$n8tA9uMRQ-z{F^EQlp+2V>fgX(bAp-mN9ADwgG?F$>vJ-|teOuDg0rqv?IYn^yiMTtL68E_n6G2S|8@HQ4w z;YY6sv5vq3$_9G;s%y-R$=NGr@rh1CjGBR=DHvpR>PQfDqaRkWgVG>s?O4dcwX~hK zt*Xj5#2$jFTci<2rdJX<@b@UhnUW+YNw~F&5)Ygt?Wpdbw<^hY@)z>0;a4xo26Gb- zT`s{f{aNKF>#u1pZLk?Yaopr|D?6qyO7x(2Bu}nv`Ar8bs!j%1h}_Bi-E{~T)}Kc~ zfn5sDaruKNkom>#7ON=!^feM3+kQK)5)mndjqFMnhK^unQE`FsuAR(hb|7Y&B{IvCKi z)7#u&bj15UNN6d>y=nHBx%kU&I)Z3Edn;8LS0DyI-UGxiqND+d5|k^GmS@P6O*}AK z;i6cU?g8`GnraTfgsOnW0T;2+VQJg;K#u^U3HRlCax7bLdR{c{lD|wVMw;=#IjqVZzieIo?Skv0`PoaoUp;62 zU5^7+=GXAiIG!@XYy~h|(0j1mZ8_#PY+s(R$8`m^eESMu)1*O*+S!_QL@hjGak7eZ zRGBx4asqkNNbcJm2O5@&)7GILBu_m z%j9%Ezj59cwi%lUnAWlngqG;c28FPVJKoHRj`q*Q5>||MF6LjlMZ>f^3`&>v%|Td1 z4$cg9>2rPnS{ntd>z-GRA&=O)>x6s3B+2GR%r|7*qU6I9;pZl7Ki*x|65y?~AE+ot*lwv{X9VA)hEo`DqmElZ zoF=NgVYzkbGfrrF|6+hWa!vvO(*vA-IU-Wj*7XZO=B2+3r#F&!o~~ZAcpRH6;vC`K ziHbc+sy_+CQbgeGUlsQ4*nvv+PeLNMz&^)OJQ?x#EFEH5VMkfIoqS;YNTu zPoLavCBBz|=~!DU1dN311gR}bKb<~3rgICpK=3+46z%{dCsCzn@vNd3){ERPt}w_RXuO`RB&kuoV(Bm(Pm_?`y5ykF{dQT0^n!Ur>hT_7=)8C_T2`aj?8%@r9C>l}9&GI({uPng);!!^8hqYxhgMQUTkJw&G21uK&+ryg5T-4F{*` zjX{$KKbBf{ROWNgC~~_9pWWt4T$6Mw?onJfGoV{OF&MsK`gy(ggc<8Lb=Z8NQP+yg zIY%=$m$5qC!LMjSQ%LsYK}s0WX-yh=8@#4Evx0g+UuZnPP_iilRSj{ z^+&x)n&WZoE`&kza?e_K=pwxv`h^hkhm+I8k?4|8WvIUu0Fs%al!k|H6E=OM`|_n4 zY@apiq}VK+%zq>TZSUN%`v5Q;lJPO%xuSLZaQUG5OlgBfT_gv1p2MM5xDj{EGM!IY ztE$e(tskD!duudRK74P=&i`$>`<_%(b>QE;ftxB``=D*R3FOI8jVo@1X|&BTn8yKS zAXH87rvKGam5i}CKm1vw96?{K(%d>mQF+>zFG9hScOzl7rUACjgE#6??=-HNfsmTlMgfn;&gnam2+`UCT_;-ic_dPj` zd`*sqc|d-e_TFLX@eRNRF1XpH*I-zr3YU=%~s)aD#qe(wWb z8OYyf1nsVPX9S4j-gd3sa_2ozsUDL!C_is}Rq)smQnZ2TAwm25b;v3B+SYdI&ZoLI zGFobM!6WpH<%s|%Zv5xD?Mof$qVb)H5?J~(&E-QU5p^;{IDT`JnZvP(CHtA#!zR;k zq08Cg6y1elIOmdd!I^&MTH$OtAzKh`vRJzJ{k^9!M95}*Ld^j%0y}0e5TNr}(zHuG zAG5D_Yu%t+$Dts71;6*t_w5hwfWJF4j#z2z<@B%VlmGxk)Fc=nf?>$#b!QD%^iq%Z z6I-+;{7*xhoxT33WwP$7yV=R+MHmHGFq9y|9S!<^zC)U;5a$%dI=8$zCWqUh;JgP( zWr{iYHEewR6oo}*8xl$5^8{P)Bn3u^Zd#Xx4?~8xBn{3QDVRg5o=I7_hOEF1O^a`g z+Pj8cQ$65zXL5sij6Rg^*$cfwO9&l7Ir*efw@eCu9njhp`Ppu_(p~&f-sMN4aG}Uy zcemqAL@cdI0_w@tBBpPXOt#Jzd)XD;t{uY*|Ip_AFwsH*Re~Pzowr;*s@~-7K!q-rt)cEBk3QAww;~D}eHc~xNAE!< zO^6h#8aOWPh7<}L#8*EJh72kRcs?zM49XBtt_LIb6H6c_CQghiw#oVRb6jKFnm`iX zLwbi8q#xlP%`rotiXK51&^#oZ`~-`F;>7&y6@G=y%dWUWbcgIitS_vpu5VsZx+&jq zKptz}p`fb2mDb_KYk9F%7Z#Cb8y0cbu`zvO0R&AOxhxa#5ZunF^~|4gV}>Ol-!Khm z!We?M8-RB-ZRWt2L_CXvUaQ0G%#F4yqasJl;H+`nm?{JX zP7XIDShbiFet=>6)1OB2GRLboK1g3kn*Hl!yqJC{-sI$>oJW72Q*(O78UX{XHXf9d^HZSq__>ni{Zy1dK> z)4nik^|F1T$-VioumUgOAT9c;@w#u_11V*TyL!-O6}XRFI{jCP=?g~`()|+BF-uHB zpVu$S&5^1(t)5n-5$r>hLPV_wcsEzdhsyJGLM1_;ba++PQBGmmX*3)f={;4(kd$7* z1ka#32BZ>Q48mzOsCWj89xwpMhq4`+eI9l#~)|w!IgUmcI1eUJp~}W zEgAKJQB4`?cO53zJnfoEq z@>z?@Pd8KiVJQE;6w)vw~LY+j4}7vQF%b0uH(3rzHkkeFZbCkb#YcTY5fHL#vu(06)I$8znu{pfR;Gqc>Hg27yqJd9tUa}F{9 zxH8h*+A)MnM$(Rr|Fq0^x8BEJYxdx%ZV{}nD_xJ78->{8d83(ggb%)Y3}XFRAMCA& zfy3!OVzh-EcCq(GRTj(L1FLZrcZTH$!D5(QSp30`&`3zi2?O{~U=uaptSDSCdPRjL z8Y!XE)=LaNIJtwS1gGryXl~)Eigc*Y`Yq2c;dw-HqJ-8c*{qXlj;XInd!jTRJ0_i@ zqSR&3sxfg!s5t(bX-pbQ=8r9=Nr6(0ya<_;jpvtW+&>`&5&kp7N|ENnq4gA3A?jzW zqk4}93o0qVfB_JO@gF22=%vG0%ADn|0N4u9AmmIo5CFM-<$UH*WTddR0aELXcW_WM zS^$bZy6*?(DrX1%y#W~r+JGW1{;ZCt;{u>o2SJ$rdjW|0TfHwaA39OI3p-DY35uXv zY7HwSnFfR*LMaIAzee$i7jNA(8_;YbEL4 ze`Cmig8lP=27&^r{PUyJ1;4VM@ef5Wk@iCaCHntL=4NYcJ8eok^^7XZ&TEr9i3ket z^QRo5W+%&}a#TDeG^KWDsuV|Jfry~c0tHRMQ867w=^SxmdWQ0@@k{kw_cKVnaVn;m zqNMj;e|LOb5Okxwyi5HNSf02HR+Lhsrd8VrXSnf0*981Ai*VV{Af8ki)4?_m+G}i( zFBVQC**V(?mQQJLsc+-#d}ZSOAns~IS`4ewS#4+ivl;QSAa$q6PgAdgTSdJk4z7kF zP1e!Gt==fStDT&bMw|VnawjE$|;A{u;#2 zo`2K%>y@3dFKy;&o9sZ5WIfd%-)EGso0Ebhc;czME~ztVvKUTUl_Wn8T#Wh$mDa}Y zgl?NgnJYG@y{{~5XoDY1gMcgM@WUeG)_IS(QRPE=MEYV2+|RVIHQ@wzl5W{-`1&e?2t}g!1`jvJa3<9 z1OsFk;_o{OofB)U#jw+tXJbv|HcA(-Qd(G+IViH#rBp zb<);1PA2B#I>((jyGi-^%VXH4jc3}`XJqC{ux_C$>0}1L3_`Nwj?1Z7;0AVJ)?1#lnIJeOcpb(c-q}|dx zI@=F7MR}=X8U^v0LC!F000aL!lF?jr%d1xeUnX{Ssz6Uh-;xC>rR|p@s-FmC|M0nS zxui?#^iN=z_tlivA%i3CP%20;jeZHM>P%7woWYLg1Cr%b^|brXmIV% z8K31*k~Gs#R7jST_e&C;y##}Tw_g@8ucxwlM{Mn5n5E49OZH*2z}bT=S&T>@t9_Mt z8&r#_&C?FCv}=z&bx3@A6mp@Q7?>#)Wl1wOZpnoWu-oHMV(mlbdob2bN;p*BJOtE>|O=O;^P{?^&<`Uw`rB1{m7 zB*Eauh^V5In8v$t_)RoEaKL4{Kq;NYLklz=3b&_e(FlNyD_d-KN_Yib_eT;&cuIu$ zhv*H80osVXmq@D)z%C_ApQ7oDiU%bjd7}_f3V^ZFp5)zq8-gzZuiO-fEd{^&)9CYbgcW2wb&unMnj=Ouph@b8nP z-^RnpKVIAX95_gl@qUtixz(ok2Jp^IGJt`q(B(cM;O_920H^-Ge2dgz+23_ z+wa1?NQB?A1b_MlzQ^<_wU^axoixI1S*VRjA-h69gOV6!@vpqnK3pYMT+su3{NJA>dOzVW zec-nc{3$8gMzGdW6fanBM!2pd($2NVekbf@W`XWpY=KsbPom{Pl&irr5LK$HnNeIo zZdND&;(PHn!lxsfjIf4@gBsOThdS@c=gQ9(A22wbS9cOx4SKp80I6}j;N~_*nNC+A zE_obPDvejqtH(>&aOs8n4JM%L8@$SrEt9njU2?Wu@bsKiaU z=J%)`wG9tUe14SSgto7CaP;>__c>~u2utqUp3ncQoq-+f8Is@v0Z-5yprl_GMNoiB zC=ORjP&X;ckAp{-c$J)Zh-a^RwF!s}jFV%;SZnC;(8Uiayg_b&G zeIh&h(lN5wCRs6Da6q}g_aJOmZ+{9}@D0r%nRC=1W00<1C1!_O-B)9Yd&ZM1`h%Z{ z2**=QZ#8nnL={NBfl%lWCpCV+0{_lsvA}e&JoxnQU+U-r7-|H3h2SEnuC z2c6Rb2lkaXVx2w`Y9OwE{tj}BsXSHvb~a$RDJ5)!y3pF4L;g)z<7~zDa&?ccsv;^3 z^R_vCw}KedroEE$UPGeK`|4Ui67%(z8EPySAw`dzw%=~3ji$tZ1QVydB1bNQ&(0L{ zvA~lP^}6!``2B!y5iwe=kMjWB)%{hVgEH+==s0-qavKcdtgO%89z${IO*hN6Fvsn| zf4(y(ZCraff=KX`fwlVaowZw)X?gBP`TA%J zvJMV2@)^Ocl`3P@4u<2K{nZ(vX#K=%d2SU*3Ag9~7-gz9WF3+7k7$2l$n`dW0Orwq z=_!DvV)U+>P5b>p>S57={m-=tyoCe*#YMXZNI%Y%}(v7lAqVby+ehdI03fIng(+!+d7L~ zy8DJsR@F^4A4pDV5k6cMfZm^~aHmz8g5bCK#5NWPuvM$FTBlZr618cKcd7>TS7PGVtK5e2ux64z7J#-Cy@C5EXhNqb}4w=RwAv8+xA3{5VNTh}tivyD(+=h^Yq zbd7zqBpmc+xiA8vrP{n$N?y3;f4goDfFS3vR_5XO&n3Vf{kiqRToN3F5rIr3V}*Qq zUT*g21@VvbFDEW~j~?eUm1}y-MEf~eg_*^q_0P4Tnky&I@cg@9m;23@3@sP4TP7yn zo}!Bq%p4q{2o|=4t8GQaHb7BD8`iiAG2#}xGGzQA2GkSbIN)!LDE!zR&TRIhfRYX4 zl`mJ3!J;oBe?DN+?@hor<`zRzYCxhQ8iBjmmkQld&D%7g*39oiJg&*f4?*o`*%|Ye zR8En+3b(7P$QxZI^#fGJ;qFu&i`ku6qBrK#p)#FYNGm(I9{5wc0(AujdGB3DvH274 z!Hgi0aV)_*1cJwKo`@1kc5EW-MeuSW`pZl+{Z=WE~p z1=+*=6YW6%741MkX&^jMOpwgxHdg7%v6WdiGS0e2-5ECp{UcMc%bnA zUy^?NKN!$4^qv#tEO~=;II<1-2Elw4?Y5Q%rWHq>P0NH12$p{s&?U5ShtL*uA;H>r zAhBGB+@g~yI5DYYRP*`gf{wbf{i(OFncZ}zV|-QV6J<^ets$*rY#o(yf0bBK-l)6s zsY(Fd*|`!%UdY1jEhJm0f$m#k; z)JA+iob*~sybs@zQj*96-bFICA9vFfu?#>Qfc23-i%^@1pEqS^C##3#4;@^RvLFX?n2$8M2vV{@emi9a1^VHcR)bRMP7U@&cE0S6ig za#TqdDKV%|j1Xha-xT)b)cSzE-e|ysu!rt@m8R;vS71jv>TGV|vg9M@h{eKe?qIfx zlVsKvMD}iEv`g~Dp*xq?E?pxB1Y+N0JxPUT4e?AVmdbIRqh?5?rW>5zRWECYhn5NN zqHZHxkC-Z;2P%*1p(t{G0_${VcJi)j&cORh!T`w_qqDK`-g zcZ_R{)_Ajpuuabui@+D8;vk&JLTrjI)lty+ETxvImZ4Hqfz|vQEV0VEFErDG9ke*% zAbhfkW?ldeb*pUX5kss{`cMfiAPd7YqGxO_BWpm+Q?FYs7FLf&@kfnCRltf%mtH+Z zmTnykSlHgG;OQoI{fB%ucpDH#kXhuUVb3#~`y7&kjz(|y#W;w>omzk0SFZB<;wuDl zj~3wO;^^e(ijAMEBe;unt4J9^5fg|+%B*k`Oc+enGuHGG$Y($!?rb^CyF^aLBpj_B zO$g`>YN7c;?-1J4%wG~hD@}yrY^O(zow`Bb$Ir=yn?Ny!%uYSZ^#mY7)IRHb*(se9S6n8(8Q0(aNu#L_d)u<{DypGphV{_>)wHA|5^r15oK*(DpGfC-dG3<6v@L8HPtt@1pk356Ncol{+cOx`&giYhNB>0M2%U7VfrUVkyq8 zZuynTgTP<<+5??`{8iv-(xQ@hl+N-kCG1j*tG?Ct74_?u&S`nzWaSvH|D7Yn9NDu* z0nih%_y#aSEp>xDpn0V+l9+m0#z;snsjDCOguxsGuOtk#m50N$-Q(_36T3(6>R4G7 zY7x50_&RG0Fx#TNE=1q^vS;e)|D-+jrK}6cE*LHQJB*t1k0DG-z3}%3eE|Z9t%z3o zd6x~WzUAi19Q7VUk6JC)f-~wL_&bhv6QvMI>K%a9mNDB>B(=Tt#9e_`Rabsv>l>rt zTpR!aUOt>W(a8eyO-HJw>}PyR8S>@y(V$ixX9@AA$Q*KId%0{`t*6}m<6|a;mJ3)F z&Qmd*?oR4&Gu5d33@m$$0QFce`ucA4KBXZFJkeEwv0vj_=&X_fqvA^QB75kWJNH33 zV>Y0`+ourcSwM|YzPy(JXJF7tM^3TG`CaurU=!t@ETYZ(goWp^E*6{dp(-vQ=TN7h zUc^hZEJ8AhU&bl(H74_NuB~c@^VrDSl4qgghmplN_Z9a{5+sEAk9$q$4FkSShVzi{ z&ruJbElwYDqq7O%+J^71WEssOcoQzju?4`GWmB-$k&@ZF=&liNScDD+9`r$M^*3is zRA_t>WL!x^eGsmv6@uVgW>iOLb>CkD)!a}|zz#32E0PgfL{WSuv!613idSf(6(+*K zdt^mU47{egzW4Lac>*lK?za5WIIlxu&7aB~(symGAp|;bZCkk2s#fM~TejS!?`gpP z_}N|?qf&3E579kcs+dU zn05*!<#<4KAd1~oIlI+V{by=}DEkAYoB;IK_rjsd7lnz}L9+`=`yjr(=5AS>5|s}_ zgGXp%RYjfM>M8q-MV?TRifXLGh#dR0fYIQ(dKJ=uHd@6hKU;6h#^rzoaEw zQk6$I`Vws4lZJV>tSisB2S%@!_O}5-I>x!JY15({;8N z=HkMycS5NnvOc6I!aEwLqMx|B1?|m~kuywjV${Mo23z!&r^9^%3cXi1Kd`0gW2Yjs zS|zTs{h0HTo`hq*<)a^+@O$F@knVBUZIyNtC`O#!`K7=1$qI2fKo?NK(U@n;lZ1E< zzsAv48gslCR`*RfeHhV$wj`Qp?AVsh>UpMqeAA3LVC@Z|zhnQaz4h||toExRfVb0+A8^{qp- z+g72$+}Lfl)|CEVkeo>upj=V%2v=kH&H&8(gJ)fBo$Y#x+is7X$lC)ue3Q+pK5!2MJYq~WY-4{Ui$n4S{yC?=I# zliwpO`;9VHP9APkB{~hP#!7#?_KFR>8~zRpj$a;iWzhh9^B1xl#}JaLA|VoVy%lP| zu#C4pV663KoSBp+r7mqgh0qM?Lhzow-~hF=qhV>rBQra?ItLd!g>Bo1o?S1uTLNpF zbQw(Ust$xBd#2RpHFgv{?m#+ViWfW*S$_(?5zTA5 z?kX&uCg;8FiIf5bNl}zzxHhw7UL7B&-%r2`a)Uo) zo`i%hA=ec|TxTn|EE#Ej>(QaPBqroSW&pGg62Ru16y$mEay)CFO2i-DLMPH0L@<<2 zl2^;+Z-C{i60Cu?=>Y>s@|&StzeWt^0v#~Z9{5*;sD?ut<~Qk3*wgT21`>Knnf6sd2Gba)0(x(%xDH`4OwoYWpyf*C$o>_3jc1W5UQr<)9VPQi%q*YH zzfRwsy-KFw5`>bJ(m6(rNmvr=E6bG`FbC}p*hH8pj+_ zI!kiP22jX=FFFuC4i-d5D&-ogvjQN16nRwE2*@1@a}lyuira4r}ja|GsSSd%21Im z4eNd_3XNMJiCow&<)qt6)d3(b%Tkjg1|ktlf=OJsI^Jse-W^%`- z_iO*@TIK2GhNnmD4Ru15m}&54($KJeg_2su8LFL_d#Ha5zHaN}*}a)^E11l-|0iH{ zKI<-iLBclF{%Z;_l2E?e_j)bOEDl1KAL&2a->la%HpI|DfZ~!@;QOZ{d$_yuPG(Tk zfsc6yLwk4>kCdEwq-`#Wllh91pXm{Hqe02-hjc=m%w?g)Lhi!9PP4GvYpE>-V+aG} z*`o1t2$&uolQD|t2?hM{EJT!i;Lg1`!z9bPr~iRN5S@?JoaHcn2bO0+6K=HXN^)y<7cN0Wum`$;s!tb z1F@U?ma(u`PJc%UmFPt=<2~m?zKt1PM=D504>7CUnmaW)Bx3!+2|39_Tq9uxuaN_H zfRj>o9_u30g;gz{EaYv~@On>8t-99TE%Uq+Ep_tBTUMrVVgy*a=@pxRfm^KtL(a=& zG!qzM?@}a(27p7pR4aB3aTF3!FH zn{8y@)H`lP^8_4Q<8nvR#HrT>;**Kp_o6?%%b7?xw{m$#I&FKe{2jF|vOW_3X=XEk}N3%19*rUY1Rl2U}gG zSlv!fn1m-MnKe0M7wek!OVq?c@{o8`@Q#m%s%& zX@h_o!t-J@?KNaRTY@KDqAnSx9GN=sAX3HhCjhQHDeQjc{|au%=as_`{jk3m8C67|(-XgP{g0+V{|9srE*wxax6f^E&Ob-#0yFEfp z-P(LLU&H#v%|xP=HuJ95NtCNwjv>kDES#j+_y}GRoNlmLax;Hfy8OX71V?Z|vn`i) zF$5@vm!4F^>2rVHgHz{Si;SkggG0+OpVfjVOdcAjKv0qbqok3Ox4LZUpCwj@{Jlay z-N078!BJnT_!(_!P{0vob5XXZh|ZoZGRul~sW^AGWLJ(e-jWmJUgpzkeAw~(mC9mH zyvEJ=#pSGN+LYFo(;xwHu6-z8kb z8uh}_wu*(LZ{{R3!~D3UAr}LdKsI@*85kQA-ixcP;`vCe_9kU*Q#V?RJe%@BIFMiB zG7OWX0?Acr&Plc}P5o>7%~Fm8$|lsOVKfi{%FfecwrpkWhdF@hWI-Y`eCh->?FT>% z{R*hMgV|^qQD5?-&+yPW0RB7 z-L^RVg?lP%5Uan5!30@%44=$Riy*@dm|3-w-<0+m)NY$ID#VS38Ns5ps^T8OaSQdE zRaFz7o>x0ae!FB!2WV`mvRJr??*d>}SwwsY#DFx`*x z5{;uwRGJ?fSgVjq;>((&D;1XOCFlQ*IyG`0w7}18Fpq9Z zSL0R{%S_7_FYl;Y1wGkyl?#AQ3)-2msS?myJD+s1$}3>hT4LLG7n{@#>i5TgeNGAF z1LFXB+RpcD-jLVK^#NElU8T#i$T6>`CgpRxpN)^$R6nfLZ0{*@_bHpx6(Zv-V&d9Z z;o`!iX31J+tYN;RH-RVz7SO8ehn@viWrj|-*h86(>Re9m-;KYHRRNmnXz10m)*SPs zw3;nRoa0;Qc{^*NSIhFrWINYn)zGZd?5?~V*cVI+zlT(&Qu^PIYr^_t%sWNSKd_dE zXPxzXXa2Ft}Ws`HQk9cHSiYZCq@ty}*$!4+WhrMsw%|>lY+v#rET+Vu`;d zMcr3?-mg4-N&uEYXyl2}dx%RXv_VS)_S=ph-Rw@y7$TK&r7hSfmqEW{Yc5Rf z*oCk!X&Jlkxy62B{MjqMN`b$W9>g9BA-(ENIGUf1l)hl0?YE0yjNSSy3~SYBMre1x z*DSoJslXDP?_W;BSby|(6hd}f0RKcT6WU-zxO7Y#C)6!K>auL1PaC}@dcl$4j-t=os%!J>#GFe*oI zAQb`fNONX^ee>cy(nlpbjPZ zzlogwY1GyPbtq;8u>YiU(nd|8RQ~5#D~TCYKQ#P*?t}G%jE=wq0VSo~+CxeF&xE9Z zF9V!5N6^1#OV3qWYH1Z3# zS-M*k6RAneC6ER$TeI#nnrn_(JB9@hLZ8o*wFewCuo`}}PqKwLbgM+^kU9%6H6yrNErE#rNV=6uTMq?3p9BWK0?2jLOs}u1cpZwDdy2B1c;LMd~t9%}~6ua;N_%G9wr=1wJ z2nad7XN}Ks|IG)$^IY2k&w?Ik=4gZWb4{69#s`$bb{-^eFA(>!=c`yHWlF zVNN3Q7h7;Um6@i7V%q1|_WpSA8k!cZDjtS=TPwXzkW{xNS7dXTER7}S=&B6em<6f^ z^7}3!_^!Dra)c5!d@|w<+Nvb_mYPVEDH^ug7-R^FV2YR{U+f|vbEIo16r?(+mkAf+ zUg@_v@8i(;{jkc_h-ThTf)MO3gul>8Io@i@sR03R0e6WcAJ{O798zmC#cG&Q0ux=6 zX-AalX1Y9APJ~f%(1yhQ779H%dE$9d2|RzYDGoF{`Nuh?;=8JLwooNW04&-g6Kw-i zT6vv4Mb8~5^2;k=**$EZ5GQqaUtIB|9G$|3Nh%UccQkzyHJukLO#cp5Xl6PvviLC~ z7fJ9_{Cugt5_vhGOcJENq+%(EZhR@|j5YxVfj}3D-#nlIPf(W!pzHo78r7**X}Jkc;*2*o8y=dLgP1($DENKnJCXu zc7UW6v3Oi?#f#1D`OeOFjstGYdvKS3K2z~xw$PbV{aBuTq#xP*UI@1;hl9m!_DIN1 z9N*RUFs>7T)|C8A_x;&6L>=$%?~(4|Z45e$!ToBbNc!F3*bvCIT7M=LN}!vf_BGV$`>!&QIwA~F9`nO7)O!j_N0(al?MZud zrcm!IR!)xa+RDkUKY6zDt5bpUS&?t2z^V8clp_PDi0D^2pnLOo!-CJnB28pKE86|Wp6(Okx_uDcZR=_ z^bzg=FvA83r$CDLkTY+JF+)e|JA$_PEZ{Q1BliNVL&aMf>zCQR-k0(SKj6GX;^DqpZ1;p zmR7P(^u`Wc<;s^aQPPi{z-UZNX9M(a;C^TTq4WE9%gYz%{qM1Iy{DP)U**g6IrkSk zg(XkF=}ZIO``To3$hO4bspC!7X)!W5t_O-jujvmdl&*40^Df@Rx8sBpSn9{MD{7|=mIkUVV28vH7OXjY%(SqNeer%3OPz0*RrnM56%JXV zF54MUD~aayo;%JFBG(L3$E8=g?rwz%n=e8k3s-Q6%SR2JJcRhL%N|z%jOxrPaC%}4 zOOUIvxFWHM-H_Fz<%vxupAT2;^F*^QjXt}O^n%&P>KMy@Yrbuq!vwt@FPB7o-X&&m z*fSem-ZP!__rWHxNGfigvusi85&|uP%jk1ab}&Hz3|lIHcBNfcj7UkVwLi*#DJDuWfrr&O4izk{JgUe7lY`yEQ}5Mr}%&%uugqp zvGD@~$u=po-_#NtGTA9@wO>pS3E;Fke-n138TmM52eXXTT7@e7t6j{`j@RH!nPPwtn#(&Fd00XR)wjjKf*PVDqdW^Ndh)gJhYF;-}VhEKwS4TuqEC&w(q1 zjei;d?vfY$JGa{#z*cY0D)#*qT^im6E~3_eA9^L6VWI5@E2f%v zKNJaN_lc_f7Fa4RCYGZ@RH{%e6L~)oa@ZWyW|~ta>Z-z4<2Y20h5Dw8qA0tjEV-Qn z)iU{pSSCtH_8E%MY#0<0mpp2R?t`kB5ie`BBowRxD0i(KuG??3_f}dIsSB{{1O+01 zkByPr?ath*M26oBic8qM>tM zEKyFhQv@G$y~%|7$T{cl#M<4|#F(rxDa%kzB<-j+I$R7T&a3Hy@V@+Gjs{(oiQT%E z5`%lVH|wGELU^qu1Ky57coj~?r?swx5dO(@nmA%NJj*=DOe{l^QnunV+QstV@9g0R z7by8XT)9zujetpa#hfXH~0j!pXZCSS1$i^_W7i;4C% z%fht_>>4YcBO*7gq5I0Vi`~w?>YFqKU_HyLQ9ASwxBAIeB89Wsf`c{AMC^xaniFNg z%~_7zt{j;;k<<|!nM%_KxfIUKOC?kH+X9y{|fNzzzY2 zsgh`UvVo27LX8Q<-=|yJ87A@urii&5Cqkz|+vGAn_)0Z5Y?(@6Q{iSHpX=Ia3A-I! zew}bcT0a5kRC+pE9H`#TuDR1i(v!mKp}^x(O6HGD(-8i#sjlqWB8G)IGU@E@X4{+L zcvfpP@hr=y3od8tGG(lmF8qJj6s@n!Vu?S;FBPoK6UAn~f8=v_|Gc>#{=D@WBo3y2 zifupB{Y`XugbL)>T_4NOP0@rA#`OvWcsLQs^{j=}=A2vzz2U7CC2w|(wA4n=Vr2oYj$t?*2 z;UR#4h|z$6SW^ADeqpEjaYMqSZbw3*|4$Es-5T?DnvDFrhD&e( zdb@0`wh1Hf?@E4}@x+#g$8?>YNrhP8?@I`6ZTe~S?dI;3Qf@e#6j|^6h~vjsQ|rv; zW@)FM&uY^0IoYM@^+y;o3twZ-iZwB2LY!pe0JAIgqV>e3qvr@E$(27_RU?|ulSaYr zMa16(+3xFS7y8fJ_mr|To?J-LSu`)B-ib=-Em*2o?SB`}!fnyGos{}ZwBpN)-T!J& zy18~(y;8Uz2T)g)KU_6)ntwQZh@4lav%0#hH&{o7G**xJy7Pj*u0o!+5fu);(`=BR z0;-oD8MEouMnpFdwXLt@UR~*`MvUKIM}KN=?t8#A`ugTwlKb^f5yk63U|{?^7ra-N zxGJ=dO$*bys@8FpYJiZJ*F14ip9I=?8n3h~aiL^&*!y_sPDvq3Wx4fjx>JF|%8Y$Q zL6B&Q6P2&XT+wmp443vEu3>PN%JWCS0m^*fha%IUtKA$h@yXS23RgC`x8pml=b@%~ z$Dalg1y5#4l3#dufB?q0V9z|Pm@Vx0DM5rHI#q4M#ta?A+yjeA7)F%+2Ih#fIH72AU_(~dGD&?!HSGxlfJW#h z-srnEm!kgP@3T1WgKlGD=PivyN;J@1-n1u6 zPh#(5NXe~Q>;JoA;?2wZW7ae^_#1BvBaONC0O8tJ8ruym^>JMBjvzHW1#V}@#RlHFwFZ$Tx#JxT0t{2OuAw^I z+RBElCPa-)WAWyR1)efFiVjOVKQvQRc?yXvfLf>q(;+zEEhB`t2}w(;;0M2jv3!N; zqfZ7s_?*D0bJ*yII`5C-=>ITG{(OB7$A-Ef(dwKGetSY9te-=8pYM3_#&ZrHp9CLi z(H7z9Yde0) z=^kB1&E}ghoUj!kJrWo8u{U zl*Tg~A>fL81cejnu5tApQ|qIR!QP6iit1;>y<>ups>|!nQ`q}AfXTihWA3DTntik# zdK0jzhp$qIpHD0MpYi^ioBqVFz`*X(kGF2d>}{B(NW0ES2(cGyOfnDh0wE{%Y zw^S^VgC%x>g#aLkakwzB_;V@WGQOEc0epr?TtN!qaV)hJio61EQmitQ^H7Qd3Kj{z zVujcvpP3eCGPSQ$09VnG#F>*}-e5MX3cS5>uQ|;1N!(uS0MAz8+njy;jdTGzW^C8b z?F%D`DW0-5+q=4|-@ryoE86wlxMMRypo*EY12%Wu-*c)>bn8ODBH_`zY1%g=P1V!S zlZ@S+&0T!=Wex40EU0J#v@vRbiJ1bHz+iXikK}%Y;_{aht3G(;@wP>WbYi%&>R*=LT#Yo z5Iov1qQVziHF^eUmZssLuH)z1+LL_nLdDE47(^f;1V6Fmt+0nFz}RzUqP6B|5j5N# zbc6FDYK85DwM*wQF^cXBYQf3wr*zBA*WRl!v=^Fd_EkC7us2;SIOLa{Njh>-q@O zW%xmqwI`5tc}hWlG4uDXRD>m1R<${_kGP?aY)LD;+q!m7I&FGJ=l>8|iAB#1qRPXp zb6ngP0gyuGswC7uoo3lxz~>6HH88F>ab<=)0b8j#-PWpB(lyNvK0@>6E(ui!GqVJr zYa?CwUJe463Ur)qzW>B-PaaJR!YMDE<=i&@? z->{gYc1axtkki_VLEDc7kis5{N0#q$D4x%N{|>~d_=%8)|Ao4#p^1=f{|UOhs>6=I zV1R(uuz-MA{~yqGOM=AspFlTR^V06{KPB8WCI%TaB3n=2^)dxu*J={6E^GCa#gY)g z`6C4^8c`-@;mrsG0)%<;tHi%q%)$`~RRr^~tn}tHKBwHP`yDlxu*`JLMv`cz-*?Xu z;{_8a`qGL_)5&H(AJ@G$Jb-sgmY&Y{(I*OrEa@H!r(#pk+VmV}x6yyDk(}+LEK#w{ zg5;Qj-&psb zF0+@xSzIMo_IH=Z$%F(X3N!};x^Nq|HED{=&yXUi4G zjL8g|L2A}E{OI82N?5KV7meppwt;9tjO4#9uVtA)R>@%UHu8 zk|Ng32l%S(O7ji_eYim(;@+Gt)kHopsJtM7k-XuSZ18@*6q-V(Zc@xZ#}qQ;R8kYN zZ$FxD6xSN*+>7#P6;KtHK!*awB|_gxGl9}aZgP+szciV04BXkFVsih*s}m0%3(@E& z8|%GGCQn{k|8sxNb5Acf>-9bQXixuHy0Zv%D@u+rYH7a#751wr`I>kqLD@t=Zkk-# zQ4vJAgJJHA7SAseC&jB6HButNM$&}=YNfG#t`BH!8rpzi8W52xXAEA>$^VoaWF~-+ z>sW3TC>Jw3<8@k!f$!DbxO09!8oNvM2V9Q*bjQ)sdVyM;+1$Us(!%lYs zL!L*`2Kvvm>tR+U4{eDq8>?JbGT2abhMVN3in!B=>tmekJbGuqB_{F(I1zaY&cnE= zC7~@m=XWRnDWGOF0fgyxaysaKwV|)i6ev_0sj+-sn3EUmg1D(h`-vU``)=^yzJw0q#EGdKC z3OA9U$OX($T_n=k94(Rz7g+6eta}M`FdH2qAcMWXt9>H~d11$cbk5DEhZh9B`N-!Q_1rkEG}Fnscz zdOpjBk&}SICplE`QmW7+C1D789%FLWM@FwzRYuq5&c3F|3=41&8;>QW8DR<(=!kxM zRB%B_!2CY~%=sO>+JOY(s$ukE8fsrqY=@(q2#`|7Mothu6I^DO|8=+~t0_;CZAlE7 zj~FhKUS(2o#At(;`Q(2u((R*YDZGWw?f`*}jN5kL;w_v6;^*3#ACWFxTZWO<-8#$` z4demLiX=tH5`r;?-2^n47e@wE8o4eMTE>hzzNDgQ@p|S4HWR$3tt85iAS0P|Q+~ck z3xH2g4P!Y@Gmx1sOh`q|m&GbtKS zy4@5cT^2vJFrO$M(B}o1NGtc&0~#?X1$xUY&A0-#B&Ohz0&`$@Lf_*;?*hCEi2o9z zhD3>Tj;WG*AM~M)3akPLI%Nf{)=Ll~1E9Gr#Me^BINOGoNzWOffY~t#=5E53RJ4=* zzVrm&IbAiF)aagYrhf%rgf(o&VIEwe2^so*eh&srz4SWi6}+;;w)mXDag7Go$507i zmY}I^GME@CqWiH<2nG~LaLRqj%oy+}boHo9tLj_TTi~fDOGIseN-_47C$GHd0up}E z#7KxkDYL>$wXV?ZreV5i>LJ%p2XVxbrI9Y_IztSu8ZwcA#eTQ_EWTd2IbrDOMX&pz zdKe^*^%ckwv{N;h-?)PKAs|`&2)H|_!ai22)%V2^FClfu1gOi#=oRs0)!gU7`NIyWiz1uqt92R8aeEsL7?cWB#bK8GI>mu#(ml}L# z_457Y=j&;Qj{+@pV0wQkYK91=AHJFZ@nFUUM~3P2qa>xYOXHsW zWcvb(_@X4I{nESOtAccb*+cjWoc#*q_In;vt9zfmZeXcg@?nTayIty#Mgp*+2D{C? z!0vyASZy@8{rnmk`gOH9jOgjZ!q9hVpoa#QZh<^_aefe2@ON)23*Cc>SW^S35Avk_ zZ{Ib8!{H!txWSGP=Be0<4ZyD#C&jUmB6NMHO0%2wR&>JYQH#XRyn6;{2zuP9)HRSs z3kyAdjJE;hjD@-oxuvp^0dqn#I5b4ND^YJW0(4GtV65j+C-GarEr9 zC$`7MZkG9RpDZ-j9A;}R434Nok`p~st_GWpxHPcf4v#X^Y-0^mrMI) zP@=EQW^^=WXrnV8?dzVyakB%?L8EX5P-tj&==aBcPfS@zg-7gtut@6|$%oUsSpvQoL}e90TL*wDk#-C0LvheXf^9g@Ig)%xVP zQf(;7(BLOc!7JJ*Ys<(td9XDdi-u!W?;W^EhL~^UJta7WQv& zZ6iP{Z(Q03@h-!LgYUVbi8L{>}z0YhZl(AE`!anauf-zl%n3kQQgw zmO#kW6&(^SKEQf*;dU{CED`Bn*1!@G)sm9yC1>$X{*n!^{#7|0T-T@9*V?a_UsZ8$ zdz-+{R{*@s>BjyuFNLO zY9yjH*&^f9Zjgr?pR@E@Xg_3l`0hmGN5i5oOF;gk9*Dp+&6#SkK>`+5zq3j>f?S`NI2Ucm7tdEwL#IS^@{#bQXw!_pmnOSJ6p_O0;Xe(a1Nd zWob-%l9wNVaxPqL?fP`ATdAuLmw_YZ0VaBgMFn<UN8YvO~v&HSx_w2}=u#{bE(hE z-XF@Qh(`uBMPzDsM(v}T+##;;BMUIa8FQ z5L5-b2t$hF4qB>nv(u+ZyqJ~$A+-F5X4*+dDaLp+)?&}$E=+Q;l>1`xD$=Cq*(_KL zooI>49+_hkvRAnZRYJM2xqi5Np!B^8;8m2&8Ao`s9Qo9|Py7uNn5yQ|X9E=^@0UykD7=%nENr5WCb(chxb62g&zfmnNaU7U#4PaCT^L z(D=%z8Nu))_DJclKWj83GZY#rmBt@7J7Ye#{))f?&Kkp5x}rmx<3D1F+zCu!9-Nza z2HRMiONyoBXYulq8?H0Mvhx-38m3iCpRtTb%Y~K%gy6&&<%}k}FSGAuF+7N+UT)s}1~D|++>K-yB!?p# zgm20%io=z|$_&&Q-e&=Y_=uk%m_1Sb5tiVpjzI%B-XE7J)<0wf7K zWC)o3P496x{w%rHj-OC{qJ71cQ^$=L16z_Y+sli9wX8iAmqha0YzL_YB({;i5#Yfb z&(Kb*ALhl)V}k2;l5d-k*gM2pVjjo!S|Gozz`N;X=O)eejA+WLjD}pep^r+%lM|*u zo7Ea#Ip#l_5XwzNLN)Yf_+$!}kv6ed{Ill0bq#a;+OHNbG_KQG@96s|C5a&T>ul(Q znMJH8EBx~>XvLHI!!89CU{X7GtrXIAH)Fi^C#NstvmGR!_5drD+txgXW)CSZm!Kdl zyvaL79lpQL3G@P(?zcdFNkf=Zl>`b7d+NJa>NtFa<(C?okSMaR;T3H zZC%epa%Z}Z+AemW#JD`!fs=%oULzEyoR2PZdNmHLw3hMCrQ^vq;Kx8-wuUTI>NUN@ zGd(KsOZV2S7o%qOBMD#P65(0&NmcwR69y|<7KKBop!b@q&dT?NEm%i|y}|rm+^+FUy5qgWC90)q2`El<+GJE0c$%1)%d9Cm)5|F?g-=qb9n(BjXFWA2 z0Bm6jOk~u&U?hYLV57$?D)5-RB5$0m40{>YcsQ?J-`m={JNVOc%{y9}qJRvXL6qU~ ztWxzdhc=prtDM|FnP{dAnatWq-!u=WYDAoRou z^#r(s4CZMu!QVy0{{kDqZHr`}Ghk?pD(V_aFbR(qmkJ-zKQ#F*jDeBw>I4TANulY+ zPPDUE80#^_cXyK4ssA_?m6J?XmLsMEE zZi3H3-5uI%`Z@W^b7#VtpUpO0>Qd|Mf4xFg9C=X%NWDur#MF0o*A}Y*zOFZMt1Q$E zL7vUw3=;ZICXWa#whh(6tYpGkI_+bZrv+${SNv{=`ybnvEr6^#Q3j+zm&abOhH`%b z5}4#r0MuiGKIrzdbbNp5&y_~aIUebKUKM{z`SCIN!Ph;+ycr5~ujlqJ8J0)jOTjd) zIR4FFMA$5mbe*!;AOgx{h7$N_`n?1aQ~2LaP_yxf)x_VXKLN+^?;*f+Jiwe%lk->& z);T6l89$z=qG87DAxulO6c=G>U5@4AQULu{H54il8jJ`Z#>S|c!?Yk{=4MnYM#3!$ zFdZ;GG(EK;<0DkOYErCMI=w^9Yz{Q1k<1N1&X9PQL2Q`1AQpOTQ5;h`4`p7>SQiCa zp$}ZUp;$}IaE$zTD0E!pf}{-yaa1zotZQxjjR(o^OX0EGk`=5>Gh?YBS}g13g=Xmh zypyA=&8EXBrAz`?Bg%;a{*QkMf7_jjx_N-uTR69h}K}{Q<6OcSW zd{6kg_rYslNt>KRl4(_fP#}^>yinuemxre(UCu4-RVq7o9S0oYhLJFQVg%}8I#=^Koe&VT3r@AIDv5YbNqE62dNb=e z*eea)cuH*7{?1=OA}NqS<;%p0k_27=2Y(`@%A&C#hlsJR>3ro3xp>%!1;EG0jf=~hAM<54^l-AV7hVoKwBWvi4kBWXmE^5s ze!ba+2P>y%@Yid`Bk*E9Of{yCfL_?S>tK7aGsg_JQ!+{aMFEX<9hT4mGQ=eS%?^~q zu`tRGs~<+HKFFm9w7uZmb{4=rGUQHtmLlBzTM}nFnK6!n{$*w&O;&Dbw2uyEI4ADmzrXSXfS=NMX)5shN13F(0FT_!=@lfwbn6+n8*LBFcR zqk5`$f&JF$6i(Mnm*%`M#tQzE2GdFEQ0?f;o?pfAfy>K&P|G>sizv==#8oVMHdUwv z7JDID(gdpfC50wAyhnug(liax^>3}1P1;Suq$L&ZDvb%cC*Y@t@sE>eaB27YWzwyA zD#Y@rNiJw;*o4HDW>Ny6xu|Qcx&YskhAxVFoH4EFxYBldLh|YiC^L4vy&qQp=B0dm z7cP9|8kNMrMq3HJJ``g1Z~bM#=6^{4;{PJ^x}sBG4B84&+Z$CV0*m!ifMI|Hyx;x?_FE>CjWyy{bqtS_xkidPMP~zw$ z)ydEsZN=-iL3DTKCt|Ay^ry;FHMpFDO6mD`6t3WTTy-B+eDw-jcTRl$XvOuD6z5=tvMBag9b4G9VqVe@E9)&_lBE*L41;npMb{WQFZ z;KL|zn)BTBMc$LEpLH)qCjll8gF^o>N{t)kSQ=zB!w;q3$2oRGFv_2RbjD1@P{00t zC2LmDUERMuL@0cayMR2+Is+I-b}V{+f$CfbP1eisB0NY$?iHN$DvXN%iyaT*bY=^zhv~N=L0Ti#}yb035o}hdz zr?$inEKq9FtB|ojpWo);O{3@YakaVAKiQp%D(!bi$pr??XPtQtIv$XA$kP3F3*X_b z%aCNS_3aKg?^(OOxxG%`T^5(DZmh|r=}NJrR8Rw?DK7s~+$jYO)oF_SO9Eq=*}mkg zN+=1E4)g4tr9^Mi1WHx?d$!ST9X4MqP#U;P?{7_&nKb)=qg>qZFZB!w*_A;jv7G=gRU)1URoc_z!Wko~ zpG$69?*Oe;W2@3=VGvW#kVoH-Tiv;USuh@eh=K0(tn-c9AWV?SOqQ_{(~vcUV6SZmp{nXiT$nGY9T#d3 zX<1BTKP6EZ_La1Np4GPn1M*CIYJhA_(vgbDZv=C^Tp(yckPNVwuB9dd5r;jqD)=N1xOE zliRzH;!Gou8lpL%nlB>QsU~!(EM?02^JGiJ--n0@PJ_Po?h70SK=&XHNZfw!Bh^%^ z9|P0=ydEN?qL`&dtrdrfIaAZUkat`ZK2YH4I0>0c%dPCP@jmXKEz&vw%r(#(`U6Q? zNGlpZY`0U(xwK=$I5-x`<`$-~wrpqYQi8{lZ;?dWd!Q$lyR>aKcuQ8{7H~uD$HR-#pZ0=7 zGZ~Uf6wt#<_TlZMYRHuUGS>n=RGAFONcP2#xl`G8P<~dbdV_kJEJ%+U*zyqkfn#?r zK7Sma|7D(usM_7MD%YjZ_IuNqrp5Zlj_P=j%UG2vN#QBQvcdQ(BHH%8+rtc>KF6J0 z9V!t_S1u;@Z|a4r8qOX_?s}*?&48a*X>H11AZlf&9Pk9ioY`m>oGbr z?u~sTe*jjZL&^D^5PmE=gQ;Fs@9673Di9*^)M>+nRHkMJO`RmL;X3qkL7}8#I&7RJ z+QKBj%1C`si@i>GTPX2>NSW|;k5eO8*)ZY`tveKSxHXUxV2u!LV|J>tsUsvMW6-Azm3@T$ zpWBLSzGy~0C0Gaogwu*v!=z#SvW{uEo3!p`oxDMw&7VTd{3n|x!T&g43$f; zVy4+}6vw6xfU(qS8tOo{x;87kNk=uL=C15qrE)@B@j80yt?G(CVUiApHjCJBS&b-( zmPoawI8pLQj@O6+4SbNYI~yP`0uD+*yLeuCWt>O}mOO|bEX$LgX2XGCH-_|=sIr^d z^WbC`z;2Kz_gWn;NwI`=5=48oS@#VE_}pL$ymo2{!=(*45Ac09jTN6b zdqKZGO1?OK;wc2+bsB79F+1yDfpt}H==i6i{Rx z@`0>e&-tC%iZhWrE=N9@j~|P9N%%H&?SO#xLH$h| zcS8ONuufBoMCX1EllEg?$W>lUh(<1d8L=&g)VvRWp9)blDbw3dlU}J-EU0g*5quHf}ghSPN<=5bA{jKF%BkfJ;p)o$|h0R&LcC)wbYiG-lji%Cwv%D z2NPEl72=O5Uf@J_Lp|BQ*X)VlpWNvT${QncxCI2YfHj%;1j6+75UYt5guMRTyTDck z0A|8!Cmj=BGx6mK2w6dy!#zt_3-$U9dS5j;l{Bg8t!kK$dfjge>7=f(5nZAbX--5{ z1Dt6yQvg1W^)!EmVjiDznfVLZsj=d=PGB;Ek2wK1(lG2TGD(WD@(=$i60lMm>EwCZ z(N!GP&ysVrjB}nD!>;Qse!82kHPZ_MfZ5(e_L}X75;m28|J$-+F$jGloSE1wvXm_n zY&;&jw4~DgEN$O}Ln((xjHz5~41a0hT3Ji3I;;6j(KSjBm$EmHD!LtfR<63UhR0iJ z`gbZWBuRpy%3zf$M!%5d;^7sCDHelzvoGABXIh52o)NdBPP}tQ3t7IfGa+awc;KylXy4-P0Y>82TpJcN(+0DZm)Utjf zZ0W0{G2qWavzKWi(!*CfdFRnV00lw$9Htu^JbOq_bx}p=b~KVx&@$X2NvPwL5c7A< z6pnyJ>D1Yztr4}fT0WcVg`4+wFp)ZYawLP6Vr=$R+X|j~d<_WS4;*fA?bu5GG=A1} zKKu@KVRUUT;t=@zFTTI8v)5t6GZJkZ-zTpn`zr0Rm4kdS&JU{b=icBK_ouWAaE*q(L2ai9JjC7YfZF z{p;)b-qYRgEr6|^3McL_7|Oh~OxV53tWk9K*#XSf0wW+V98H$yIbA z&o7oEw+3G;w>-S0IsjidAkS<=C+Kup>^|}@4~Y2vs1i!^4O|7==Z2Gb^5y)^r^K8mtq_k3fh3 z%O9M?5zXmpkHKR=&00mYa>$J(L}8B;cU1ah56QPs3T{;O)|y&-2Y) z=Y4_3^zrP=vfW&XifNUm`fn6XCL%wNVL+GXlM-k7Qw6d{5ubB z;U%31*IO6}d$gmEtV^qGzzexn&O}-1XCJ*f3(v zdR-%vqdRLx1bJY#2}ich+=zJ{N1-Zx2cfmLgiZ>#dZ+#sAmSJmh4zD>pQ?<=5r~iD6H7eG8VTQ6LM6~&aAy-&I@Tlf zqG$^2K^saZfX^~O6|zL}$ic=k7lG8Yk1Jy~Y~C|B6DYVSdmh(56HUxZi_!5cMo1VQ-}uwz>TI?0Gy_|Vzl_%8!JXM6t4-%?eS6+ z4#4(}$!B*wF&*aDx~-JEV9_`k*vjQTDKLWHlft3H^9tM)-rmpKrg zG-hR$2VV_3GqHMESzkoepH5ECgY);{Y(ew$d}PNmKHZOkG5!`zzVp|(YJ+7Kx@e6? zg1%o{00qxAA3OHq227#O-hRwojfK`_u9sn3ZthW)x&nLYDfc9la?}s(PuZ=<UK{1Tc}=VA7m_t$bJz0-%KjeL?q_s~|OjfjGL@=eiv3`Fv6Kpjqk^A`k~t zg$1UF{=`fEi}EwK>E}T-oMt5~r$p84jXx>2FFq zSM|>eIU+tc2y0VA{;VFk7}SH}=uRD->igar*6$6vC9@f^;xq-Odwcm@^6EFx%;S{O zw2~U0W5-46q)7j*Ey)n3;8%SUJ}ZvCj0(QM0$7a!%fnD!Y*n9n!?|F?Jk0|?duTfl z0QS9dhEGSpez&Q6aApS2z{fZ_y2|`PnS@fYNK?1C$dc{1=#g+HaDb0Of!;{rR{}U3 zUSy;(s(jgD5=`@2qT-X3fN;MIE8ayPo+6GoJJ8<{)>cKsa>6?B zVWH>xW0jGwO+cY|AZdRCwU|KlYrygh;9YHvjs9`G>59SQzCH~$JZ1>eFm#SFRWsk( z(iTp|9m;u->m9obA%PztM~p)g*=OPjk! zB#J`%`8?M1o1!a$;cVs1i%(O-_pUG1B>x*)E;Sj=oLkW`WsRPDE~K*) zT)uFG{Gfna=fTHZKG}hr@qwzmiU4!vuJXh-9zCNQ|iaw*kpJyH8 zK=tXS3_SDilZpEBGgME<1=35Jd92hcZClObAa>1-M_N6e3|D0MoQkrJ+iV z@e&HBj=y?6__GT;Ng9R|l>xFk^F3oH0prp}P2&F#kWWhG<>NR5uMD1R z!W~)#$TXY8v3CS5HCU}!Zf>zYHx#mm1dpU~EzB^qiN4Zr^(`d2DTSlyfsx^6`gOml z5s*l+EWo~+nd?&qCwn+8O`7Oo8S3;kS8C#{PP}B{Amn(;Zz!u^K*^UwLaaGh;PS!* zj@js75ou?$#p>;_;l8!&J=wM;-MeKvDL+njk4K_UQqFyaG2O4uxWU_6pC@_7Vt{kK zQ8pIUXiTf94~hI?>_Y}Z*YH!Hrl>784(d4JTveH*=X~fkIjL;&_I6{%`Myg%DRBLc zg3Vk9<~FJWOMc=8AQT=ysI*j^?iK}%zKcJ@2rX!Vc|BKI0H>xFN{2yT%JtA@47m?= z3gv-L1M3%;3j25y1s}aYXJBs}ihwH2x@fN8la?CnTO99jFLqG9=A zfl=|iltMbS)8Uz?OMd%B4c!y_R!;yEiFsCCrTu~R!MFXu7Oq%wlQVZ5W>yh| zRXP{asEktk&em*VNt7IC;}w5@C96s#uy00_H1=x=fULtCb#-E@SZ*Tf1?B*MoK8W! z79*^#io~7x8wS3b>|4_PN71`Gk7i4V!(SZX#rGqf*bfrnR`1C4bFTq6PH!Z~e-Bf* z!#BjO(~l(l!bdZR;hQNAk3yna#!gH+_CNS~r{LP6Ze2UJZQIF;ZQHhOCo{IQ;;h)V zovhflZLc^d``_oQbN0o5X4P}kYgCOfuSV;=wedckaD4B-(-O7D&UZ3=I#<*~xJU@} zwPf*<_PA?NGTQ*gw3u5HS7*3;oBsq|DA8k-u!a}oO{@)iM=cKgX&6L1z=!ojaJi^F zfG{EP7H*s2PTZ(x%pdSMli=nfa9*@zuz6G$A^_jwra|90M$sr}F$R21mhfwbNc?P@ zFM4&0$;t=CpA){?aXs}AfoR_)smcbB@jHk-J$@Jki8}y@KOSw%>!aKJtRHs<-w(aO zc`iAE#U}yzQbh`XaI@41HD&UM_fFdxu>0>ivTE}%$XO6kH`bMQFqNdss_PLEl`k=1 z{deQ;QbOZOayG(W$$=8#|JYmUP7saDSHAzgbT%neo!uf@*B0fl5(=bIf=6frYC2y^ zJ;;U@D^qvwes<<@OkwE-`kNbYJ;CZ@HBqdnOTq(SoTpLGZwp$SV-R)aUnS|$=%~@A16EL)XH13*lUYP7538dd<$B*;e>r#c zN^A-MA5h#OBDNv>nCKQOSKA%zN&%F?DQh3IXMk-zU3<&#LYNznI*n;kjGx$(3VAZz zFFa{tpYN;w7JXJ5V67G7tRUJ_`M_ODVSk~>bAj9w-POU~QHnL0iZUG9<6A$6De)X# z7FKJpffNbU6T}thwiaZ5def>WmH8yIlc5Fx++h-ELN-2$yV%vhl?nmHS>+ZOfu%jM zWWFcw5pOy~xYnG)gp{!~7f1|#@pHegK)qV}%oE71t`z>oet}Q7tTHg__<*0BMLdc& z=EdfuDl#_2mthHUFMzEpy)P-#hPUIg@2@CBNn*~J(qK;i;27A&$7E{h`w-tGr_u)0 z%Itm61oVpE!J%}OSwCF4h{Tr1UD=zThjv?<>&yuH_yZcGQa6zOS_63O^TMvUaJF)2 z8P3T?30;eC?)CVw5;G28rfO3QV{xTpEHKqj2J>}~H^_o5qaQYYEHJQKDjxd!Kg%SwQ*W%1LLfS1F`tR_}!2-&tM#aRCf30<+D|p+2e;l=PDU2 zoc#}KUd4(1Fe8;mSNL#qKymlMq+)((e`URG+SSv7Z3{%MI8QS?hIxK+$nF6y^Wd6t zt8aq=?^2@cg=6%#4ut-{EPQe{o%B*g1xWz)`z6CPgD)&-qqDM`A)Hvz(>H?F2m2~< z5el`a-NkNBrp;Eg<}&aqWdR(hRZsf&q>G?mg8oSYR8l#9!x5TZ_ze^t`?K@u#Jr_m z-1b*vA-mA{_Jt3Xp>0dXcC~<-zpHJ;U+s^X4jWs727S2KW%B23o&u?P%pwv~)@~g! zMjW%;duG@-IlIqDl_9{iC}awz8C)`i0Lx7JbKo;f%BjS6L55_p2nN_IJHPL6|<0OXo`gn zUmv3~Nh;e*>ho9U87^{O(@4IN;r6tTy3BHzl$*opYg~0qd2>&>4EfXibY^}615EO# zfijB4U`1*iu!Z#GIC%iAhnb82CrO&Tt`kLL5qVa8u~%I?Duvla(#6vi-R1i*UvP=> zo4=N)28*K}2BC*v|8|@Xk?}S9!sa$ky`@q&sBL*AwiHO|YWdF#5d}@TD@4tA(QqM> zlQJs;At{yN{+jY|GQ~uw6#Xw!?Xek@NCp{MwXYMi7K5{61u5VQD^Q#|vjlfGA39fb zu;0@c#w>Mzu)lmxjWhVWe&k6W6x&Fui3KqmL7NOqz2~E%bBMw9*R&;qZv-xz{{){j7@*VdDvbdIwHE6 z8fEhk$1vbl0p>@$8r{jmb1hio(seCJU;`unc6TT89+C?#TV0*N%0uR|YLS_}Y164H zf-r6PmN>vQHOxdev&5;&K8R?+NrT0F-uR|a;yWGy9f>?*L3$Ljakhw2R zF$-$)%&;PboZR9+MO078SO}FfXWBzvV}#6Q&h)>eKW}c&w8BZR3`B5+a$LIMi^S+) zdNNU^W4la7q{k+1pWdo7zfMbs;G-Nwjl~X$tXKh-sY%=gxjnv5_hj8{k{e2DuOQ9Q zWd+)C^Dne%Wt{l@8w6+igs;6Li6i56DMtE7ngCo(O1qfgCFr!vDFyo z2aEwk*%)4++qJ(R{mI0%o+#X-8vV28lk`=;a3Hq0=&y(X$7mg10!x8H9wFs$W*}Fh33;q z=cte4HHT#NG(t;4phS=NrEZir(|Z7|-(Py%*d;glB>DJ+S9biGLhYVjSgge>uHqb2w zY5jSjY9+QqUX~Qyn|zOXHvGa=m=gf$EyiUMX^eFg6tN7H1F(V(lSl2MpC3~2#~_G&yM zGB-0KiRrD&$q5ebqyD01Zm%dVG*KPbbr8kz!IWC(0B51oA|Ak1(n(USSeai|y-r4C z5nO|A3`+V=qtxMMkw+`2+_k}5=L8Rh_XuoDfB1M2a`U+gYigGFYf}F4_}xdRSxyol z2xh?GlQ_#pxafQe7DeR*BkTnzCY+?7e`Cw;f+B;L8ZiP%7LlRfoJFS}dhlY(KFU*F zEGn!*b7@3UF%z1>Vugvh&5WQK6KlTQO#bxqaLt#=V-P>^WzGgc($KZ$j>O`I$3nuI zQjwzYmM#Pld%TjqffhSiFH^`9YS@GaRota5ZtF#x;%n|czT2j!T;BvN(e(0&k}1{f zay-ul2Wul}s#Mq^0=02~5Uoy6fzj{m8LO(k$@2F!bra|${d8PO!M{EV<(hXul^r*J zEv-AOd*2lH#4{wi%yB`F&BHt;zo^QhT3B(;N-n15$0Ri72-^Wc)@sB!nnwx*h{TR@ zy|BTJDbc9ls7QN5!BqoPkWzd`)2-L%S3d5e%s15~m#X$q6;1r^qrDg82pDI z*|IvYxDKl<4EkZjMRiqPU5ObmlIO^EfqFz`=R9u7U=VF}Kkfirl2)7;LVv8~<+b!L z%K4q;D*pa~C@$h*Rkr25;E1wf?g>O#CH@Y*IcE{R$7VRhl$jCMRx;L!EMwZ;i}1f4 z`Xhj{YH7_HmGhxfChx$JPuiF5&Y;#Z4^^WUkF?rrj-;`3%F5Hhh?jyReZ~3l1gN0x3AY^6f(te&Ib?yXCZPyGcyr zzu%}7DCAW21K}ZnW%tt-m%f8i)pz8vT0g$IlJO=DDgB6Ry*=IlLDz@i;Uw?MDB&6YL(6L_lVbWFsHpHhd#gqYvdJWA|I@UjhNY9_MeBme- zW5fWKpukY|?ih21Dfvt}$QI+2+&})|4E%2FI4qc`^H6u$In-P@4dX!S!1+_C(owNh4~;Lm_T-=-gpU+MH|fnI+!iCvGV+bRm)tl zoPaO-Ie!7j%m-}>F$hOuLHVPDxYofKVnrBQILb4342MbSI_YJi`+VxT^Co<0HO&ZhX#5>6QZgKcZ@a&!rfA0QY!=XD-6e4Noq| zOXtSS7dP==Pdncpw?#425p^O(M7Ope`KBNV;cgaYZz(9A+X|xqBw9p}D&thq>ZyusiYFlD1?Lw~1)U0qSTRP=JfnK>eL>e6 z&OL}MbAsy(g)LzaYYBz-Bp^#Wl03TjJtn&Ud_(@v?{Pt8j*Y~iz<_{8(9?)h!TxvJ z{{2A% zeHjYm{x>4jeds%R`FXUcp1C_7k>I0X;?(tdM>e;b+|Ivlo#&wic?##hHlt$0$zDk= zWfLWmJb(%ebSeh)kGFWhpyO>?|LybsOj_{h!}LoPT~P&g4+NVT3?trQ;i!wGCh$k- zN@M~aKLTWFA@IlB44{8&DxT#bQ}kZjH+8y%vTB~NNF~F zS9fPO)fQ!-QE{O`DZ%BLEDBmO^xV^gA6+bp8vyck`Rw?B%>j1G|KOCSR`CAF&V6RC zzS?8J#IWFnh(WCa_YK2-AfX=X(*K~!ke0tKloiyQ3-RV~g8(Qva*7eBrhr-dHrYaB z&b%#5HT(qO@GwZ5)l1LPEShjQJ8f$4cl++8R$**Feqofmlh4PeLqa*w+)HXOZ1-A9 z1Y|Fbp(*D?3R5Xz;An|KtLf3?oFX$o=(6UosdTd}dCFov*>aY3Q?TSno+ zlsl!T&4jEwO&6VevdM^%LMumMRwOUt8G)dys33*r2;dpQDL62Yw3%T;s)1;Ox6#uc z6O~pSmxtSEy=@1S}9#9Y>4`pTu0wvn{)iEYDSfMOVDqoQRY@ zjCzSxZd(qyRCi>Yc?DzU&kp?_WTwtxOOL3gOO;Dnm-&4d(zL?0YVvwF>gbRD**tdyD!+^&UGn1M6qnee0o6MCeDL!i**eH2GEZ8nnWRN6ZSswI(T~E$IAnRuUHJG$0fG4I3+~I zUhy~$L}R4~p#Du;l5z6B92vSN#Qg}Zbn!R8o|tsqF%H)w7;ff@r~&OapL<4UJ|~!I zh5bxD{M|UGdKm5##l_x)&3$AcoQ#zHvhv=hMo@nU_i+AQVcRYjC<-0#02rH$>Dl<7 z5Nf<3Tg&=D=^UTtC9EfLxvt{R!@|{D#(u#b^|h6+I3ppCc^iCiZ1e=u9)@8nLkPJI ztFjbF;4kj#O@&Loy7*q;5-gbRkoK6`*&sx1ELjsAtlSY*QVJ?3>I=SaG4N^MmbxTL8QDxhmIX4 zJommW-I}T7M92;XdG=fmB zw#b(5RwukBgwsXh628M;Qmo9MrP)n~TlW8kk<>s<2w0PS#`Leh5-uD?erZpK4h1EQ zt2P*5LsBY@P(x>&2L!lp2VnFxwv_Uo>>$$Hv8SZ?#Qv&cLF{hPwW&dV(_?mGPS3Xr z#E9RtHf52v(U2@$@SdMke1Yd%60$56rIRx;-vRHj0%w|+^^ov0s6er47Jl9u`28;D zrT_HVw3uOwwsIAGeQh^5%u)g8KH*IwRZBDPJ-3b0Y_*5H1K|EX3ksdS?&V>xbkiF1 zU0`{_TsANX3(Djkfmmjb{Z!MtufF71J$BtCbB^t_sj3qFwf^hsqXIyA_=s7Z`LA<5 zF{a|grV1-;LnAFNuX(-dkP*68wKL`yv@gA_2q~vPcN<>z)9!+$D=2J5sw|sxWUG8K zhX3|;CfJdQ10Z&Q-p*jxK4@0$N^hk|$Arj&J@ZAsF^Eoo_Cxz&`vYLZrE6w1-f_p8ih{Q?a{T*hynC1DS7 zL%yP}$yk=1`GLVXTm}+F<5X5-738zQWZdDrHQz-2-{V}9oUJR=l5xTqhWxQcgS~+k z<*?ieI^aVM+k*bBC#KP+hRJkQX?^u-qNy6quk|@-qt18J_4gjt!u#4k}YA~27zZ)^I(WEsNekvjBGQ2Zx9&mO@@rZeCA8jKbdaX0M@>4wFM}`YW z(9gL}k<=Pa#u5fuq_Gp?)u?w~iT2Z+7t{q(ipZwo$ojR`@3=jNW9(N?y2&*hrgC#= z)wDh~7bgQgGmy&HVEdW&aGp_Pa$ak~qdgNRg(TM;cdNvA76k%&&ro%+Iw{^eD17xQ z0U2yDQe#iR!E||wc!OA0-a1KCIdxOWsBf2zYV4Pg)JjDkVgSw2I(ih8tLg-OvqL!c zu&ZzFbsNB;uHTxi-<2-l(6z2W*xB0)I`>D?1!rXMQzmRXi;4>K!C5jpQtz-SYe1=} zfu63<^7sY%KkJebBj^ZHsGr2HRdS%TdQ))x{|@1@#b(C;e-tLo+I9{H!^mGX2K7h8 zb-$%~-x<Lycxx+kdx|NTxDAmj?y8DdX7%`aD<%%f_bp>u9!1F>Bh>Dm=JS3x(-SFxPdN8*cob$FTI{UugZRX& zQ17cwp`~IrmpfFHQ^)W7JtRBWIh`?>Zbb-X+n>&mej7*UYSwV1ZGR$RK+&R_4ej>|ykbi($=h|JgZ~NlYMag^ShFV$d@f0tDVFpWP>OCJEe*r!iGWnR;SK z?Tt8^pq(Hk3}v9zv>ibw2|4RnnZouYLUSx(jGMyr!Lb~Hf=rObehv(p(49``dc%QX z_d6#LmZ{Pb2|p19Rwy!<<}lc$vVuo+Aw`4QcweRQ_mtixCH$UXMS-~p^E_k>#Wc}c zJ+dE520-V>Y4owfQql{bh0r8y&%+k~p%eReYV6C24{Km{trwxi8gl2v%a5%v!iQT~ zS(OBK79H|C+8LxZ%LF^Hn=j$*$`DZ%3SErd1Jw@8<2dQbNQw$Cwa;HQA~G)^-e$Bc zP{Nd%v2Rc-F2)z%unNmCZ?wyeNqT5MK0ms&9B@GkI@K6)0MkgKaRY*~=}I9Nb7jU; z7?oOdXXDb>9uO7&OKd^rxfgWa% zrZiJgV*i^u4j9X>rmLOl%PVHVCxWnTO;BtVA3Pj^-pP}H?#-RNuO4~k$X7o_v5zL% z1@N!Q4Mea;lDy6_6sQd!?z&jk-fAS@6}kpX1)L%}=vUJ06Im^QE#Fdx^>8n-auPfe z?sPCX*^ECNAk}+GKB)FfiMkWJ3fkM?!2fD`9Kq@>;)0B{Clh1EqL=y4wrzJ{LnB*vqp8a<2?5sd8D zum?k6!MOhYZ(eJ^B!jND(M;WcYDw5y>9>uro5ncTNU?tcBPvK?I{=IReIJYHCK@%b zj&T}AdlH`K&qQJL*z4mwSB`E3GVH0a062}4H~S@aIAX&_V?K;={|72#Xo}aWHy}p~ z|I{oQhushe*8Si6s>gcu*wquacKK!Bov;{4jD8xVgzwe}N1kVPi6C0%{mr#vOz#>% z&AvTi7v{`{FbLt7QX4L5ecIXH%>VdoGAlA|C7d+?#?BPjDI5m^ZW<4Iwu-OHFp^wY?&1Vt_j8Oo&{D2SnJmj#0~nruT{|-6 z_7ZUS$IF%X=MVMb#y_RUQ&jUvoC-T!$-(kvl+V9bgv4gi*@myWKsTBn4hZOR{nztm z_OjHur;+BAtn{L0k&g9H%rO7 z^T=a-P*|w*Ita7L`WA+6513x6s5Im&MmZi}54D*Y4;rIdsttRt$WK=Y1x38p9&hy? z43jU9#!=EmL&gqCgy%WCH&v7NF-8V{UDuY8CtnTZ9m9b5V_ht)=B%k+uGTnP_S~(& zCXpJyZJ9rxORN^FnW~<4qsd36>g2ajZWm5i#WCLieZh)B0Yj)-0-!2%bSL{5`A5OT zYu$iZkaN&SVP+(D%yVb3O|mP5qYa;vkDbFoItI!0@NXtl+Z z=D8a~;Ji4=V@TPeC?REFp#~qqU@gOH8cG4|nSM@s97OnD0IR#i=^%@q&4QGy2Rw0_ z;Gg(`Hst=9m9mIg9w31i=`al1k5831u4MR+yezet&L|Bkndqvi=)X?pSxW3)J3px>FF3xEEqmRNXU90e+ z2BElZbE8!So~6N)f&`)rvB5wl2-g1jA8*Cj)s+j_fQwNhdtytQ3j3lq?*f|O+LEh( zg&3Nb5jFIKkjrR@M%g5ohl(^7?R#sI`Oi_!emJq}#i>vNqF&LWVW#3s8x=iDF%EI| zp~dyjZ)@uxuyy)gPtBZlJCA>}SgtWo!#iV;`oyyO$-@{feBPP!T&fZ0elK8%kpb7>Ld`^$Fu&%E;h$fD8!6P z@sXw{Z%s&e{hOCtoCw!=?w27Y4IZll_DGCXS1-e$X${+-Qc+O2+uF3F?brO^*7xMl zb;ZsvHg}kyfn@_KC`{NOFDeP0T)^wwxYTd-W#|bg#zj+E-kU?t3@%?{B8(@Mg%S62@wC16SC;!-02>soe)t zChNw$5*Bl_Dmo7u1~#XT&~w)Rljgr_P-+LskF&~*9gIJn9mC5`RcHo%;=2;QW?LDY zK&WHx@!B>$u70oUxRY@cZ&uIe##p|H1E{n8HFQ_9=;~v^Nmn|q*!yGR7|bZQKto7R z>H!tEYhrdT)xI`)Vi>!YEiqoEc}gX?mRvj4P_b+-1IN*E{j~6QmCr=a-L$8Y-N0rs z&+*3*Yh=vZd#S6n=5{EoX3ebdeW%;QgeXA}YMRF9W1MRd8EOl2#l830*`sr!2f*KE zRV*&*g-Sv?$KuuN*8rEup%cy#blt~*2wdr0C;nlEhf{T?f+{)!k#m~usrJwSF{2Ko zl4A2>cEC0m$I#4YV(TltYEgJ`e<9Z^>MvLB#(85+01V9cNCSMZEY;90ud5-xBunIK zGj@`g&~mj7D}XOAKRm*de!A460TA^S5LNcHbrK~tLy}SkyHW-^&CSt^3D0tFO3sR_ zrCxS?{GM6Mb@i0%*B9CS^+z9rXnFW@21u|HCKsq*Uf{A%$nJxOgXZ)I%euHsGVBq? zq4J*IB%4NoM#cTT9-?7|Pyz~QWpbzX@|^PlTi3X(oGjUGy}VwE6w@x>7659*ZIO6`1wiOgT8) z71H8th59MNsL(&2FEOv=&gVMb>;ldCClg-Quu@mte7SY(U9XVL>Qdx#?rtGka zpP;0kziMx$UrS#nA+2+BWiNB?#~bHe89s|PS~>N#Gy0uHx)VMD+p%1Vg}Fty<;)t- z_x&;C87iCfGfsprL}?lw1O%5myl&d66xv#$Ea&He-ISy|vc4Oa+JN&JOKMjxt?c9Z zo8xuDCQ}h1Zs+qQDQiq2t=_ni6RMjnY>`HPb!~is2%bm$kA2~he1k8^P=Etdl@`zL z#tgsqFL7kGo8gDG8lSgi{dk|Y3cE^p%VBoJCT&rV2?L2)nF-ZvTT~CXudb_0Yf4{rRIIj2+6ey10) z(1Tg#%!Bk+)W>Npe?>11!kQ=UZ}9)Q%iN&QKHg|F!+8l zaN>ILcjUtPx^mrZ*2Xl;Db{Z8I4*TdEd3{q_KW-xpoca>k`S3bMiw(QWfkdjpjBf^ z943{&&)K0Sl?P_`o^b53!0Cq+^(@=@vXIouB3)M>qD-bq&O$vTqB=R>fK;FKPsy3q zl^FIX$_0bmsCEhEg{ub-FBVc*H#>g#rR_V9;+-Y>`6kyV{2kn8Hg=hHHGW?3VSItO z7HJ0_@G?VL<;%y5kH{e4bY$SBeH?fW5P^7}3U|=j9NTpjl&Av;$Yvqr(DR4SsC z2XG#6VQIE%(RFe7ehz+%O)Pts;M@rxzmPdN)U$a($C8lGviTswI;> z=Q1Zq(y8eQPBZSZ_98+dT*=VAjmb)*VuU%&8uI+=5UkHLOnsO;0?tYEnz+=@Kp23A)%1mxV)+<9~(yHnLdfsPy z+LMk z>gqv*-_LE~d1x$*Vznt+t}}nUA0wYhCZtQDP!Wt8soKb9D@iEFnw}+Nf>WKjdcpDC zhu(oc<<6@S+>*kG?9>l}U%0<^ZEgaC@HPF^{pR=h>E6ulKhxR(Xp^#SV#h!i+Pu0A^uw1gKBh zF&p062_i*p51f-CJo*T|Y(tvDw#k$g=LFgkuDs*-g@!)*9n3ji85c*lq#}r=j-`t0 zqt-fhl+aJvoXA3{C+4N46#d0C09x*no0fR~8sktPr}GuZ(g}jVw@fD0gDwT^dcOB1 z2;mgwUlLM;hJW!%ViMV+LUYKaK*+P+zFb{c@gK>1#itJ}D;909{u?4>#dqD#8wB#f ztIdER{yxG!?@)K`pV8DTAIFk$*nfEjS#KHL^VNVGr-x1gbI^lvy*)=;K$bo?#>44J;hXhs+K zGP2ED%N|n(GC)~gfpcg}K74v6yhz85!cqNCyxtts_qAA_kA7ndz%usDqZardzqSeJ zY*u)!F1J9Zfavf_=*Bkn;4J5m?U>-(5QjokySl^U~#IBDL?geS$;I%~-+Q6jwsqjF8|U@E4FRCNB3?Nl^A zJiQRSH8rouqUnVB0ED03CKNX>kT~Sw3%`^1&K!+ovLX+Jgqouj)H=S^F_$zPavS`3 zA%l2-!U0#SzTeV8qh6~|^N1saf;o1Dg@@KoQSOWYBR4KbcDt}Y^q$m%)9t^15~V;Z z$08-}l>`mrZk#Dfc}YQ;FtqcO9A4Gq2F)=g%cNW?rExXa02Xb&ZKlKr@6M@kqZ~b0 zVY5-p4dbmv>?NZ~ztHOMq4^H`CDkAbSRWk;isgu?(7FBFxz_sZGEEH}{pxy%JS(?u z`{gS32+-~F0pjQ&9s`I=K>--OWEgKZ6vHZzAihq0i@qqY(N49{3)|Fd^`tNq(GZs{ z18yg<=g^XHfI76Gx-irj3(0BN0>*8As0S>^9nDQzcLcM?h8@Hf#8CaE155C)60U{9iz{CPEV zdFFp~Qw2a@eCL!E6T~DH_^5lb{QgtTIvW>-pQ^QGgKi7#K%!GES+`c3byp=6$A}2F zAo?;0xzGd3t@fF;3+PtkNIQ!GC>D70UPk4t0E4Qv1*l|bm`2^dleJtZx&+QvsS9H6hfhGc(hq0jv=9mKzg z0i3!l*mK9XVBqvzP>D)^$Gy>%(j+HgZA`61MPkC{%QiCTR_`+l0>YStkQq7cPFNN9 zu%RX{muoCEG$4Hxc@67_Ss&0h-y`2%th?^dCLuK&m4|%u^{fMzdzjyA30LMZ6M=it&8I*&wY0o?>_4r(>#pCUS$fLI3 zTYzSr%8aPSo(I=={xrhb4ju)2$wBZ-N-yUCY1G)%d)VJ23Yz_wm?acTxVhuh`H30J z`r}y;c1YJ00aaC z#E^>^=(db5waL#heIv0mmV**cIXJ`vXL^hZ$Mqb~+N&yTr1+&bd0vXm$^mHNgjFxg zg7e@0gi^Nw0AGK0ZUOw4)7HC~k=J7MGh9 z-GOHQ^Ug2WrjM#nK=?4`m*JByK)trY*B0Uec4I1QKiaeKTlLq1(SlD^S2IVes>%o& z#b+^mW@L!YIIq51w|I}`Xk(PYdd8y;4uUVDr!{< zigDcv>G+51ETLqRmYV^z=zHhYOe5J z*4;~xVjHjotqpE+Z@4((R8^>`hD3fv1nN@k;aR4mQ1t>;Ze_x}!U|f}FLIGkx`BIn zrR1R&oYROf_Dat>U4{cJJb4F=Jk|n3&Lg7H%U3V)@Ta%9?R8bqHzM^U@k4R6%uy|| zpN>G>5YBx4WL$?|{KzFVpcnCMoa_<@<{4*(3o|YFfFt;zl~3q%-qnbnF!9ceDR~i9 zH6v247dAn`gSA&_pMPynbG9aShFvMzICvPgfr@Pj;}DRE%5`DyMs;dsUb>zo7S8o_ zdUac1VP#H1-`CJaj6r&IffMdlxNF;3Paa;QXTu5=>pFne{l-!Yn5Q_R*8p1b0p)F$ z(N~>{W`vZWyn)!}eOw-Jpa(-FkZ?YdyL+?rw0+dY?@%}U{!w@r=?4; zlngubp#Jgh{gpE*Vz}dW{ie#{lMNhk?kdhE+%{AjZ!eTx2J+qf#^7sc_8Voz?*ud3Q9}T`GtCA zUTS4Uz%xmZfnJL^InN$%1JVBMXZowePU9fjJmW>hV3FDsF!Aus*};1OOrg3x>uO2A zmj26@N-*&s)n<0P?yL@7Ii{52#+i)}x$E!WZT7m(*~82!qBlE*NgT=7u_Wu4l37)l zM`J;uN*P8x;U(h@SE*inW1j=?&HABj{c2f#_DRC5X_lMUiv@$CD_va81y#7Ei3Rcs z9MuvSY3(s~fL!rv(6`->C|dWE^~ZssWO0{OJ`T;}n~jwV%_ch~a6aCNP&l>f_^$mf zd^m<7))GvhaX7sSkB=$1fVXi?h;h`B-;1IdYsPHse(DbN##cV*73-s9{CbN9^K<1; z`%6xOUL z%7mlJhXICgL8I&=g{XJ*GdJh!?Hb>Mq7E}}PNEKz57SM8y4=8~?1>vpY8BpQ^xuM0Vk0(6;C?)4LBP5#vh9c4#&VM zAQq1^@TV=Ua9_?B0k*&V3-x4Nm*1%@4gk47Is9|?Kl!94!T}6bPiONm(B2*We5Omp{;C$vebjj8jO;$_{n(rFnB1R^%t!STM5CuHl#3<^ zbc%IdUXmX|Pg(cFCs3|UYYuH|?!?_zn`kgjbO&AZc6Z!L$tV3wSQZLEoTROt5-SKg zqYEsX^cUtQU|Hk*1p00U*}uT;&c53#9y9?DYpqRB&*ylbogIE&7kAPn;w!Ja&H=ax z`}uJyiO}>2d-H81xt+lMoiEoTJLeE4fu1yC1#42LUVut7a3{ZzB^UQx%y^dEdc%Pm z;szE(pS;s}hO!hzvqakdB4ZOwMm5SvMZ=65>w5io>iYX2sYy6Jjdn@W26s+OI!r)3 z1-TH&hqlxmkT-?Q^XugT&?7T^G!?gWGz-ZQM&D1&h%D1Jxcy{M*KABOzWqXQ8HG{! z9WObmB6qQ{-ZWN&j8xZ&u%8#!Q<=;8K9Hj!wPXahkk87*M~OJC;lPR9zdMJ7f~ z^j9o3sH$GhsZRft3}#K#6dY`>pgg)EE6^(A0d3jui-pXmu147ik3Db@Us^Q)cl8N9 zNp!Ce{2=PJmFrl-9_?LLUMu5nsKZfBULGpL6TDhLfZ$lZOv^E4V|@^`J716v#-sIVB^q{t~trb zZo}7bwDF&v0HBzdF`Uf0P;#v!~b7gX~;bY&r~U}_9zy?pFvK1m4zU5~+K z!;(^MlK3DAVFgkuT0JB3nDwZbr?a&rc16;Mj*-FC zxo>6r=e;B7{?XHetANP__5pW#f#yE?IhVkld8ly^0E`Sa-t>2r*JAwbKCQuHLH@0= z+ZSp5Cj|L4XFqxOX)azOy3p10ad57*FbmLwu(E}2jK8eFe zqCg>ySKQ(VRG>f!*F%-=iBhsn7ZD!uI>N(V07w3o`2AKE7~6khu6;A!NMR$+0+`vG z@HzA3jrditxF?NUpkYd0@jt<|1X#?4GXpxq8;4ykfz_*VM&PKrmr=c=#`mb_YOV~{ zV{z1NwVxW@?A#$PuH9Ex$6L2#OX}55qA3#>wfO^D&3VFBtAq7LlEi1qwoWt5IYNx= z00DWf9Ps3lugXsfgG@;k0r_3KnS#oFzHdD!Oz_H*;T9lMRFFJMDACYS41ukt>a+zgS zjifN@5NoQ+@H5RUv-vy>cS)bYwGe+^_?adG+E7#VUG&sV1t6gBXj+w{s92eb05tsB zj8T+8@Tk7#<1t@g4pVPQai?8GaxCY!BB$=mLo z$6)X-KSeIfm!Jt=qF}=}99qsefcQvPL8G<0Nm8S?;wg0tU?01 z(8xS^0uL|7tB?HnZANs}<-3*8!EAa*e!u8IJ6B``Z}T7m4{N5nxG9dCEmMSlV^P^o zfc#ctncMeO3$@!pF_(?}^1CTr?R7IujR61YfGw%Jq&RU1Iy?Apqz;(7M-VsY} zAKE1Y{xn{cq$+(iqAqn;Ui`7HL`*UXyeT0?Qzu;Kj{hm=3hd8kN;l8}waD3Iw{_Vn zVa0H$M&Ci_C989(wMP(9V2{_T$yIR8RF)%V;81-jzW~)x$E%AIonGbROvY&^$ z6Bp-AJz>}&Z2)K+(Mq#6;6~zDE=vP^Y{GXkTlwQQ;h3AFmiiPu+3OAnm^dF&t(DpI zFJA+QFETLSV&uzkw@2T@kf~HM^(Mkp)@WA{)TI|NInrKfvs@P(+jQP?&_Z?7@DyLm z3Hs!NYuTJUR9q}g*LYX;bIqP&Q+Bm0KQ^XarMMH$|pjE z;vOh1)J7M->=w7Rx7TV;r>-Y<6UhatL&|WPIyUm6CWF0vN8RrE`FYB&G(NHMG7az@ zUY&gz+p81WIKhFFT2GACTkBYr+*{*#nWG?Do$mtEM&;v^?~BpcS{>3#6a8*Cv?F%S zmo9>*48`LXf@(YhxQ!3)N5?yUiJ{KVhX5-j$yZ%B#7hsc-ow4d@z`$`v4~l{w%YhL z*IoCw)&8?ne9h9}RC(j!dGZyZvr$K)m)aDg_}gQ2J7W%dGN}V6TXO+Zr%2~4ywg${ zy#xF+rPEv8<%aZM(u?Ct1sDoqj4R=8A!a%b&+&HZ;XuzFp!!wNe(izBH8$bt9Us|^0mT$; zYfjees$$v0UT8I2S5so2OeKs#evY1g10!Lp0gND@Cy=1*>R;xdgAwKeLe?a&F@du$Tpd901OOcsFgVw@RAxk5wR?^*G4{xLFqHMp05DX%8Ha|JmOi2d`6ff-U1lCMl z`pH&jdZ$2GAx2y!+t-?A=vwVO&>=YSTVer3yW~{! zN_FVUE)HFF?5~l>Bn-PC+wk^65FF%$@?%tB>F?q+BoIckb#Lz~7!v~te*KxhpGF#f z$$FKdON#iVP#5EqNYDcN01w)h)4L~B3vyKluFyR>0sL3=@Dlel1Nk@a!$)>?qp1wQ zk@32Pi$|^RWZ`c^xa1zD=yCX@49B`BOuLEqC@QQ8Qw#}xo?PSGioW@$Q)!1fZ+qT`@6@AXW8cj>nD$t=1;BAphXp~hCRd{8zj$x!1@9^R?(uUSzFs%kAm|%>Rn6oT z7f2p(1@W=-2EJcm?zKWQ9(khRTFsa8aFPIS;jNPf@^(2N69J?#tDC8;=8xDXA(Y!a zrbZI6?~uq|-7{)tk3W-|c~58MNbuor8swE`UmsgS(Du(e>*K2hzJR z+~X3dk8vLj_FcBHJ%p*hvrs99kgEG?+5ab&Q8hfg~hkq?8Zs4NzA?%Mcm;#5+)+ zv6~NvF1%hWji+Y2Ho^j$ZlVzD`VRsHFsAZ5SZ;7FG`6fYn8NJW>Fle?tjyV0tnb@- zO@b~p=fRABa^BVm&5ZvzZ#5(=bVdMrpYuT-nS0kEbg~fvKAnm<`T%G{_7}XbFyl^0 zz(K7zhC+p_QUw=2rGRWFKp=1L4G%>bOjI-52-5ft)r(Z4R0XywHZ_zP7&N|m*Toyr z_gmtExN`n-Z&j$PU0*+2$pCQ9T;rEzxE1KNonrEuGo16MUb#%;$2>@%xn`}UCeFKs zdd=QMrN}w~$P-6fCk2{YzOF3Y0K@;@3y{w-#^H&g!T`){-#gbQUue?LGGQ1)1#k*r zHvNgZn)_5H5e*p;%K!+it#5?R5swNlEGKl4Nwhd(ebG? zoxcdrt|onPIE`*0tn8&czl8fFWZU2*X!mV$ZqoE+Bj{F3GuP4w9b+zUh<54}v!bQS zTA4wBU#Pjl80fqpzShv~i0`-bmxQZ6W+*h)n}Ll3Sw&+f#9$)5!$6GUg~)51#9VKz zP-FEcB+h}=I1v0G3N67Q5T4?k7d-5a@t{Bo8?n=^?beO!r4tLIIXy;nKBOGwy_@)?W!Ce&Yl(gdN3$tkut~$4rXq%#K+srfEv(v#gG|tnD3m{vQ@LYpQ#6@| zsB+OsfLGq_*M5~T`JNyXUm(PtLBBGQ@f?Z_Za8tqmHYgtmg-&sK>Y|kSTb~%v;>Gr zOCnSI&83E?pz&mWIv)XZq+01JHbl=wxcIH29dk=_N~;aHw8l&%ATegC9#m#cq!l#WQ{PV4pNtKUxiN7Hz9YNPD|ErbksaHmbGBK%-Ljuu+7zm3S@16~#t3f)xpyavoB|q=hRm*$`!yscjJt z2{Yf$aB$>&oCc!Rmb>-}i!Iy$Xgt4tfqFiCX!Wavilp|N9$=R_K=?u?kRN8r6T(Vv z1F-7c1z4uxha&}l)zGi0c1)gIg?#wb{6SU))S1{RWkb#y> zB+iJ8;-k^M*KefFV!x4VwH_Mro(SKUNZ9iy@~8sGLw`tWokFJl_`*p2maC!-RCJ~T ze3yA%g8`)%FmVOv`FdaUzc3e!_hPXYc?4VZdk}8O-0r>A>dp`m1>W2rtZjTo?JIW` z98VPd4&hPVIi|W@TT$r9a-@pmpjusj6|RHls(3<1L60g|4=E8MTme0fJgNawh)Znv zaMcbjRvBvR6Yve#y^{r9LKHS=iCdD=(yNPGn9!Lc5G(mS~;cOP*qBH*& zD_{0}FW3(%O^Z<%y4O(^qTy{Ql>xG%3ACQOcOi^A_ZfppQEy`=WAhVp%8&#sRkVm5 zW66E-_xGLeq(zg|YlVthAak1LU`1OuXrOJ~B?P5xpvH$N{)blNcK>8pAf;dWgd@BM ziX_dLxEQg|`F(Y_Q9M9jk-0?v7-qBtK(Y`EKZ7(Uzp4WznZ0ZF&=a zJk3{bY9VUuqVr6|0+iBqe0*iX2ZLR{wXJd&hG!N-9S=%`Rm3I%A?XQPfbuQkx77T9 z!$hwcmE&2ox2ID;1ZXy9tw=v1uuy4KOK*sQl3BJULv2Pe_W<91ymRMe-Jwfh!R2}Z zCDRE~0CXA-gSJ>^??crZE+J4Ha@eq93d%sa%d}r^{zrPfETG z!o(jvFx2b6JL?G`1^preRVkt%wj`ZTon*0*3R7+xPLX^N-^FFw^7e{X$K1dU>IIru2!w zv9~!fpt<#Z%E(!MD@4al^Yy>F{+WxUgs)Jq4PgG_lp$*iNBRz72Zj|y9r&c$s2=8g z-=!aj1Icd*YWx1sVZJ?zqkqgqNuxh^rN5_{Bw@HZsWlDCP?e`ITQwaabm=u1)Fwgs}ReKWa z-KrH$4N#GiU{St)nD!^b;IGbErFhQpBzB{4hS~#gQ2q~O;3N0oYQ)(sKbZ5M-0C9{ z=IS}Roas_aTJ2+m`}v>DHjxiL5$sNQY-lrfI9j@a6PWr3f24f6q zC3x`QnjJ}WWr_3h8oTl7sH;tKD!KZFgyVz*(3+X3%i! z7^0QblxZp4BY~GX2u0;$Sq5`oaus59H7` z$nndNwbtFa2QdbE)VT$9ZE3xM@>g=0CNV%hUQ_vdRtYANN?yPKCQsZClJ9j1qc$IZ zgTQ7(#$>-1dt^=(Qk0OGM~G#46uP^Za>MrDw? z4`bItrp+1uT*5-~fh9vffM!EOfiQ{P07*a6;Bp$*?0}^FuybShFn8j!MOok4w_<1D z2}gaaG+q-FmKt74~OXNnGD`AyEFQR!NIYQ_t5$O#! zU&@^LSao3>waoJoFrYp&gHC31pL`fk@F2c6e9kEE2#Q$Cyhctyy52F?e4`i`q&x3Z zT+LOSq2aMq%a+NVI)dB}{@5=Aody4G1owa`4F5@x3?J(1Sl`xrx*adyqZMAev!?G_1(8Q4*f2>hm@%npwq_(@z-=cIE)NZ zT?)g-I=*Q2s_>RB=Kww<2$gkUV7#zO&??y_B1I-PbdtGwS$4S^Y-aZR+UANJ~7EIqaV88)Ovo z^)^f!NT|lZA|p)SH7aS)WaOW$uMBtXzw~Fme*F58zrU?Zq9N(qNtss#2;j2yBF>We zLePGc%%MP~&~&aIbGs0WmLcJX> zcMqm83*BTz{<+cw6}JpQ9cLSjyCkFOA{{!vsRi-pV2d)~6=`%9lo`Mb?s(wgQhBfX z6@I;g@mUUv&)ZG(DF-E)g?v>Ukst1`W}`nfeJ8MubDpPR)DV(YR=Plw6pmS?n3g5L z3mc{60mB$6K|Ofe{47H>^dM0fiv6){(}PJ!AokQ^3KwMA0+kk>F4iR;=M z6de(T)UgG@W@_N2c4MF8`A_wi`Kajq{!v-!+^#kJm{Ye#9a8ZM+1f^F-Bc?YGNU1q zWFu-bxNMBZD(~~Q?pdYUn*zmtJP<$e9~)N%Ac2%?2=T-l7OFCU4W}eojQ~?Tv66b+O9}|bd$_Q!SH@tg$))dV$0wgQ2jmMv|`@b6`-frnEbeEIGq^e?dhV3 zHG`J_k{H3dN(|sT=|_wUY1D#x#vL&*g8$cH{ZkB5?|HLgveNdZAu>&`TScfP1)Hhw zYv3ikV37^v&`gq0<*nynw^9vxpN-c_2z>dJe&j(^TEG)_J-hoc2X)=(jMerWbmY- z5Yvw!`P=9EIVKL})dznFCU3k}D@9TqP6VAHQ#xqV7Y`7!#1!tcplE+@Q1WblKNL%4 zNcOQ4TE720MT>Y*N9vzl?0O4S;drz;H-K`2;6qL^p1Q>8uXIb<3RE6dwLB%!^ZNpo z1A8iu0{n38^YsbOT9O2~u?L4$XyZ7ExgsCAGQJs+J3YLNnf;(cZ<_m2oQpb+?u}>} z5aL|WL6Gq7o=%EeYLwOX&Tz*lSi_^Kz8o>R+TYqWkmN25pIP^+$5xb_JO67En*ACh zg=FK}JMZ#&mGiH!XXf`JqBW9qsCP*aT=k~v4L3X%P2>N>D zHmPS&cq(H~=-DM6Zw22? zGtnlSZ8fZac!WmANu0>-@#-3k53RPLhA62?@9lJ6D7{V-Yq6 zvk!quEB12cch%~km~|>Ff-H>ZbDSFj9(#mHkoXq876~e;*5qmOh{q#idLzzif-hSB zMJr=KNFk?r%@c1^kmm8Z36_W3*EF&f>tAH48tszWXQY9A z&1d0x=ib6$K|nq*vw=QHlG+jrP+WDQz*P&&CGt6~Uf_~zpkNnm+R#YW_s~t{cMh_^ zOS1Y4wgf}?o;bccA?E|D47L8^LJ!BG3cj2D?z`lYwo^x5o0 zar5_s0ec)qj?WWhx+W9Js{(jRXcoHz6x<`j48&vF*qxgQd=s1WcOt>RG=0RYDB!QvgPE+6sUrsYm9a1fsK(Vj@zPDa-MyI-mr)D&&#DZ8W ziW2Xz5bSdThWNqePWVe?gnx?NaOMd{jqIw*@8c#~4W@v;n~@yp#F5ekS)D=as40oY z$+mmYft&uUK@>pEAA!ZW$g?GOD#>8`-3j5RIA;TE)j+|EPF#;jY$o!-;C)m5^nN%q zE>UMUISIWRWdGD|a6G zkAx~ab@yo3?<7k6T7mDa#B3?cm80=6l<9_CSuxJ&6*N}Xo&FE9}nTN=i{Y-&IsMWU{P+~b<_`m5K=BmMnx`W_1 ziuN5rwl1LD8V|e-7cPDI-VV-*@0c5+C@;{?lEZxptKG!)%jZJSj!8vC^zkAyL@A#O zv&Rn?eJh@i(TA*P5JIoK1XE`IwZKSQuA!@aA{9}n5jSLs&;)%8KK;DM+f)_hxW_1x zkd=vySeA83-tl?;q>IILdYL;S{ZZrEUlK{mH z`eVQQCTq^C(~%nX{Y~wawSWyO!cB6up+_g)qV9$d&vDA_aZdlrhS}$jck7n@Oph#1 zo0z|8_mOm7IeXq{fx9@Wftrpk`@IMBg_UdIDb5w`*%78*&Lkw+P*Y1piAB-cEz5!+ zNv?IlDrH%X4l){AF&x}kuV(MJt9Tx5$=#hP@>_#7Uf3O+Tm|@fr2@$h6)lVbvqM=~ zWh(R*34yqQ#AbgtKkV-*0WbpVxzQqQvSCg$=G7g; zH%h4N&lTB$10J>rA8w>n?HspZ5)$g5P6QEzikndn+=aD~PYLnXlK=rj&Y8)z0wy@U zQ*;S8bq{r8zw9zRPY-CBRH|G|d5{XQ|7m?^F-ejAW|5~H~)X|m8vVftclNi(TF=AIv;_{l1=3gdNy zL{&>v34v)~AH_XBcJZyQ#(^88f|M3)66vCXnvbUYCsj{Ab{<{W2f#=%>X~Pq|4>0jE-mQzN6n+tw&5qsb>% z@ua4uVD2Z*BlNJ50Z6&|Hfd{ApBJbm6s}qeER0>#(=EZ-8@u$`ly~#&7iseIbO_e#I?>oI{X%B8z68w4 z%cmWQU@Pxp6TAIDBW<5_YYWiArL&Y;<5=v`V`#FhL|heu`LEVFv+zH3=){_%4Nz&x z6{VLanT)&#vPp)-V+xr-> zu^37||M=hV7pW^@ zeJt-}8kzv!mV!&~;V}1pqIgDU`vr1*H3BhxQGuQ`Mu4XwYb2a z8aWNinBhf0(nWI7&=Kx~5fGyMCy4|4`s!KD!Y74|T8DEL`G8xwO|{wY`n%^UlWKU6 zj{t!YhlPuhrt>Sf%l_Yv8gx$cZ%stf%bKjZ>VCN#ivu2ItbcPkz(4t|b^>(JWcrF}h>5hYen0 zR=#kuQYPiYu-)&|EQFSB{nNZD z$WGZ(ihvp(DN`T{bxfhbLDy)280U3EiE)S-)MCmGL;X{Au%vJfC}W=3@%#3uF~3F{ zZ20gi%Pkh?&$5oQ%}n|EB69Vk0OJyDXBuQkGkZnDOT8G?0FT?mBBaM=& ziEt@8+oiHvWL?b{n`SGVl#uTIo$f0Zakjcf8s#;v<I7neu-br>S>>40k0>6`$!kX>DB1MkAAQzu9<{zK-VW##G6D zRg|6UI?Ps>PSCZ>1H<)tn*f^0h% zOZe2ydR6dO4393{2?8fp57JVVp5$Hpm6G~lj#y7?%Myr$ciu$z?q4|v@SYT>dx2jAxp}{cLtKVq-c38TtBpBp zLerAf*F6oQ%kA2KEUqyi9gD^*ruL}CdnY#MnaGc{&K~|KrezbkY3)RpNJ)>wV=TEz z3Rl$y!lwrB-Mf;l9!MDNzkq}QH6cbCjFWyn?(^qDpcT-|-h%^8kKhcA-`1E*CZZSz z2tEAOlQ^F`f{4PM`(u}uxf8du zl;g;xoihnR#+eh0oHUvdptv(a7>r2;tuz`S4c&I9 z9LM0-Q;nrzkCw`I(~?T6aFZpQD96(n&f5)1ZniY4Iij2;$-Oe;-#d`!PAEg_vi7uc zTh(&U#mI4Zp5>KNB~kI4(&t1(a-P~4v8#C4?+zAI zPZ?4XBWO6xxItks1>OHLt#0(j#);kQ67+l%tj2`SXybpZE3bDF@FE*~XX}Pu1iwHv z4Tnuo+tDA0LipSvm!W>LgC}c@q7@y$Jj2NiP2}_Yq8+L+`d{7)$dN89yC$ROJzUt`qt4F#%WpjE(cjClK(&6;e9Rl=)+Y$FqN- zeM{Gm4Cp6(c@7WNf_Bnkgs;{gEGD*v+H07Ae|o75N0e;j}> z4|3=fUox!!mIj*?{P?*sT-S3~)7rm}w&RaVx8XE_)4o6Gd_Ek3DPwone!YlyUwX%z9u9f+==SvZ_GqiKyu(Wyh{fWGhCs~506%U_TkneI zj2&$5LzGGowW|igwvg!`U}xy;+hJ_o3xv7=-_DwMWP$qE2#}`m@WUuoaT`F-VID7@ zxaI9cuhe(e9E>s_lRyu1YR3()hn4MKt(^d9&8Xs2&~!kam4wUb%Je=5H}qr?`_2Rw z9Q^D>mQ0x#GwxlDzp*j2)vndX^g&Bv^Oxm|1Dpslz@C8^u%WF}hJo?5j&P)qQxNS5 zX{CqCgJ>k=Cak5=T7nU3)3#Zj?+_6D*T?Lrj8i8Mhy0y;#f8R6f=B?#v|_3rrnM0+ za#NB{?K7~!f25xp&vE8KuO|4&DX0$l`fJ(SkW#b@v36r}#=TC=-Yd*ur?eSB45KAq zC-T0av_1%XfE~)8oc~uyHDnX0Z482JRZR;B$+EzZYJAOpPe{!U-Kh|8BdFbnUx6hG zrmxM2OYRs$$WV_Zw^AWz2#a&VWG!6F2oC=C%9Rh~hg)GnddBdPU+zMGr1xM&c}E;@GG(P&(&u|HL97v$nC;>q_L zIDcYdiNV@XQbc9-Tk@#o{2XRy;^8~q!4D&-;*n{`_8q=afjYbIQ6YAOV)J!t$27aq@S>Cm)9T%G~*3`MChUX6KdZjcLfkSm)t$LzmrDIvkWIYg9 zS02fQd>|5x_=3#T@ADMKM~q!I?`EbtOmJ~9n#O)JiZJW)xCBvYygdm24ti=Bo$uRG zUkBG*1J`rR``maU5%#DE&rT7voC*3kPK^bDf27SAk9KForiKp&$B5k}9)NyS#TGLq zP@9Ld0BQc+aSqlz_#m5xtjG6eZ8*u-n;qjfsT{#6_1D;}O)*{k!2qE(1!2Y#Vx0to z6;{tai(o(+op%4rXwehLyq_Y<{&yL9q*;Mqi1l)k$(WG={G>SJnYPcVJ-PqZ!Ad{? z{uFNB8G8@1Dco?s1Vm^DV_$V*K00 zy|KivsJ^g7l2OAtO2eUIp4wiBUu`!ZFYWp`f1Y$Y#nZtg`flTYNA`(|Fkt%!?!5A> zjyf9nuczc>A?JY4W}H7!0?)ivrqDqI`90(#RN$n)2tlWZ4-Tor{ss&XFAupoze^6p z+8}?HS`z*XofP~zFhe=K<2i+nHXux4enUlg{!)om&nFVm3o1c@{#?u5&V6;*&aI^r zs|z47ruW^x@h@U*J8Iqs+Z8<~%_%HdUBZMx;=ICFJ|vUGP!;-^h*I0}vyKD(S?07P zb;2?=;unp%I(;U1(eujzyvOwg6LsSf(bkKc<&(1eea?kUVHU^HS4BgQ?%tq;eFv*w z%R*U?^}5U@B+3S>!s5!oKExbZPHwPhDW=CuVq;@FPJ0C z?w<9QwHC%b;}dof#SpZ3u_7%@@&OvS9SZ2Lhb1iqmJ+DkF74XsuP^;+>yPiUI3c+d z2o|~-zOy?3V3Dk_wI@`&-=}Hx)hd$7x6wXl1)YL3J|*t$vyPg=>M}RtVBr>&5_WQv zGzzzP zvML#fU{6;Esh7lwa>`edbYaJ2=DbFH5b-y$LCUyeqO$TRhOO-6X~fZz&g_F1@hI|S zQ5{TnddhheqcbwFM0}*>m|KCV%}e95efUAc6A`f!-C>uGjf4}fq-lMnO|)S$(DfYV z4cVw9lCU?w)IjKeyf^aac0$~HA%C?HN}*i!4?vL!bV$mJ@YMjS2f=BBV(bFa@H-;K zhFlr<CFxaA`GBrD$S2!$)z{(h&A=>J*wS z7>J7ix!=Zlf$p5 z$f^73G>e_eZHTNckt;rYIdgyO*hqg;hVBDD$N(F9)|BpTY?mnp->V2_<_1QUNASRx zmUtJbEYK#Ssq%06p|(mx1Ksb|-}>`t;{~(_fv8md(QiH2#Dv*`fdS3 zWsE}(1+ZPbPl2?7+1RgR>=;xUd6aNCgIXx$PJX*}JgKzk)Wp5YoC8Tcv@hI0q@2|f z0U>>~Gsb>DlLI&6@5kuTEd=qXI5^L7Uzlc%NJ0A9tZZ*D*U-EW|J)ZVY|)JJaeZPx zsJnp$+b(TzRy+b}VObsIwuA4u#x0^6;CejJ_}C3QXT}f-lO)hF6Ub)?K|u);Q~uxoH@13$g$P&PvyQ z^wruL;*`Nt`#hkLl)e|7*C@6qdYGXW4#Xtq?_5Vji6xs@=4BY6FN|>sQRs zE*dre3+^b*Y=vDq_eiwO-$a(mjZ_9VAF~NC!O45JT3}->Akp%nARWkxnXU-l0u6^l zcJYVypHtRlS;+hAL901gu{G>u*8U)I@L<9KMxdMcXiYvE$0`Ljxp$jGie3@w95`NO zGu5?wBEETfObocDW9 z7jsL9j>HMF{3niKsAB-|VF2L(5WuC5SNC>w7%S^&i_;pC4%x&^B>LXWw+2fiA9BVK zJ+f*yfL`YJAO08(w?|}4+qZp$o%0-c(MQ%36>`z^BVwb&LkowfQ|Nr?`gzBV@M%jK zIC&*WG5@&N`+xgbnUN9Y5wD+>`TFB;=k-g`{QxsOxH3M~q#ZQh$^^Ut5SYndW5@D1 zqIFektcc#xn?5VcSJhZ!0Q1i7*WxlyrGl8B{94Aay=Ev(dO?g*+*&zY&a%;FWMlc~ zeAZH(^3--0_4uWVotm(vD&x!=k@8aEy1kU)G4@cz_D)%OmWGJGHFF0?D-WYo5-CE3 zsqPiNKhwA*wJaXf9_f1$D9bjsGPR*rn91TO@osr1l3b|SZ&0?H>(PED9?+#pKf%v926%{cSWw+(>W?gdfj3VRX+oGUbV#~LGv*bTizVtSTa3a z{}MfJ5n5vGK%RJll50}b+a2}np9O`jeHh)W(oeE(V;ZpHG#T-d2c6e!pZ8ifRYn#s z9xh~?`harLak6pr1Ni|`%bnWm0}YG&RDz6=#|NHVMct4WQR06C!dz-l5MY$(6L6@V zQ~O0pQqj0``(msL!h{d$%Bt84Ua^o&;QjNC}q8E-h7-%60 z$NYpHSQ2<49a)zd@3U$&U7%9=Lb?zEJ5LpeuSW0RCcKf91ig5|`3t`E1a|+j1d)ST zj7EFVKOLSg{B-?ceBMwe!@ys3ZL3Oj{YWu)zJ104{FridH!6Hf3QngbqM{+>EJ*{!Sm{d;?9Q6LZxY+%TCh}nGeZhA%WDqJZo-PnIJMv90q+{q*+a2eq$^~+G zMFqo5YQwGhC&6!U6|Tv~Ytb-z@jcWANzGDEE;ubhrikj{av?YVH@jpVJjy0zb%y;6 zZh(`c!sHDnEkiOBY2jHOT7{Qxp%ik?^h1!NJ#N8LNq`xf?(87Qp2-STA}@p}%T zLKmpfg8UH<)l%5Juw{*RG7AU%C8A+aA>gG?7K%nJV2G17wPJ0sTf&j9s79Cbv3M-3 z66$H*7p5HmX{6?9i%GZIXeG(#6p1>l-%diZ=FGO5s=_`QH%p+Wk6TU?Zyh-s0xw?NBa1SYF8clZu}U(6j>$g6)k zk}HR@2=DnQZ!!|jsnsO1((D2*lqsO;4_keqc=JyNX^A+(0SeAlSX#w>c4YKq<%SxR zZK7<#c>=q{C)Yn^z5YKKYq^k`u}oy1n?QZk=LNl*-}M7G89k3FYx#>2F_UPqQJrne zltnjpCDA>R`lE(mlQ=YKB4bAs%?sjYu?PibAc<=rxOVWa1#$G0lvC{MxgZnrP~eso z&5Q&jcF5pwzgF&&>2Bt;fqd0#vSj1(g_o!oe4+WY-?)1DAGMn+dvw2t&me&%hL`795>C$~NolWh*ycV%YGJ_NL!2yl@0D0Gk z)fF{}W01P4^m4mbe&?Y5(=5Z7fVx6Ic@PU$ECor!Y7s;$hFB#o$z8e_AG^*gcKpj z9srFZRlJ$_bYCi$a2AWlff$W9cSFx3%$1EFR*B;zx59-eWVy&WwBd^Ua+k0hkb3&l z)#DkNtH67csNg0x42u(oJU8!;O);*%$x6kjwO_`eJEd!NsBZB}c(_m-4`c`lIs4l? zDWQ<&m3h_AR7mzp3L1#1-#km8+q(R)YCx&E*V?z^Fyl6g@5;4u02z0xQ2VL2`9t%v zpC^uA5d59ZP%6si$;r?fco!U;?Ou1+>nLFP-Sj*A@2QGe|niW#;GRlxUd^CoPd zgu0K1=~2YALJa4$if4SiGNg=NFSiR8^R{LFl#9mPkoZ3b-*Pdr-SLMn|i&- zy|f{{%cwr#6`C-b!uw;1iZ8`T&tZ(WY~_B_BhDsaUNPD`_{-_Dw7$2}-!TV1U59Kz zq{&h^xEjTUPW7qnH=Zj3JnD`l+W~<`vW4YVS!O|5+(-IVH>id=U*YXai!)Q`>z86* z0c}xVt9+FkM;ZTe(M<4ZL&r4h(oAU>nWSDssxOT<%k@q+Q}z`&zCn{eGs52`js32> zOJxHX8=mwMHPcXL%7s4APyND3vuW#2|A3RQZx4hUYvI zEB_6KMM<~AbrJg$*eO``#FSPMV7m78-1O59>&l{f9>7@f)$$WZ$#3~JWiwkD&=vGN zp(Jw^ZK9SR>QV2xZ0v6ZooAN{FH^)eDs=zT!P`4=V<7t>+91o4zC>p@Y9w=vDnqKW zVOpX=uzrUs4^hu9)EbMIgd48V#KBLugpT98_zyQYc zLmC7q+kr5u5YG3vqxk2%iq~WG22WmxSXjdLQ=P40Dp(@~XLX0aOEmU6I{xCB;N6WW zh_sD$b5#j_t>E!S&AWXe>`<(!+cY(Fykff$EE1ncN>BZC)~HIb*we04 zdD%I(E1HGcwO%Uvv&}^ol*kXoHsSQow+_N zo%dM~uo(8fIa509EIk%`W}XqUl$?5rT|TG%;D-6$I)Dmw^Rro@7`H)}B;zxhD0GK%bl_R3h_!i)JOG=5)6-)2HMct57QF#9cj zW?k*Ui9o(0V{fAh>H(^byL6Z(=DDYji0*7Ob0kaQ@g|NGP;*cxYe^$OQ^t&!c{Zx9 zRJ5?-4VB;UfyA_=u5qSNjJ=jRizubefdfLiI`{tYVcKkHAA5%rDBiMfKInTGR{wJU ztE4#7=mc{L-|JW)f@+LC+e7F9je76-cdJJr!G2$|Eg@-&FEvN{m8?GefM={hutrRo zrfpHJ5>0tRFX%M9-QJRoe?B>;Ea{I`?Ka!MtiVs!N(WnB19A$}M_NXDYddKLgm=(> z<__D*3g%eiarVbwi;94xXZwdLGB12@|K;GtuCy=`*vyy&ll&(Eybuz%#=>_k^FzMccXts)Z42Day+igW zT5#?!h5WGj`r%FTJ7O1+*kP;vKo^jaRDAl_SI4i4Q)@!#f~OBGP0B@ec*%}bVz-~7 zE)EQ$CdEReX2}XxXnC4&LM~`uzQ8 z_;nD@@m9ODapxpoO`~g_BJr_m4xKn`i7KPnE^U8*N!;c-SiWyxAlsQ^E5dI(%@NKN z>OTLg;0^gh{<@**ozFVAOhX6FgVkq%z1$SMRIH-alCVQQ*NKZabTA$#h4zxLh}%lX zpf_(OHx1>up9`7XthAmLK+QLb3kAC~MmFic& z^afZM7$WFl#&?ywQPYhG^Y^iC!Ykx%H5krGK%ZlMupVk0WUkkm9NvTW$J~P3e>mZFqu7iX8p=k?-tGMsr6)=b z>&$-_e1@9NS33|fMMuRKKCZ3JGDR5VJ5fIF4{ND_x1HldF4QaQ(?~#VB`ryly@?)uM zyJ^+Vj0($K&6RbH0$dY7(r~Lt+yFofG_4$A@xSdt=|ibogqNg`ge*CpSpeBf{g$mp zKYb=-``i8LPm$7&Lte$dybO2ggu%zwC6OM~(+A}Gpb;Hn>ODqv_6RjP;_&l;4D&Wj zUZn<$#HNF;Fa9}+r)>405O2uixNw8Fy; zO@EZZJZJmOGab6(skF36xQZ5{Skg>xa)w6&m@|y=IbPHgK06P1-=p?0p=m6 z|37q{18*i^n?`Hfwr$(()Kj}tcWO@g*0yciwr$(C-R*9&+2l+1dH%$$>m0_ME43QQ zJQbkJTn(Vr-Sb7{k7TpZ2Ou2JJ^-6vE?*~hMXVdu0Z!5>raCP&;)@IXUxXOGtd!%L zx^Z!hkUzxO82J(S<4nLulYM;Ag?EF${(+I18qy#g;*C&}A&DIcL~Ps-=7#uKF_F;D ziM(X1Ze1(It9As&1Az%MB>k%(Y4HKXi53NBU?(H7z)ikFLCEsaA%b^<+Cs+H zw<2V>S}a>DH&{s-KgtTBUFBpJ!DKREkbpuxUz)p`m}8+lwpw|>&4-x~gG5E>R zm7sA|5aUqa5T=)k4BZhwF@QL0h5oMuvwlz-V5S!$K5}*9Dfj0WfeANs&A?hAwF^UVAe1g4Zu+p^P&^XYU6|4gY@`F%Dd5qSIM31BZm`BaTSH6tVk-R<@ zI-!aDF#<7^mk2384Lrimw_PAGhwsgG(!aSh@-e&ROjEhP#Sgl_-T?q4*CEkzTN*~l zA)r*`0g*q-TK6O8k5RB>>Tr4WG4UuMbn3>CEk#?-%m3bZw(+WnA(K} z^;G?=6rxdC2F;{{IM7y`=Z@5Lj)*nD<6soIt$6rV&7Xd!`T#)ujP=Jpyr40#K0@0< zeAR!%mkNiFY74=Q!MIoh3Eg0WPlLQQBtR%{)54a$5o0O=~v$du@eJp~wz{$TTvF;jIXW7pg}wxa@&y&ZI8IuO1g$y6*k9u{gf z6p!vly50y9!T{-eopgolVA=sg4$jMN8ltYROzL~u>LJ<;piIxjqN=iN@s5Ou4LZCd}Tczgs`79ZQ`dU%yij}}9M z==N!biux+Zim(#Z&EHSOJ2!*r{ze)*18(t!^7>qqg#*>u#$pQLDBWGtMjt!~ux~WK z&0zL@l>j7)(r#B}$PCM<{>Lwq6nx17Gc{BZ>Z6tFH-v%_l|E8~ke{fbsz9>vZt87jUi~4A~pr-)yVb@x{FYc$A;$H96@) zsDLPqi-rj%A|+)^y)$Wxax@2hzv9u2$A-bc4QQ z6!ckuSOw>IhaY28kE%PZ%UP%>E6ssqA9+xm$ZVpA=SbTI8*SeO7FYurmJO+5p#HL9 z1+csvB}ijPz*+p2$e%%7xP$Jv%%4*zju?c|Xp|$SFy@1__EqeoB%xg{Cqec9AWp+Q z$F{#i#yqU*5d)GB{804yr``dzJhv129W91R+lQ6A<%j>3!4*-!YQh#y?xOulRqji3 zeE;Hq{&KTay7oEF2Z0p;w~LiHp7_Tu1~62RG92;zHgppe>+)y-#fkzov4PI8PtY<~ zeG4pf(bF^8<3#>`R}Fzrgg=hAkYaR=rwkVIN^ER;jc`qDH~Z6zMR&b~dNKxUrlrTg zdio%N{%Q7Lg6gX@Nzo%Fi$cB>a{Gf3tHJ1^wo}8wI?>$TU1lRF_~jG&yBbvMce~%8fnj|abK&9C=0Q>9Ec%q! zsP_DDtXVPMe1ij|@m#R&YRn|*Wt2kN#_CH7HY!L>YJ}Wn>1Ebjn3GHB3YIXNl}lRZ z$2trHd2#hdCZp`aZ*)Eo^vG9V0okEBynC0tx4iCx7~Rhu`pUx~Pq-2);Ii$dOzpki zF^AXT@J4csYyDIA6*{4jjZha7(FWN*ojj6y{o0_zS_0kG#|^!pPJv%;J0Xx9i94ef z`M%t$#2o7p-MilUnyC7PF`2+D%e(4JA}$9&y11Qsx<&N|@m-f6mR6f6(pe~wg-tbolUh-LjR8tKTslu;s-2CkW;=cBElxj}K2 zQdXYGu>|BwF@wOFO<~+pvVOTHV?xnwHFiMGfE*Z9#NsaqSA=H{Gdowi8)0~PY_}1T zo*3CANL&@gR`E*zqd+w?2D~qu*M!<;c-L=(bAg_yJz6%Sp3V5?vAW-A@sk1PxV)^| z1a8b=GXs0-(%4lBaCYFyHv2^@S}dPg#*XYQa!}K-aB)p&X*XUyy$`wnZJWPj? za6JsJ8Rh&18{02xhT`x8YT8#9CHdz?s+YJZqS}*u!X(WF@38b&n+TXrQl!M0#n~RG z8iQ#{k*QGP){dK)&>nv$e!s|tI>DfEb-TK30JtTRy8zsL5TNBc0_F%PI5-X}bjX z2cNu`|AFe#8Dqj1g;nc@q08xO0eGDWenLE|4}cdM0hE7(J#%p-AF~CN;49f+z$B6Q z1IZ`I$f`QHAutm-EwQU_nBTy^YPK2^5ZzU%7_*+ok&6MB8Mw)TiZ0e-sofHT6ML~e zj!Tm|*sztP10S(WFp{NUpp{Zhn+u9}2-QuIFY;OXTuVJDhe?CK_#YCed-!UB&+ymcj=to)G&&r_N`t45|?F~nSLTb`YmK1^$#>4TPQ zka`$$`=a_j`^e)w|!s1LR$u`i;?=KwGcNfUAu#v(iv|w%F@2_IO@i1fgG?%;oc{#K3yOQ zWOZMT)e!mb5UAv8ckmWU$lB1BMk=i^JGOZ=eis$45z&tpnBKxY%#N8{#thDs0G305 zdw92yfo34kl5t*&sRIl~n^K;%jV55r3JrpJOji)AAyz$oQj1rMB5|1qhNFOule4-H zKW;X}$L|Bj>#6XpJw!1SC$aHXo>G0PIljLY5l0`lnM;;~`<&GSCdwi~W#xBY#F9~| zFp9H@-ZVO%*Qo5h?VcB8K?MUG^s4uo}h_~BJ%$n$ZJMxGKt*#-*g>59i z93;#g61k~svp-eRV|1qMIW<&=L$B<)B!g9T;BS~=?v3nqiohHy2MD@_lg+H6`|hQ^ zN%MNh&E?+70?$H(rmCbaE}_7(noW=)h5YgBZe}j4US6dd`gG4U9DWhu0QkRyRwTwR z@NeacFXCdnMKb!~K8457+p0ubctV(QiJK*9lJ0GUN%bSD@KU-y5cq1WOf?2z)@q>L zNEJEoW9acvF;n0U&PeMi+kfm5>)vRBnck=Ip2(43C;&0g>j&wDeNt~|!OSjdB42Vx zD_E@KrQx@U@D>Wcph_r2Ks`4q@6s*)jVm9-RT?(aKtKrt@V{lOkKNNY?v7}uhZAKT z3OSV{uVGwUtRt#jy9CVC*E04$LjMr`8DV6~9Ziy9`BeOi-x{3kG-W321x1vd0^gbc zQNT8@AVe$Z;bnonLjt@X_YM}<`*#?7o@~26m#SS>PvErdCRMjm0Su=;(kD(^3mV)8 zjy{ntk1$B%83+@Bt}$V9r@!X)-p`0FsThJ0$Zyk}dQ2ggy{ce=HTN8In0O5)#Rxah z4!hV@@U&=r@}hg-sb+`h-O${LSN6Ecd;h+eQQ)8PIa!wqjhk8Q z;=T3jovTt-TkcG^0}NQ1A#_EpRcAT^7hQXV{xqnWi{;0*It4p~1+Jvrof*6Dr<&(%QA^id4M z4*j45wIY7k6yyF-ROfrG-6RV{NEyqus!lzFIcQm9kf!4vSCiIXSst`Be|dG8ddaK) zW9qXBZg?KlFd5Ae6)_S6-j+f+@>xb-T0So=NOX(S@`MQNteYZ@H)$PM~GJs)}|*G#MkjFaZbH>wJxA`D~|~ zT);cZETIdSq&~yfmGs7bvZXj20wWV}&!EE!-iDz-#bTRnz=w+VF)Z z500UR`XM>K1jxSQB_n?OQ}8ILz*YlDgf^_iXB1iU_6VwE<=G4eqyQ@cG|ph$bZMep z#h=XW9l)9-`~ri|jCSYw2L3k_<<0vw;Uy9U&kqA2drB456lk=3vclSs`h3`?DYkNG z?-OFVbEg2+DrMR4Pvt(T5JSgw^Z*=pn&e7No1xHheJ=|Levvc6xq3%MWOwK@?zm8y zt3OZ?+#}5msGkvqHMl+5L8V9!@|6Nz4Tp_x6(A2ZJ4WPBEOa!(ofj)IMY0C>Tyh}O z^M%nDOSGdZ+=-1J{Q4Aq(E4G_`kxW^&`nC0lEU4ZmtDs_=`t;Il1&tKmYHcNhHkX$ zZ&2T&r=%M9gfyRNn^?d+f+O!18%L8-gnjI#@Q=XTiCfu9rZ|eY@!blP9R`M}yqpmA z9^l~aI`Mk(v}65C1UL07MuuLO`!$J!Jzoe$R}R(g(S^Q){pb^bM&n6P4qS$gOJsFk z8^)t}81AFcyMf`VqCVY}ZUaqq_6|>zy{NajVL3zoj;A0LiGS4avy%b_IKxM>K2qWT)BjIKoY%B zCGO}V6kJ3ufNVm1yS!`^ueTtS?oTA=l7A}nz&6qt-rj*hSc=Xt7`jO4mK{4UU|-HF zlE8X5DmDoJx~O)zU|PlMu~{5!h>Z#e&Y}$O^7?c)UZ$crN$tm4Pn^9}wqRu&0{CcH zCi=qVCs+42>PWd+f3!`p<$!{&&0N`83K|;v%X-`Le#I10(Z$18h8_XLJg04kz% zAkz+=WPzA?dnA@YiiekTXLYEE2e2((k=jT^&Z%KHcTL0ElM)D6OK$$dL}F}}lZXzQ z^rG|HZswMkq+ZM!_LvlIQ%+kJSF(1cZm{yv&tAsI?S%ohK8?5# zl>XqcE>WL#i7>d^tKfxmf7xaUkBmMObqv+C$(au9?#-u0j!spS`*P zXls8neR@U-U~fT9&Ux1TE@$)Dt#-e`d|{R%;`!Bem#PmQm>xVWf#GCx8* zq4{7Me1u=xK819BPP^w<9pX=r7cmCqNurNA>{r&uqcrjSQfPbm1(*#@l2H^YxCxZ7 z_%%d%gtFbxmJ+pIYx>8l_D%+EHxNw$B031B&$j9!*EO#>xlCh?h-sZZoXJMl z{S`;R1fDu4TN_Cp|w*2T+3P4pwBo|3kNx~|qM(uss zFf#%i;Gf43a}cFMAicE#(D#!UR~4?yM=+hiTdR7}X0E1YKd;Ml7~kQ#^9b9eB?5PF zS2c98QAiE22BatklgxfS*I*f~9j|zE=hKtihcnnC6&Glvl-!}Pe5`6}XlML#dX!dM z%LTm(#5&7^Z8{D+?99>Wny@nPE=yX8kv_?zMU#-<=DEs9V3Wj|f;DH(bKAxOyEt4? zL}#a^Zi-b)pCTaV+HmAkJ}a9FX|dLTPVdvzf*%d&5!-OP7e}Guoi>++z4e(Aw#7l| zbMKvQS13`(9~53Z`K9l%sa_enkarIMm!w~8lcssFWtl##qfdAE90 z68Ai}6{Q1j4^u%6B&1i37>J>ls9Bud_8uKgelT1X?kHw@rD}wGG8EOM)?S5uN1ha7 zyUPt=o=mh;U&Q+f`B;L#p%k3%QUNy?KPW86ayK;F8?+oc@K|b(YKkKpnP-|*>A|PJ ziWLgZ*^$)`Ck4*q$;~JsfrwM4{DT6MuJENH8OS!TT85-n%y55nV!bFaLLf!qFJ|Lu z=gyr<1h$;B#9ny2CB2rfcKBFVxN;xtwY&#B>k=Mkwbl}gn+PQ3^3+~`yGzt98_R-F4(fRqvP==Y4%J`#WH;3*Z8&W%d^cp45r9BYIxm+1j-_jKn^h!4?DH$Y^b~fv1kYkL3HOi`XW`c4`qkFyqqLnh0*# z3*-Sc$=YSm%X;Kb%Nkc?7>QlqJj?wzk$xyKDwhvc0_T`)DTqC_`1Ury6)#p1_^qiU z3udsx{cZ1V^-z5%Fy3XK7g?s3aC@3UDyzA|D^c~VmnWi#{i-EK5FMpG7sbA>&H_iGq5`Bvi_0wP zWt$06bK-c*b36`>sDRtne>!t~FK}$64Tix6(aI#(H&MFr8^`ic*CIU_QFZjChzmt` zqaLWV9MU&@$O;Sa>+wENmQe!0!cX3H$iaBU)kmlC0AH_SSgq{D5BS%B@lxx)=B*Ic z!p}FXs!gZvR}vcONC3=9tK}FlXB90PlQcI0KTFb#mBD>6tRPv(IsW#mr$1@+(Xzgr z6p9Klt2LPnwg#+hzwGEG6~F(UGU);nSdEFAX&L@?q_6YgbEKF&avmMb03UO9Vy<0d*wK$?s;DC253;t99fB9}7=Rkz z&UP(Iiz;6m2*L}X{8zu_NmrZeyr6QUSNzV-d~7b&BzfD@gZWky=$A*+pC_ymO` zJq%c?HDWzGy~Pi^#cXyM`FsGXJX$Db*T66%I@k#(p5eJart8<(<@OWxvKo`XJBZKe z=i@L`fjs3z3L$!l`Mu)VyjCdnMz2_hVDNp)hVhVlfnpX{_ReVqFSDU6|S9V)6^(aV_2_>Lo+IpVrpV3hf_l{26aJZA{T$G ze4RT5Y@eu_^PZ_3_E!r5xt zMiu_O1X+sQNMo!dn6=#v-_+vxGJ&{dz1KE-VeV7Tk zx<%4bDGPC`DN3E175Q`Ku?78?_vll#c#Wf#uIR?RZ^;lhFe^IYX{l{O z9IX0^V1LO*TB@7t%%_LIr==s&%DAm%BiGqxys2??w6;PFUffF8R` z!L9XY+o|u+Oa4>Ymri0Y93Db(oyL`@uIK*q@bT?j-XpM;>(G}}nfO&qliKOXl&-uO z+Hkg{RP%ZLP2#KycG25WA}S=t@;RPtSkjdZo5V`BNTs(@=VJbMV9 zw&(lT;chX(&Mu!XeXfoVxTA+-K%eC3twKPzQh)4fQnUZAmaijc(*qirKYhDOB$Yu6 zvEbAOD1wd@M99(c9`rqIrN!7LZR{A#TAkp8y__fqsX>5W- z=+ld2GH9|dy2vUa`#WUk9=(~6^P8>Q{nS!TrHoX(YO-=#HK}c&tD&7|)f;OOWh1h?S9dCfem5*!u&jcphGqTnw0OhVxKb15`7Hq=MhS6ecm7JI>eHc78uw+`}(miV^(+r2=f$y(-eKMXmw@}ie65EN{(^iu6 zT+PNBn8$3Q`9sEQ!H)04;&FjukKny_0vgzIPn!Y>dl}e6#`YatfT9lK#sx=Da(8EL zeNP6t7AzhE&M$iUHT&{bGPD(HUW&~%yr%8lKY1<|8z=$=R$;^@b@}z`hm~{LxP{Lg zSgP!sg%pQ4o!3&AL9a@4Ch7)tY+J5(ZXq(;*>D1zT!K37#Nyt=yN<AfAD542Oe8vUk1?bCwB|$aN4yI;Nrl}@0DWmZP;DAJg_TW7g}y!EuD+QtbiosW>R3&FC-0lYwwgm$w2S?Svb(S?zo`%8a^xshFo~LA<`a1w z2A+)pTXNm?3b<>}-xKnX9ljY(b_ z6DvNENU9JdHIkcP3;+%0kd&-Cb5Y{8%%5PnQ$oN1Y`!61>Nl(jBK!2sqxWn^&QY0a z8+ZVrI280=mLUljMIfuB*rU?3@OpZP*v7DJCQgJPzH^tJY ze}6Us7%mo%EzpDL$l%4=KoXC#0Xq_F;4hvb_*x?7U;R;C+{^eTE^$cka%07m7qo=6 zGu1D2cKg*Up=|Bk8*qzw#vJ8;+Vr;Z0$HlO70^T5yY}rTx2#}|#izUVgS7~#LeGP* zM4bO>QQTGpH`4tP6QyEIX~fB7x3dRTKNjTzaGZom)kloQ`$$)-z`M?mz>6mOzFEEf zDhJ3dcAI-{Zq~~xv|j#JE+o)xEOE8Qf@y5-Pe)8K<1TC^_dV_o293vWYc!*hi{E;RNvE` zmGnK}W1nvON9Q(nh~h*O0!ZeqB?}WQeFw3e>4r}yuMrUM*PjfnE_Vs+5xKiAlbUuw z@o!{!t$>9=4G!W4x_Icj)COYKWMxGG?S2fw+98ut0+5vCg2Z5!I%p|zAZhJF;j9CM z7@K`9iVf7?`2jw}>1wx0(#sM(!(ZNbm`S4=fmqI@kREt(D#0rk_8XNJ%KcU&Ty)^< z3XwEfb&pYF8K@%((Wnj~oe&=Q5zaBrBzmC)zzykDNOMaTA6M{r)h#2m>U*nzwM@q3 zE#y`)e4K~99f?cK)Cu)aG)sme#0GN@f+P_$}yo4$X{jDn@sCbp9!b3|i@U zbqb=TWyki!zo`Faf9ohQW+_lW9^I_*mD&Go;?Ew@rt(4gZSX`aT8#;J&GOjUsF|Z! zFv#lbCZRsy-;0LyhWTe&mhy%Vke)Emh4R@kNn3CAa&&~eeAK6b8Pbm55L%BXX-Wl#_AHG=W&>3Qsv9ng~|Wr&z=WykTlb` zcM8P)wZiovd*rU0@n9UiD{#3?lP%WO0W2#C^wb|pOx&dt|<6qNKi z#mB#Y7crI3fb7|!!R>v~W z4mLRvl;~GZFbi$U!!oZBuRgE1&oVRBMrGHLH?idus3m{zx>iot7kU#~AG z?_7yqmJn8_5;f%jx2BL}XXqIjQ{WnKO|TXwMpFCku>Qmm*3tnlfZo<#a?8u>foFk- z`(884P=%Otc6d(3o;cDE`Vj}ZhtZh2Ua>6o>O5E&d1F9YXHePgTcw9=fD674U1Jv| zwO5XWGFW(CYG(VNYO$~>aFlnMKT2nz3VeHrQ5Dx;jh)*IYluOa3MTF5UERcHzQF=D zU=1j)87CLd2fY#)K<2;;gVY{Wcaec^rs{9uk`3_;l{yu3ozWYYy--p*udK;A9K{!4 zvI&nH>9B|;#ef_!2?8m;>K=aeeZViWlWoV?LsKswj*%pkmszmTT$4TE7Vwd4H*!9E zU-H98wYmYKsxZY$aLMEz#wPTyE83N;0m* zv`lm;;VcTmM{<6-LNL|xu$Q6n;3eQl$ckpYx=54_XJpZfFxFa%MOrz`aBsljZIR(3 z5=lby{wVTEfOq?YW^=qfLvoCN1&>%>N;@?edB~$$wN+|Z(t##ADwacQ7x5hL1uA3- zgIZQ!ok-z00VN*P;l)Pwn=~4Kkb8~nB5Qo1^J-WB$ZzH5BUKc-OP0W?D=h@amVVz7tQ7B|rLm)D z!;p|k7479Qpm5`K5}8QHrD_W8ezim8ndc)PA^*NNSIl*=-;{lBB&1+o_)g0Vz{%|9 z<$d+Ezv>p`_U9(e8!}+T7=EVIqptli0`LJ704kK&dA_IP=YP*H`&sF6lDhvKb5smf z7cmVSuAFhFrm$Nc6}=X(UZ<~rsd*>W~?PPc|9YNU~I_KloRC|Si?+1gaos#$FeTBc>t zsOQ#~ms3A+#*=r2eSUR=a84e0%O}XE3sz#`|n8rq6e# z7-+W_SCP-|rk?B*-Y5l}$bX8@3>mt30BxJO*)$WdZZO43JF`kRl~eos#%+k3bZzVY z_LL8zDpw@tm?54}@mjIusqDQY6elJ2q6k|ML_2ropy@;w91Zd(*Fa52L7Ise^>7l0 zz#Ri&ZB|{nEZbB2==p2nGSW&m6_abI+CLQE8b8h|F~IL1;~(C<-Ja7ND-BGjY0jb3b|ePy^arCbD=-w70i zerRhU=98#|P_mK$G;IlzDX>68Kq2Rwr<2P=IKaj8>-1rHpOuQ`m9nxgoo4czjp4lR z9J1L(9H8h#ZzPYz0*Soo`@H86zj?$?o#xN*yFwME*gkNonvhc6JyK&G9)j5?K##De zhVH)2T*=CCXBkp)!Oq1aBxgCe$QO(Vp>W%9Ei3G5PXHMA7_Yr}pc*j;P{LJaZD*A` zQ;oO_m4vSjVJ8&&L@M;qVrxI1PL!dP{izYg7ux?g%3yPI{t}a*SkoZH&}L+>_7mMu zRCgOguv>BxY*1`CL{dM;*O)x_AE*Rrv|Q-`)Kb-mw#YZVnStO)y!gd!&>$dBja0}N zA~5re=R4_@_yvk_WgPhd@crrnr(57ihMuPxqZs73UImnZ{;CM>3`_otbOFhTxeB5l z!<$8?Yc#&H5lM~%kpc))+Z4XG029(TNqBMrp_aAFrHJc{d5F<@Yl#u>> z^eMphlX3@6bHGx+PwJ^vax<8qkYZ_te}7(o*VfsCA=Ye%^d%Sr)~!%X4EDuW#-hR1 zU}G_@LybXNm*`C{{z21ios3Ib4@7(O@i)=gD+xiSGzejhvl1>3gwGlOx)g{50oQ^K#~oEixNPw&Tw-85 zXiK^hcpgkGl9&6V#tz(o&t%$2KN9+$oAbhoA)bdcwgat#IoM87vsf4y25hl(NSv)) zhAE+FG1Cp;Z&nt5s0B-d6!<7O`1tLQ-$DMMw-2S!lR)nCWSBiESY!)~$iV@fUho(;;o;h9i?h5(?>CtcAiT z@%;s&)?(9j5%`%xzcczYmX-;2HjcO+N#(UcpRjCN04tqcWFh6mXichDq^kiChX;y5 z5ND0?!O9KU^N1UoAkeb~k`Qzdpq}ZqyT5ZWov~%&!(?%jgG&)2Kw+F*Z!u)dxaYi^ z@yTwXwDI9}*BQ$lIwO-J=%^hj)h9|!QPSR;-@2s{aaKF&XzVAxg%z9ZgSqjE7QLEk zA?kiB0|t|n8eaaafFam3oyDiak(fB%8yDbWC3>C}G<%}v zZ`QeZ#1hRNh(i*wP93x%wN^#`@u61(xskpL@NO>{^>&uxwi+~tk1VrQL05NPT)}}U z<<-uwKgk+oer4CLjPm^V&ZsiRP@cVP0o6|$q<7R;wDQ?h3oi{xv zCxF}sG7aUrE0?iQw;tsr>K!sCM;n5gz6P5QdaQ7Or1BIFdGCf{rd>FM?l+H)|BYP% z_Dz*yy<>$!&nuHGQKOhtyN+<)SW1GLkW+3dayC=J%rs10f0KVx8kH{gY?fDJo_)-| z822I9r0{`tP>U*|dxf!M(2Ah&!vHr69>BgHg1~XopmXQ2xu?Gm4zxe8;`$cPE8*iukLS#DzKTi$?rZfXRA50GFOa#L?M7 zk(Xn)AN+(+LwbD{NjZVsS}lODn~V4LC7$2iiF5xVY3|y$8*}fo`i)PG2_Nsc8IYUR zQW~$VhrO7Ko3ni3eH54`3~f@h7xP4!E=qTGv1HOW5ar~8LYu8I%3-*{DaPq$6Ja82 z*811`($E)8GqqNWPqrahpD(8EnY%mFw4t`ljUs|6kViI9_>an)TYM~hqf^*ve^WU# z;R#lILv1^kwf}@0uD(1c9nhupDFFYYb)}|3A}fW~@d!BSRuqVp#p0gr>wB0-o&>{y z=3 z{CzP^rIJ_VI-ykZpKZsMg=}`b6>v3Oye$)AedoCZ>?m-h9@)D0*e}Y&MF36l#o;#6 zk*_1}?PgLtq)M~a1Q3yM_>ckpfiN4Mi$?kQ$Quk1j zu?B_A9}+@s7fmlR--aG0s{!x?aCg4A*1OgtIKT4glA5<%K6r(Br(}OFSSq@h#J`3W zzD`FODKVWOyzD)nV(Gn(|F~ZTMh)+w5xWlIE-X;{+GkxJ%;mUZKS@~K(+{%+OeAR8 znb9bfu{UvPAAEp@S92zrwOLsZ(r6kAKe&9-#i8R@++L@XA=^QiHet{^w&v4Qlq{%Sz7dJJ+a<~|lfH?okSOoVo&Gt02rI=_e z=(DOl*W#eBqOe?*a|AS#Z}byC12?Ys*SiF3|8j)8GuzE%hP3%z-F%nbw3NKyfd<2kz>kOAxkoGgr4}m+c+%OYD zG@LDr1%Logw6Alt0Kjz1RCW>MthXIpoGIFqWB$_pDp~w9Q1VKSn5d1w!u&_XZL7e4;s7=(U`^=ZPS(#3a-8x!2+?^_ID%7kEp6Z|#kyzi+iBJ?3FF`5q7;U*Pq z79(jp0N(qxnmoVn9crO1ZLOZu7+AzO(0;FPrn6dxzE;*cLUvTHEoc`AB^n`DsL#w< zG_3-92CBZLLe-{Q$3e?>7_e7vWK{5wYAKs$DGI2WkzwYr03O%)WIPZpY<~M4kvd`( znr+)5cjs>Wpo}R%v-*l7Vjin)$V9^0lADsDlCA7rlS#nqE}Lvaf{E4yvc{}9FmlS7F}BZxQpT1(66u|4Cm32~-LJo@dM^cI<2 z!5{215SmMf8hInq&whb_A{FT;H6U*_K&rk)$ZP|%EONpkbf%HgD(HZ|vU?|c#x~I7 z|BNdT6Nic#ylK)L96l_6Jr#?n5gGZ4O}*k% z0ev+uxbDP<6W!gFR&ibD9V^TOy`gC-#I4clnHYu5u6U9cezovWUP?_UItI+4S)&qH zr{5qOzO6-Fm8Qm$FbzBKtC;khRGPPnuLrE#wl;^Z3Y%gM=DYPt((*`~k6d9&o6~*v zW6ISQbLtJt4h_V77-fjdF^M072~!42yu1Ll)xyAETTK_9?tqhb21uQwje<&%#qqvr}|DaE2kWr={Nuaq05Nq9)1KQyY@G zD@tG5Y7@GbndyhLX)laVH$z~vT3-1*i_fUFZTOkZX&^=bm>IT;uRiE?^MMA(f*GOY z_n**mL1HI!%p1nFW=qW-t!vBrm*7n2i`%woVUyP6og(%HJ%7E52?5=Yx=ye$I367a z0*YEp{~(X4J#_kgHeHqx^aeeOK1Do3;>8}qJ|Y1pX&Vji8{iZUjDs{S=c_gHV(-t8 zbYV9`ltcJQv%9gu)8SueS^RVW9Gdr%Gem#HNmE5TIs^oBWpP~meV+&D-O#5S{+v+; z)w9Y@a_Y}QyruFNB0vDQ6lc<^3SOFGafKZ9v}x$`f@ejKCyHTIs)|4HOi-Q>W)hQh z8U0$WUw&x|vF(8*OUMb7cT@`xVoAtjaQDCJwy-QjVD+}=F}DOt0o-oeJq(()(H4dC z)p)*cRloccA5t9DR~`Ll$gZv;pb#N-V6Q^(m(7@{NoEz{Y=G=cfIAy&Zuj3AafWiA z{9uZ*h=Iv8#o1&5cl}YQ7i~~B#HxXQg9w#^SA6R{6P}V+c#`~MocKUg74KLnLyp$= z(#Te+A_gb^T{IOk*cM>8a-rshf<^2Cxl&8ONAG47stPp}ne?_^;NEN-ui%VN( zG#<^sdU6q+P0}7%Zh34I7*6-fCGMrLcn@bCW*4GP!kf~Cd12277UEQ@eKL=ZW(D^t zxVXwo`DE_F?v+|wp_V+W`bX-bOo@m*dHo9|NLkMY5dbfW{7D#M=-=U8D)A7A`$tBk z+o6O-d%^1QE@#ZkNAv1`PtxI?071vRsajlgzfh{qE|TDYoZEi#9&n1wwX8U8*5Rm0 z*VYS&5OolBjawUV4OMJ3Vmf&`^~fruq8K<{@d$Gm!d9AJ^t1OIC)^|aENbcoDEGca zJh{x~%>ZByi&Wyk&I7cdvEAynpJX=Vj6EJd*1k!hgQ;MrZB#ihw#7EQuIf%S6I-$# zUw;U5^8D#6M-{E292tQ6mh8NFHOaY@RxOfwlwwafX^y^gB!1vbcngRoLyL1{zrSE~2gKH}X=e+4W%83AD_tD zOSB3k7I!hBLeKXSiiE@T)4-TkS){K5cA|#?W;3v>*696`9y-n4{|dJl%RP{UmeN0q zBs`D^k9=BL&foB}pg0fJcI_i23}OkxxZr>`pdfVIgqh_nmPM9(aRjEEJz+9e4ivR3 zZjer}fB`xJkrQ~&uo7oh+iwRA{t%DT(?#N}GvO9<4-E~aoN-S{Y^m|ls&e!ImOO8} z(cm>weLw}l+M=M`F)rMxNQ3=Maz}VG@U0FpP!QQ6iNm5RqU6K73AT4VVO4YbdV4+< z3su-cVaOEP1ad@UuQ5=$_JEPSXOW_G(w^-VGw3LRsBjcV*3r0w|B-7WcNZ)KD+pQM z_9s@L~$=@Z#iVN7ghe7(ljSa1#RDkKYH&yK%*yqCiC_OPFvZfmoArTtj!SjKJMREW1yZm#!Yz!S-pVpRuycOOw zNT~F!ge8KtXYugfRM^#}WRzs4KzNtGaXSZ@hNMX<@hkKLV%MvHn?q<0k(XfT5#Uol zuD8G~Lqrr!F$8em$}4^L{7~58&Jvy-Ua>5TEb9Rb%nBG-R-NQW*wo-@HY7_>RVJ6l zXyrh={5U;On`kR$)@)%R=EAvv%?Ay{f*jz-^vn_fQ)M5Rxp+%d(U(dr9bR(wGLf@_ z4bg$aBcw4(+^0#1HW#-ug3JldA>->oelc0gbc&5q-~oO+A-mJ}gvzpQNc_9qo{~tg z=6LgD%YZZ%<=Q$H5x~uNih^jAKWW2hNeTB*&g&vmDCatZKgOyQ8=x##rBj-JB*jADt7jN6#BX)R_Tgr4@W5^q-Oht|V|-L+n%glz z(4>exJO${Lc=OMNP%U3353O2CBM+JB2vc3uld2g~f_rT1?0e(l#;T?dqKBR(`Bj;` zq+sYu>xn#$pq`cE;g1nQX$XRPBJKRgDj*`7Fu3b=Jh1N^v=pqQ8f)?VDpRoY`}i&% z4ojY9X!H+}HiBZe?|jPycFs;~X?GqeHU6Mnzy^RGgJ<%vt+z>j4GNi|&+K|@GKgu3 z1x?5Ckj};-nWMID$`cEQ-LND93oOQG=7iRvt#^+UAKtTyr~6mwSNl#0su5KFJOBK< zTPFK07|1{W8hkb<5tv+~*Ejv`Lxex9hDGPwmK@4=ZMPS;9$w^E)z=NiUw~3C*Y-$5 z#&y7|??Sel+=o7!Ho6|GBn~IY?EX9O(@SIjArNvb-Rne=j2{PGaibFPuCk~28lWyc zrANcNhQ@cg;NNJ?s81SEuTXnvW3G(<`N^><4%ff#sdel9Pmec{bFEO1M(|XREhl99 zzGs70@<-j(hU>-`Fe`1pE3b{V76%1*Sp}dq1YNcvA*Da* z{j-s4NtQ%}s12XNJye;oe)~FM-a$-od=?D&+kGnhdK*uR-We@#}L6q51 zPZ0W9NK}$2H{>-*vp9Kp4&R@@HH>0QaomYzw)B2=`!L-fPcjxFQ?(#`(yW?#atT0t zB_Te>MOB-A=nWNGKE+gh3&0LR&Pq=(gO#+M;HN~@RR9W_PSW?YPCYk%8ydKypyhb- zcXFC{dfdvSNN^usaz^Q5H-QL#QlT{3nEK@4_rb6Gp}jTt;q7s?9qhBd0XSwms&t*%|j&@9D;9ZYUs3r zm#05J*_lLUE1#aXIaITC^(7rSSq3Ae79pcY?%@I3ud&dSw)*Awm= zedw5L#K0`d&^t``HO0Pmhy_sOK>x9utqYB9_?wAB0W_wWeT|zodFHghoJ{sX)BTC4 zL>o+7)CmSAC{oL+B|9^YH-6i}?Y!sq8>P1-2@y*>Px+iY&gFZ?{|GrTiRB^P0)pLc zC+jYBjpJi&BM5h^mHciGF%04*q49Sy70Xf0XM6{U_;n<|2QOu`Q4QcJ<YbN{u^N@l$-jYy!2B)cjz#^7{QvwdD|PvOTZI> z+dpkzx%vb|YHflTgr5bTXxK>ch|Z;B7^^c~2^vl%SRE;G8wKEXW;%w7XaG~$hyU_@ zJ-%Z;^OK!_D}dcQ#N#!(;;BkHQ9H_{mfR70UuKZ=x)}(4p|)!Q|b*_v-t96aPl*)K!xy_m(4c*LWxgS zcr|h;uk_sN2?PibEO(|x*~|>45RfsqUy#SFiw7@Hr)Njl%t9k%13R${XZai3;~ID_ z(0NUBnBVmnxBwgNK~=kJoF{&fSRf3>1QLK3t0VTfc}|i<6QkzEH_6u5zl-fV|(# zkjcq^547Vc5zDtXUw~;(N@-Kd+kVs#548?n;H7%&D)IDqiE|4ftbQ`#$$PC9Z+r7o#H-pu4h2?X%!qNB82qZ2^y%h)8wts3^JBe0g0m&2j`;}8Xw z%(xgx;raZ@-la}#(80Z^fPNq6Eyg>JJaFK}@4?n=kq^=#2AGTTLcWTaW$UOj%)<8y zr~r;`C+hoqqqnZ>O8fr`rJrs$Zl!4ZbT9~5kMJT8I~0aSpH@qg7TKoPZ7zR|XZP#2 zRre~`Ap8naOCdEAdO2tKN0q%*%CxM( zr}f!kjMrU}ub|brbkof52L0?$==F;UMgl-G@QoT=mgK!$pMQ1OC%oxlu&!LhQ13zL z;ZrZ@MDzr?ASf(nc@#74n;48<0RKE6Vdx2H_3tfNv$bgcI2hdI>yJugCGkXZ80=|5 zBSw6vYdDpucTMNPDkgfbaoA6_H5=$wB|>YvdUAoE8|qG4wZvAFVqO>`ZJ+HeMgbyg zhQ)|GnjK0dbgB}4ZhXcNv9d;8ahzCez_{HsaqZ%MHca2A(VZ%eYRKvv{l%Q;6wuNcI@6!j$}PIP9d69Coi@m-574JlF8rt1XbkD9vInbILyP zCCf!OC4!r~-}prJ$0p~n&J2dAuMnL@ZbRY&^TpZ`LD@s=Y(TM zm7!auS`5*SC`->HXSnk7sK|_-Gf9wyYt@ZtD?UwwdCzlJJnSzi7WTl2}S~)GoLQIwcp_X38M3)x0b!e1Oi$S0RkdV^-m=xO_d{IhJ^Y5tN*E4 zY$POr#LdSfnwi#^jn_6ZSDT}EzA0m}j3ByYv@w(-la;5htCtOMiGZZT?&&OnRTN-4 zSIm!?;sdTg*z^jj?_aW6A7K8 z^}(Zoj^VjOy>IDelxxW-oDRJUYU-6rL7EkSda;Os2GkKkIA4wJKXht_$-mGECN?yZ zEt%HevGI10W?A$kk&8gmpsMKV$>QU~7QoCSUEtu3g9pEX4o}i)ba!4to#e}`$^WW* zvbT;Gp>cR@kdIbI>jW zgps35`j$G=DUOR}0vqun>;GZgO4F%~p)VVp6)=P=3~x0%Tf2_(zZB!Elfw>8TwH>W zy3^KWBnODpRZ)_JaI^4ck5J6B1cC!TPSf)jw{N>OHu<91PB6@%FD z^uv%Gdy=|ylFA5$cZ<4&M9PttJ{m~R_dV3T+xG8~H&q>U&E&|stRT%_w?jwSah$8; zj5m(dzTp17W@srfEzpM0rgJDi#-D-aDDVLecpBedPa}4DgPg5T&mdP@HZQk*JRIgS|bc1VPBdFZs(Vt zqwLnCiCv26h@5eRZlq8mkIfvYugQql)V!z$XF9gI{fpe?qkp#8kz~_Ow;@B-$6H7S zG4NXuiz^{%>e>nvTw3IO!aRG>)o5VDROM8Gv;mJ{2u6x}YT)+3jNx;DoVY!f#JQ5B zKLN&(k6X+!T+xFU2Q4EDMte24q*M+2*TvjpxyDeH&Coz*s#Qkh&_k?wQB$Pm9bhpy z_sRf$Xmwm=kIY2AFf(^FI;lEFX!`;&nrcDHhj~Z5l3(7EX1RtpX$tf(S*Y6iSc`vw zK*$i#C~?U$S9KxwT$(iiP;NVbJ!Fa;t~|jR{{`v4Ft$Um$VtUIN5wer`)_>!8|A?y z4wFss&?x6lB1KA%d;ce7Ld8JWxT-+j;%c?Szx}A0s^}p~!dbAgA%DkAn%j(sQNt5W z*hfv6VMLbQ_Qf>N!KuqlPfXBtC5QK1s`{f=tLG$k15AxuO(UWKNhH$C8fZ#J0bf^R z+(~gr=x&-#;i3HzWFVO}dr2uoq(oPYVClkHxq0wG+kQZNZSk2*N+=-tL%j3tvKmWBRpP%g%O zFiNPUn-5wEL$on~VdxG4yd1{u*d_WgnV)Jr&0qOvH4l>U)%hwTiEa+P!<`ieoIX6p zeG%mHGa}kL;E(E3fg%X&TtQz2r!dHD9-%6%njr_-f|Beu#Bp|qN1!MOE1F9OGmr#= zoAgxnT2%&apnQ6wPOzBcl9hgV;xJN)_K1mBaT1U*P=hu=>VP;fpG7gmUlMkj5CLC& zzt&>7+95o|fg|LxYn@H1+gev$ryYW<%b6i55hN}a1A7OYL~-1RAenvDEE4yyM#Vj> z(_;7obb~nl*@=y8tyLlzDM&~b7NG|$W98nX@9~^<)Sh$XgXk$nqcZn#BrFU^8)D-6 z3bKOSw|zDMc*E17blNX}0~7>MPdpM!BV{tAC9v`pOte8I^?5=rDBU%WNz=%P%NJ|4 z5jx=vQ*tM5c!*mqY_^KSKq-XTzdsvA#WXHtJ|&xf(fwe^Y2TZ0!M7xn zb2^p)q7x^yeeW=G1@MepEiWl$JpJsjEVpQ=ueI z;2gU-DdU{{4=7u3QUr;#FOp8t zSdC@OJn&D^5(Wr%vT|5bQzA0LzqO+%gd9szrSVPo!kuP>VKZX*);eyG1zee9$&r2*EV_dGt?Emi>_a5#>Y&%=BnY_?EQI)tbH3wy2?yBZ$lxm2QXd zr9)F>CB-rFZpy>IKrJDdX_deURx=9rLgep-+m=@=pEM3zyQBXv@9T^slZ*7)$tqQ> z&Nd#=hypc!qm)m=lfk?RdgrSd!z>=E3VUej8Mly$9AdXVruK363Kjv9^k~aL-8q_= z<3hVE3s=BJmVzvqWGd{d7a6DKkqOo8B~_U*9CQPN&h!-&bbl}MI4D_Nig-u?xdXj_ zJ}=j5j{Hyqa>h1h6BZA&@3UXG!{gma_Kc@Cxl*PhGJcr+z9UQejbqX(Wzf`H<-4Zm z2C4*_igHojYbXcQR15%>EgbqB_!$_+v4<;_M=plnUUY?t;tE~wI+P|hs+LR%ZN$xK z*zSf3l>Okk|v zYILuQ;#GJva32!zThn1Lu8Pp)qN){R9H?IGxkgeh_ePL(i5LLhffVwdErfjkIBwMa z3M93-fc&I+lkCMjVl z6Ma6*vs{_>=WDFa~ zoKkpFo7JNCDz=>qp@$oPupybe_tA~pNk5gSeT6INZFu8mE8F2-Jekv6EX^sMm9Os? z6ff??kg4cVcHhh(ZpDntxKo@b7i^`}OFg}ELTGvUgBKtK8p$-{&69LT1D9}l%cTlG z>yJJ|)lg=A-5<~kM8e*vEP)Q?l>nAa4Ffn$T709z``7 zosEAO@qH0>{CId3YHz((GWE0Yi3nD(K>?Mhc4ig7r)qcWshmlODLVXrGzceAgE|_hx%lSqll4)%-e&Wab1^^9F^rUv=6ffOrRvJPnok(E^-S0$dI)h8T z@dy=vu!)(VzfE3`G3)~A-dw5sVtSbJ$|$#R;*(Ob)SlJ)-Y8F^{(5r->I0nou+T+6BU zE$q!b2&S4}0Srdx$HU>>m(CN*@>FmnUTzN5hVG!OJ1Gc=i3VT$T|=?z5C0j+#@qKJUBFD!35z^Fa6u-Aif*1+Q_2FM0H8MPBi>sM7#SX6IjRv}#RZ(t>T0aa}4y{g3U^$wswj=R;QmH2~ zlFr`}%$xIi5jx2qhzx!}T>maedIM)-Dgh+Ml_TD@zytj=-hI?}GH4~$epOzV`}_ec zJ+1qHgX@~%_{NstrZ2e717vo67tR{>aJTny@g5}@Fr1(A+#ZI!4TuWY zr!#6AUQLU~FFqDk^J*@#uz7UJO%8&1Ha`Xk${BlNBgmBtpWYB9PQ-6bBrQ2tasYVF z(;bqZ)j5d9QULzv(aH%jgy4#ZUq~65U<;n`REi2O{c5a7D1>jQdq#(y|QVS)7zRUCgNx zT92kl>Ffgw19sa4nGVg{Os(~;(13(=%Lz;Qiwc~XFd{N%<+b!XRb`LLU$diO{L-l> zuIqLcm1@*4D%pwwHMoc8ww(3wp=OlJT`+vo4SH9ISxJaGqIK|WZR%UGjXsHOtD@D?n$jqy{_qq)ljEu&V)@{MBydQ)=tpUL2f zPnhMP_U_z_m9)t(HDxf^-=N92Eis}yns56}XDn0!S+rZ!Tl~uH6HuLt?c1yHy|Z;= zLCV#Uo?s*kkjPG7*J++}g8=X}OolHt;h~)FD4fVfEnO)n88v;#mD!ohN|wqw;F0!8 zs&#*)S=F$AdhUT2_4%SinMA{F6NOPp6*`2Wxz+CcU-`?nzJwS2Y2& zx8*7&5WIAv6TtNFY*^ZST#14kEXvzz4k+URe-Z+2IChbiu|AV4A%2Imcvo5}bJnJc zQ&*0%Hd&S+<{ua?2@r_OgE2_hW8?{}sjYigX}_KGz1!HiGV?Kww zBXkU3-d%Vx`s4Fwu=51Bc~?xJ0QgN*NVZwUrUXK`B7xrD3?LHSFXV*ZOBL4z&w6fK zJaE_Il{)2)=8>Smju^s$jF2LGM-Y^*eg~i&&Tgj9Tb&8~VnXfYIRU+kw@FAlce(6zDCFJG(eQ22XzEJgf=qHU5=okE_c ztuKB5YddRoysdzfCk9~nQYY}DOqdQ_DJYW4j8^Iz)e|=hGU+)rUGeHV(6GBF(&5s% zr7c02P2s8e-I#}Sz**|w)(t$TdY)o{a-D5`6j^o}0ssjgeGH{dE0#F{N#c*koB*}F z#KlQJ80>WOtX-U-;VmnN*>9l>KptZzs;ox zyJg+J8SoS(gM(SaxuX_Uv>d<@X*N`&T|M31!t>Yp1gZ&+%P2C!70)YOQ8aA@)XUTx z+;q`)AS2-?>g2_<#E1^gWu*a^2}|?)K$y`cqvtXxA6V+q*I5g5;!3YbyoTLpHM1rg zPyR?qh>|tC;%itef)dDg+e-nbMGKVg^0`Gnn$ zW1AbtV#ljLRV;2r5ww-+bJCQaQJcyP;uewJj)~EZTPCmb^#@-oQhmx7aBo>t9?9n3 z@xq@(xLC&w%xiZvs$^j{6AY@4M@$+{dR;L5ZKb5Sk$V|b=%vW23!JaYZ~eJltl~uG z3|O~Gwg>f=2f-n}TQ}Oibn_4sxwNQAYRias0!Mkgmkdl|0DX9kkKr^vgma-?#z1lz zSYp6Z#@T7#PFcdp?jBw3=tTLz^U)sd$yjCOAV05<>w6Mk8{SNRBKfV1K}ndZF~7}N zVM8!tXF={3Z>7$I%ug}LIYm$yef!?P0|-gekp4$aDp2?S9Hf;&`^&9~=zQ#JYH035 z&BnQVoD>YPB?Qt_Q>^K9qp&Gb((^Ko-tPg~DQP)l&&)6A@q^DF9rsoha2N%PfVB>| zg|92*q1x4R1FMpdy2yU|fGtW#8?q;X`YoYMWo&1QmBFbBt}K|?dFS81`Wdrg~GnRw!OhAt42EwmOd}tTcPKY)L`GLXou+& zdb8D!{-qq%AC6UXvCBV~%{_JJ$|GNWof5~Y5;u2Y__syaJ7FNZeKqv>;^7!|Z^1Py zAK&c7E``wFc-bKg`V$%+(`;{D8o=kkipQeJDVBiIpw-P&i$TUkXDjKiyTn+u=3uh< z47-fSDWrq%AWGsZA9WLM7t_PfFUS%3#0%>6Bn`5Ao?PS>R>J>})P!NH0ZQ=x3Gaum z2JQo=wF(UN^Vw`@Y1%@ShB{&it2uI3-$(-rt&%_L45G&;!=VEX!+GrE2$GMswpir zD_3*VK!(v}nxu&eCa~dLKI-}V>v1N(8vPtivYYgQ%hvO5o3G4GSCR|o zQC~Op>##+dN_@}^)sd=rGT>PbI&-4Sny9@`L;I0mt};1gUR;;Xi?=rV3;q)PiTYV@ zWB&UXv?o8LRExeUH8xMc-%tFPCNqh<;)yKt3U^@G2~TQQ+@B#u?x?p|m~=e0;~;Mn z8tDos$zt=k(`1-BTttlBYz9 zfqMSo@GgEx8VZmCsHr0}xm33O%hXCrZLUSH{Jb7!I7U&4Rw(RIzy%g#b1R=xjqV!?&Rm<$hGy?+oAsWj{vn$&;HK02i(MvmlV6k z>2P9ik2)(y#6DW^m5{#$BYM^|^9X7BIrt+bK~~N|jVLrUbAzK7syIK`;+z(-1=d0zx7K0;2mr3PKwRGs6E=5SV01 zC;%`-gHo1@P59EbieMp~B1*B5FWA%=GgY6Zs|GMuw!Z-qXCQjyEE0rUe2*}|mH z4dSG-Z^V+S8i?_w)KM@~oxFIQEMN`%Nl!C8px&uEL)l4-&#Jr&lZzOcm;w0HboET? z8UYXsWH3I~I1z6Utr$w$qQek5z@rVgaz2`mc>1uxZbiP?LwS)gYi#sF`1xZNRFZJ^XO14Dyj^2gt#U8})!A`2Z9bpm2eN|f55`ZW+$;dFil>P`u zW;t{01Sf1^3Nz((3L>yJ#d^b)qXz04Av2URGTCfSGVC9bzM z`0`EnIVno*_-s1wgTCQ0sn{9`8Ds6y+4xoPn2E2FB>e5;NQbe~jRW%N;`i>F9n5X( zM84I$4n;*al~^gDEx_gLp~T;NY(F2R0xs@nxLOs^b=|MI2B>>m?Tg9ztUxo7PCu{9 zL8b6WFm6&EZd6>(kU1bJGDL)niUSY5(g99=IyG?c?V)~M-C>6WC%;J^{En1RZIe@{ zT`UIk6-wqtC!BW={j5;zZ~c-+7Y+1p(9euHCk`0^P)zSarfC4)>BV zgB>d)lp@Ynv5hzi%S%EwwW8|fpGQt*1g22k0s-Z(bfjQN@pP=kf}$h6c4A?ZYi`_w z$rfsxS^mgoXaFiuf5iCcfzVbi!p^pL12)uj;|Mb)1!Dvsu2>BJ$>J&OfoVpw1%1qh zv$w~q&wEdZS(mP}vnI&8>})y4W3z{y(~pgZiA?2p$Gh*X+D8wbba{-E#M}~st+80+ zWyhXt7v#kJw@_J8pmBB&OCkb}(Zpl|nc0B!yg@AFSwLv5Wm{2IFO8UrIK!|JObJ6N zV)RX?Y_qn`d}zrhhD+XSLDlR^gsc6VTx>%L>bZz&k2n905B$$~yLO-)D`bZ`iYiCm>Ofk#z`U;ZY`T*nQ1*_P2dzbE2Q&J&5PH8BksbD7U zQESW((xOo^7Aq*w+qkGNFJy=mBYC*(*_QDQ8Rj@bB6Kk{cUfH!dm@@D5p-~D{7SZQ znndGt#jZu~8ta*(t^$>~qa^D+FoOh)*Ep3)|7^C5MoKdAJYE`eMW*~q{cnUWp$3iR zMS#X&abs>V0yP4WA*qWX)`H0pir>sc1p-Ot{pMzL#7BN>(Wm_jXUbtrzn_>49USP0 zsxxbwQhTh-$R22YkMr6uYzNug14^JY$?FVUJ)hqa8V%mpr}3O}s^w*@0hd%a>eoIaGW>pz}t!q}Wp{+qs zvQ3oDi)jAk=sF9nXJqYs{Vgg*xw&Zqxd62m=%^mDO9^0pMo|q+Ie zZ6yNRC9h%BAkF^DNn|pM7mv2{4y>F|R5f$WO2$}T_~GeLFxX>>$+eq>0c1u6JgL`i zl$TBp5t$zwrbc$l%*n{PKgRSgrzWC7b9|g#etI)yPMeygV&=$dtGp;P&z5!qv`y%OOCAZEi00nVH}V$(V#cI<0!(dP?OXb7bukRChP=fKAI19-tL$#PPUB zb~Afgl5Anc{zfS()WeJu2l#NmuqB$uUzjSDB>QVR)nz487OvcF92~9OPDdT(HJ0`r zLPLy&w}@DjKv}<|MRRa^fNW#v2m)-mVebcX?KdtiCam5$@DM((_$g!@(4~0+A&A7u zx80Q!`lTz8h@1--fSvBfjiw)pfUsr#wZ}|ks9jZF8y%w^Q|(*=EXtn+F{p`V4%4q$ z%5IkJCJ(mFQ@;t=J%Z#!C_%=uQsMy!8&k0B;1U&JIeCH(e={1(Jz)6bk8ON=1FTdo zj3Y5bUK#rUEjvU`g+_g@M(t<){b?wGxcoF!=rvJ$2}98zfb)Z>CzB^^B_mY5MQVk&$f$ zoiRGxL)>h%i)aT1%;HRTR-%Po$d<=2ttmgPtyAztsUcvoM`Ds0jD#r{Sa_hkfDV*I){M zQ>l5T*@`m=!^rLcy!qqU(qo^0YwHeEre|-_+v+CTwFiqQEWqp{d<&p%nXH#m#r$O0 zT7;-!9fwk)?<-f~c0*%#cMicq69$*AyIB8mD$)hZ9mTmM|l|6Pv&+A2|YwQjErYDFiGbee-F^mKzV*LfXIH#s$Nk$8^dQ&Xl_5{_~?g= z-@m}oP!z|U>Hi3E^OrVxaM#l6M`VotD%L@N1ypetd8ntM^F<`zt{AozNgBoTY{h%x zR^b#P_$oiVzZ#!7MjwYEj+ zjZ>J?MQ6PxYO=OJPr?R&t3Gwj;ZAN=3wS}_;2eYhc@AOB*pb7q9A>43KPb+P+L_H% z0S$8;p3OTTU~lpsPZvdnEDk&sfy)E;ujN#yqyy_#^k} zu6-5slxya7vDoXQv1Fb^4*^iKv}!`8uWqtYwZc6|=}^U3s08k7D9pm>(yn&0)o?|y zaOuF%?clXfdg_xm8o=c7(@B+!-07;vwZC|*Y@z%G3XUh3N&bnc6^KJ{-Uz8HOy9gX zA}Tv(&@ zHR^ij6Qx03KD~w|*=~t_JFl1nyezy1K;@!-wfp!d8})wN5$v?Updp3(=rd`~@ntmO zhg0{V!}KQNhaJQvr1{_12j~q!eu5WIvmui>x>R30(?kNJ_)$mGZ{9w6!Z+i|>~N}+ zvp5sU48*nZ+{o3Lw>bPPALCC?@Zvz`x-_Ru(2tyxzJND6)H}ZY1niE^KO|!NfW;o1 za4t0eTuO_Q@bF{YDn1Su+8+ujZ_6g2zX^}xZh!TINEl(wp!1NWDI~HY$z#PP(eK*6 z53PF1tl~x_ryFoU>gmF1gM6`K>O_zUituLr{FOALn>B(JG!p=M@GfIaX|m@SL4 z-Kwg_t0u*gOgyfM5Z!=w$6Ruh z*;u(hZxl5Qjh3b9{N&$QK*eS(*aUo4m_izzu#Yr>T%y3xA}ZRLJFlLT?*-U5_w`fh z_A%r#R%^aj0?s0p1m!K-Hpd6;^BhU*dLw!C$dZ^Srz)Sv2o^AfeNV~JAES8d0Y?Mw zf6|TIzEF_Tk7S9xon-Q1e0t-dCf4>xB_x1IJJz_dD5r!0f*W<49^QB(AQO zz)2l>5h%Jghe*<{LN{T%zu6N~1`pyb{wRRBX14Hl0vz%&C&5kZ?~NxXc%AFbRUhxr zfM+x^#~4fquch_5ZeF03btDjVMj6kzp7E!0i}=&7cKMRamNa)Vf{N#4$D3jLwyhTRPuQ>TwgdJrY7?s-V ziDE{h*~hCn`GJF$?XwRz!A?OQ-iy?%XFb=31m$rn8m#bJ#I2+wKBKU7qjW1iw{~1@ zVrRAlU~jjZjh*fQ#;NEo@ff1Fj>OpCp<7idNQ#>*X#&d5fCiqFR;IJ5dE+rYJGH}K z#jrk+P@V))$~ok786BW`vVVpN{rZq*tXE)3{4Yp`o~&Q|xIdZC%| z>*fftrj1UaqWnqZ;t>jN%&uI~as(UjD~;V+w;QB=v-`o=P*)Vhtpzx}nL>Yjh7G`0 zP4i^Z%FMSD<4?Hs(7D5z#g&CH7}K8BqCzJm7pf&000ro*$7zm`l)^X$@{kefP@$8! z`!WM1Dxn!u;2FtQocKwy2KXvP%rq9>nqgFnqZV*sCTq9L#1>i5u79zUl)m2WEqs0I z(4KbJsHX;k|C$IRi0%V5hV*eT(~8x%glvxdP2mLfXIy6cs#fJZum(qMfc-+K`*|vr z4L&OL0~C0aqZck>n!nSuN4+d~_)E^dO+_S{b+DF({V7hKG`e%su%5cKaO$^3?t&+x zz(-J{M-Jj9mplg9iQ0rO1q;tjcrQ551Pve(g({oVcmfT^%!SC!;gg{wN{k%mLZ%Z% zBzF!ZCXFvHtK&K}AcA6AuHZ6d!-JzwEC80*1^_b|r=fbLaw_8#yq7IeSd1!1`gLE$ z7>sApgzd^JAIvyz#eFBS7gH*LPvZOIRe zq$duLq0jYWT>@ps5SO}ql(Y(_!EugfDswX}qIgcNu;~$OP5Zn)Dvi!h?yUyf{UbEc6LX-cu6OIqq@?QllZc}<0R*!2wr|G^& zEsM7;xEOf^Pk-#K$DcU-4C!imOnq0+S^F+?$zJYwt}zffHFrwoI`bJ+loXSV2~H4w zRw$(Yz~|s^-D^XRrHzvUnZZt9hi+(NPbVI%w{@1eKxwEBbMNL0E989Am`r`H61pg%OKdTmctg^2? z2rxGU$)IIFwA5$jvFU+xKZ@-2?Jd^zZNuA`?anXU4!Xk}{%=IEkw9c5JV5=DDvDVr zE>BzSHUz$5iDd_K<$45JsNy;qzUPB+jwmi$O&1tbdR%!TKm;P_$DJFjxtzM>#{UY= zai@!eKxa6Rx>MFrFI;FH^fHTOzCk9T`8WVGI~-?SOua7Xc9^y$~C*@4u)NG&=@qWz2m-o_*AK$Sx;8#phbHGWw5P+F!JgFaPtuz9k z_EL(r+3|{ZO0y}w0&p?bW^y9Rb5Um~@@7Ff6)TOvA|Yx_u@+xyY?4zjO28!E0HPQ% zS<-~9Y12F*@f(0hJuE+Q`_3k+^4ou7mD5nim2kuONdR+)$A zCQpYYaXh7&pQUijVpv%gHetT9j+K7ySqaCbpA%(}m zQAUB#$ifb501!S=L&4*7?Cb1%o~~cRx(1;yi`4DsB1t1NdAK8)VQIH5SA6`|VYsoD7Oy<;Bv??(s!mB*+7Tb&Wx;w)btY ztlrFO&Mkd*Qx?LeCy^p_Ih-z@NvP?T&`yd~y>Qnd4)~Gjv)IDVqGJS3pH^*eeQ^|h z{NTaQwXBdjTaKpIw_b}wt*dIZGw@lHJNt@9(v@Jdjs#2Ju1JsUK7^4mp=cM+Zf;tQ z)7!9;dWtTpB+(@AP6ztlG+Gh&9{(H6*w=xZ(j$1JT*@tlOiQ1sJuv~ zXivFl0=BHwawpb<`CNbuprUfdNxT4_6MS*i{2t*o0_et8;0;x3)My++uNxsx#;{#_NTDyAeLsVF3?D_N%8Ae;yCiLtqWAp0$9Wm`QP@jg2 zfYrsfl4;LT45FPyZqfDwB*ueQUm@wPY`Di}(MWVxZw-h{8~o^5?0nd`#ZV}AmuEzT zZ69|pgkOCm$iOot=5uC{H*&F^4?n#8Jj$Y8!l^-ITxC!~!T&|qIX36kMQt{=ZQHhO zCnvUTCwFYywv7|pwrwXTRzKZc)m8oB{Sj-ey{|duHN2HJT^d#wnzR`iQsn3#$Hx!O za|bF({}`k>V&?PU9^p8+dYQzF0rWrm``30T*^7C3-KU0%n?Yd%U@h`{&Ai&-Qo=y- zLwN)LFtCs9r02#`d9?71;h!lO=cLgEFf|Bq0TnZm4)^el(7ITNggE{28MiBNW9@8BSC;U}n& zL=@efoHv>0{OSrXq@GN4?d9;fHarduxly_DK`-53ZEmyQpf6JSN`rJ{u}4u4kGO>T zmX$EviKT)x;xD@*2oYC902G~U?2tk%FjTmq4rD~~{cIVNCl$1%SqdC4A-)x5Up|rb zz*uXAyLtC`i>bKy(hu;iEQNs2yX1X%_R$(~hx9&5udsHc<5Wi0Jl?y>8m5AgJO6V= zKH*JA|HS#b+8$*9mfh;v^XL4l=)Yp$)ET$y328g{&xf~j%AOFrBY;|6suLBNL^j__ ztLH`-((RvsR7HuenD2}0oh@Pl`R+Oi$YVDO+IH)o00&*kaV8#?dmsLN}v88EZt!?Vg?#>zq zH7mE9$gJr=GzFEpHGrE6>LT~`<-)%Lzdw`xR?7KU+#{=Et~^$IDD#!Qpbak`W53cV z5~SBoVrQ?p@;oGL(hiSw&;DMrO{G*aOj-4nH|0y7piC$>0_Q4)0%c8--+avJbucY; zW%(A7H4fZr13M@Srhc#uOna$wGvFA_y>$xe{em5mzAOOundd2FlhqPz)Zru8Z zNGbl2-w%#2OUq+T`Tk~wnD!9<=*j-&$6(M^MOeO7n%bv}GtCHXk#wR8m*d+9+MudX zH2~=WwyAm#j-D1|qK>PXvO2i^_kTOL{p-dKA(%R17!vbsdwx`atAknH4*~zzH>XHv zw$%mw*9N+xDgept^AehY5$Z6?`kTZ%D7wyeaY-fiws4z3(#daqGo?k!KE}Hx*<1#X z%31!sX{7(NDCP89G=v9_lNX29Uf9SUa;FO|Mr2jN4;Afg$cqB+2FK~AU5dBsv_#2e zj$Nq&t`RWKlq!=ZR)t44^-fr2UUKZomTirTS-zLIiDg^{h-Co)Ol0NhD&Rl!89C{; zSBfAsuosO3ff%GTAF9h}qUoUh`)DDmfq;5>sL}!#(w@y^f%UOE4Nw6eck75S?PtTU zc{Z2QHqhg0*(p`?dE>sYUUaGVvLp0c5#M$pv$TYL( zGM4`c0tw7Uw7c$gopJQKh-5MiX|j=r6F}yDF;aSt{vF=~2>F*BM9V~UO2d$5iB^WG zQ7?ux#<(p}+JP~(Is?I==JOaoF#9vK37^#GT~m*QMyE$j^gI z-}$dt$gbvS1IjyKAVS=Bf9|~1tEx}XgOR|DygUa7^t`(%w)DXJ6bRIDw&dQibU@L( zstUK?w%2XModSb^zV7$sB4BCiD0!knxcn(w#&{4UI~lzK%9II1IIX0pXOfR{c#=;W z_TC~F4g2jq!PH}4{Sntb!V4wv&(}3(92di*DOSj&;w^c9WWHss48OrocWmg5AlTtR z^lg|p57N8JsK|Ss*DWAk!%5%+6|iq%IJL>=F6FC41GY4i9GXAei8*T2y5EnyfHwqg;aU26#&X4$Rji{Fm!rwNZVB%-y>JR-#M*e zbS-XtE51;Bwujsy$a_fXhADykHpsN)!zz*fuwi(7BN9ZL^lwVdE5xIhtsI)5+B~wKro1}{@tRLpX4P{+n%|NznxTBfp zEdw7S6XFZkh{K}F!l*)iTOtP>sq}WLMBc2j2pD@W}mcqz-aUu$ori{j5dOf9_0eBk0wB1>Yk0Fvjd&ql-Bs$C0ZXmMdQ@PQD zQjf4Gm`jjKb09xW?1n`7nfTxamEnvWdgsdBy@gEzY2pm&y zu6fQ2o4K`mF1#Dp&4#xl=z$=q3H03#p_%1H>-KLWYEV5x2VnAW)XYdO77!>oTl%8- zo}?RhgNe;|b&uf*=}nx8#-HdHt7>m8sH`J-Mw%};#5$IWkJ8PQP8%fYSYO*e#eZeq zZB!X|gvEBIPd5%bC}1k1PoV3=nn~RwD9V+X*f1x7IkW{vkY!A@F|Oq0Qb{e;5TIV2 zq{Wc4xY=7r0B9fK+k+%3E2TKRmjyJqgoE(6;N|ms&^3V}B;R8*FAJ0O%42zh{|?+rd~1)(Dc4(CdVni`iK^=z`0U zs|-seM8IQ%xgX3B_##a7^%DSp<%8Hs=E(mMQXCHK0b+baAKW>*O4gB&8a-pAlF3Nm z|042po$eiET8=pF6T_GfmTeh+k?!z#Kj39}PK}s1+@WDQi?SBqE z0dT+H0B;pmsqxe#+5Q;hloP&j!<>-=;Xsl??v)l&|9NB}L}(H-3fsOLu#Dp82h*%2PCy@jn z{0Jnt^}vuyNzdnNCVN6Jc@NptQW8lOYGmWO0mID~S!L-9u1|bCL5Kf2is47j_-K8_ zhz6AZ<>}o#Ol(EM;zT}9sel&0hw6%TjwH?*QMZ*5y|96Azh(#A0j4$QYD2+tdqsR54<6EhSeh;4k(A%O!5m z2mJUBV`Es%fTN3GT$T}hnyuwxdL>G)(c`oJqny}CP^-77bJ8>H{m&DgHu0D}3R+Xa z5JFo?s8oD=PFeXVyu~LI?HZZ?AI9$`e1n}lR?{XhQx6{UR1FHrz_0(NhX!ywUEg{p) zdBAt4H+eii(MOR+DXxklS6L4*!%a*k#bOkPd4Xd@&LH|JjZxtn?r>@Tmg){)K@rO> z5{6%EUtFo1hfj?g_B(d1f@v{Rz`s=5`lpPeTfdh5>G-qgyePhUSq^aeW6SA zY-Z7@$CZS$hbq?;1^P0JR0=nk1JHw`g<8=!B8rV18?bxSWd3DPAdu2&2jcBniq`Ua zmiF${-OApbkx7%Kkg1q}1}}Y;DmE6TN4ODav!eJVCWiC)Tt(gvAazp|D>u=xLAs=` z-s|G~y+6JFrm$;UZLFpL{;s&9VHe}V#P^(pnoUZ2JGK8MftxcO!ENPQ+l9<+J? zwmGDmAl2hq4>)YXjP)&rlne>f`oLk`Rc>2kE=J%*?7dSz@kVwKm1#N&y z2<=48Ed?FfEZgyd*^2)8J4HxtVzt?gCY~Svc={*T9sr!N`)Bygpf&PL zX>@ZgprA5^r|H(hmou!+*||2AK=9y@o3m7o!y=hgnrur;%!}r+-Soc}PZA~Ka5-%s z$B3JdMluxq%pB9 z4lvIG7UF2t``366X#f;6plED4oKXLWVJLAk31FbQh$Y$G=zbBa*{qmWVHma_f+MC@9ZV`payL=1Ytw6}r$e{>LrGZ2oL_nh z4{5J8*%SV!V@iQSbT>Qp)rYh2tG>F=03&8dsfU}=jdyWXZVyoZD9N1Ki9u3eg;FLG zZQSoCIY%r%$d|~6I9#e$1O-~+uQFmGT-65YbneoO=4A03Xwt{BBw=AJ!Lg|zQKXOj zrUe;8)@UDu!e{=#gD`N_$#W;@6RZUr%Oi~eE?Hh`F{VaWg4|rYa-9@`uY>j-LBB+X z@v5%h@yeR`WC93#Nre=UiIJCpg0qp=$wlWp>SdI5sB4WXp+9-Ojjy|$23)(#GIpZR zHJ-yv=#Q&ootW?M;MJhj4=Z}!&*g_mif6u=4htQI5kT|}pbjdI&g+V`-YXa*GGeO~ zrk~^!f%LOrlKZ<%Hjxk~^HGf&_;R@^QZ`RaTwfpd_yC>{d_@vL1lW@iPRxiFW^3$2 z8w_IWCF|{fuDW`~1yIS?n%G%)pC4 zuorXGUw+}2&Y*VzshLSE1E*aK*WCupuoSzgVDai9*% zfm?#BQ+JQG08Pl&)D+<%=S4Nk{VzR|}AH+);PwGNrmrj`VpqY?4=;jM<5 z#BU8pU@1C0P_S`a*{Wao5meH*Quc1}jbn|Kx$Tp|f3dE4*-O^8OQ+JcROr%55Kd#7 zmmfRrS4n6M9t*Q1XLt}CQjk_0`~6KDmI3JZ7z7!qs@0$;8qyaolD=T3z~g_19+8;z zz#_86>A&!uMC^Cj@*|=i6Ve5i>nVTJF9uVSuS&z$@qFWPIA=E`L$tIG;iPW(Lh9+{ zTyFI$a4?W5X!#7djH9|M6^b;i>dsIZ^5;|@&L-B z%mwmRauw8(Ss^v;Qe)lSblZ^VtoxYo7dip=%joL#AJeM&y1%9vs$>wkuD0Tjg{Ihn zT?4O)m7H&yEz4-}Rb;~NjI9&SLo(Jes^Rka#VRPcM)7sfZjZ~#*6svXsx=!|`|WhX z?eVtQvuiX8`fM|mllRUTVYl~>od9MVBn#%beBfuF<#V(z997`%o!z!z5(cy;kC|tb zu^;mY9wB&`cqgtp(t$Pus^FkqZTjnT>lXLRvM|v^($?yRKOhyk4qhWCjwV^wCnGgYyd0|?;X_W zGc{GplUN6JR_X`UJLecUqfJqpn5y=n2*c>d7(`U$tza3e?$J*;!oQeho37E_q!@|AHOGI&$>*tl zfqCXTEVbVt4@uHQo9e73VkW;UEjn9AiPkg36Oi`E3BLERRga8?B-S|ggWzud?y~jw+TFPHmZZ~?q%repLd5IRVTHt+t+ zPcT*yEpCgw+&NT=Dw?e8HtW#@aT6cr|G4uah#Av(|ifQ>Wbhu^Jmt# zlvGsc#9hnuG2U$xrf{R;%hR{30WeMKs6C~DK6IBNt2K4YX-?ME_9vp6E;hW(I_}l> zN7P+vEzf)(835iINvcs!%cK22(lQwFP#k%@n;d8aku+%w<)8!FYO9)Pi}q2T3WHsF-<(7zwN5^-H; zxb0_HkX@r#@C|X1;>j4Ydt57eOxqVn576TxnxKr*(9mqg?uX(v1ZNC+z$ZF3-pd054$~; z6hM_XB>)`9)m)ma)58NoR#Gzrw6&n{xe{z~QPatPo@v;@jzE_z$;)DA$??MMTH`&2 zJZ*)^NH{>eKj5q4M=;OA@3VyybzSB{O;;M+&>Nk#1R*}ofduN;`h&?%JMEX5e{Vm{ zXYI#|vy(k`WG!*x=bn7{1&cmf2pU^>tpN-eM1XfD4?Ud;O93X2ubGY{*T25LGL1yFoF2#WKM@gQm5#jWwHx| z1G6-~IzXgl0PDIm5x#_1A&p|j_{-z~9xG7_3YL?sBifv~JatN&zCZ=e;j>|)z&!ib z6aY1kFt4XT2I1l4``C0ecO>Jm$sZcVoNn^fRxQvv0*@D6wv2c$L&tge>fUKOISlt~ z_HbvSbidhRGiB(d6^D;b6hPe+6ov8q7YV9J0)MOWSktNNRKwqeN5(|4C8-mK#!BT% zpKxxxh2{|v-`m2Nl7k~kKFSf+`Z4>?3Lui~e{6K_sMUqdj>PhsD}iBjUa*b+=JK4X zDy!wuA?xv+gBX~~7EdaZDZ+(aWEaY192OLV^gM3Af%9KG1}5Y$`ezf^SJADZ>gG8+ z&vr){%teH%-=?W>OH>0LheGS8Bv#q7K?-Yia`tH5Jmfg~8Isr47-yf}e z%_jVPQi5J(IiXV$Qjd)CF=#m-fv#*N21YZ}MUO4Tw)_hb3KH;CJH{ly34q!2wW~*K zv8X{-OSL#pNl-1vnC>8o2iK-;Ux-A_+~BLaLs73MA8_1wn9hr0o(}+2YkptK_l--K z4;RLCWg!Ap*ZQ;bRnPb(RxfkK^}SY_cT+rkO8`VZ{UcJr&bH!4UG~&icX8&7&JRnE zCjf>HBo{(ygr4)jA_dVF4-i76WtC(`0?dU05wuV2b>9C;TkD>eL zok=mQl#tR7SJJVs5sV}RPfS! z3)+UTt%IwjyovegS6ujU!>#h4x@?7#Qohz_@DYv~ev6a~kg?!Lacs^n}`=ZyW zSluS_G~sU7T18S@41jM(v{U?dm`Cz&B1|`S_D8T7OvN67B=vo6|&N&*#&t)luB=W>htB(|1Ru zw&xfM-hV=Py~EOW>UuJ&y(E@?~+YWzS;z#TsQasm2QmA7!XPsYuB-q^oiq-nfI0 zHpF?!>*SO@?(k#c@Zv;HLCe6|Sn}v&$5}jryuJ8nmlKx*k;{;H@_T#FvA^iZGzS<} z0dHEqykm8G@PO}ZCHg&_rOpjB6l|~PUVP-r4W+fEB*1vfn}#?fUTIhOA^EF+=P8^+P3y(tF{~aH6)12GqaC?W(>|u`gUPXDy9zjF|fA7GHzN;aVF{2^t$ZXT8mCb zYu0}uR*b}>uYU958Op6A{8#Zf;OBb|0Nzfe#5GX|3jqHvK*dhRwBXc+2c)IxvNjv? zj4r4q)~?Tdk)Hjl!Yz{7$F3U{nixb&o|<$MMm(> zicQDY_)&S#(9`v=zrMgEyCU-3`^+Zci`ri85~Qg3i5)C5=kWt^C;QvP;P%ch=N^vH$(aZnJXkKiWh-@$%Bo zf9y~=q%6zvRFls=eWGD;~UEdC1O>9C<52aQwqV4MKR2a&H>x6ikfTk>)xf;v0rQeMw`JyCNg zk49gkOayT&N9Z%D3j6zmzTW?>$QE}Y{y59D5(x(@*mO*&*2jb9&}C9x4m6)xSTOIV zZS-ZiZM+lPyGj3%|7Txz)vTD)%p(XB1xUynWpX%ElWYlSr(5Bh(B}G3%6eaTRhq7L z`2}}%Nw!j&^Ycs5QbMVcM?FUY4>d88EU=kY2GItEyjdk(2kMoA4@Wu!Pi=<<`mZjK z+9ihXj>FkqeZ~VXxmqJ7g$Zsg1Dp$s6G(0OmdC>r6Xu)57htOQMp-qsxqZ%=4bV2s zk26PG$5(Z(`DKq2l63}AXGiNCDPq0SKi%2+NjQy(QbVk7A17kC4VpLw4pQ+?qJKQw zA}>WX_c-|55%2uhS)qpA&-qcr#d<9f1l*C{z;-pF7Ea04U&^Q87(Nel1Ge_+2pF9& zI}=Xoh?j?ez+y!8@&cF6i`8OZ#jS&8U4(fpRE`DVmosU=A@HdjVL~GuH|$C73EmY8zJ%S&_DhxH<8(ifuGPewJ=i^d zTz6NkGtqM|-jNI5F{2_*OpV-_fD+Ikg%%1_{r8+(ky+kY>xpk4C)Mlx5@0Au?ag{m zoMYKYVAnD?x&hUGM2rGnVLh7DMDUH;pm6L~SAW`7jbmJ~{<2;vFAk*ap5Tp!EM%vU zCNaZWS8<#9+nWCm-T^{GVPb;0E?#VDFpPH;#AO!sWIb@2;ot!7kpn=f~r}87p^_whWm9aOM8K&8mvC6TAn}XA}nT4yise2K4<1mK#xhq&|bMd-<`?^HfiOG$j@c4VN4cv*^Tx> z?V&hmGTV!m3U$sqv5$;FOTsD@o^on0+FpBLmMvde5YF6ChGqabjW;*szo0N-;mQ03 z`znkM5cVSY%GeKK4o$VbC0N%qrJ5uvG$B8hV>lj!rlS&>e2z{cac*9h@!>v3CpZ+p;7b=ZTu0% z?Gw+-iT=8zc@&h{Ci&}2j;)~2y%}(lGfl{YZ`-Z%qiZgb>yA*-v#lB z?8n>nmRuM=*-#2JPHCIn-ln1HgC;!aVVVSM?mLz^Q<&rQx6K>(4#gL z*$JG|CNiN;iZ05}-DZ7FUX=Ej`}|AT$PrNfBl?oX3Mhj%d89XDtF;k12ERoSHJg8I zr!Puu@jqJTh-NNxZ01N|?a(EJzP4tIS=0?HA?&VYI2E!iT3>(8S~4TYdTnFr@<0#k z*hWod0Pk)D88xY>W1{ls#2M(2s!6<)DE1_;?9}>W^0dSJnqrT0`h)C?0A6O)i}e6P zBObTT1|X#jQ(v;GdyjxhnZZL8MiOu0ML|Y+UhA+w1uJUMu8VePqExiapJ&IJ?=vNW zBCc^$P5@OiLOPSS6G05XuDTmC^K0WX&~L3oV^KDNM6deu#LyBJqoQF4>uSXzwHhOc zvfU+wT6mx$@&IJiQ8kww2har%R7V{-uVWvx08n_mF6AjVykQoz&84S9vm6#BWZ)N9 zm!j4rqc)S3#hOd|?JrjWf94YmwefxSZbfbG)5;%;Z;laZ9Q*xc72gM>LH*-7A{_Q< zz#PG7x^Au#Crkcn`zVD1?}?28B?V>;(qGI;a>jU*$qKf>xd80g2Zsyd(5?S#uAK0= z0CYw|$E{e%mtHZ-l`x7F8}w2{&eHTd{aWAJlUndqGYV6^y!w)B`(=f%5-2pLI3pV? z`1})#mVI#XMEvsF6>asR0W_v|_DTDQEXq^pg4;CqCB?@Cygpd4<0FHFcl zIc8%8My~AZ?@rq^&Pt4-7N>~roDm6Hl zH=f8qbStp*)vpymkep+{MJ}9Gr{4jDS8?3mk7@4wcjC;*`M@rv8=#p7oEQV)0qD4F zvYo>_TN@%mjo6=JtG+R3>C?}XLr-hrtVSwR6?oH96E!QxR z`S^j)j9nAD3FE;M`|9~1kX!;B~fc1iZs>$T8XTn2P4etnflc9_H7t;l=HF6eQ&QF@Eu$ z71T3r#$K?2puQT-ni07hiD6;v{KAr^%efwVYtjKR>*&5d5`bf%T}cNH-#)=&794<< z8eKdI+*zCPc|z6>c&Agp6N?3qr9hp2Bwu5R%;UR2iVp34MpZOl@muQ%EHM^$ixWna_M5X<8}5i860orinQVr5y>gF|<} z$E=yhjN|u!rN5Y6qfrHI+37; zf|0KabF#5T*3fId93)2~m61ClNgi8QD(!lp7t_}Ig4Hh{Yp=@pA&*GW z_m(|1QLKy^`F*>$cGJjgegYG0&Hd~)OErN5U=vKeXyJNdEPIJ!EZxMk0=vk3r_FV_ zS{pr#7!^8P&64xz0F8(~e!@`3a}HuvB?lDE!1?u@UDktwh!t7>A6l+fvyo5Xt2}yH zCgOJt)$eh-g2;H~KJuTzYCNm~V;~$zv(`x?!p|V33w~)=P1E?BYt~P_MWQlPdWhNx zHMBn7`>A-Yn#oXFM5jyBZ1A&a&tt!Sl!Xy5$ztC|88gjdfDxmH9b(sntuj-O+zf>I zVs|T0IqUQtzP`7G97O)~r}+bR5%jK;ZR9-n+-nZb&6az*0au-4i3?6Uig>LTfxO)* z4@NjbMa8hN`}M`gcjFC)yCCvJCA|3I;YyBUrBsX+gCAHfgGs z2&p*5aP|8S`ycpEFi3AS;?}!`_e>+UO~((p-0{CE=@^*RE^H)B!JW{)HON+0GUim*6N_e?5L$<&{HmKVTj-&m12Q7H6RjLVH3s`wq?;@xO+dr@CtMoOA50TYu$}PP>vrTAf5%+=me&I%7!~svf*V+hU9-47HUI? z(_~D-4?*Zcvq~I8+g27m(e`+@MQj>~n7I0i1$~5S`Pu2o0mP?Ky=2PTV9!Jq5@@3iY#d5S$JMx_vym zw|)?fh`hW395^GaDo5H<#$TvKpkrTlQ?XV~JC4 z7tomTS)dfUGZoq%+nPsLVv~t76lxf}JEdb{?9{rv!Yj5hVUBDZog~ z2ei8f)PI3Nr6~O&$^OYKv2vvql2n9owY>e(eHQ2i!AW zPwd)$1%b0gXCnzIJ)iO4&rDvL^s}U)4)Hz@XZ1N9cbBI;p}vdAP(g7$cK*ru!i9VQ z26kAUjlX*e?Ja{7968q85!o@&WLbM$dOFi8tJ=dlc1zl< zHn@f75;vlCx~Q#Cl9Iv(VJBBXU6c@rHXt+=pH!dqJ<-92syqX4%khnkyBJ|~go+sy z6G~1}%)aB&5KF%tYx&*H5oZ!u*;rG6-|jF23&dZFKhd?>rQ_9u78B=urWZfR4?Bu? zgool~K`=7fA~t`bZzI{BGR<)RvF={x(bw4b%*^}|bXp|mbcF1&QI*;RVeLY2G zg>JWiqvVC$;Rs-@#qmH)?)&ZyB(J%?Q6Aj(F?o&J?wL|^RSbW%c%1+F;u`bC75u>c z|L-hY%s(r*_&`7wHt7rN5CrM-2qaMHM3evXRdvm`WxpkrcJ~ow?H(XyrRDBzP9V`^ zFJwm>$rN|fn#+b0M!aY$Z5&R5j$tK!gwCW0dwq5LGx(zkn8=ew*D9$)*k1Z<@NXb% z^1NK`G^je~nhoc|3uQs-kt)mdyc^loR4~hlJOzaBex`Y5dpA$?1=vlFQH>L=ru?_`(roN}A$LCm|7eX$|#scl08MyLbW4X9kDD?|ADGUGg@D zB3BNu@;~r8jZ^-^@FSC}5zFm>lEZ$$jM{Pa@u24B2FWnAaN@>T;E$Xnx8+30%cK(| zRRAFo@*L16$X>9SFnC$h`%&rGuDBawFoKy12l_PpK+uL~RvFTX{W$y~h)O9L;spJj zx~8aD+><6*TCJfnKzX(mibiPvfi#sOsrYe&RLK_yY;$}8!&4|vNCdM+)^qv&^H6nB zk*`3OpxUvOITThEroyblV2z-guqTSg%K)FskSxy&xp6}}^!dJY3shY*EFw}MGN2-h zx(}hl-4mg&m-t@{1_aP`K>3QRxC6#6S-vUV5BX3$p&s5!K`2m-+UfY{)f%O8M7Jb? zX(eX0R+4#xz5`7n!7ZJlMIxTJkwu%MG6t0R12^K5VwA9zFfwYtVx&1)4;w@w7NB%O z4Xp4n88VYWdnXL3epvh?%+j5nRJsL!n6*Hi2APQOhQjL4wg8Fxe)7fEtt*d*vDaCY zW)<89VnIj;nMP+kk+L!q6wn!*S@AFTYf&jIi4>WLbOvR_)yVq>W4Bz#HA}N@&_8ZS zu)s@(x$?jFt~|3^l&7c(;)!1QNPsS#(Y%Bo2qYLFE5T@tS`OeSR0=X^ut>D8{Yq~{ zeJron#Op?>&LCh=Oqe3q2r<4NzKIg&t&g=&CfG5sB*MNVn)s&2pDnft3qg8?B)(bQ z(NG5_!%_#^QE*KtIidoPN*vG3v(2||P%p(rao{70oJpt{5%f?LQlKc=Cjb__bWFDArS5+Z@&U|dPBNdm z(0QqFhXpa;`0+A1`Oy@FLob3i^?#q_VZfD;httjPh7|oR&k@#-z+wmH%*iK+8N1*z zm2fqY{Pc;yayT&Lnki^vH-Ld?XKxfs2GXy?rN3gRCnNYrsDxH>Q$mx?U^VDe`V@@j zQk-Jw$9IW_t>C~w#EOTO!k$MsSbVhM@W61WmVPtlT z|YJgNCMjI1MGq`m_ z$b@qIfJnucJ~r?Ci5B6=P}UikfdoQCK{sR@K+E}Cj6XnoS}3nH6SDun5lc05Y9AZn z5VD1;MvJJia{7@?g8xqaZsV{0x!&8D^Mc#RZgK%qC)9-^>y?J%qWG6Arpx)0h;a! zNtMN6qX#JlEwM(K00k$g3$l~UNeEv1I93Fr4j6QOyV?6ieUKnj(%okd04P2}sl%j; zgb3FpFF=vv0<6TYN@+GY$bgHzXk)5%&nzJ=_h);Ua0gYwux{w)XC8D>u?wrsIk7|> z54aSHh3mYz@J@(+oVn2GxR~Gr%yul<{u#y$@?nYzUIpKWt^D)&@H`UY6 z3ZZQU(Pv;@cr9NQ&M}AkFAo#hy+I7XU4$d;1^N2E0RA4%KO$7tIBGQ&iA%ZfIWM&q|1tVsw5h!oBy2`i_vag zS>5aJ06g~*weF+vb!`k|#BV#c)Wj;F>Q0Rb|61VAHM5FU0{p$bm<@d)%fFwp2WA*U zKIQLV1Qi8z_jJ1nUuHl4aIU!?Tptcm`*(VAcJP417z}_mkO*DvzyGXb1#Q14mZMqI zO^83i;1Na;eOopz0U`H3ijZylf*jOAmqnWn12msWWQoVIPCXAli%DaA#%)}sFp-Rj zBnuFX;CR?%ODub&uq^n5R8xj>3o1mD|H~OBI zQh|W8W+n$GI#w?wv5r!Uqo&;o55wZ1Qa%Lc%n~g+#!gZ66A4@g#eBI9w@x#CdxHw6 zij~V{l3RGWIJUw#i0E>GqAE*ihv|}Y0niMUKOla{MrsmuV{d?B83h~sxOp2i#*{(? z?vjBzR7$bupB9Kgxb-NOlSVyiuC*>CTxE8r-|W(@M3X3nPB;37CK#;AmSK1X>Di z>XAIu1`HgOL6Pb$;C#I`3c0S$VVOaawV0Zlv4Go+o z+HobT&9K(j4_@?|XRNZoD~QflYJ{Ny13 z>3H1q7zXOd5%=!E-R$h&bkTHFMFggfC0xEN1UlRUEp~C+(@S@aQaQ>E^Xdc;;5QuT zdAnDFOBo@|htvSsFzq)82T*;0wh(cac8RiupfMWV8leR74@-AcV~1@urj&p=v<%A# zwpC1yH|FJ>5?Q?hl0sd`2f@fo9%>ntJTz19eO+umw*7$mU-m;Aj}x*C+EmH!gCU zbkX(?Lu&p-dt1k1L%uC67mySipbSgYn|u9&XZ7MirSbvvBPHPNtF;D8#q? zTkxZce)aVcjn=D;3zbhH}3q8bU@Q1mfxey3is$|?{ND%@q?111cE-bXi zIYjHx2G|J^fH84#B#Ho+LEem4%_0nYLlCPGjTKONf5*ZFX4?58Nd*LVwScv{1A)fE z4dES41RuzQg`!|~YJ^{JQW3TQ3>?&&O9>VBXdaIt)p)7EdvJvxO@A1P;kySagqR$$xS14sKT2U85TC zkbs_EBmhrJ+2jHbh25V3sAHv)Ey zKnGgE?C)ZQ5ZTKToR*X9Vu+c29bu$>3j2&~qmvfV`k28Y~A2_b}i5F19lP zj}u5_IsNDiTVBdQb?(@?ZR}x2!3aul|7Iq8VDp|feZ^NeilZjvZ_Hbrl|)!=u5e}! zNmAGei-Y|0S1R12%Q!tE(fA6eBpo&Ioe6}z$l#7}F_CgAjkwZ{r z*6TFVi~)3cw+l3YimelbD{umn3O7I{abkG_@^u=QNdFw|Jxj3&4bO{IC~MFrPDr@D zgV4Cg?@Sy`wRvv5vqK-13753mMoN1u2GN$)KYnj0OnH@IJ2LBQ0u=q*;FOmnK%{V6?Ie0p9$-plkhU_0IN{m0sA=v>Mx!)^A;=Q={V()6hRi}qqeN-YStWT5v zc-5;##ws?Ofg8Pckd%}!&GW#w>Uj(wET;g7dVPpdU&u$TPGE@E6jd64SazWx!4`_H z7u2t2xollnfNm#}iLHiX$ostUoCtvhHc8ihk2#2Y(%49H=!Uagx4vo4796-o^-#Yx zMbBnYMC!1G&-!HQZ4uX`48(*9)_KG~welddk8RgA`J=W;8LqK`9D3A*R%{op+({xZ zS?CAyujsb2xlIxuFI_T$H-jGKQ_Bnm8LMjd6%kO#a3AKt_2xChuX#frvlTOLAZHh zk}B(ro&hgZY)0b^-@qnTuJ5wj+H6mJ`!?&mH){K*1?Wa5OH)_CJK3Ft1T5XHtruxV_#aT|;H=Iy?_j>`*#MYYTW(7H_@xgj_w6Vs}g+lJ~%AS?w z(mKV%WDdrREUz$D3UrTpLiO5?Om)hplKilV8EhZzkw%*OQAxhoI~xJciRPZa4(8di zrn`vat__oYBlZNKWV8ii^Q9ygXBS?TwqdX!=Y^ykJC3)+n_Upu%cMgzyR>l({AXxW zy(#!8-Wc9rGkkdm-R9BQUU@ba)$e$RcB<#?ne0}rk)>Cwd6cy_rm(!d^EytMHZ+N5 z?3(CBONKhTZHwe8@&?DwQO6q=_%CYD+zy%wU5H-S(nu-*wRh**m4}{fp)QtxO@BSy zVcm1521Ai8hp=BGpmGdcB?GJ`LgrOo$Aas(saj+_zpi6sX7dCB`=ir!ZR;&7a*b}; zE#Vd-Wy{#5O0!+lZITn-l0V#jE#qss%|sirKgP@mLwaXZqr6bW6WHFiobk`1>i(9D zPT8yPvWE-6zR_B|O~QvWqd`wcVXF*JRn5fpCw6lXzG{p2<|vPoyau(w9A~O0{Ij!# zzlQA2hmk!bz~rByaiz*}%t47>g__*9(f^|BoZ7>Twlx~twr$(C(b%@xe2s0}ww*MM z+1Pd(H}>v+&egfte`2nQca3qnub3B0briL0yi}T6R3JS&16|!O(X=;r7R`B?UEA}; z7vC1`(2}v5c1pzK}z4z-{Yy*dz;1$1$jZvecuPKxqg+0t%JKfp5xyr!haJIIwL z#KAX{w`VqG2R7Rp=mH&7Ye$xN>Z$8*`o8VK_ez(mJvUPpd-@lqMC||kL8Am8(L~cy zM%7YD(Naow|1dA{2q9l+P^euonP_16XJMaO@mFgZ=|VZN6ZdKwOzvZQ;Q$E&f?3G&XaI3KRgE`71xVgn5U#jefK|(?7 zgDjh8Dxo2mI2uY1gMFQBFQzx75jOg*_(s%o2--roSA6?x(f&4a)Ab8Hf+N?xLDHgE zBc9c_yav?_*edBU^XqKug!SUcgwBxF<`|$dXok?6n#H28U2QYL6E`TP2B<1qV+)1+ zZpVxua*NF#FCw<961xYY?eo$`ACHx)oMEKbzd`03VfJ0C31)|MKPVnNL04?_t!wbk z=-MV*<}6o~@k-p8klYL{_oi1ZBe@CqR_!jEFG<-e>uizb01+aeOkmav7CRyTDjnlr zZ62uR8js76a{PC>iCb6^8TQgAEPBfa>FN7FxuL^Wn84G|>fPj5@fnDxg9gEyn9TL+(Bw3Br| z!@PEmLH%m!q2J0fWNGsMHMh|^`IvA z6VK94ze}o*OS-CR)HyCeY~m6X>7>7{FvOE4t1MKSz5V1D<7F|F+pT1eD4vf>s>FD^`gB+!|pYQueDL1O0xYsL9>Q?O2 z8-BmRyiCi@{;|BLMffeN%L9g;jg(%tF7eNQ=t<%Tg!0&$J803goRi#ezw7y znQhozkk^a;pYWpKQ2mdYnPofnYy<<qWFUtq$L@!Ov(NoFK>^xI4Sh-<309jRwD+a&{ZpK&M_I zet<0`jB#*`%++d_Tb|@tj(q1NozJSxyy*$R9Vcq@R3G^-kt_}3&0zo0)d#=WQ-GnL zjI1nMB&kUm_;5&V?aI?PV`<{VJ^KXF6wt}G0VjM2)#`9q)n8s4T8I5p$~jFX5Zxeu z)YnI&C2h)|ng7J1dFxB(kQ@BdH+l@+%PG~R*a7sE)0VGn)87)biCAE!+t2Js3)@+& zRPl}ruUmagw8RD*E4<*ckF*ubrW$R<*(M$T0|^WPU=S2&6p}rLsPvYN6APJ|410bs zt&Q_W-+vTj7#Mb)S>4^EWWJ-m|I7UyBd?fJV6Gdbj~o2(-T-yq#y1$dKk_(%Wu3?q z&y#G%GdgJ82r6#~!wvKreN8z7c3lD&9UEfU)Gii2?DZGHCsYC-OzE}5fC}uh8;5GX z+I58&K;jJ5Q8cLj3ppUIDN=kjV?F8l;&HL)=n8FYVk4mKtT@18NLZE7MgL(-taZgZ zLB!W6j6UCj0~GZ0HXaVmwY{7&T5bG8$+Bk`(6} zI$aqRq)N?{&qrUTjpp+UDiM{^J`M8~{ys|qpzS2PzF|m@TnU)tj09Iu7T1bL7*vf} z3dW%t`zhN&whlsaL6Pf-ss`RWet~-v9c&K`1^ZL(S_UTB;1X^PGn3vNB~v*3tvmmT z8Z>&*N#cH0oPtHP^obs?Ni%37d@uW(YuJ7D{tc-0?4Y9V{hu&?iOGK%$J)Il$;ZeP zAekzgB%=WF^QLL4uJ&Ro15#E?_w3KBRg(Ibx0Z96SWL68*$+Mqz;+TRTyD>ToV9$9bBsfLxKrH#uI6?N=e@uf)( zs^a!&h$L+dH?A_?P(_36LE5k&f_N!ZKpJhK6^xQzv)+#$3KZ8v0O5K-IMv~fl{#)Q zg6A&?j#zDENqfrcCB@*Ux-=DaKGuFm`$!g2L~jemfdt$LZ`WubALa$Du`|3U7}=@K z-z}FPN2_6n&L|u*zmbam4bK}vG^{X^GkeB8{T-3Bf&*;Hqa5GsZdRSDp8~}40HQFp zp^J>*Ugb#M&6QA-$^e`he^Z4plyNQv=i;K{n2_)C?#$6ulBs_sL5w-diZ-H6erXgK|zOVuakp`q!w{Ld$U^&!Z@?DPOo^DquR5wDUo0+MA}<)%teW zL(Aj22fM-9-*(RS{>+a{Dcw440hE~WsP&?U$!Mzvuaem5Ewuz_8nFW2dC5JwYm??M>3jtxIMkKE<-@lUkc^L^k7;`wo56NZ30Uw>8dq#GCM}<`d4>LXWY;#2 z1!AyqSc;QLjnwUj|03o-Emkx6jGbDFGcnjZQ#?ag4XU?eUf^h9afug224e z7p@1}4~O5~VY{_Jaiu-R3a;*{6}dN>kgNkAC$uUE$Z}nLa>?6#B%F2asr zVA>4wdvK2bVXzXXqa=MC2pEj}q6sCJPy0P2v_^O;_jQpVM3<86!Pj&(q|lhC(tbUW zZIoujO{WiBP6|DB32~!J8hu>sS4Dz7eQePD5RSoP|Jg^?jNTKy_3FsfPytMId|BdUDaz@oI{wDa&8XVi!yc8+`Nfitcao$^7EvA}`%>nX=Z|917J;Xvp%I*a}} z#m06N$nA=12C~nhtA95oEECs$KJy|%G;ZB|@w9AC$vSiOwz2PPsWkHFfzT~-SVk*N($Ht7X$W6MzmoNol}$6}w`2Qg6k_@Hyt_NS;GQ0(}+*(T5x<{h|Q9H-hR2Z!E@S$3@_T zYX?tzKIrBR<7zGYd7f$j;Y51m@+Jn%P8MT*ERHP7hoOx7|Kx)y1{ zX0Py|`?u7fd&@6lEJg*H--Q6TlqEX)6dGDCVLO(Ryr-R{qGW*@cMl8@PaJilDkz0H zcSJIj1hJPS9%&>lE8@dVhk<-dBXAR`=UUCl*d{3~{_4qaOm)+4$k%mLUVSK;6|4BF z;=lgP?p(hko9xEFpRal2-B;oD(T(2!@iyqwn`|=e5?RCb(m(wIi>U^x5?XD+!uTP3 z=^Gi;%vo5C2&xTRGt%6o{z-jO_1k^J2rls|#rFbH$sL^=tBEHL1jM28w%AV{qa&sF zc_=U;N9#;3h>XdP#Qnlll&PBYrPdV(9bYTt>g%mj8zUz6^2%z*nPn0y3NLpQ^akaW zVo{J|9D};#b2DgyYAXOuXa=t%UuX4w1Q3@#;SVmGh4b1)+w29>AR^Zu|6XP16pQoE z90|Ksmbh(@tb|)6bsd3?mJEZw09;nGc7Z=;zh|-d(NaCgRAKPwRA<4Lt|%SkPBHxC z4o?XF-=fsu$aO)#QG!@5*I0b>N&wj`QFKcnu+4>7y z&CRmn*t4&{HklMn1H){FFN9)aVy1rDJyY?PRD>-g>i@bj>va%vJ80L5+j~0+H^>FB z71GiXJ$I>fgb7YjE0Y5?##OWmB;23mA7P5sh|U#)YE?MG9o?cwaQ}?(XzQ`-$4jSH zG>?4ozI29LUt5537w%x!N;p+Rz#phAEgJAChbQ{vLfUDzpPOM_a@iGeDumeE>VF{o zHB>1z(uZ;L1l6c0{|Z${U*z|HhE3kxeb%kUWOzTWu5>l#oQzLni3pZIkq@_PT9!@XCbCl+B_R983nq%KpMFp9Dj-`8nsLot_|m( zW^p&K9a;#wsXii1IMSgZIudJU$CUqe_$Q!txcrgt+rhwU%hltK4Dy@b+t<0<96YqU zPgR8&*((*ORG#i=Za$LRdl99!tHOxyS{;l(2NlTZ@IZEIU(A7q9Ossl^LERrX%kbVVAhbW!P4JfLp|^AAsQZ4zuUiGXn(y|8BWF0Ym1Jw z>*a~5%e7D`_T01*-oDznA%AzjTAnyyE7kb(h5ZPWe=N1^yox$|oFm(NUCa9|ezu#@ zP6;Q?Ys8mi#t1(zJUxBh#}{Yv1?ML#Vog%Mvc(Rr=N~23418SH5>LJ3KYIw^#R}hF zQ;YKV*X1*pdG|%H8Y2G?5(uc&beb3zb2J%~t@=_yXapHl$^ZRpmdV9^=S*>t_V+~H z1G5UYJU9df2nYxa$bS*^RYXR7vr!-*a_;FrF3ITsS8;Cb{l}o!Nuzw8slO4^N&|sI zN=U&-6pfs)Oh^ez#TX~4RI!u{AISZYe2)eq{S#DGLDuGhqn@2h(9(fR`EGHC<@$sA z0sIcWd1d{LKp5#q5?OWE1e?V3(R1h3n<0PPL8}YjL|ZX1_h60n6z!se(9Dy2Xm{rC zsjkpoykH~L?UOEDAH_yrY=!=@hP!tH&^F&P5L*qJ=6JjgpT4Y<(7!GCvrR_ddfsVhO=k!jN&0SDMAD6znWXD-qaL^YSovhv05l&MFyQj4le{vl34|B-9HCNzB+qgSk z=EpRjYVrX}_05U;k&i9;bNyc%UzC^oy-kFrgZ2|Z{SoR*`;--Kz~kF+4t8Dnus_+C z<@MX353OKI|L-PM)=4F2AK^)=Ic1+rqvJt;D#Eut$0S7yyeQSE+m_;$gLk^$|JaIs z7?1xppHG_Agt;^2=x0k;Cj5K?YxEv82i+A3jmkjr-Slayf@_PPFOFh!Q-<=J4s}(dS9W~;$)E<-DUxuh^7E({oN!nBnuWGj z`rPZ) z%uGO$^wev71HZbYNcI59_ z=a2ncZTk=GU=VqGdt4!GW1NTod{8Msk_q+Jv!OiEe$s1sf#lF5SnlzaMvJpQ!`iKY(B|qGGC^Y4l`AIbi ztePphOUW7U&YyM4yd-f;naSgw>A3~P{pdtz4qwxjNmLD!YLSiJlCJm>e#Ew~s!=*vZ4YMxBeXa~9{o6j6ebR*=I3DJE zMi(~dPl{FfdIxKL`2GaCp8>h^21%axQQag5=YgJ`JEa0DGxKXb3ag+@Mr-}!QZ~4~ z^5MKPcOo)YQEOH^;V=A-x}}gmY!gsg)yb>?1S9`Xt z;9&C#=45_?gjNLajAlx@b0W)C!pV@@aWw3B1aNE9{WC|PYyRmA`+ydeAy)YzYLWqa z7tOY1#+8Q70)p_QOs1y`Z}OhUa-Q24G3FVGe)=`CVNMQV!Z5DWpP-qV9XR-j^v)R z!OZZ3as4<4pJXMrjk!Fsl&zJ~aAqXrN55`qXe;cK&E<_{;}m3bO^d4JJ4Fi$gEj5Z zRV`KR*9!1Y+0nPG&0KExSx?c?n7~Fz*C2N~e6GRB*d%&SPv9+B#!47SkUr}FwG|dT zIN(W6%&}g2b9DPKP=Dv%@geH@M_?l$4LJ{Zy^nqeO!bDig`9Jahxg`&2Xy$WhB)!n zlaP~??t}el^RNaBTWYg^-X>Suu+I0^kAiPH>l#;i$hEvwYjFLdNVWLkjIyN!Z!^j) zt_?k$SUyL?41_mX+?3jLWNu|*%%YB0GqhdnoLA0PR$l1q9Qhb6SH^S(1k*H1UxeBx zNU#mDN~&MX;rmN_Z$9f1ja-xr>fKnIkYWrT-Yn5d!HbhDWykSwIX=rEy^`R=)IV=s zr&u?!md3fQp*ICXlT=rt@c6Xm)Ye`qM@PEzz&hd*0+2hEajjFJ<{#`-jTVqu#>ZZ&v@J6r9$Gtd-D5a(-vw!M)pixALg!Sp783 zOd9p<05f-bU&kZtR$AZ6TXsh;$K*(n1WytAcx?qQQ_-5nGXqvLLD>=FsdCC9gy>Da z`I5|PlS~E4k9zqiCz7bmwWgH$&U3ccr?1PeL&cAC{by|^upmRy!J==Lx%0?N(${aq z6M}zbO4Lzdx3COMvkVRtc+{4#EDd`w86(es1I!-;eZcMz&Wi}_tMkYcVAJJ;ByIR^qq7A|G9s3=X>*-?JbO)aP;j>-MSLl&xw=b@tz)5QvGG+h;MxK ztJG_G1-}xQ2_&@`&zu=XU+FM4tsD?*j7sLt{oh4G>?}l2#MW6{amh4ly%VAp5Mh-g z0VpNWs?FBJ=70nu4jdSA>N7DY3LIyWSXgxV)({VcLW5uTmA` zkZmzlMq+OBjVKB-0b=%!_q+NNT)KmR{=(K|Q3mXHMae&jHnjY%^icuS8XBi5Dn2q9 zaY%)~!EYWKn@DDbww9p}ygCzvC%UdB{`o}R4d7CBRxdC89&P=Wmgl2|33CYhp5?Fi zPxT{G{B@5ZlX*Q{Epj15%lg3Rs93j6Sq$NV%`N?D@&2hUP*nZoLns-i)tq!Y9lMA=F1*9|4 zoKcHPlqYh$Q7nF~TPql92T;P3__;91cdwz^97{Utdq!>TE`g$|hqz0!h8_1&Z(trI zahbC*6B^l6$!*438z%s{rW>)2&U-swmjK5-&)#VayH9C`7(A;RSV>Wqabvq**W1V5 z+}^N}Z@s57={K5u65?^I)6f+|Ag9bUiD_n-QG&<4A%-pSsW(wHFH<3kwuJ*JCd!=> zE;gk3n9S3n$ig&bIt&ktO!K-hM!O14nx=PDb8d!pMylEXe>gk2S-6*n&qsWmrb|{H z>0arZcn;D$Y{@`?(73*nk}*N&w4`Y-6Bz+x9n>O%*RclVrO$%6m1{Z=5P0R_Nu6y) zQtq|f?-K1KPxX7kT%8tgk|?9>puM!2`iDxCZ*s4E;UOn&ddeDS{GlS#6R|5*E#eEM zTdmz06+7Ma$ndix1@wvz2c9_sViF6T&)(*mVwNu6uW$*BxFjB^%-F^+$)H40`6u)B zw;T{*V=pLnn(a!PgV0JDU;{cldYX%0Pr1=rXt>pw`?#DkAGB2a|?Bsi0NYLdIMLWeSWeq1&-4uZcyspqM zPf(BTVpuZO%A)nHY{6E=hFE|7Oyhf4uJf_RIQ$X_KA~yBFS?x-=J7S$^uPBN8ju*C zh&t*h+owkZp#mIxfEX08QhFI;Jn{ zt=P!9rF5OB(P4op9=zFz;~e%;wyoaHcex9tW&6rja#YgqzB@;mVk*=G}S6ix_`UHDpy}h#s(UCJ~y>3eV zh|8kl)Pa`#*S}Ozl&OI9_BM&x0EFq5!jFvj2WAGa3qkewi<@S{`5v`q;Y&>K8Jnx7 zbYNoKJ!hTvfM_aoQ9@W>KSwH_o2a^w6!9!fcX53Vuvk{k<&?DPA&`DqFGzU0)p`_y z_R(kGU*%X*9$8t(5;eXghy2DXLM*AUH&SyEM!X_4;xhF$?k2rj{>LvN9DPb<3#Rr7 zt%u4%ROI>Zf`O8u*m9!3HNw2k`s(Lw24=JS>Z;J^y=?YD`!s4(7jHLiz=vJl7kNK2 zST}n%Fw+ddFYo^TsRwj9U#;ef+k2BcCN%pvy5v2NgEMu1mCc&1736=oYkSFwO*8p1 z4^3OASYg!KUfe%KY#!wZ{w??Q(*pK`U&DIrWb#|b{WE3#yu=!%#O~{&mKaaL4FrC) zn}78bA{Ly-P$^zqU7ejrUwsbD4Gaf5mh-Fw!(Fer+Z^Mdo4+Hh^ppe{qS)NXw4N4R z?D*xpHMAU2>?+?BzP$6sxS2HmeP2VBgFGnmAJ$v1W82$jeLfVN?$(6a_{PMUVQ3ASM&DyoFVYwum=8cfV|=#U*g57{|tTKrTd zLIwzbvp8@oIgJ0iKhx~r@Y2KhwdGp}WPiBHU&ow2XN|${GIcdxgrSxD3HcI(c3v0z zu7mSYCb`90`hW80>H6EKNT~?_+Q3s2{l;{&4$M2-H~ykMq~!L>H=tV?56`zEw+pvT z8OT#$CM_9Yh+I&0i>I-pOkNIisH2M`thg>c)%?KM?57Ktr)IkYf${6T6*|)ZtPzf2 zcmG8!S`=s|g`$LtrzB&o%0>j8GIo75TMuZ7poX}ivlCn`DyJ3)G^VcCcS(}n^JPu)RcJ?ev2n4$AWzO`)WOSF@9YnSQ_}Y zt>_PBJN6>jzbe?Ae_D8zBZqm(7d(dP$s4uln| zC7r?*xw=4)!4G<;#W%H1e4kEFX|Qm{n59=voH<`;NI4MC@JuAMsG%G$^`{!ei{L?S z6PR31Vq$P--B6%maQ#@^O31q0!5t0Z^D46S{==@ri#(2}`4Mt|weOe&TsFu%A6Blo zYMj}gQa|=X>DL%S=@eJhN*LzG7g3d_sR>RSM|`5g>f?d?IQ<}AR9plR<2LckoEIUd zyW&XPI_clQo(@qTAp$KG!Da-kvnSUWEcc2kP7$!Ci`mL637 zm2x+=(@f3Ou?H4Q(=}cQplge-$Kmz;cFl434HZUcs!kEYK-HWg$T~by^~`;|_N<#X z$)t>9rL$AzR^$I$tD`q!&fP;BI)l+tan-?pu-XEpwCA=g0&2I3e~Dc9pl|$ciOGEA zCeCj1)0&ZU?7yQs2^11FR^vesoKK=Fq$k@*@x3c75fdn& zxuHIP#8(Q9w!dPYtq|h>HiurENu64#)e)H*ZtKYV>k0jLa#Cz@ zLr!E)@rHFB^N5ja0kBzQkTk71%v*+=lYAiI4T&}%VeLufe~W*}e5I~h;n%~*AIIK? zCn_YK{1&@nNg^m>(Y>(>y4RV~hQHu1g2wC6utXaGh}@xB-Q6Ewwp6u}^z zVAm5#Reu{W?cPS;r6ZE8^xmj`WAiNCh0`!*Nx&Ie!Rzhvd&nH`q2PGJOR-g#1Bc>o zgw1EXUldRH1!8*_kE|9EC%$-uYK(ycCrS`@wu|$Zp~-71rP9mAsJgzSTko9NSoB_Q z;Fd+E8dEup0zfYV?x;k6W&_+iV@rW*B1g+oMbG^U3WcQx!W2gtSSqZ$w+Gu%1=e%L z={)Xtr??pQ8xe96Ql1hoRdfl#*xa8iAjJkg6o;jho;yfaMsPs9F*|p(5o?#bQrm8? z)pfpl$VeG)z7ZY&hL7h{4;*Ge(X+YP0qt}Y4>l7*Ag~@cYmTR7^Hh7?J2b3sVtSr0 zQ&hGNZnLB<4e7h-3ij)@OBTA^=gVO?5Uw13Bjqzd_mC-iAU7Q?Dp6+J(T7yTvq;-V zHjq(IBaoZVc8Kq;_IW`?_4TGZT0341;neIN%#`hU`hMp7I*vpxC=NP`U|+{{nXv8i z5CwLb2CzLo)f=Dm^~!29-Z{t~=zLVi(Z+|5_>uZ^ed#tnXa0F%Ph0bvZ|D7%1`lhc z@ehXTN{Hs$%Ura}b8};4SaDgTr~})Y)mI9w0dhWtGixyX7a)ezUVmfocHBKdkv4gT8CZmA$_GeI z!d6+iNPlI!bZ(MhX+SqXxW<*+5WnG9qj26SQ62tb){u|HNo>97&l5ahTpDpnVMfQ3i-^9Y?E#{gl zcD=daqd}SswyV%PY`MH&m)d|#(jqO-g`j&TwBu4C`Zwy8*;&<0#GS;z*xPN&e~&cv zZzJ~e2-h3}nCqvU_amL&us!fb4V`-%h5@wthqT>BauE}=wT}A zX(6DTx(z)f_9T9(-}#cx>S5cy>C*&lPQB47rlC!HQkfl5730kM5}ij_t}~urB&>8T zK|Ois#A!c4Y_^9U`5J_+OoeTNuHfoswwE#SFa4eG-%w4)i!(07?)F$-^1vYnIEU>V z9*DYZbRG%U|Go8xie0DR-s2|b+E8B4#=n%tzjWeS*Nf*~kN;|z`}DLsKyN>dY(D=v zm{$21Z0$_kJQ2IHsQ6UNy~Z?gj?6eas#CYJV!=9P9a2DSmFE!#PPAcc z7J&~qN&evo2Ui~C3=oJKJT5i|e)C*z?{%Iks$9^T>>^AvXiLCuANgB8ZqX|osO#7c z9k5aj`31DwI`A{~<;GpV(n9pm$GYN;<4%`a3<&}zgFb<4`cioLSEjlbH#Zd~#7;|P zb)B2wq~|X@&#BX|xoN&_EX?lb6MlO&WAx!>1XMhJ*fViZ3gcJ9ZMXw~JN26*7e*0S z-{?3jEez4{nzKF{KgHuR(+2JBvR8r1QxYlj&T?fzQVG`zZERf_uEO{oXwD={qx8=A za6!iP+N(*(L>-8@F`TleW0wckcnc{(UO!>n;|~JcN(OF)C3*Qcl5%U|b8-~h1jIXe z{d9}%5!l4~UlkQepq}Qy0B`w~LcNm1L3?pBdw@^oa=2jSc3rJtNb6I^Cl!-f%BAid z1`qDH2$GJLqqJkVy|hv5_y`3J-ChukQfqhq87bpeOl8c4*1Y$L9{xQ8;41zzfMx}`XcV& zUFRA=M|{7CQg$k0jqn`CNf)#CeE16)zHPOpHcj-6NT=W5{ks7c$|Yqh0%O<^^RdGi z7%{0_iYidYJkY|zrj@0h6?tai_>XBpP`!5`wi11I@zxCx9+3ubWnT5Yja*q&Lbz&} z=>*xY9%HO?O*eU`^0SiRN3|=z+#)k{Vr8ZzvWm#IXT!C(zmKcR{z@6qm&5f! zCVMonYI^!Ar?KD#xq@EB?$FX+DTnfhUk^vnp;8@?;K;XOSNIjmmhlHkogMg1? zsnHJ|)}De}h*jJ`?D2|Su;-H-h0)PyRyY6)oKg2?v5-v~VTGud!(3S5wEWHM%SDqy z#E=QFVe7m5SwVMWL(^e%rMoj@irIA{;31&zIlVxlBQ(MPvk-fUv%-QZYnkK6W1wTk zZC#?7iOgScX{76UbqaBI=qQE>?t8RKl^%9UWzGekzb)KP^n>z)Gljj*0}eS=P-vHd z6ywle)pW|9FF3B4MD!;|5+%{5hMrANYXIQTA+?8pHWrV0&%w{;ykqn^8KsxRsj%jdjC64X+Z$d)N|Ly#4oc6 z=P2$WgGV8-mYJ!Hzr8ecWH_&dUq9+J`U^ajyqa(^hm6FoaMngGyUZ}_**4L}Fb44d z+HJnz5r8*UMWFo*6-}&Wv3odvh;&a5$LNtL#v|W;{+Y z!Q20vE~<^OARHdXrz~Sg{A^A|Lm!Y=i55BpCnXamFVa}JMgDM-s8iLGii;z%=wu1? zXE`!w=%kW|!-V+`d7}4iuR=#zyAl=_D+a>#1dR`SJV&w9S|c_p6{4U0!%vtwH0M?C z72UD{sS)WHeavt}iX`qKkJj>FpTN;NJ<^YHtbjRet}yuR8~h(3x!JpDBeHmY>$K4vX^bF8-_Y7jDk-?BiS@nLSVW7{IyJf#?x#1SPl2(oL0x9dBC%vt$^pb z@~l{pKysoL7K9Odbuft}Cd=@;sHT z`65))(Nn+|?eNDycfm?o+?CO?QqEV#$oNTIaf-2RU6&hA7ArKyn_`AD6Wf1uA|Y8T zI<<58TNzgQPq{J|NX;d72wDGn3<`$nQ4z#-bilJ%3V03c5;dbx&)-;p^qw?^d)MDu zicb7(Dj0IZ-M;P27$jz@eq*eIF_Rc2iR|CVps<~bVazMu{d_X`uQ6i2;fIVhD>X@>`E~}+el&g9p8+|y$R^Uyvhr?j79E&b~lrXIH z>tcUw_?LFG%Xt1>qu3a52uufIApL2fD$x?vW^(CRoFyy+&s67xQ9>u;uAxjnYhMcL zumyC44HhfqQyVq7o#mqkSGiw)u4zG$`Rgk$3>5K8_Q_UrSK=~2JA+BXgUSUC4)W4) zstoh0O9;0s1V8Ayp4Fj&eHutIdKBM%kXz2=$1py)rv{1gg0BG~cvtL+gkZ&m;*$ls z9G#hEmLw)Z_#hz0+6)N|Y_gcoQuiI>EQ4-bz4YbFrNp?mXv0e8NBHSSqQI2jVdX=3 zrwt7ue5{%%z^{wS>GQi$`g9Akji%QkGI~wET(i&3DwPwdOnHr)1=td-MaTy&uA-P( z`b?B6C##GTq5v>Iv~tHN@Kt|Y#-W0${8o=nskHuRV!kjDO@?A_GP7cz3_wdkJUko0qi6#gXGS z2r1IinyDzhoxNF;d6hDD^UgS)bGt-!_#rEo+Mx4h;6M9Qucyd2kV~@G`^Vr|fz!85 zi%KXIL(+%Eyk#Q-#6DZIJ3Ao(d9UOVcMMJ?JBO_)+DG-VTq)mL&rRu!)Mj$Hgl=2E zBBmORnSj?OUu_qJJ2Xo0E%+%n?^J#bbfS?557H(v2kNx3OPYR1n~?N1>(!a%wMA=8~%?RcrSSxI#O5{hluv5ZdZSNjrsbz6|d7CgmTi| zD<(SBvM5tS^!JRvYSgCr20+`6HAD1l`8DYFwtyvL$fhq!&20$g1J1O)y_)(`<#Dez zf3HJDsgZv!8J5|D3$BFnDLFYaVviJxc{gTxw_GJ?1(oJj2-cYl6V*zb0}_R!q8ltp zMD_BBHw&cMrFI1~3|Ow!)y^yHC06XVPIZn2`X#I;62)0~im9wA5BZ;AD7qZe7snSl z%K$h&`b8$8<%T)DtEsEt`j+c{VHuvLAL}{hpkZcVEYN{1VE}ANlb3_?ufDPXyw=eJlV}48jqwvQkHJh7 zz7QNy-F8k}(n(v;_EZc*pA%R382tu18#^>xcZkrPzn;FpTF-?S!*7c z{lAaSQVIIbJ6@8*BPR8OK->87Cd~{}c2`z&Emp-!+`ZG?p&aqc1POuh=i6pfF#&z# zKxEz*S4tE37XEZSjuYoS1_+R&?JQ<3{<&D62S-`H}c49)I{sHUk}C+Pr- z^+fW8u|{~x#A@Spsf~l4EEv_rDtWTxetpvEO7e5(9kcY<2qpN z3CqjGvI^Cd+WfoZagTPz7hm9K z`1@-Z3`RcskvQx2$USAg=$oAY61@h;O-!r}tq_8U{5Wl(EP&HYW_KBv$yYow!-A-ftkj0ul7gM1jBEG7QaTjD@ zs+{>f+R2~*eGJjyGul)|^NL5v8WEZWtYyw@;cuuKY^Q!g#SUt01x9NQL%CFkN!JUqm71gFHRXz9B0ynv4$U6o)NZ z{x~!Oh3%rfLnMC@urViPidzxYJ3{eY$pYkyKDsV>#0nz|%~TvuaQ*oScyrou=(tiW z8>Z;>yvbxyWuQ^hqzR8kSPp}h3l@B&Vim_|M$P9Z;CY(*2Am0TXdH8XWpOOOkFtjO zcYGl;x{ig$aR+m?lMB$tSL#22{!Gg!`z^tsx!wT23tk}x2-*z>@fBu@86HZDn21|p z?97+)Y+CuJ$FCK>5R&|XNK6$3w{int3uc#RFts*!@hIIE#=bQN6>UpI?88z-DWbwB z8~s77Gg3L%bFyILV$+K?yhX{QE=*=hbcGr(-Las_Hxcf`*E+f$R+2Sm1hRo677cTF zR#=Qf-fWNve8@&9YIwdFBO^cN%=2|do091cE zMe8-OpE{*plt>dNSyrmxE(G4q!Ta3nF#lW9ZH?l`9|G~+Fa-|Usu>o9>rn^SKE+;F z?iSy^VHCzOZB@S{$jN}O+9KPdV&JQVoblQ)z164!#lb};B;HV>24#4|e;m$_cyc3B z_!h|3w!z%`j`fyOn9teWv=;D8VPMVn^l|k~#ExwVl2sI*;GvT<{F=1g%X>glJP36& zZ3mk9{%+r0vFQ?vdw_xbq&hIdp5x{9qbG&WSF_MkS-fxZP8a65sCo6!}_#gMlCQ_y!OZrFDyF`( z1r}HY0lZbc;uu>19+k!Q>FhzpUJgw{)@WkHl^=f>GL5)(qTH}8hfmU?wgqMj3A^h8 zD;ry`u@$Wa(X%}&zu~|DCJG81zd{sL5EPO@_>0>F>|^QR8$Ce3YxEtby29DC#XJyb zNQ3D*y8g zYouVIAI@ReJRBlzz-(xJOxi)+j9s(gmqmcQaQyXW3}IB7CjYB6tH`P!I(MxnMiWXBLxZdUGR5z@F&R zxN&1{l5p>uRT0MT54e*wG(X()Vw|U!d(!$`G+}PPr+Z)VR4w6$Pq-f-Wap!&b1)ki zZj5jI=gkRL8fkT@pF}WsHcvt8=I6)~f%84Phn%5pUS6rCwSde!?xt~g0{Si#w8(H< z$%ZOoRRIA*)5Lo*fs$TbLjS|9#`0}rlR1Fu;wKljM{(M3;TudiD5W-# zu%7RghCk&s^G*MhN7nS-^C0{Q3T*jazAVchwD#r>v926$@e^L+8?#s-RR$XO4vviGzNEFx@&A?^F02WmwbM`j5?ZFWaa46Qysw#MG0MpegG@pDu$vIxN zAZ#>0SP==?c{o#6qessJ7G7uCW72zUED-D%f;1R`xc@#^{~|Jo=E42#WhRB2R<|}2 zIvdW8-u<5l8{ItJ8GI_;mA7)Bt`Di;QZxj+AMpKqyn8Xa0&NAHH<`HQ~^Yg^x z?UZdbx+zYAgR_|eTLc@4^;{zFsC!(0L)*CA0)jh4RGpbJmEj_iUXEC0X8mK8o`)O}3yxW})z+byqpIr*og_L*W#mOn9L?#cnL?kfKN&5;7l`ToV{K~< zluVBrWrE}oZXwJXU_j}P=>9nl16F#Xduz8Xok4KA>6)YfB~^qS56-4gW<>8*Kf75|;%8*KN z-r1q4ah9_u&mrG93|3{AG9&`XYuZ=p;MP?z9-4T{_1cWT_Z1(<>L^(2Al5d>PRC4B z{OrOt{ac+sT3v*rgc5?IMvXD#YzwI?%=e}$?{9BJPi3j2KZ!P6^) zG%7`O&r{|b?#ozeYeTv<&Y_bWSaB5CvzIn;zqFoB>~iKM?h81z;Erls*$X;CR@M|L&LU4!%HJW{C!A-0+-I}H?PfBO+kf0)JsOk+wt=fPE$ep%m8=D*405IQ;8YLq!< z-6~E!n5J5cEHjV-_B21z)H!s(VI+c*Qz%l1kc3q?}4X@brgg@oihb`iKwz!@1t2$1>^+`L5D#Pv;_p#V=z(xkir;J23b##ASaFG!s z*33hYtABecGDA70B-ihZ6Ex87?|qPOo8A&@!|d)kS!5)zNhCdVrKLt+Pg|R&W@C#f zw6|@pJ)}+fw6Fkd7DRDZM7i<`>wn`r|Ew5wJik>e@{AY>a4sNXx*QLqqFiAF*l40< z!Zog{d3>5atS!u{JwCNBY&$3s%7JMNP1yif(5S?jQ3F!IWPo`9~WcjYiva(O)Y;= z($>Yn*^Ax1z=JhpbPd#gQLcf;WA#Dn2cb8g4ihV}C8rbVy{$!oZPjZkMEYYi%E$R= zK8oM52v{iY(gPT?B5WnsS=J0>N**7$^v>yLiFchMQ|T@b`QUjbs+`==BN?n!l+WN@ zk^zL$8j5vjmQ_tqE8B{Gt$Jtm4S0VNXTS_+jJN?gh_vX^jMxTN@NzzU8v~}ZX?f1h zM%a$(WifXy&R!q%WSoZ=hd&+kzCSoVe0kie$<&4#R`ud0olGp3&()&)n#H(;EaTTg zkFfN=grg)_ig5n<3WCnK4p-5mkc2h4C}gs7Ha9mmHiH$4+zPdE=UbQEA6$Qaj2Dje z%=ybLE#~E+7az&0Uc%$Rs&VZ~m!pNlYbo_rCnZHN2{-xwpsY9545cm z46as-EqeP~VKfVp7$^zE0APRDB4uNu!a=BEE|@Pf0`eO3U>VBYeM8bGyD)!)6qPM`I4oDJ-k|8e=UjCc?@T7M_u9)vRl@bNbnau65Da?E zZG#BylUCad2&V`qIQJNU54P{C9CqC-{BpbH*!$Kloh4mh<;DG`H#s|YFDZKJrP z0^wIjJL?xj#n50onvIzo&~|2H6*dmcCcqmov#8F1i+4Ap$Tme%Tih8Kg5O>*eO>LfsEkIt^*n1$Ch2>UJ~|8b=glq@TP~ zrf3$ipw8uMAKGbxvd~fu3JGI0t(07OSFXwbI&`9lHXwwiiIhOwLyZcQ1Ze(;9yVE)2!hrE_KJ+VYpEw+FB(tgZE<9e<~ZAdsv#n+?@;-g|eG-#M^Y=d_~ zd$$Uta^VGG2N*lb-2zMqZmKoiL|h@6&weMU|MvCY+uDEF_|)2F=xC>d)mo0LVKmP| zu|2gIE!D*n86hZ%*IIKaQ#KD)laF6p?4z4q>0~e)pIYsePjd<6QAWIe@o8NuKK?ar zSCKvP3ImkeYrnuW^uA|-e>;C@$xOx1qn|%CuumJ?GI>Z_ecRZ+Q0NSocd*3;)jSA& zNJNu~C{lktqz%Btq(uoa_2%PsYSUW3gDNyjGgU8*RjbGO`5@)S?#qK?(F*n(Rmd;G zY3Gn&W|nfSkR-kuo~mS2>O@)JHOvD(xg9xmE_z1S*>i^o;7++}efQKLv?SIWS9#q& zg;YLm)U4Bp^~+>2rVs)lJAr+Q;$Y6oAXsU&7odMMe`a#F!sX;E@}wf4K7x=8fPoag zkjf)COktKWc-k2OUbSxlbeYH!bO|y{m2WjQLYk%*^&}!@!ovp2(_kG_h4pl}4@xl4 zU{2>o^|9@+>gdwg?7H~4`owCq9AA3!{=FKSSJ_;fvYVqv8wlj4en-euM)Sr5$1?*P zlzx8(?ZKo69j6LjC|!L7BnKhDkV%PzAEp6n;_EpoN!0BKzj1w+N6ln$O9M@^r6eY0 z6-~5^bv@iyal<=`uuWl2&5(J3wyDh6w+tf1x@|=v_k(D$FzVFRc(T&wwzBXQYGoQg!2QMj|%&zjc7D&zBi>{+E zqaug~j(yQ>bJ66@N!?akurDmxcKnL8(g*bWT2}_xL^Cb4y`+nLW%;it?nhx@LY0BfwClp9)eU|HG@VgHhWUS+2;NY(c zwCxNT=HR8j1kn`v_#Gzq+Nk<-z&L-Rb~3AESaA>!Hxq!y!Nkd9(a=!2Xw;uHu-*;) z(GF_IhB0q5kp;@n2lWB#f9Y=J9(EphT^JX`?fh#XT=R)Df>_wIobM_C&&9~8h<#hD zsLm7+)S307_xYytdvrlWTvS9`Ukro!0BYhL4cz!X1jxls*ilXC)^MgKzm9*u6G>bc z5GqyRkLV+t2N$W=SWTWyvum08=S${7c_j!9bp9H~%?!lPV94rSm27_k%pvfN)gUmT2kscJtyPD_s`ok!NbAMv-vz9JWqT!SFG7w zE)3;Lt60N0srC{TW*lBH{T{m6eP>v@>cE%ey>H`uCTLh*Iy!m; zQ`f?>>UIL2wsu-goGX9V*sb%}=9@)d&P4{kOyRjn2a(m)dUfa51i;DX8VprkVk;W1 z;V!az=R@M6xJ#t=Ouo^8Fra{aRQOg#mAGy^4Jt-yGH?l#q=iY_-qB4Je(gMi4X?^Y z;|}`B*soHR+#mmGH?p{6Pq3>e(P}yv=)pfkQoEYhUJ1bv8i{{T7{D{mvF!e?%dN~N zm|qyaOD(qUhxZT!#H#Q4w3+%Rhrwa-pTODjCA-rwv;tM3vHfk+o&H#hh@pXTn7++y zl4Le~%V!4fObH6s(qCPy2B4VEna4uM#+5FU=$T!H?aBDNPUU8^(+mb0-|)$pUI0t& zET$GofwlF4KIng(72l=eL9DbgaxuB3qrl(03?*eh%5s`6m4Hdwt`I5kTqDNOiO|B` zO2a0YC=ssfI{^o679ybvw~1Awg7$qiWSj<~8s}98o1BFCHS=~HD4ua_2DvIe#BvVJ zWJ+{Vr|}!sUu;d(aYZbM###qLHKZNe+{E6mDCk}>W_f=DictY!6?%0TlB-e(!Dl-* z6{)9-Z5jtE>xypm=TpKe;?W0Xpx=T(;S(#!tNRAtL8=g+kG15t<|k_lX4#S@_k6E3 zth?nr6TEnQ#E7-9L>6&>w5oC`>!f~)vc-x+C}twNXWJ52ne=a*JF!>~N+5|-ZGe^k zlPDUg`VoIs=*ww{CnJ{U30sq#E_UzC9%!MATn_gh4#UWWc7q~NocCXXi)E=5Qk;a5 zmnu5cs*xoY1?K>W$FnH}W2!=oauI@&J7JVbl`O9vyhRG2kxC0}emRSWXB-EJ>J`xBRrAqisK$2z%2qMB|`=De&X0}BPFRpg;A8lK0NB8X~OW$68)xYW5Xc-a;$r=CB zeq(>x`P0JLKUj7dW8mZ$|K;A`U;B)5v?y8Tf$O{3q})^bo(+Q5Jv`w^8KnKP1$Fnh zBVUXEQFaFNgZ6kz+$`TAd}496wH;mFp!MI-DnV9U;=7{* zpv7*IlK^qDuP`)rr$VC1%Uy((dCV8R8XSK@puQ{~w?_3C^e9yd3gu&qV_0oJm432z6umS7U3d+6{pr&d2G{bD|^fFZ-RWHEn$ z{j=&O^pIhCmklo5BJ2Edo#oGG*`(;-yegl=P(B`nSKQoiJt^dz{@PF+CV9BpOfQP5 zmSiidyB3vwIH)dR0M!!WqHeEhkv$I&XCfbP3aIH-!?Ke_E4zEtO{a;aK_e>~iW*lU z@f?a6a;VoIZQW$=c_Zw};i|7|e_emQ7e0`e1>d!PxgC9YeERyL(f-<<9*$ypQ~dU= z@f927KXaS>uiq^Cf1lPC|N8XHGO02_;&s)M6GvRMVvtG;Q!kA#hHvBpqU#vxgypD1 zJki%hfTtxY=)qsOQk&n!1K}UD=x`rf1tjNi{~tVk!3$oM;|p7lksUvMu5N#~r59>K zqsr^_$yW9m4^Oa0C@(&_w4oa^6Zvp=Fn~6r_hiQYOQ+MZ`}j%tRo*m(BYM4Sw;5uv zFGnFb2mbmGX?erz1OtFo@aB2LEzk>So`9H`7054(uAHYHjvwlZo^v(5kxKaQW!-ev z3gARGJ1b=5sJVFD+N*6hq{)8}rSB2(B8{?KA>WB)y~SMD`*dV^b-^a#KQ>vd9@oCI zq#>`ZJ?ccm+92<1znovvuO-a@Z+!nKFcW3KUdXCps}%e}w^KXH2c-iD+>Xv(A0Hnc zzmx;E_E@IbDbUgX{O{56^5@&p-!`Kk{#uQ)pox^xfF^Y9M0+Q%PT_z2*k9~{B?-th zh`J0tSFJmclw_)(tX}1sc>R@2?1b#7xkBt_w1(_8`Q$gNKe;4&fAwdVrSb^TrA{QL zBrf0m_CLI<)L9A(a5^q;nUA!zm;TU+0?Wl`T4n5wbgx?(Dy+Ked~hwAFVFS48nR;B z$~@K@DBXAg04npyY3hH3i?Y5cMj7lC;c2eh&2(5xi?DRKTYT^{vlgO<){SmH42tkS zsnGrY+-s|GIlE&d9cK{>VM*G)X6|SXq!Z$TR;CqN0k(ZIU*-RB2ycn^ z|0g{O*>y^o-Fz z%9Mg`sbgho8HJzoUoBu#SdHAzc(jOmqDDXqwK7-7>5rY72_-bS`;=Ps>n(ZxoZ7Z_ zZk6T(qcaU9OB0W<15tKvro|X4d()Jk9fP|Z7tU1P>a5U+!@eyk!{Nw zJApu`5WDU)z_A*f6%CZF8B`P;98t6giQ)r+o7mNNWe?Fea}g8AIaeG8w|UaMZce<% zE3&qBaa$;|0Ek~(D^9z-gD^TijLG;4Ukr$&h&UP+ZC-zjU5%+os;owXB_2T4-Rv&( zxjUVs_%{teJk9ln2RL>wvhW$q`M1Z0BF4lgz@vsQoy#Q1u@q|F zHZEkAqXZE#)3+Lj@wd%y{`7qd#y`WGPYCZO8_?kA@k{pL>*GHipS(H7zNkg@jt(`%VG-X)sq}paL0To@Gw459kMD6@^wfR@Q)}0&>;3%zOH}UuZg?fb zAlhDgF4N*9nCH>`(;Ol6b#;u1+Vg)5B*v93dB%T-mRtg=vpBl|3+;{eYBgNe7Z>a; zpr9<;Ph&*txKQv7G3ux?(T4&6k<0Fu_BPksHr0MH0=5+q7szWXC06CF%DPbk@lQUu zz7AE!7sCK*lqH{aEzhjW%m>X#X$N^VZOgku>3R`CWjPOLs^YtfA|~T4f6_&QxTrgP zRcU{8+d_j82WGKb24LqxxPYO|P)1BCeR$r-$9#pjxQYil57mcF6iq6#HA;mXoS(yJ zl(+&~vUR2d0M1}h=A|4eQsi4CQn_G9ez7W?6z$1wPc7WB+Vd5~WHh9)IW6FBC>p^* zfFs2_soIBra^0fHnqQ2#Mn=Z35kRv3q#rz}|wbZ3)83vUKahKwwjw`gF|2BVfW! zsd$zeN2T8O-^NxJyI7-Ki~sB~YKMc9qg-Ls3sUDp${?*+Cz;vQxQ+hAzQL{sWO z#{37KRuYsZqG|O!U1D$cIuvmpE=C3q;n~Y!(SMr_7%8>BepV1A%oWhN23g!G@|JM|FQGEls5AAE=D*IK8V_$w7ojQ&9vp^u@hI;YhdF zVyFsBnJ)&@pi>G4Yx$dIfDSMheQd$`BClj zt=2aTT+l8aOcw@v-zoxld1qgsZ{Af0&@vFf{vKY%R_FxrdK&+$r?OH?x2sGiRk+N& z&fMBLtM|YL!xTK^SXP=EfwXyK-O*&wv6Gz?sf{zmU=fPgc$x|5<2hnmR@&6TIH2uf z*H^)6L14S%a!UkcK{n*u6-9sGpb^taSN*UP!C3C=I7zAYa5 zd0AlxhllG%d0+KH)wkVjq z-L$1^cq<(WmY_mNHc;^Diu&`xabdCnKf=IIH#T?3${PaKGexHCmLX}=&qwxhh5%}f7z6*a|r;Dj$aRoaotYk?=SQO(3mMD0Nuq7yAdWf z?*q{-v#LZ|hdXd>S~(oV6Q!&MzP=7aiF8FXfhLg_z7$4Ug&KdMkiDo{z%fWdM{UP> zgn!=nr4zb=JM~XGif$`k88xAEe%>M2(j);c52gXi!@a;h{zDZE6xEY~Y#bK7pBko6 zS&TBRWJC{%CB@&4{g_KlO6znw26PlgJ+`YXDH9UP{5`k_iojk&r(v4Lwqv{I#wM$Lo$GpK)rxy%geQz}qYTh$PFu_(1J z^d8zIK$)uL#bZu9VMLp}-wmq+k_G`XYghw+T8BkUtDf@Da@y~hcB~g>*Ru}PWBrwP zNEou6MmCr>9HhALDh%&}AcqdA7?i(j4m_;`!8CcTn+Iv*<7Xk5n}PKcgWFY%9!)uP znQT~az~g_Y>fWKn)KzuU3fOrigC$z)U4sPM^wL)o)N!Slaj>27Z+2Vg$h7cLgiyCd zL^>M`mFDs$Wsu;4iS|AWJB0l@ltiDilF%sN%j_O9>Jy3jT(47ySVc(KlbNeo4crm- zbT_J59`1~~KqP6qR5zF#T#{NFsDy@{kMKqeLt%dvYIOsso-^g|TDN~^RdDPFXW1~r zhT1g@tPQ<8UNmCe(7vM?Lj*$ATNKZv#B>Bg?gTZe{XNBztQhB&pdrFfds?ItbSJ7hq{+Q~Y`Ic9!B_p>nhQ zC8B>ERK5=&;51dsFy9Ogj$^Mh6^ln#3adKL(w+`U*Jf20s!k#FY?$!w8AS5;Wc7a` zfnRS=es$Ls@UI;$!SS_aWUJErnL+Om11p3p^_I4s2doYHMgB2MuiKHsJR}dX>Y#;4 z!Qjw4)`un?SA7c`TR^;%rykT7^g-0nCtZI%=RQ1AR?iudepMX0dQxjK%ai_!7G!?n zD&slq!S-5fjQ}i7>Eh3g3eAv}zzlFNMhFk@dmKdG1~bG$z?jNBlxHh2_{%E7L@>x9k$lGP&4UKxJi!}9FW+Q(l(BOL> z9qdbITt+0r9T zh27&YIKwh912sh@4&!q|9;g<`FFD)AnD>+QWe&n)CYdvezalS$TKA2QVWb146S|@CcJAQQ+B5> zJg;RPV+UoD7iBLQ6Uu*Fn5$7sPy{@}-Mv7&B!Efut_)5_ zf~{7kk4DvI#6+Y~yeiHqLg{qi!Y-7ln-&Z2YI=Q*YUSK7%Nu`XR)|PI1sJJevR;0M zsDiV#RwwLC^gP;dRx00P*+0IIz?&;)F_5+_(yf`8h=rN@=qqiKoa=Rwot-ofJAeWm z(G;o_Oxo%ouyuW%DpbV@SmcdhF{IHNhq%7p4oDISh%LA_tX!N#XB)`1bf&%0|b&-_(u9{r}{fdH>t*yOa4KwUTcm-zBR{Til$enXTR#N58 zdJ_-kpy2@Bq3#4ikC}wndmjsckPS+UMRSooR zCkj6QU~_-)pyg`~MU1ljKeRiQynl(=uj=w*n~o59C@d~d%a-L0d+;UKw_!GOxY$}m zo&--M22JF2U_we-Ej>zYb7WJR4sIw%Uiqdm`pL$IkU}ie6&+EEYyF@a*Mo*){aNvz zV8Rm>s4>EJ1yv-6vWp`bY+aYT4W!rd&Ot+7QRRQ7aGAZQS4SOeXFpQ>Va$+|lmLzP zhtk7asJT4Fx2ms@LdYQU@)XQJBbtnn9HbkW>a!vK5jYNZbWY7W9ejD>yL( zwEOnvl_9p<;eQVLM9BlpNzvS7e%=+ijnEHD1vyIO6?_H8&cpmDnod|C)S)DrFyRvB zy_J7BlO|aK_wO$?9FoQ+uUOLk`EUo^(AfrtuImubyRZ`$DXStQCy7nUbp* zvIZR%9xzw z{?*!=>{soe2tap`doC$%F$SEaSPYmi7X^P>B&Bq8IY=XDL>=MmSNKk|@%z8TzaPcF zA6)$Yhwb0L+W!6dzcgAFNlX8hD~zCxM-QV$0J5$4WAt6iuk3H+*!#mQa zCV#fr)9NC+z3N@)NjpXPQlhX+LXXm3DtN zVD=x+XBqy|GR}Gpq{Du;*2wgBqMy-|D6Uqfi5oll!%gk+id!u$8kN)X0an`lw)M*z z*;N0k!&)nY)1nwEu0t_xhKPWVT3FWX{Wjz19%0`ra8)`9BAcDa+sxi~M(Lz!i&`S| ze|aaYmzi`HookuB|P*Xf^Z92Nc$=xE;SB#j? zv-4Js17DJaYF{YQ5Nl_c-qG>fgfJomgkb=eESHrR1ICEG(e5M99-13sj|P8E!nn_? zq8p3>Fq=0xCrWHw;szq|0lRsGiuRiXC?^0Lei{jw7(fep~utNBY7B{{7tTH>@ zbx-xhfo@E6^IKvaU=w_dDuaKK+XYSC)V9$Ocx_wauUFCeKwOfTfSg>73WLi z36N0;Ar>}hxk}zGDHH*f2i0n7iD`+`zO}OWfF*a658$G0rmVqKMtpz4e3TAPK~l?4 zX1%XoQ+=`QME{acC|xprykytqLq9iEv37VI@_17&w?vJSulrS{nKe{0;kNc-AVqd) z<%!0bh?eFCs@i(vm%7;+YAw4tt6cCX$>c>EZySAzTz)m0@p>_d)nU&ZPD)RjU#PBs z9h}Y_@RO&hVq4&kQtN;05&pcmZ9T12g-M!EX$@7j!08VHYh+PF67^Uq6vPi0tfW_T zqNwu(3mAHW$}}I`hq*UU$i3nV`9`$=JoN^>Mch1(iN`DgXf7%$PGOkjtc3l^RW9~q z+Ul2p%b9Cbi^i(kgye;P!X@j{G+XL>5+O27GifHvu2@^<&{u!D($AXw{DJcQ;h=3B z_Tbk!;A1|(1NiBeud+;f&y4TPUT71^+qv1*Jtvq~V8k`>MO5veZ59HO61C^eh_t z9%3Czkl1=J_%DB~B84lem6Yz6N3Ti6#5!Uzp6$x44pQ**4rf?FLkVKT1x z@y6rQ+i=st;9if%1B(`MAJ#S=OtWgYfit4eFD<6c<+y?xpR30iw1{L04!cyRYUe>v zWamM&!ic!@pfo$&1MM%&qWODYW7KI$N~N@zumci2m$iStn*v{YnrhGv%wdZ4Kk$sY za$C4)#F}N!&54DuFf#+S*q1kvM$}`YV!z#Q{foXocyV%eu*za-DDIyxRn35_S`ob6 zQ_IQObw4rV20*GtF{(&#^Q^BkC4|Os*9x9+Btt%dn6TMzDt>(t&_USbr(;)y!ECH>>zE&X@0nS#N z{pE0sd*V(y(TUcz&VuTDx z3M_xLv)}?oz^7XtD;Aurjw4Gmhb7;vuY2jbDo3QCs{`rDson?Wa3SxRqXMV7Mx0}II7YoaCO2UsQ`{0!Q$$N zBG7WMyef2Q?yFV`O*P1AZ(h!dQRL@X7r%eG>WDAyGCWz*9AqBsvKsCM(B&!%M(e4S{>3^y5Slz4latF7B18YL$MQODk#tQCP~VW}lc zR*rRUwX|?mDRn7$tz*cg`B&hUF5;Ck%V-g=v|O~^Q=$570eiK_1+XZq>anu$PhNk1 zsh+Eh=e35B)$4Ar6gStkfprW>>u9p_R3&`!M1cG)(nJfSVDZrRd)6uGUCRg8ZJ2IKLY%@36G&h%uia0lm znfNblAN1gamPyrK`n?q$Nyj@Agl1HQtaTyNSacN(4$oGQs_)Rcjp z4-HO$1DA4@KJIVNs&%w!FiUO`oz z+GmD1HQgn6TCyd!`I-x~&`Bk$ZT{SNW|w;aSNf&3#(NHPpr>PY;cLpDdyG!saYdkc z&uV=QWL2a^{MaP6nEt&bEw=;g!kvbzd}k(P^lzsD?9-SOaj*?z5=YWcN1{((Q{$p| zD%9wo56^bv&8cqvd^IR`%ogHjd z+(qcb*2Y)1NfD}a&_Qn5mm2@d)<~)%ozPeo>nmRqLKm}wboFM`2r@Ot*Nv}i32|XI zmN-^*#cdw88prMn(X)K8`5gb6C z9eLW-tN9%nh@~d0eI=bSTNOzL45WCcJW$w;Jc%l}VU&V7j#VLW!VFb_w!v6e(c{KL z^oJo*!{guq$IXz~cF5zg)f7=RVQ)Syi>asw*UUT_co|&ueeNJ7&B|k)gKst4(a>*8 z7tq3-7Tlv5)4qD77D0cmFRXkYDs;mFSZA$)V!I91kM3 z>n1sLx@Clvnzt~;<^x1$ST>y@2P>5HDA#y{5hBo#fx&R7s+fO6%O$=gF05YT*kk^uez2GiZ+{rF!Cc&A%WgN#8!9k9h+rx^GoYBcSd+>TDB+N5Ep zLmwduF|Eyv4M;x7^Z9YI#cYS2(SpA4MpqVhFcWl%F2%Gkn79M(i7ssd{Kc zxFAR+>i95dK|1|&HppimwKu`9p-K|7X z&`Rj|savfyvy!{|5(oJEyM?RE8{OS`<*BOPGF(nPuy_7bOW@vxmij8wk;#4Zza0n{*l-UZ4ABh}y zA1YB5j#U{Yd;-s`n2S;~@`f?Go(t(^Cpt|nEzr?TB5qiS;JSu0EC0%^zMNWCCdEuO zWH~@LGOlT+<)VD;D9g_c>Oj@Ba#OlhcDL~=I2N-4LoJ6z09ERTyI7rz@WRWfXUet< zRHT2G9tBW?J;-3rb5}`<47-Z=v=<+`U=D86hZ^w3IL07~(O1_B3v0Cv<;Y~2o(;t4 zw;`cga%ZxrNND~TE^58&p2yC@>7&x!b4Qk$vg4d=+{lYn=RwFUbyiSEIbSBM+0alv zcU<+|%cSapxpM}0%Z!Ear}W*IkB^%7S+RdxB85hic}WqG;A=tU>xXWm9Ufntpj}Iu zRe>@amKKiai&n{kz13py&(tBXi~?R0^HA|l(Oh34ad%HygNAD4L>3qzrio`kYiY17 zvl)vl;D9;Zx>48HR}3EcoLVqmwt?sgR)-;asr8~8EeGphxPmb9T&1I2%L)cJSWth; z)ny4Pxx?@`(_ zXS38ww7aJD;K5G|F*DVpl9swC4QGb5yh@cauW7{cE#P9ARUM=mV{}*5@})T1py|tz z6r0fo!|qt?OWiut%vbq^rvphRq91?CW<1|)ZCBnoZQ!1yq0pHTxTm5Y4)!c5|A0{p zd#*%w%R0p6YBMtjaR`R7fE-J^k3Lp_h~26bx%CIz@hZPYW`j#FPtG@c^5Nd$G4Wd!UyOet?puM1e5E(<`Y(pM{-dnqG@8F2JykTUqBYx<}*n>IwbmQ zIm4NfW1jZ=*<=RbmN+^GFW$!7#P;Vi4_E$Nk~L$qpvt;2iTkm?>4LRB8*LV2(-q_ zO!S7lKo)Y1CJ|qRC=-e%k~q67yw>nbGjg#}Zg!n}x#wR;;0@`eM(l-#3vxW(m)5JI!)bf5-ZaaWriEYSjC<>$_E2YIoecF*J&Bmh7U&>+2Din)r<>o&8 z(C}Ke+7;H24rE$|7z{-ARL$y=q2pO4B&YRn5i_b8gpnBj-s5;{tM$~1^^O@qmqr>J zT}&h37_PKCANVs33N4Clxh zqWjnd&s1GC@X9ZA^)V*!SRegzSIcR?I}jom_Ck1f&_gb`LA%ZYo5Lkt<#21;E(4Cz ze*(h53NgVwsGbrz)}(1(s@AvF*Rg8DwWE91+}&83;jk_3iz8p~Vy?B;)`;#?a|WW{ zIeWWvUl)Iymy}p~1peAV6CKe%^ry5rE^d1x@E;^pG8~^72CZlv8*!txCjINlB==H+ zm-5d`GmZC1lA|UeeZd{a1yCyY-Xu*`j&q^abvr4r-8rX&4zzBpX@X?zuW3; zbVO5gfD6zk?rAmBncUHTuwEFzr62I};s4B-FWc@+x?v-vvAoHK!%p@-v);Hz-Mz0@BKdJx^h7o%9V5+q6YHqU;q{v9aUA{$PFuY7hc@1MutK3}QfwBK_Cnt@vq zP5OVoLR8(IpSjI+uU`JL^cCXH=d+=7^w0%!Ic0E=DbWz|cc-EAMEC3|I{_8JF{hhO zbXvHw79pfB&8ubf2x$!k!*S&OP)>N0$ zG;t#^jkTkrlao_5O;E-Yx;-eQ5$G$#l=puEk?Fa!BC0rb*=#up@w(6q4R4s4mC}sX z@a57w<6EiMm@aXVLy50%gQ)Ak35`S?qy_wOJKjTL{P7EHY0S`2J$#3VqU z^H~+PK`-L^`cK~10T@U%imAR!WO%ciaw9^v_-y!c@JR<&r4j$i?pT(|S<9NvoeqDC z8stHkNf6MFB5a-DL7hDjEyEe?JA%vioruQ_=JYm@i(q(zG%b7Yj?u!nqWQUIT`gEt(jW_WoU_>+KxThtG)VrP8UTOq`-9`dm&b{>S1|GiGH&I2%L(uq zu47`hCtG&FUX;#!4mOG|62) zYlZVCvP}|5*GVW|Gvx!h=vkmCENfo`IJ#eVkVCj^4q#=IDjb#vo+yC#Xcd3b$ls?| znDy8Wjx@7p-YF_Up-unQYZ({xiB70G0F;d7qfnwUIYR-bQT8S!Xh&k{z4GyMe27xubEN?F-FUNA-#XiT&io4`R*9q zR@_>?k+v5$@^E1bGwhQaJRP7bIf7QlbI^j022u7_*(<4i6HP9IiOu0M)B7W>luSkk zkBePci=HaS;S-PWkD|LUcrb}4?_{0O98ykFX0b?| zf;i+_&v@I@43{ek^3;Ehjt_o1IP;;;AU_NcA=ZGZ^rTtCVLB-lf;_FVCl^O_7c~u^ zr`o(Gn<6n9FJlXF=6qVpY&v&Q;YfxJD0e9w2tk!VmU7n5waC*igAD%sxpE!jf}7!w zYBOZk1fpmHgRTCOTb5(ue!Dp1p8j+(QuY%>N82#OS#$elV_|%u{wvC6AO<|H^P&?o4^{?JfeHh4@{kM)O`RHgG()>-eYz~n7W7)y^- z+ZsEQzU}K92l=Lwq?}FkVYTI~<#@09XXM%Blh@7tKp8325 z7et36kOPkDZ;v*Fm7s}tIl|Rz9!f=nhOoHO)~iYJ(uk$R%NE&+H@7wrFo0Ni9XOR1 zR~%)kAIE>=wj0Y*Ib*=vO@s*2E2c z+ctx!HYyb%5YiUE%}^hFn!(BA3J;3@6OxqUUpht{I!Ybn4@Wmz_#8Im&HU;L`HnyB z9=$#|r#sn%LLV5eG}64ix~oK2l@3s=AW6Un+b(}A85nVza>t1+7{{;B-Yz*P?B}v1P6_lCa3ZZCZLtrqGi$DahW@W?MjYw5q(R@JzyQxt$ot3&IoD zx~z_n$=I(C>F76Ca|i!EoSMJePoDDw62w5f4C?BUxBeS%3a{S`(3 z>aJDdNhjJ2DA+^!wJ4xh9vVwFmvi0rHA2BPq3m_OqF0rm^~Fv-3aJI(qk}@&7StUO zR~J6aZTe`zptC6Uw0SUUjq0dA=WtR=CWL?I$*S?9R6x9-*xNQ?Sd|4srs#sIii+zr zm@~l9Sv|_n&?3Y}4ipuwgTj>AZ&`PzPL1+$KAMl>cM1qajEMn+TR`$zJn2`jo8q3h z^>`F82p6Cn%!s?BzKklb$zs`dAp}OleEb%9D=3mtw|cCt9WI(d6ld9IyH(j^iAsNz zl~9OzeCLpDYvSxvje}WVXQGtogpL+fjdYl!_*&hbT4%?4sdy4Y4^>D;TPQ?36C*Q{ zQvgj3st9o1s9OJl;+s;Uv8$1bDs-C)@Qnh1*d#8#TT^9y`X;SjKir|Fibbau3f(c# zq(8>0fNCBWDuF3zSHBot;?pelGB$rD^jb^Z0Dn|#er?w#N++QQBOC-`(^K@~TxIBy z`M@o7i2Y|~E&`WJ&#t87tdypuRHi_D>C-9iGW7g3%FcL$={`Kyz#b?k*h%Jo=lWPA zK5|Z35#m190qt<LgqBTAf?zK=y}D6+6>2J`0WYB*ZC}36N zeHy>VEBbNa-Zlc(ZfxvxV&y3U!bkeE0cskABe9j*Z#N5yd(}{pMxOd9pE4-*Rf?sN zhSm_gX%Xp+0=Q4b@O!RjUEg6$Wp!Emzhhu}E(7?M(5Ld)sIaM&L-H;!=LRWfap#bf zutDOg=7^crlb~KJ47LL|lOTW07L2riaIt%M)O&GwaI}B!{Ms5FY@)g?P4t0*=AR4) zonudW=086X9xh&Etq?#hg1uMfO zTvrssKGF6~(+;J@Otz!uW=k`V9GES`G4-tGWeByan*g>FH6#!3D$rQvYt5~eaja|N zjJOZ8eUZ|p`K4B0L!5tbI%O;)L%Ko8p^^d6ema1d=->~Bnj2)6yzv}J>oG(UA%SHv zUaW&;I1-HW9A~%IeTzB-D<-tG!LgN=oUvFTAoD23Zcdtu&>GQBvi8;{;B9||e;U@VJR-`$cC`72 zM;nhfo@|=F?$Z-x*DfTz8IG)V6!~s(Ob(@p#U+8B#t?ASLn3;k9w*z@TCu^26%K)z zz^;#PXtzpLkn?fiX^GYdV7H7~d^P{;U+-eFLAB1B4&0X?aD!nZ1ewqkjE$u^p*Odc zu{PR}#Xmy|zFL2AWOr>_hSW53MK-*a$(`ln+%=1RVNF~zL1=GWUK3|{boyNw2HTC? zYC#C7-#M0jzkJmr1F-rQbI#m{z^NQdR(;8(tj-Lak~UViSR5P52>&&k0&8K0%87(# z%N2#76YY*`!Qw(Ka!&Vv2y|M=E29IuruYRY!X#J*qCtPuChd%2OV-NQ27u}n>7sR> zl=8|V`K|YIM(v@VKCt3^*0;0AzpTI4W_6<;RQ9zs`_|6lLzZuB=XR;uNxhl{HjCWd z*?h90cL-=;iDo;E<}AIA{$VG2Ff6WrLLz(iAUZjV{(;wp(6m~}=oSI~=*{k5&H>R1 zHXQkXLwIu+`IwJ zdCdP}{o$V)LbGw|o}8@f2qnTw=w@22V}vPlsJr-E`tE14sngc_jkLxVs__h)^?5_C zn1M=q1upt0`HID};^4k^hD3}sk)c|GBl4FtBPo9<0@VSymF0*DQ5XOS+(DrUJGb%< zPXW1Q_;f<^U6BK-ajt&JaiYqIGe6RrEtG}ZF_p!wr!i!w%vEzwykN~wrzXbHn*RB_x<+U zjo6H+Ka~|#e=0Ig9+N?7px7vCs^8~jhx;myf;39`06bcbsqI@@B|3WTTD*!^2f4(*hKi4x zAxDGKr4bfa2)mKaVISKMWmw5FWT1TB;h=R%YAxSnqVwQZ2>?tMv)23X*L_WjoYjPoejy)6rWdLm?&O=(1e)C9(m+xMY-+cscP+X z$Di>27BHt%MO2^%kgeV_Rc3l$`bW+>0EV-<>?DF*F2FtpEf3s}`Z*F9TGek1gHeJL za+Q37k!a(BYE*h0|Nfl|G71)rrS*wF+?8XFMYVxUEE#q|>qi!}S->{q^i)>~uMejE zn}vV9zF4Wx&NF&x)AZ|6lvY_Xz^6V(>1&oTBpHat0QmJHsiP8Zc`n(fnHLyC4X`%X z)ESK8$?IO$)IdBqXD21QSqW_WZ7Qb^yhz!^En!BWhwb9{5V|o{A{Gge4~N1Lp^$A# z1#>>>ktJc@#pxH8?IEOn5pGIW8eAgI{1u#>Xfu+3lZffhxL{neoR(vQd*>w{$_yD! z_wPLX+=KfMo{iF;ZwlyZ+URim1_0P7%HKN*;UvN@`^1=~*##Ve9*c6;4j;X*Sn5MV zfM4%}up9N_J$6p*A2*Ab&L8BZ!=6|IUZbNSpjbv>`xehM{^c?-f3F>lU|5r8aRJdJ zHLgt9OIyA#(Cw7$G03AfgelW?yl>b8ph`U?VZL`sec@PA_xhXSs*#<2azFz`%(c~^ z<-J8hv4Zz8X7bTEMUyBE>C3<^Jc}}B;O#JbHh(R;k*J*`SFU&HN)r3hw!W7j()+J9 zv+Krj2*o}^Rq_ri9nB$mlLkrh%qyNXi7+IRAixQ!XVJGo@$fLH@1-UuyyYV>ZLNdx zA`!g7;Y7e7!UxG+veNXDCcyLvIBJ3(ssl~gQ$7p4*I;Oq2@E}Vb9s9X+RXA7wXVQO z^}-liFprF7Rw{c=xm*>5{|4~T<*G;kaDjlS1h$;_PkI|SvdlNNxBO7l#a8aIz?*TZ zx~a4B*rsa&8m08D#3*^RvVn#Z>|b}r9nJN|vFe0fEy3 zNCmIeS8N*P&*8r&L~}hu`K$Da*C#fs{_*F~BeM5h z3&2>kLR&uSetQCOic+a~movAi2JN)I^YEe+RE<|1v>J3@F|kOxQ|*}dX-REVmYAZ# zL4)1!LaJR6?a&I*BqCCg3r?ZEXeFn5)tJ|d>Y}|3`!E;}1z-*oa`GO;jBe_q<%Dz2 z67~h7@H=H#>jZf8;_6mk$g3gDwvwvUoI81oqB>|c6w6LVld#&pf9RKhFP8{ZpDuok z9}6`rumn%4I1=1;7F?KZ}I`XW0L@i4=|E1DZ=*NK;$4%MfdTlah zCDg*;KV-qUA`8@sdGg6ev@IxqnjSwBk~chqf?+1p2b7Nr3n01TmIyEy_7~T$WH*gu zpQy5lGBVZ920yfOnno{~{V4yOB9%>`V%h_Ld9hW_4o7U;K2fa1p zIWv}gY`XUO~M2V%;u7v#OC{LFTS!U!Bzny2d__;a3IS@fFE2#t)X251!88f+Y)y8B- z)pgpsE*z#?(qlepo5SKGg2Wv)+q@gXN?QVys#sp?kfsaaHy6f&B^=*3w2ZqfR+d|O zF1O0X9=o#RbC=RX>f_|O{+b4XI4YdZdh-N$0{Bl(?2g#}feHD8LyjId{waT=Px@yg z&`@AnzdEtq;KDa@OOcbl`g^I-2N+Nuf-0UW@zg6k^G8Q3Sytp4SPJd!yy&sKziE} z955Vmyeo@7-w)OeW2|g7#h6!!i=jAc{UwNBlkP!+kb|Rcq^DR*EmlS`P~gs;OD2fU zy1U{xGF4~&wOdAC`L~Y2BtihPd({XC2EsrOF}nh?NMO2Nw*BOOh@NQX5K)Xq6z^M z;h~dh+9akxBFp!Q`)8bsy?V)$m8c`!T#+`SB+VVpj~AO;pV^)BHJr=W`-TYA);wKl zvHdK?XG3+vO8gKTCJ@{gUO;?664Y0e)n;i}Qr$MRT=k91-V*Nhz0DPlROTl3Cf(e2fQ3 zj?+v8Rn-|hln}msM5A`Li#Qb^V@3E{tkq2l#ju3bg5vVig0eL!YL+b-Q~A9nMxyv& zrp48opsy~qLu@=-mNtv|aIw)R4%qu3tjC>b+UZ>W_IKXtkq7W-&R&2%cmj3kMk*Y>80LEo9G8qfX!d<># z!^*CTH>m3{Y?CTo_ot-VHJQSU@tD0o9EI z7vwDE4f}4Q@UTPgI!x>qG9ydTQ2dWanh{-wzx;U7?B7Mr#rHOL=x)b$ALS+PPhU>| zP=(n|n@CZ~v&!u~c7@ycIKY0@hW%UX8YGg<99JhN*=Ygv*TXB9i{bdm%MAS57P+5u z8RF|t5VunqL$|h{1Uft1^uqr6Ct#oQ_f@7O%K93UUCP7-S@(GCC`mwWXf=rc3Z0W* z*e+nr&FMmL0Ll7q=B#S)Jzkh~%1xtMM!<&NG5YtJ_fyEJ2^*YmA^;P-rFVl67)zxFA0x${_;OTi&H?eb&LnF_XjtWEs1a6qrb3OK+iOZxMwas`I5nwWc z?(_Q>w+0-lk_N$2BH6+;+FLl9uxG8TG!Q*O@z zd*|z5p`5w>VtULkAYQa^u)84C9`I5eWZ0{opy@|25_`xP+o(g(2fO^nl%|eO? z=N;U6u`b}66-Yu)x8D!9I_W6=+`k5k$}F09$=U=N_Yn8D>?dEzDFloJTLk2!{D9ij z@Kq>hauVD)HK4~ybeEOzV>$vZW$wxleWzR_+?`VNOMtP6Dr}960Sd%XdP3ZhdH4J- zZ;y1*x`nfTj~;o(d`2pVMQhQX<~B+V-2&O6Xx4Pwv@ zeJtCIdxr$P?C}2bWNrF5Oy50hSL&Ay=@f3`nSsQskTw5TL4bvguB}Fe2Rf2RtnAdid?^B4OBGi;qf3`ew|< zSyG>;rq~Pv<2+`}`%|FaGI4+J`e|#{f$gcPlUgMDBQ)o-s0qWCfi@v$Rq{`7lSC= z5TKxEs5nT5nHTdwhTB~YwN9ir1H_kITJTvlp^es5;Z?x}ZOgk5-S-{GiI+Z5XiIqz zZEw`3Ysb>%VN4eFpUz7xsIt4EHK+uENU8~Bc=12{{0!nl4rX$AF*TZ3?pqM9lrCWW z8ReT0RO)ErRSmAW$l8LFUgR684|8s4T!1&fCCq`HYS~6};&wkvIVWi)w&t8^VQ+y} zO%-`p25nGOIfehD*Qk(SwL-hQut#f0f6#1(iXF33;%-&7UvQ}gN7eW=+=cEwoH6Sp<|JHUQB)>4VpD>?VGk0JiWS92sGW2-H&?-tEdx|Q2jFh~ zUX-~YA^wByI9x-U16xgqiHKO~!#ko{5s99K6gWgntviqOKgz0<8_zC7jF>37|P{81pu@9pbHmkNiz|zxq-crexBv zVwjIs5pCk~j&ZxAjiK5c#DAzv+{8BZ&q`Gc(IVIDq(T+s9N*;ba3_z}1aSVh-_CNV zpeVByhvkj)0B6)7Q+~Ykn^DK@DVNl&$^r*Hx1J}5m2+7MU&F=^yocT4LP)xMwL&)7 z&bDpMn2}8%igIwJzCI*yOS8s}cR__~pdI^S7MskfMgl9vcV>}a_@hbmjl98CtBj=ZnF5eyFROtUkm|xY4!n!@s5Ox4HMeA0b_? zfV=6gvJ(flsCd1Uy)8z}K7QMRV^1t`kc`6IddmvQT# z=)hvRlBnM+AU8isZ~TVH)++g^=e&xK+(R&$EW4Eb||DNbqEh%wwYh8X*aUA;TL#9CwJ zM*A7yWSSOJ^KbQn9pKaunPa(ky(O$Gyd14T_cYbxWf9{thpBg&jZ-0eL01Zd;tyPA zxtHCp87tcM;E{|5waFHfP0qNa#YF|&JBea#?ejsEEN;8#2k7*=eY1Wpb8GbaxO@ER zO&e6DqF$PHiL9lWBd}n|FgXpgI+^j4X##=Z31=s0q8)_G1@P|hM^yA@H%|Vdo9@!KEOdw=Sz0hf>haV|!46Hd4yy{E+#Jej5^$}Ul z0_8i*A#1QkVS5{o`(?wvQLUOakvyA0V^IUq@61PV%!y5hA(L{wNP2R=W3amThEX%a z{!4-Z?`b#!1t+;cpcWLciVT(C2gJzerVs_QVJebT4KRhuuZlx5uIOD9Vu8;J!S0Dv zmd8xErxc`aRhuIecH;n9Ry)d`Z!6PrV3wt4wGuy?QA+2sXTctMnMqX2rJS~Oiw%+r zJf~T6dJR$6g2CK|!lfGE?ip5mfFMWrM!p0`+z0@^$*3ArGT7&Xe^W*|D6{xou=oG(G5!NF2p(hUHZf7Mo)?ECOJ zsKVRW$V$UV8&5@W`_VI@^gCK0wTd|6)kf#x0nEEfrs4SrH=dchy8lLmsy)0|^B$dG zzi!{xRx|ZYmf65m8FW!PRVohX;8oXP`S*H99}FGE&Q-{Chf#ef8)(sjZA>(XkCHyG zg9~+uE*g!xt>}Li9&>)9e#GDDAF@7j>Y~u-NK`1EpXHapJN8#zQ%#Y$jP!K1Irs8Vt$ zik)erk+>^wB?5FHfs;tCwKXk>GJ{wd(Iea9P`u;dTR^MU6ND<;I8shhDiDAJirw8g z6Z@ed-n_?a+s5+@o+4S(Q@flM@DsRc)u0{#m%VT&%NPw6zFV~I+>q%vn#ExbzDBuk z0{J0`@xi!N|GIx!<}TD`f_f3S!-j3wi0h>fuSbJI{%k_DQd}g;F+NDw1`~kfH7kF) z`*!JYKBPgZ)L$O(VL9;qLAPLeUE@$t)~h{=xzN1&am)PbrX?hc;f5^)v^iDRrWZZS zInBA^1BnHH&1i{tmYk3g-q(FHj=n&~43G4&bY%qF<#D0B@lWz)?7SGSQbdM3p){Hh z1jllKJc?U;|Fj$hesJZ!-lD#2xjd!6y)02)6EdQgrcS@e=wW=Ngp5>m9#N#=Cv?pG zvCNsMl5gE%c#qUsfq5VVe4qeJp0!~_+@pBVw_-ZeTh@MIT%~>E_lT-|k=cCJKaKrC zLS4*n^r+moi3`7d^iD(BU$WWCQT-DXRO!LHhn^G*3m^ruWgr}X35;BmP)R6mp}mN% zZ3sTmpo;>ANvFt`3m-1&)f!MSab8p6Z647-&^d_~vIEW-5*}p)^pZ`Pwa)(vwfO!G zinMEV*7oEAzx1dGuK3b|QH>Z{I4IXVjz*&dM!9)HD@ex zh!lllh?H4sRUCT-Oz+LV3wl}y?!KQv2*-dK8R#tbRdgv6BM%|Plx8NaTJY{frTCGr ztWcTC2w{?#tT6nAGIKpHVL+oVmoW>*c2$Dl2mPRR6Xh>Jk!>f-?5{+IVMFv`ZGZch zvHMj=pCTAY$DN}u3f>#S`Nvy(?WzACvCZJ{>_C8fGTK-eK$PBRQ3O`v7kWoctIrCS z&jbvmocJ5qJw0s$v?u72ld~-6iO>ohcWuHa1541V;l3=1+X9W3igD#idmyg?x1DmS#xs< zDOBb{n?>d#KvkAnqBxP2HFWa1I9)Q$HaaKrQs4cp;@UCcxj3RPb4v$)dlQB0gF z&wLo?&kWRzAd#Rc@})7yP{poB?;n;QR!~5{{k}}e(0d0f7IUeN zo-8b3!%fzzup>J3)iC#m1?54m7p>)&R`AJelMGGrtX^j!s!V(=1}XDx;VTmQx~rZ3jYAI_OF4sP;?FHG zPTy6QXExY5Yl4YlPaEj%DUmliz(|=yes_QJrwbkx05U$h0N=6qMg4Qt$$AoBpAb<# zyIB{v+w8H%g3waIj}&ADC;$o+P5%m4$r}%{5cdjwH`7JzNP0Qv8xtcQEByC^H;s-4 zL}Mwkg=9q=6t;Gb)tCURC@Nr0Mp`vz8kmj(rc0s7CVNdMMJ&2lFtgJd$Zw*0vg=b+G1 zYskqU!2ajdkvl2<|8EKh`9F6zng8OIK>-0hp#TBVrpg77;-?yWkYWP<*DEYt++l%$ z!5)EufWXjxzR{#H<+w45+}<1iha|(>b|62gLH3&;B`~!&g%CR7q+6(vb2TDTj`S*oziK$ zo!oEofc&D%6q>FC3UA|UPV%;lm0@9Gtk*b;4Wn2b=mi*)Epb(eiI%BifSi$M4RFK^ zB_<1dfivL2j9mSqhP=!;%{?}*DK5`9zuF|}uGlo3hj)kDpzn{miX}S-e;8rycZH(d zm)(=P3qyL&=eKuT!&d4*>ZPL}`o9C)#47$&1XdQr>RM;_w?+hU?KJ(DgPTq&9Ne7v z9=C0rf#)}_ZML~leXC$cl;^l{@GW@-&D0S}ejPxLPg-}+$LoN8BCy4Qt}N~^z?5*WXf`{i>7gQXU5%!8AdPx==jCB_NEr z*Gv#;`Ocb^g338wEYo(QG}3pb#FpoOAiiEIvl|oj=+De2GAVXX?N6|O)hElSR?qJ- zlu!dS^C;Kzm;lMityHLTFB^feY^zjR{3r{rQfr`H7~Ik(}e{3;GEJn)MN6{@e7Pxz#{-S z$+^oVc~p)NhcFazbkUG~ABWy}*-l(2TJ8;hzh#}VgaY-hX;n1DemU!b8A?ZB)Ux~u zw(2vh=%@HM?O4p3ZdE&p_K%UlaQsXrZT4Jj8o)cgEvMHI@}&J!$qoTBb<59@`QWLK zz8{O_pn!Yr&B)e!$MO6W+X=rJZkBu_4X}!8Y&`dA za>%QcJu`$<5%()$IA289yGKDm@JF?u}%k+gbS3?Bg$(RhlPBOYhI z!^j>&I;{JB^8kykq*Db<9)*hFv3;RXSfX#!xaoT8KYX#$WAV>gdv*2X+|M2$=t|6^ zKM*u(gb}z~IXzoYmVmEk6fyw`Y$Ww6lbJ?Vbw-cjE??F&s1sDQ&Xsrl4EP#ZSXY*Y z?Gh?+z#xyeJWm7SfbUbiW*0cWYW(><(1);vl4>=>+}k4ojIowS*{k_wBITPI+uiw$ z-iI2*2=MP8C<$N(s(tKcL~nrkyDeqU?r)eFtdyJwpbxUwp)(Zu?-K{&3wzfXPR_EY z+MuELWkWam?TroG*zRNt*}y@;kF(t+UVk<2=^cKbs|5r42lc(+r;&q~qn9?!_umrN zMCY{Y^NJ0Y+4fCGq83qXVHtf4o!qFW$%GR!Y;XWLBXFH*K=||z zbNvedv3$Iru0xUobp07k=OG}ggbjY|at=*p51wY<_lF6y>;sq!;|zgi)`ebo0|NsH z(b31vJO3C~;jwW#P6nxrh5{&rp;vW(@MB83k6ZpP{C=k4{x6nEO5emoR?8esKgA&h zFdt|*lc180G^7<2ng&4DgrfPvO1l8I3x4~Wki}G5pW}Ekt-x)HI9htN-(Tmx%T&7d z@(YDAb%Sy-Rue*726&;X&Fft~Wzf@Y0!7+aM6O)*L+k@EM&^wgWx{B^g2?OZ%butw zgo4|OJ^RCo^pSwea9VV9%oY0=T`QOslnnmVmc-(lrBBUNMGgSuHcW%f33BPY$ku!q zV$&9&-+(cv2dCd4@JWlS(K_MQpm&(V`of46LF@Dc%}F~1yN|EPg2(eUt@^szMfRUl zphN!_@~!pMR?O!)E#M>~koWDuR{GwF7OaUkme_Ync+@^@&tPstkz~>@O*LU-N_5dU zZWFppTIi2Wz%n2aOVgs^(OWa3c<`bFX~p+Ug~3JDv6_P6U?}?_s{#mLFwAhVO#}Db zd;W70BgD44s)+fOc2g=IP$j`ZAZ_wGlmG1{j_*DmpdZB>yG-|??6d#bF&iSg(Y z1G_kdlQXOZevmZ0mC;3VWj9P-Rmq?LK&$_qPDq_;iIjhuU)H#a{R6|U@wym4IymdF zQ1;WkO##xbM_JQE#Px_bQe3d0K=7@G7Arj{n7dwUy?g2H^*#?fY+_f%eO8zCKdQ)> zK6>+dpkcKDi(F_ed)jqQ(m(Vp;CAhY&jJ+H3}%dTURSw1>*PdUkn?yx;0+lzL);p^ zaJce`+W=sNADQ$Y0R#14GD$Fil=Hu}P(z>506zSG#88B2ZYw` zz(E_S=(oey6Fj+@-3&cSIXt;O=J@HvFh+~A>d`{!*IF)$<+u>Hc=2BsjD`Dxu*$DZ zb9HXV_DL#_?On;t?~=34B=Ls^H8pKdt;}D#`#wW6c$xLfCcJH{YHwjGs^}gxGxFaP z=}h6LMpe`fP35?$3MR6}HeKWmWK-NDfP`wM;)O+ysSdYb$8*V&Nbf{r{l@7gRW@C_ zT!Rz}**fDKG5UM@hp6o@t{4=Xs=9^7(Yn~}E){g}<_>c;W0)BZn>zDr>c_sV7kfZ7JA$nd7R1f(WIna^by0qhA~#D>z(CWizY+G0G{gRF)E{TyxeXQzzVHW z!`klr)_VX?^lur8L@Li4KfUB%tw0b(d&4>dAgjallp}>yMo1bi%+!++KP$GRGP;;a zsp%0)mWl~BgW@tB_MFyjxN|t@Yg@{)b(tP0-xRGSRCy#EJuSSF$+`<=RHWvIE-=88dzVR!R=sBbkJzYUayEexY) z)D_`j*lBkj>0JoUX5aF`x8Jq=vP58<26uc8th}{*Gjd}L;L9Z7DrM!m>`6)u#^PR!iWuT}(9wJuue3=NJ|= zGY;BNVilFWUz5o(T)lD^DQk>^YC{da%QKaFD)@=D<0@5 zz)4J*?cHkoNp{2$g251nxA;l7ghW=Cq0cdZ8rL9)v>E&z*6Adt>Ra{;SSRJ#OY~p~ zD`?rz(IT4>$sbcPTQ2QSUSHZW-d0Zz?6kCnYlDu8D<+Xao3YNVgqiQ|@d0^& zjpIdmaEM?J^Y15|oD0yZRLBm^7?Fc&^dq|y$RF^&gk1aKcnmt|fhilFD<+KuAYHjO(A}c>i!&8 z7j3b|(xAlCB@=B!lQ86iR)PUeQ+l{m!NaBu*vrA4YCU@(Avk|@#v?y(ygoKh?XzO z)p5-GWB3P~s!m6o=sEp}FAA;N16+a>E$H zoSB_$Ii0TGENHD$bB^LRUjZh^4f@dkny#Qvy~r{qi1!}UR&Jy!{FCUr7;q+sO%7tn zzTtR5e7ePuT|KDS`=hpAXyal=i5pH=fH6^ch#~$3ZZKX(<007c9_dyT+K9lx0U)qCjkD?t!i}hH8+b-oGyppS(fq*jS!YUf|hyvQPx8sYkH`e!t1W|7| zKhmzF$Rj6)4a|@w14XXGr(6dBT7wtJn}_9QowqiFw7)MiifPZz6F(v!uq7DQX3 z5o2fVyT=#?`mI;5io03F4Tsa^Hb)WqOB%_{@g8*-A3r~8Sk;42u{x=~F%_6zv$(`q zSE!`7TyN7>S_i6*nFaOJ&D%R_oQibDXzS4tDOy3M?7%SPAr+^2a9jpp>bPMf*7Sft z`2stOlQ7G@|9eV~Bq#j4s)DEpyp?Dw(70;cKk!5H=6-#8-Q9GhN3 zjLxuKqeqZ-g}C=tX+vJ>GIUz`v5uq?KNGcC7wpBl*L#Fy6f+zpr8 zYk|4NTD0d^QGUBv$shp$Q7(~Yb51`k4Nac+ZZnnVlJkoa5$_5@f*lM6KE~3_JkfUy zmrk3|zFed0s#YFpvHt3L7kua9UxT>$DGkuC z=kGcKgVT{gV}04fjeapue02PUnS2}=wHm4M+)x!m0~=pS!Zyn*mk?af8q#y*8<0Ej z7I`S13VhvPrBq1uU^~K-3d0KTU}aBrV)OB zsy9ez|KP%%83}E1w_4Fmrg`CNDcQ8wMoqOa%(y^lyI9e7)bBcJf87b+Ky*_6Z_ zQ_3q?OaU9(Fj@JFQLosY5BI0aMG^ngU&N|2)%3EH8=6;jXDXug`QRW=+i26p=W7kd zAgdz50~Apl&^=zggsGe{rRF--hEY}7AK+Rew;NQsU4#1Pq~0dPu-xtp%%h+Jl}?7$ zBhWJ>69|RNfF!q<;gy0ZnDS^g-R8cuTE4+*+c_3dJKIR|WSz6b2(K&v(rYTND|Ewl zv~}e)Z;vPDpBp#+$4}42_bZEiYLU-lkJn@6ZZ7ixVC_O}^4TJlli>Pls=G?LLuyf; zKI5|Ut`O$Y2FNz%&2+D6CM&+kp5wkP?R})`GyNQm-52>o^DqNk9iyKtk8km}{aPWm z(&;qmwy+meydUP(cIcRGr@Hd~*_t??Eg@Y8CHLe9Z8S<2^eOdKk&vhSs2jI8nu?Bx z2Sv;&K*Zs`x-wA8Srxy2hiZ0NF%(ryMpp=vRio;?M&#(-QfLE9^}U0~h`m;NbfEJ}z$F!O2AC+b2xo_jwbjAv?wx zrE&j=HEci``Wtx7-@l9F1q^;JQdf%JUc1}FK1=@D^zrS;0B(c5ciDpv9XDd~i)=EO z(zvTo)XqGRMh&t1HNR=1JOumX%)k}kT%~`A>1C$xQ{YIV|Lm0~yLYWn|1GDlv zZ#}dtGbBAFU{YIR_B+{VA=IS@v*jQg-qIyx)*L}-5Y-N4 z9E1C}da`{3X;k7-LQg@Tm3DRTE?%~W)JIC5cd{pCXO4$?J&rHzo;`Dkep9uE40)|> zQA%)NT;`N9S^``+E*X~=3=v(-YFn1te73B_9@v2s25}2=k%KeUEt>~N=F5`>;JpsE zUnhhlJ*4aASP1SIz~NNL8@?H@{mWbagdjt?0{xlhbuK633VF+|xM9ej>R+}U*v^vd zDXllG@f$=vNtjzutQY*wi1GEo{%y++Vc{rZNKL#9c)sIqcOt!(6Xq90FJKTH({#KF zQ*14Y+vP)WIl8bvt)e6$lOwDVfNR7hTsOQkHknK>m0)40X6Bo5Ds8-Ku&`ylkei(5 zaYi|$t6Rzw**TjWz1a}FFBr%aI_ilH4WEu**Rz9udh99aDV~4(|3d&`^z)Rm>jguMxzWK0njUPLgyFtDR zQK*9n{EY!D6MmC7sX~=e9>=eg3(1XQpy$y(yG$9wmoP?{=OZ)B)viV<%h1-!!xG?;{6<<8VfR~r*n)A9nh+zIu__hrWv1_rx&Kfn0zSopMlDNV)yZxCX=4i@1;lY5^>?O6}&d_zG+Hm-}lu z?R~;eN5x@J17jN(VfJIMrh4K`3nHokTecwcJ|pzF6h{ES#9P2<4@X^U2xwsi!t3Rr zwOv2?7c+2fXFqjat?`S9>RK|1aNyFUUrITd42Xr@bh5B4B0ka^6`6KED) zx7&YlnB@(6a8Khezcydf#4GY{skgXF&&99yM9#;5fAIyRw{|c*$foM)Z*DHrMW4nZ zBD(#V;yp*O49MtMxLq@6;XX7@0t}2mo!JTE=C;5AYGYd3<@lpaZLSF~Q3fJhbyy%s z8GgAdCZjw4nle@^9*4}%yTxs^b!*~34robzm--fLe?1%G>wivKIr%0mWw&2%_z+;Q zy0@k{wG}qTamT+q-;?Ft1{WTtf{Aov%Q&3_*OyGJu0d@z_bDSoH zn~(YnxCuXZ*R5}4vP;u`g#DwZLHUVuEJR)~PyG!n2R$c2Y2@1!gh!K^Gtr46C48q; zpst4sw(4Bg_edi@lAQW}bTxi(yhu!;3q3rJ) zqw_Z~zm!B(&xZe7I0|M4F%)9Vi`oyu3R%M2eWrVB2Jvt5-@7){^Q>2pm_o9}RAJ5o zDg^nUV%B7SO4x8v^JKV1#tdkg1qop5yD9dZz*E9~y#^A*{K@QC<~;JtRD7F=FvL6> zfFF8SEQ1Ds7DK$+caAC+mfB9_kIH-Km8&cRi5IrsU6ap8!X6h*=%>ff8DLEjCHTtX zz6!Aw%}etKft;bL)NPb7uw-GL&w!EZ_Z*wH8F0H>@cgTs0vK9s2@CynMLKQw`z$7ZjIq zEEv~ZLp-!hgh1#d{H)dBcJ=Ey3H>O3ZIKf+#8v3W>4w%^Av|f^v&#Lbeu~lG z7OW;af<%&UnV_Gk*Zg^vlA&(HZY<0Z{CQ1B;yf$+!PV#a`9&nXP@SFHW-Pf)!}sVL zKP&>fN?66YC|IS1;CV0lQ%s+L3|9RYp_;Pt4hB-FfCS_ey^W^rV+K~>lt7>kNpyWu z-i2{V`OdXe5B1$&Bg3^TC;qSlj2>^Q8(bDjze(TupW}H)rrXuIFn~*NX7?6a`Cec=|5{!^*v8p>DKt^@b;26WP3CLy#?Na$yTrhI(#e$bZEwq5(j)o)dTaq-L4Df;LQ7duTr&}I5243>PS_x8mKydWd{u$IKfjLm&ZeN6-BUe< z5gVaFmC)mDMR|@Qgl7d#vw)!`C!x!!JxciI1Az4$3?$#JB3MDK-&jq!B4?*cVqyLy zpzpT#$np6!61hUE&@f<4UHQ{pnl5a~LM7{t9UBnlrS{s4+cB=ChP9Kz0j@a*F;2L` zUY+`chYEYr`Lu(5imul<#8ofQV*}0ycSYcQTO_kZ%VT@BWbJV?K z!f|(|XWuWKt$3|~VxFv}ck&!G3?yGCvXg9G(pEi`L(`A>lhFC;+9`7ZU$6ULD}|QT zdwu(hWX#kaVB3LSWlrU!fc!ycHNZo_5KU<*^Zxr2ZXEJ}eB?;PX-6}1;5dw9Z@eQH ztMfGyVw(|lCH;0nWmpF>Sh!$K9r$_~@_GnaBQi94m3g)#kH= zU@zn(P>t(Ey|CIy8cQ$PN&J-Kj4K>1&;0+V97!GOApQOSiICS0(kHn85+V1aq;&s% zKb2~XloR1U+T%yK{I8LU^h%13=49+>Vejlj|9=aW|7kZtB)<=169WM?ruK~ezwM?? zoh`==u7vIt<-D}NFv;;{9Gqt5YT-&pb=jOb2ZMSWoNIrRB1I$P1{p;yq2~DyZkPE6 z`S$q6e7ArkZ^WCKou>6F=}^+aaH7TB4$j4dV-Db^|0IZqN5!I2PZ#{r92CSjax>xw zjDk9#=}7M7ToS?$U5(|ZjUa1z1@^tdL_f#A?9nI~#bcx^+&hyBJCI+C__oALS?>#l zA1MC|b~p=Ko>KyYlcPN0r9|yHD1b@J{5x{87M*NQLIl>< z@3zJyMEp$5)beKFJbMhWW(P*yQyS6uJjd8d&M<W zv}-m^XZ#^Y>H*-MOf?c@b_K*SR7I4^A&Yty#jw|661h~8ME?{_2qh1+5t12_xH)4X zHFK6@F)@`!8c(J{%Ql3_|3TL`#%AJ#-`2LRw|2L-ZQHhuw|2Yr+jeVgZQC}t?$)-q zy1(2HH}`*&J0B;LOlC5fJUQn)=a3~nXaX~Erm$ryeaUsxVcZ2s;nP>QQYrpPj{)zM zQN3OQPa|B&%M?NjbhFe>$d<`9I04Wfaqk2{vsIoB@MyOb?kYr-{{0ET#A+1B-q8(7$oR zES;lQodp~856^hw3r6NW>p$`~Div8lq@4!s4}^~X2WIRP15~VM{qgVlsh%myM#-=B zCf-(SuB=g!Rd7w5fYf?-8^SXWe_(hate$X^M50&UCF!gGSiUgH*Tk-{KrZb;#G=G= z^cZKV1_#b*@bpg-o%?1CfrYMr?F?#H238le1AM8mhAN5q3~K(3UEgcMPklKg>t^^sG*C!NQ1ZxN`;um!^RmZ}4rKN^75-L(Zi!=Y z@oLjyY_?a#{ErA_B}v4*E1-7@mVK7w!vuu-6pe3l#_d_MMyetL=<8HlTsbEf5TWy(?j8BHV}F&2jAK$;P%u% zWm~&c!K)X+!M7c|8S4exW0r|oW>XK+3FqOX2Ka(u$(wY=>CcJ z_24X7()Qyry>z%4%Qw{k*Oepzd({>KQ#P(dt;-li303%OL|B-wX{>)zGLB#PrzWQq zEiQPui8w=jN?2e=2#^J3ZFL`x9yRq3*ZAfp6%yRO?!A^EXlT*mtKHvgz7Zek4=Xk9 zR2Q|e-bT&>p}z5DZx6wWvV^@`*OeDV!?Uevh~Up-zD4Hf*2RIpaS+wN?)g|6J(x7` z-U$G)Ha#KwC3lapZp9s$E6N7XSz_JgCSgto4R8OdD{CpK(NqK zXfGK(NpG20$X5_9lqnwUze6Oe+1W{ag6!-KirBqR>sba41K2hp%*@ZV%cp~l3LbW? z#^^^UrL=MJ*N=Xtm?8CB%s*LB4Nyp&L%nD;qA>X-zb#PBAdY9kCf=dcKFGdK`o8oP zxQ_A3siT7oe1R^D1#tahH+3*vLA;N0yx1%CI7iCf{|JA}=(9lyx>I8o!lHw0eWaHF zHnv*ysZjH2uX{6n4c4!B&sv1Z-P`@5_6id37M(gSVVc=sKIH>+d^-u=xM*}qFjYNb zsEv>ti6U*|7(Y--rBO%n=Mse>2d3Sjhb3IJkTsH%zk$D{=8+Wg^X*{-dMX9VrE~lt zVbQ08J!f8Up<$AGjnDOx`Wf!LN?{-$;zLs3@+$8MnLOTlXp2^hyWQar=r1pKpi($dajWGf$+R09!aN%2Ftc6KQh|v#2 z=;q;S=YaO7@8UmQPg*>pNQNbqRKB@c`R69C-;^zcu|r~97_0Y@jMBhL!d!Mt=XMU` zw@>GOkrgAGB*6QJfM zRKE0EBT|JWMx>I8Pk1I-XY4(Km4k>D0c6077)1iA%nlT$AZepu3W0GvSIC$!G!iP? z^IK8VpnReH_gfK~OiaeR8;l(x?;8fLf@mWVwiCVDrOU+c*;`JKxjDomoY>ILh%q?B zBALc4q%HDo`Yj#UQ(OY7^^vytd$mNpGFbZJL=XVpz~(W;anBq|S=EyklRE>hKooe% z5n9twRo3?Tph-QzLY0$-)c7XXuF|WBQ<{T!kOMZK!={z^l=|iY%?*mD7lo+$;sHH;j^HJ$;`BXYy~-!ht^)IDAg46NxXsk;Pl!i`i22 zEmUQ}gD}|G5FAUSRA_04_kI5Jp+>SUB1U{zJgM_*5=08fOC_WI)ZuQn=2NEaU@{lO zwuv~tQGovje~|Y58Kllf7shs0t2va{Q@NtSX{Acml|H89<09;i8>Tw%f*Y1^t7_OZ(Vg>tq7kkN=1Wl(Gz< z0uKPSF9W!Mv2q2vU&tQ)e&bf+Nl!e<=8eqg*~2IUzQb}kQ%1uBDPU-yOyb5}E~%xz z7I3O9-l?cWrnJLCga#VT4BEyr@xk9zA^Hxx z?BaK`yXn#V2J$tAab}fIPH6UxQvEYy{lzZ^Dpq1ajw=9MgP*Q^eJOjZ@Ma+1l`-v= z2~B+AEFLFui(#q-)leUyV#sE#(RMLA&kq{VZSJJUANeY%TuM`P^xpwOYy2n6-YHr% zAdd{nNlX;Y{>1^@0{|p;&Fdm2X|aCp80hZ`fSe4~jujAocwy2zDB)w@*KM9;E8UPC zn9WFRl4YwVF_Q%%Uj<-cr>X&FC(}D9KDBd)8Zr7u~NhK4|E_Df)al zKJ~q|lVqGFr8!;zr!(;nr!!Sz20g<{@e!~5dzJW&3~AHfGhssUAlx+oJ#9&ise)kQ zxuLJhss~S`#?MXP+NnaO*h+DZ!t?OSCNtL>w%!JBGGQ>RyJHAS?;o)EocH^7HQ8T} zJ_1}%_iR|vjgy@jmLEN&;x|}c{plb}Xu*}Y+x3&?$_&SqwpM%18n-3Bq+&!=FUzmT z{Gx*0R@ukr3Kmxo$tHjRToJ^(39tlr2jy=9bRep?KyRA>UZe)0stS$zArGhL`g4%b z7C@hmCFu3u;7Yd&V3IKOgwL@1^PpQbut40D(SK#5o%eHaT-3PQcAI&*WpKrl-_0|? z;CI`g9_Q_BXA)>>3%~^K4+7r?;DUF7@V5cv;Q1i_?f*9S2K^TWL=D`T`bi7eYS_{G z*JvxQF%7*LrAX2F$^R0HsKWzH6NP!(eQ-gAN_&1ZIdDfhRv`q&0Yp=mCc7w&&nUaV-@&;`0b8iUk!05ss&Aio`eD3CZ< zP6_Xd+jBcDb3fu$@LRQKWlw?~hgFdgliJ#9S37@@cl?5u3CmcN8+TKfBrh+wEw{6G z*`y27>zdm|Ex0N+`AE>_KC@i z2aRz$q2Nksjv{s-N3!fi8|fTF5C!R<(jN}z_gsj$)zm&6kjyT?4g3?-wF@8uzW}Z6 z0*cAD^o|LPdpo`Y)Y}kKe2E(ALF!l^Wp|DnCD){_X9p~xUw;8i#QGwb?h|iRwgTXZ z{F96RhN@!Z^se_U7P+$v+Vh~J|CWI7fiU*~4B*Bf;XMGMKz^j%mkpM%9DZh2KHrAe zSPtR($hp#Pok9rGV`Wuz_GE>@)KlqOARcnBj9dVr^6F-)xg8$0$p2U*~Oj$6y8eKnK;WN$mDXRXOsL6i*7YmTzZ>khdM zab1)+PBLs}iq$Y1$+;Ej=sI_uv-S=LCGf=Qz%f1B3gREB@BdQ2f>!1|ph%#RmcJ=c z#dcB6XB=EVSfLVJeR-Hs;zXA&o4{9X-TEmX!fx2+xi@lukR%w8&WkCU*CTBfO*L`Q z?^D`4OA*OC5l;}>b`1R%Y6)-CL{rv8y1YUegmRkXzI?+ijb+$BDxccTIyCyW%HIDa)=NkFTWks~CIQDYWi=q@ z`_K#r_%E>&myVAudd#Trn#jMG3Ke*Iq50ye%j+Rm8i%)_gu}J%;Ltu?M5tXlBAQBOelQ0SOk3|PEHY-w|M~Sj6FFrr*PHX7l7PUspnCnX&S2?7}lT-0vYD0SbLQK zi!|UJJMjJu^&a}ZNT&!rnL^Nw;zypgoL!K0aWbfe^b2qfr~_sVT8PX(KQo*Q1FJ(z z%I>yiK{uLx{+R)cY$CcklMY(!PLBm_M2w^iOw}&_muQBi$qJMl$;yhnyluE6FVq6g zOt#Nx7|c|p)C_R)Es|;`K#5L_ln=MT!jX&~ZE(?4^AYj9S`wkL9N_S8C6ZZA(rRWBu$w63x{Q#)h)PxW} z$Khw@y5ko-40`W5W)~4yA9R!HAAGm%ol$q41IJf0zEI5Vs>rGfiGV1{f(mRw{1%d;+i6gP~Bl?KPFCom>>t$%zSVx)JmpOojRuN-7g)4-s83{!>1 zlL3eJF&cIa&PAc6M(#pC!R`5R6iBV_1o@f+1uxD+hAosk6nTclPZe*iazsmsvuQD?fOEBm0s^2pl)-=f&}Lh}CWSU> zhT2qLNc0sTC@>4P)VEd^80ke&3bs~;>_VJurCqPqOD|0Ae-~$zmFrt_aFMEn)k$J9 zeADw}L2kCXfWF|A0fQ=*b#7!T>GSVm4sW5ejj!`?|6I9|V9L6xOSs;x^QVW`?DlOC z+0GwqxDWvz0EaKZM2g4-g8LSr8kGr9h7HD%VIoz#9g~n^tUJ$rY5&6NC=y z=F`cy{P{d{On1CD(Gmg=uFrgmL93I2JTOicUE!-e2wdi~j=SF)h7wkx*gFgrDT3Hf zfvQ02)J&0i7w+JdPm?3HoG{ZaQEkthT23DrUr)uc%-x`CFe@S8c>lCjT`f?Y*P3Ze-YU z#3;Qd2jVMNsz>8i_~a@z^=E6PNM?r7P9Q&!bs;R72+mmuF{K8Owc%y5;yMd?K?^UL zzb7|UJ%YoY@)S>MZ^LTteR8);X>}LU^ons9AK)syR%mkaxf_uZf2}xr1jg|mmB>&q zn!2p^VU)EAxlqM3=2sQ3)1x@Bcw@thopC1j10x#qXEa`QB~NodDSLoFC(U^e;zR#XI7Mb!N$JTzT+1 zlT0bolf#+#Tvur;18sbH@-kiHzXg8$9EBxUaQt<0n_(mtYqaAiABkS>@Mgs8G^n~B z2h1$Sdq?S<|aIb`}KV>pd zhL2QLR7i!7;Wn|YNJ4stQrazv@D5Xo#1?bp!yvK}Hjs)&Dg9a1euKTQ9_B=Rx8V!vRwK}(31jBFfl@}IW; z+CQRrgkyjQNWpP#DCig#4gzb6wpJW(Mq3~MSyGz2f~n-2vNaZXUffWl+^jea2?KEi zO63UvBfV;ZtNIMNBId!);o2n%RgTWI$^v|YVM^t84tyiso3kDS=EUpG4>}&>zDUG_ zU%XRSqqV(s=yG)=K@ok)N>}J$3*FJ$x^)4)SaR&s?|C_oEF}5C!+uM`|8V~&7b9NX z4ut^)1_pr$21W;Bxdjk_{HWOeBX$3e2IT+McC2V^IuUZC1@6{m)*6c2wRE*^{thN4 zM5Y91OIZy$Dnhk2QRxE2po0vO3?@P?3rLe$ra>Mu|Ftq}VV0iCf11d46Xj*`x{vob zH*TCdj9W&!!H8Q?FOYa>wgiLAO;N?l$0Pym8MlZ=_Ll&|-7MH@0cnOB0AWTan zLI|oMr0^mq%*vfG3*D#-%)B7H1{wb%afXnFWVw-x02m;w2(A`dLn=KJ=PNn1vp1n> z6$`E~vmtooO#A%b#*S912w$9Uk0smkYh2}b38_q{jOER1CowETBsay0F_)*NjNgH} zbdJvgD#E+aRU?NGa+>mSl9+BHAEtyI%N)8I7~k+cR4&u^k|J-e406mmh9=Lt^~jm| zt&uM)4tb7IZ+v{=%i`h;Sx5gFvPE|V`=H>agoh>Ubc<SD@Rkx zP$@p=;PR(@zW#|)9Pkpr(!yj^<^Kex)Dvzc{$X^FC1oby{blel2|+IM@&tV=vd$nd z{;#ONQ7r>S(X?Ocv{T{_MkJ3K0U;LdUzu`W1Z^98rUdD`njxlT7(|G$FQ!i(C^JX9 z-2h@92qB1y{_x{0_H$Y_8}!+)?RvII7=-l)3q>xCNrEa}&x3nYwcUSU{>yH_T(FU& z%-~1J1hB=P^A{LyXCs3?flcQ?@CIa9*xI!Js6M~aVw;kDT-SDCn1U-^>VN>bp{N0|8@IaM_g{wS$X z{VF0SO2Gc{=coksz9%5G`d)t>sNnj8NmBAxs&oeI;qnu1#G1a5mjM^RCC#BlZ6 zK$p6-f>iAcYkv8P1m3M>f|Nk)B;5$K?87-JT8esifD&WK z5gM!*O=zFU6e&t?;r^%pySkO0u0g}EL4h++Pk~rOwB;dSEM|T$}o}qlAka}Fsvm6~T4!xc5 z?N}@9&xJ0Q9&IRMQl2W~gA zcYN`3yYkcp_64NSp%SIm#j>Vj(Fjgz`v-3kQ?8KknjMFHXizf=r3N3`JNUSUeQ1QbIL54*?vGn z52s#+z1Edp5z>NjQEq~r!A8ZAY^X(jFg0-_pGUrcF%igQ;MRmP+vw&y6MiU`7udz7 zoVe=w7JS@Ur`ilSq#w+&Q@F+Woq0$fFtML0AA@8xXsr|5SgSJBsq%$)Oqdi~q36e% zyPvA!(rf2of*M)XO1&;xs1ik0-`#;$dO9DFd*D7xviCHt`W-o95K=dZP-`;Nm@Q9> z+nds(k2fCkoiafd@u(=P3uW!ZML%uy>y)ythg&=dRk1WEYY_` z%x1)Zjl5S=qcLv-+1C|^;495sK+P-M+@MJdQk(B(94UW&Ob=qYr7#}Qus)|R1o&}v}wE1Ib##>wDP&1SV+(0c!{_oF<&?3g)!fvYP8u-co^fsV8sQbGWxCX|D z!0Y_1@@!n015qO;=12n%D_|fVoCkD9IdpMO9<;50hn1l5OzS_*6f|&ae1=G}Q({MzD2h^s2{z}jg=#%JsM?_VeXasT$ zu$sxi`@B{7`T2&3sur3q40;D(o}V8l5XyOD>J;;6l2swul6Ar7wEe{`U`5i5!Jm_y zuArEvGdQu#nt-uqN*?AD*n}(40`G&EA&XU9hpu-#v@K1s zQi~wY8b_dz$nbulGW-=q!gjx@mk9KS`$(>Y{>X|i3^VoqBwHZalhkT7T%<|4xu_b* z+-spdtxCw}QKs0K^&FQM&QrnZWNl0)fF+KnzPF*eKKb|1>xrBb%(qLeST3OxNO=q_ zH{CR*X(h0ggDHI|q=C|^BPVy@lw7GZFb^FNbFHn&qF9@P{M=?5@{?(I^a6Go%eTet z!sjx{>9qz@di1Oh{2m-ik-3vzfq&XA*pgMQt9TFH{iAbf(N&|+>Xiwv3DJhX=FpO8 zpE)dQzD07dnk()Xk$9jblyms9LjW*XbJaoQ#_)y|Z9~&n6`_VxMTNA-`Sp7ctrZzY zZ|FhqzOyU39PmTuUk~&H#TgLnt_Iq47x(OVr2n=hLepWQxLe_}^SEUsda8OB5r3m# zo+bB*f~jF-w>_TKIaSpj?Lut13k1+Ohe2LGw8NGB<`j55u=vRfGhHt|Y&3fA^qjP#qRH}2H5Y26Ei1pyS|R;$NQdq%8gV=Qt{;^P}ZDWcu3K1?Hy2!i*P$&M5`8A>K1 z<-1elC|wf&IBmvCAAz{LgQzd0zYu=ZEitkMvUobLiFFN-zsfPPks?@9lWb}d9*e^T zQB7K&t~>1%qijyArE%^c@0UW)^)h6O6Z*V=w9qbD6h%>I;t4HM2c|I#Z92 z`b4QiA0i&P#2qx{pg0vL;Ubfm%3Ec(H@}opX$`DDTXy_Z?|K4|I^6hVs@3gV5hK+0 zVDS-?Gh6-MFeL!-*q%pzMe7>)Z{UrzD8DD{vl0|{ugJ24yZ09SqF<^IC@ysnUb%1n z1R#s^T>l$SodvS}``mt|?dhdhj$OnWRWJ~&mZOwqqMi0NFf%$=N1>UVJJsAw{=$mt zbZT+6@sH&>RYZ1TyydU0FAWN=HdvgnDWr6|p*KoS$l9iVp>rz4q%EJ1*m3UG(s%A_ zc|OPTj zn*98Di3%1r1`}vn;2RP(@0`tg3|jI`B3RnaSn>Fa6acg%2J3v-%g=Dyc`N)p>sY$_ zFqUmQc>)?+$J%}T;rHFW86eR+7}`DG0nsEP%s)+m({x;SnfnWJaYD_wep@s4w|fRf z<}?j*YXe?!pa#CZz}hEFSm9dfuYuENJ?r(Z@6S|oL37ULt?*l5m(ZCku0Mx=4;bac zYiSw~MPGmJ-F{yjeQxGnqm|8!A7ofF=F=b@LIaVAB=c#}ku}sWKl7sgx!^gXT5_da zs=8U0HRhB;=UUVv%Mwh@3wc4Ya~tffp8hsnW?mq(WbT@Fgb7?~Mv}Y9+%oD4zej zQ~~d+3@fq$(88^4BL67O{Ew;`Y+v%qS?s6y3lIYn&6aL$uU9{IcXy16OF}x(0txIJ zzV$qq4P2~Fz_$l-U7{L>s@%UVqMNl<%wM5>1eL@ig+pKsTk!Y0C~GQa*=kjO(iS1E z(=Ij;N@7{69^&IjWHKg#?|EtVu0xtgZ zWN17F3P?ip??*4+Qgmz!^1D^d*;)ANvA32aA3jg}@xvuS$;OLpCQ=|SGf zzNt8-ra|M6F75k!-;9GL@hPlIsV+Q<+QNQK^_j=2T2i)d7CShFx-3JK-H7h$%;M_U zuMH?EjjWb-_pF&&x+*Z#GFDdDlmiqTOB`9!arCG>P$ZK}b`5D!&X--xm>-ELlGv~X zmgYuo;eQ6A<~^K^datumtK1)eyWdaW3Px1Nf9R(HNx8>eWBJl-wO&nRu$Gdf%UDyg z1c&S&DEq7|cg{J#Nh=kYGhUrTY5ZX3V2-T_hJOWwwxlE{AS=GZRo)G!0`AP+n`#oFY{o0O#IPfzB%ECecXJE^_YHO6m>*g0rild~I5W%02{5iq57>QF$mtecd#>xNas_Ir%i)kdNZC%>i;jY188q0K6p!QkSlvoiwG`}Acd(Kcpz?drOE%nc&ca@UKmiG4<8 zi0+EA#92#Bm0o!PQJxV#W*x%egyYksLu9BAqFF(3Y?|e1-BQDEE-vhfP4kRwN|~s4 zHc8l#osG%hm!UO<&Y6F(;f7xS<5t|JI`evkNc|vBYhGqroyx0$zIiCLHyahq8fmp~ zq48}a58%E|vcc{86paEz3YE0XZ4)6m$pm%=7{~OU?f4I^?&CwgnNbrQM1DJ0jnoSg z5m}}k#TI(mzInCbYurWU3`&^YOp7|S#MuvvSh{#3KJAU2ZoT(^xCc#a+)^?|g(r&i zN!|s?snntjph$qj+#|%oD6*J}$Sho-r{SQ%%t%-5t@|DRLMABMMhPTogRioy|wi|WfAf4nOtXf9- zRxOFC6WE~!+Is|g-QUlwyKp}Ev(BW|Eip*j`Q*oFKkPk@atN5SaRwRB^|w#Jdn2*$ zC-Q>xaw8tpBRw^{^TR`r#Y7-HQ`ek^{$^!Ps*@CQ ztx|yx1q*yg;03yS`Ud*Dx%!thUUO`S*dsYm%Y;h;bKv)K7B4RP)T~&TofTbRc?;XZ zLMFvmHm}%*8`@v8YFV@=szwVQ%J1j|{Qj!@R9>kUG}>n}na<2b4d$|DS=tU~7GA`; zSM36%^;r<7&d}uQs&hk4ebJ=9hoK~~KWMrulm~*znvEpCE^pd+B(AZNj_VJ*^N9uC zKmYy(uK&H|KQ-enh(l~-v?>S3KbkU*G_?v!jJ3fS;pqCZAyx|i+hsj8v~cMJCI6E< zq0#vBUysK7XP{d)qA61eBaDI#PFS)T&aYD2{bIjuQ8ZGV8A!lK)zmM2_R#YE5zcp! z@*4<9Wc}y*ybCDzAcr8fqWU^Q6kPEG^)y&6;HvNVc%BRf2lipVTgGFH*%Eo3qdkh& zaT+2`OM?8VP=}1hu0~NOL)+mYH{&P;sun{#6B~O%;KuHEGokBwL zQU1RluMT|iKc+D?-zgG*YupxDa5SuqXD5G9KaN9mW9E^kpCyx^;13=TE*!M5wB1w> z0X5_deMprUqbGAqx%x3bJ#yzfnJ|HyykmHw^DNyRXQrI^i=Kkbs;IjqEfkYMz3nST;q(AAI z_0SnD?E6djTU+b2>fhpX3FXB^`p2>ncbCfGA~uex$@=bbxtrSPhds8UFy3PJ?1@Pb zn7@WA*u&-9q6cB|@cMwvb?ewIIo1`&cW~5Qmu1r-Q_$6Rzg3@?qkxU?AdMS<5cp2( z?|cCYP0t^`iQddO>nO)K<{3j0g|DWf_}5J04a?F#Zs*d*ZVrJtu>~C6&h|Wwp%vfc)3uvch&XOCb%;@JgZ;y{Z9|4QNVfVcWDaS;+~N`17a zGG`EQaS^+yr$0lA5ZLP++ssCh&1ZpD8%j-pNEr|YCRT9l+N_gdW@gxk17x+XMPoUj zM;cUn;|;;{`N&^T=)+T7Y%XDwV2$)-jBK}<=7!ljpqH1QKy@1z&(m=qzNKF9h&iuW z5*BwDK4L$D;Z;p%U5*g77#B`BURaJk$^A396VZ9H(3547yUNwr#BKn42OFr#0KGTA zM77Vnaoc-*Glz;IJ%`#G0o2Xkh8|b4JIM`yQA8m)AF|{3MB1|t{tp_(2@BQD*@4s& zvm5Wir}zuroTpx(ib42-yLCU&-M~K2TRGcSqkr+!Pwyn3MqNc`*$ff+%hMX_Nnfm1 zYo2n{MB3`Y$c#NeNVDuoh$*PN5MF`B=gS?dR@QE>DE3OFfl%6e4=BQuUB_y<*C`)8 zJfalVh1PhP@xZ2L}Uv4@9 z_c0>6ets($J~G0z4VFTgt>oG%wa!G6$L{{8=um|W$A2xX#LS^| z7*9M12*fV1zIG3$9Ka<>3{$M(!TPbxJCS-WZdE0Ai7)xFM|)^M6=ZMk$5Q4x22=Wt zN$jeDaXV&CfsS6uvd6n5=fE%dP)7Ga2WVem`D+T=Xo(bWQ4)B!$k$rS$POcZ{3{CI zTr@?a>&68~ZivZ#C02ZvkK)`^#eSlUC2pD4OyUKdxWY9Os55e$+J#vQp60nC2} zU&@ZKLwcEmNf!}VM5#CI29q9G60Dq)@bW*3y*KwZhkw};wJzn_oBSqQEt;18`03#ckTe6IH4@#KC0x;lDr(ATLc);0pPc!6f z?(T+6vVGod`U2e;q@Bjl$CdRPVk9jdku9@F`=I&XPlG@ByW=-3=o1 zxMH=qZt}>;twW078ImAt@E<=RP_Uh*{gQWcfGR!)JA3mNxmiB-xeT^i&k^Ah{!;Kh z_Ui@L$q;`LsYPE0JE!6D2<{+ZT5+OKDG83_#F1=TYJd!ZnP)$N+xPr4rUyQwsD_&E zW`thrbaI>5hLCuilG%(R=I>VU%!~apB#;$K)nvO9jR4svDyR$j!aE>5n&kHQp15_>BG^{D@%(oG3mAle6UaDA6R-E%^9Z(K(-uQsUO{a60ofZ%{g8ST=g({`gax>`#pW@rv7T$k{LoKS;WaXjoP z;+)$0!3yg*UZ^d^^Q!V=2iBj1ne-i2TiU?#P_9|<>&!lA{|0x}?X7I_)DXGlbv+m; zim16>kaQj?fv@&}x3$F3&7jW`|Hkf1cgS4_GdCZ%-oSyN?`B?NPv4yC<-xd;8-#4r zE%QDFHPow`?$-6u*$l%eN*=NH!gPSY%PkRx!Ur68Ja0WOmp@Cc!{xvsoBn*VX%Nt3 z+O)nvMhh?0-c0%aY}Hf`N%&r4chWN-f8}HqnQvUW9WJ|st;bOFu?=-h=Y^+Q`AZKv zzQELW)KsiA=c(9?2(IqcJ~GK2n(g5IQ7;{BKk~cZG=yiNXA~V;E6toI;PjG5ZnT+j zFp{fKl}n0(+H8lf%itiymv76tsUNsVrzgsy(cSkdc|%KEi5A^(UoCVfO1wkfD9i;n zTc_+a$HFq|T<0`f>+IkC>4MaRrvevAieG1*+55r3Xmn_sewX$&508}Kwb7?C-EDH1>E&m%7rR(UiZ8$yz>5)V8t@r(hP zqJgH!i-;Hv-1UaXJkIdF#<7bc4b^s6tMpz8S3)koo5{JWei*{bOIN|jpj-~gJn0OK zG|F$mb?|he*jl=NGd%>I_D`H$z0IAp0j>EOPlT5txfe6V5@gq0ikwyNan$Hco=EeE zKS;uA9T^=5Gzri|cRL23qJc_PjRK+SoALTJNc23clug9A5?ot^qom|W6a-IIqnaeZ zTIUa1mk^ock7!XD2jG-@f=i5&1iLSeF4XoS585w7%cj-jDYEUVBXEYQdq%=*jfKU0$G#a_FRqYqvJ)M`|<=%QD3ec(ky51Z#_AWAjXlPSp_+C`l}6 zr|HtnG;GA>C3O`BR-ou;j`@H<+h^?b!?xR!RH361AT#NZBSTmfTzRq66*ZA12UbNB z^lVCyhbYKt#SA&D2<(Hbi-n*+l+S}$g?%*UC&D29&U=IUZiP6D>TQ!~tUg?eP&r0Q z_=Zo7ufpDGzWH-^t=!h8ecTlmR`}+x$5ugO8O=}pe5^~Q{hLF48g<~=x>uqa$`CX_ zEZ7NeHi%64KprAcV>{%7vChT|5#+Du0!}FQ-zk?hdF30LfdJ27N`s)yLlUZaZnkDa#*3WHS~wg`N{k9Ul}VU!K6Ai4 zCzVj_+2urkp2bg3HW)UtvIzyv-wwW7V;-FtK4t`m(=rxbG{}#VbnAkuh>KXrSa2&X zvs$4ZbMP8rK+a{Kh?Aj>#10a32*PR)8^-pB94P&(R0XXu8Lcr0r*{cK0q}kAzXVe_ zKU$#u-yxb+M-KH~>1JukaA86}7^Gaf0hR8aW;5lG&utJ*e@nXJHN6nB zSuG)tFs`m#a-Eh38s3dgg+&`e*u$dNfV#_Iss`UJgDJz`RxQn%b{&tyuQf)g?j0!k-SJF4)@B8~( zsjT-|1n809ZXn;#b=^_$y%z9sN$2zX8a57V%>0*lf-F143M;=v=G3^D#nCw6Tmf2u zYpL+m3fGpBV&=g2q>xi+=e@i*aOdLDH2QjMKj&xuQ;QV)?-1c@0sr31M+<`n%^zGl ztOnthZRX0Jevbk-z~oH|QNrzQIgIbqt>O}dBOufawsfO+kMOG`tiyC>B0Tl2*Hrq8 z9IG$%7@X9(Qx7hc90qb{*KC^gxWDFB0I%@SKyp}yR$(__jLY@A{ORX*3{{)b)1?E9SDJ%^-*-M2S$8_Y^yq7BMs*?6 z+Sf~(c>FZgM}=4Sw_1Dch73WWv9LAj%D|na(XYHt>kH4kvB|jBOc%EBt3&oz8YQ{c z?Pfz+&>gI{c5B>L^MYW@G6?`i?!7g@w$}EY03A2Zm$E>HOMNlaz+&QArrGg;`}mTC z+=z$-Ug%F=0F%hoc^h1c`cPC+}NQBZ2>03yha#7|x#v(_OcgS7**a$zZ zTVxUJ*FzuX8i7ttBG)A{)cJpkN#^&647xV%M3DtkRBM502N?yYXna7)6^TjSzx|!Q zh1`G%P{2%bz*6@hU+5kh@9;R!8_;XaiT6o|?{wHF*MUXlJTPJw4{*`gHI?NK2HJU9zz2q4V*Xdoe`Sj0pNic{K{E@;agdNc5KE*vy@Vr@nqm+AR*#nr4$ZS`B_&q{QCb`JI{nt`1%hH~YL z4LwL@<~nopFAiw-ezeDt)on1ofoSQc>{E_9Nim*!VR zEu|E2iP490v0hDV2J^)9sj0#r&%xPmQ!*3qk+C3Jl_`$m8jSk`FO*drn z;|Mwy1cG)mT5R^sjrvkGzM{@E#u65yoE%gk?b1rHl_9Wm3qfwD6ikukB<$Bi6L%}_ zCOIggg}E`ffk|U)E6*U#{;yFXS#7(O&y~muUo-!CXKI?i0Y$?oQm%|{jpwY}njz%A zLkE`{O#cWE<$kB@CJ~y)^sU(1eg=a&2IYp=<~xF4nqGR;F}0&E$GTU9ED~);BE}@I zxaA!SLIKcJ73Nl%e5ySlzNfo2u6t%Q1K)vdd221N5p;b{MhjDR7T=RTU^S>D_iwhf zV?R|9?X-jmfi5^eqByhMDY=7ATNGekP&W~XF=V`$fQ_m^A_cXPhdXLkmh zYEEyL@R-vd<4Lbfi*B7ru}0e~14%b=gwPjWpr~bZ58{KuhGl93`VNteflY6?qHRh# zuTo>@pO;PSH$zse6?pBxma5tsW84c`60w0C{HsUXna~hoV%5Xt6yO_8Vk>Wsdwet+ z0UI4YshT&F!u($3{C(t*foY)>h8DPWf1mg7eZy0k803r;Y>rKQ&*ori(FRYa-80Rr z_R1N?b3X)j=p^ZX9FLhl5b@3}{aDe4tB;T+VRmhV{rA{H%KtnIa4Af|MdL?vK)(cH zInTto+%-;V4eAl~jl~$dM9$KsVLl^$e`hI(wpWsXQL~Jf$=3~t#N2qG+oU}OFfDE* z$9FU(6p;kAHImt9WrzmEGuF{K^eHwCM5rPNIAO;BII^e`uVE;hafJ<;@m)P5d?{jr z@gf;&)i1ve>7G4e11vRnXVuQ2`x^l(Zi3cO{+tLWhb5^gZAFT=5|;TRPwIZ;BF4p+X8G9 zY8;aQ;~9d2|3awm#yX)VJpt#;Jmc`oBk_$jzu0J}gclFtEL~W9{A(Lv(~E&?eo-E4 z#yvghg8z%Ia}4e*in4ud8y(xWZQHi({F6@7v2ELS(y?vZwv*}ire@~VRK2ff*FE3v zy=U*U)^FK98KOK$jN!E|4G}@OfulAPMvPq(qANR8Z_O^GJM-btB1hZ}?r_ktSvKX7 zSc;sS`dP3lEX1JNZHx`p+kBQTke^J61Khk75bZvu9pzgRTy3*UTpmC8<$a$G;VT$o zwmhnBMzZIi@`u*#Qge$MBP2W{q?}`F7phhm=ya z8SiwWG<7<$to=ZMCK(byGTttnQRou|t}a8EzNJ=7k0ztWRTJO${am0{h0-va3RAR; zE_}xER!Xc}13l7K4k=vSa(V7ozC%xE@5*2#sn+Jj=%uX=yIwUN(?(W_WDl51S>T9; zW2he^jnFf7z%tuGQQz1veep+R3b9{BN`>PP`$n|x1$Sdb8GT6rs{-=CwE93SW#(by zb#$`yDnZ_F*2?V$t0QrS&61nnWsk)>>L?Y06yY{RF&eE0rN`LkQB`m^4^A2ppUz@`ghuYo2!l~Kv0YiB=w}{8^ z2WZcBfSuGRf1eWo60zKS`OjVpz&N|a_+QU)_T`5SN3YQdRf3X*vcczDLTP|aN_1jK zSHVgcrcvy7Isa@$o3H4WRq{y)f7jg*RUE|!K7}OmFBlfW9y5x3M~>i?R66WxF?zbQ zfe72+{t#nF^IF@oiLvD)KiP}3b@3OoRmf^JI|aqV)bcGrOH(vbltp5V9~AsH{RHCe zGIq&#x}#8&L3j9GCKw6w#T>70EypMcnsRWsLvE=zHO*3AN}^rr)(g57L5V+Jk?NI>1U8#IpPfx@)mK!U?~@qrXLGrq<)uAY zgkN{|lzS%tYE))k6umZ{q1C$P9DeI0@w^5Nm;9ApByrmfOgrR?*iG(wkiPzKFX=1j zNyJ?stEWfy2$v|R{W`4S>-Aae9y;f`rM-EeD;x&;5FO4(ZAN%Jxk2ggc%EalYXh_= zkX*-^jeVjVtY-k1+ee@!AJrD|pXCJ;BAlue0keKw`f2CM|#Z_;fs z5CcmvY2pjNDQ)D5Vj3nX?6;DEY$xUcMINgHW^^9iQe+|mI6Dfvmzrd-W|6SRBlwgw25J%^JvzBToO7TBA0jY0$CSv}_U(3N#^)Kxq-cZ#Tu zWizpYHQz$=Zy0iZI@~Ke{wES#b9agRTBPS7=^?OjLn6JAs73dY>{{9j@WKIIjSvg59_@N1ArIGPzn7_8*c+P+DWX))mYZqODzRzyxG0(CJr0fmAq*{ zOE%KQwl89NafF;q^jDDzo~h;OU(>3cb+Z>u&`Zer^Qnlz;inD4+X5U&TR-(;`oYYa z-B%pKx`CEjBYy>%B?DG0yRJ(o&;&X`>kqi*u5Cf3Ro_AV#2e7l>%K+Xy^ekDh~pq* zHx^OU0$%H~`xcxEQ95>mvj;0TjjL+_%);kgWwj);k@vsYdH?x?e4f{NLAisZ6#KX2 zj%ACXp4Xv1hUks!p#9N$cuD+3%^Pkn>$Xri;kX=iDNO4c{>ZfkcZN z5zI=|F@YN1hfb+&Uwv<92_*rKO)@NU`I=k~*p=Bu1Ko1at=`d_-qFR6=V~s@&I3WL zq_=0wwpZZ8w_@eNz8OKP+88uIXUe2~tv}=zJq>aQL^uAm41RMhlQjSs*9no!vIAh^ zr`Z{c+dZqRT@l@2gE~>O@s2z{sBC~IITeo_`tcd_fdpdLFQW6XBmprJjN=35@;eTo9w}adb9_3> zsn>I_#wyYY)kn1e@{-cwSK=M+L%bTy z5Y2C8_VA$com5kvBdHC@l%Q6SKNMAsm5fwBYX>%6I7c;1)0UA#)p)T9duIxILT#zp zo}M{@5}XpVYNNm08dBESF7vr}<#Z0%k9q!pcmhQ$9{5z;~RXg%v{hw%&Nv@ev ziPZK7qxC?byK9|`J@%Sx_xqkZg6du4vF_$GX$xj>nPyGBgr;Tbdu|`Z6QmLXT0d-Q zDbr!*>X|Y{pU1^hTy;{;M2kW0Iy5v7SfWxNsB44ClS6JVr`*-59 z^bCozfd)w$FS+BY#QqfSa>UE5Fh!fw%Ed1*z}?yyFk4Ol~0QvAAs3;-Wci zQ{9?GKM~pJ;ogidC-3oc6&KA1tG+aW4w=Yk9(i@A@5H%WX7DWBNiqEN{KfYpHbGt2 zJx*7!g)#sP`P}O6(c`oo@SL|wx?mlAB&%mI+%~&*Ru@Qq3dBy!?OOhQk zuSay}1Oj=`y0ulx_t*W`8h)7=(2CCtUoe}V9FitL({B5G%8bzFDQR!IX2SZZV|-hv zPExrgqaIe~$PwK%T~MvTB9Fs1&a=7r=~}TNN(~ecT=x{^iy3A&wbOC!U3m~m4vijU zAtzS!d-hVm>`0=`-^tm@ifd;9#^!^Zo?iC@XJl(TOi$@Ee{1wDivuQO;O3y%g!7-AxJv?3p8r~Hr6(k%0{_o-9Wv7YP9XYU8?}>>vj5j3|4KOj7ZzvS z)uQk73kc{X6_5OX%BkAqr1*e%a!Re9Nl|PI>G1EQ+-oo>E*OGp`bN8x^y7uy^P8O^586$+?G{smvnh7G?NTZ$#R>g$%pU5O0t@$#sYQ^i1)&s5z zDb2*%PB$lGz;wsD?GV6wln+&1Yn`-t$&($+_c@(Q{&=;67t)iH>n|=G{`BO=fivFG z^Z2pz{X+H3`7Pmo(48S>P!Cn5n)1U{yFV@>{+*Ng18e`y5DJ>3FmTM7K+NNv=PefM zHmRFkj>(5gaPwMANEkUDj>JG37(Sh(>yVH#8-n%Q{k-kfY!%AmnGh%;}u zAQadcI@9pHjTVf}!y~tcq<%lI?E543ublp!sDAYvJbt$p0?`yd%MSxNUXks8Er#H~ zot^J7c$A473hGB>qB=CsVPAmuL(nIwR&IS~&f=Ucs?&8&AxArV420PGa-7SqeR$en z)<^9g=m0?J)ynBrgfQ!|GMBo-|J*^4A|{j1Elx6dMB1iH1!F+0YZoQ@%4BQ57RTse zDiZqW?hp#nI1TxpVFuDKiq%4h(PVkH+4G8~X8Mv5HbJf&5hiCQaRXPnHU%~@WROg`v?+lkzLrb*6pVCB}GO61U{+P)?b^UXIn4G5XlL2ZZy{eUOD}h9O*1_)qFpD!ViR)rHss%xg z>{wKZxIgrk2e(lM8^;E_&`ju_3na)Bi^_4_XQ?0qC&uTb569s7g}&fA zfdhR|(mF9_F%fpv-2kn21hOvlwQDea2y~q~AVJz;1tHqOz!Q%YuPk;4c8#2daC<^_;M84byAFzDLd`AR2{XlAa?+8fRpiL^xiX?yym(aYa_H+ z`?)NH_m(mzD2J`Znd?2u2i~~_9M$qgtb(`vW6z|DYlU5w-+K1E8^>$KYmv$}9v6{ChYBzx9keniK)c0) zY_DR#HUDTTHTD$3h|W?n=?fpWRuK(jEVoFL`ojYB*9_~dhz7e|@FUhp?cx8DQrXu~ zDJBxao2HfLv;DN+`I0tD3EpZRAI>Sho^Lwv1P@ICX&k6NwUKf4G*gZhP-nB82bFGH zv`bgOk^a`_Ts0i)DGn5W-xPAL34wYb2c3ZTVTWLW;UHZxgN+UMQ<6{>25v)$p*y-~ zHw^%c&=1p{4SN?=?`h8JluyWXF=S>K6<9XY%CT9>@|FyS2YaM-e{6a&X(KyDc{Q%X zLN2A=nKzHqr>y3?Vz-A`Ru2-WAF9eB5Qq^gvE^`aR)Q>)=PWh5Sa+m`N-*U1wpjp* z@jo>zR>B?IF@NV}=NpuvzKFc;9{IceaoYw=pvjxLDW! zz1Qba3qXoI;`+TheK!K${QAXDT;vR>x1;L?m#C8R7KG)R&0LP$0kxRx-(_ zlkAZ^g&y+t8N~!^qG~Y6knf=LZ_~b~F_#}UetkvBARD{a-#im4;-=fHT>A~EKg>A; zT20C$t!v4<7%@To1u_OlgtUSIS=BbT5Ft%*LjH(kLVFB9xN}1Q*Y{`gT8uS-G%!DbftKyXCo#znQ4&=77WtaHLh8kl!Bz>2E`2=7SDZgTm<@ z+rBc2mf4U9HZMjJG}h>+6@~#2RF11_1=fWb8HN7R!tZm(-sDEC@{q#hpASi9C>v(l zY=l2BWb&hmNv6ec*Q*>j2fgCaY3Y~or`2s#wtn0t&tjBUlOY(i>c7BeJWZiJQJ(Z- zZrg~E5HxdBr?^I8n$Vi7`i%uEMKm<2z+a%s2cYXv@RFZFaGFdsaF_%zz(-Mhq8C(H z6fZH`Nm81gOY+8>CM$iE*A*QV++iDp;i=PAvJu-u`9~21c*8dgT%#A)s|`h|&aBvG z&+UqnwvXbefC*E{&53JBMz9*a5(*g&o4VLE zb^AIYJ1uimM@zsok`xqrCoH5(gd-;?++_;vVsryHRuV~_thap9<>$PLWa!3>3!}$2 z(%{?dz1L^Iybj>^KlGPQ_L8CW3*ikgspFxjhNQOdjjJQg6z~H;Az&e~0-zXg#~g2h z>kZcyI;0dMXvt^SLhJh8rCIbz&F9{brQTgy zXkfIy7XS8fPT&XZG7Luu1X9r*Ojw+lab?~*jq>w<+`R(zN)XXOSFY*s{K=Y^q}n|{ z8L{)%C{%Yoq`^hhmk*)8_(4b8%Pwr#J8wV@NWqKBm}uAnrkRw&3oY@xSb z*sDjZ%-MJV!{~^{^0#U@SMHzGEH-mpF-VvF)eeqJBk(t-OXp;b_yR-9ZEiW_bhQDm z;fN*b5ft0lWvu*InQ+|DeGCQ0r-R9b<|PO;SWpT8jIl~qb;FH+2WOUMhrx3-V5ne1 z`!A~CjuJcixUh{+!Mga?WGHe1hRI#gS95!8S93qOhz}M_6F%5dpNUbn+Z*o3u+K=t z&Ri@4PPq%JU75&G^5V5ifP~8>Z|ub@mT5=>6CGu-6b_Z^_eQ6EkX`QZ`c3i34#HQ= zfQk`d7oPgW$3kne`u~nz)LYBSq4=VB}XA+PbIMu6Uf#C@O;G?$m$F=}Q|1zCp zhRxvAs4&w_pS+v_!N)l)<|5rR zf9QoM25(4}js&8Ij$&@`$V*u+I*A%~*v1(U#u%xko#wJUI~X2DvVpTmpwE8a079ZDt!7yo*)Vk z8nkhiM^>v(HwZ81|IkUH`3V&Dsr^#cIT9_=%bF|pTZ8#<{6H%Nu z5b-#fVk)#RlrrLwKp(;+3Ycm0_v)yKL+V{z$R#Wd*Q<*o9?kX|_)D@Au6m|S*H-Lz zmT2$0p~CPZt(U{#nia>REymnX(p)w``YX?u%qh+j^#RQ3t-qwN>D?bOmrVIfaAn$N zH2O%J0%$@yC$V1G_h0^?BjW~iHAP^bF*A|VV8!e7_(>Fyh>}!^FYm{7ib_3|M^o#h za_wQznybv9)GgOHJmyi50O1*yq}oSXqbf=gEA zhz`Mb`crV-y5@4kZMRx+Y%~IYgf$(N;ovn%6e$2@CSpOmtR(meXw4m!XeLDgm2u3K(7SnPNjCe0W;G} zpIA9lwqFtQ<0^hvFU|j`tV$R#xvIwbak4gPAk%}xw9-!~N`m0Gru%?Y1<}pV`3^B> zwy#?zGuQeUlQ$@?(kQ^t=8k~qI5*qlx1F+AeJF0MwOeH*;E$%Kq}FfH5xU0e(qrH5TA~X? z(b=Qr^OIKE7L+W9CTj)=WV8S^%Vd0dIg=VD*QL|rhkjp#1kY*INKx`WR__<#%i#;n zlw9h!hPd?=D72aVK}`a0tY8>y_xW^vsec>U`B}JhU_4yp{hqr1cU?%kJGFca#ACpy zbjQT?7s)VWGx<^IE8lPw4EkK;*``-Y11OWO>pe+Y6StDn2*?xAm3(MPX?x^m^h?!A z2PhP7gD$iVI+o~t0L$~OBY4Y6&Q0vS@?-rOBLu#@AJ(Uu$^t%a$tk4%MvSgLa3@M9RxA?clcuF?fYT%MZ~`&G>%=?+SR<#Oa1`v zJ}qe%rFL=B)E>C%-yfpf8fO14+pDdSWovECs1)hhu;%PUd6S;avu}6XN-@Yp0&~%} zshsHor5OMhRX6v{ShA}{HJfx4*QQ$Mi=NcpneRQ^a4G<>aew$RT3Qik0^MO;>ZYsa zH<%Fmip||sGaTC3)$(VAt&wXs?M~Oa8#$gCm)hdta*0% z*{Az$O;fz{I^jv;{NQh785>f#pBYV&kaL!X8*11wo*A0HR$Fl>zL3|~X5Ug4;txEt zM&1M-+_u4?xi^N>0K*r@@AHugU@1+^e;hj|BqsuFd;SbWo_s)#Fy!RAn>;`0UYxG) zEMKXRt&GSYl3hMv{?S1ko*N#yTefA!_iH*i-Fvq5@Od1K!au;P3a4Km)*I;D@bjg` z5X>=3vseJFY_T<8Cj`=sUT;x`~jMeE1 z*xw%Tz>O`h#^Q*~JF>eU)*C9DQ`%k15YdFFvu@dopVeywDP5XT*z`Mt!Q0Q`Ulzc+ zAFmIu&;2evtK)iIMY3vJqUI{2kvgyk_b#ZbtylP8D2HvR)`+~A7h?dt)iIRQ7B|8esnhC?a?dvA7ceBoDyg=aAjW13UrD)AH)~jTP zo%Y7>U@o&ZZ1#!T!e4EA`w*NDXV&Idr?&N<^B4FC`s}j&nWBre_iKyPqz#Smki}*I z(KWZA@%l#%DUvM3`2~%zF-B^+)-y`0nFMM~0$nvlPySzR;|Vo1$Z*Bif-6+G5xaeJ zyfCc{lbHf@^~rhYjz?1!vltv&0Xu(1?uiWVGJmb6))Z}1WY~Y`==6JGD6NXK%J!OV zwB9-pgiAEZ5v|*QJWqM4K<$WV^%$}MnDu@{o6J8T1jiCtz|!|kLJ2H5Y2l^{u5(a) zEKnX>W6vA>c9$N~IjmlI=V!n{)N{o?b~b&n;K&p8BNi#vIaL197!q}pFvXrLpH?57 zaHs~rHihWXp_iliM@*U(~7uZ`&qZojGkTMY*3 z4hDFw)2Fc`kal`nB6M69nIlglm(1-6MtMfb>X>et1ZlkK8@dVR<507*41tM=$38u$ zJc51D+@%1y%5StEgu2wWLC_LX8zEGVI)u*B3qa`p5K!{jS3WiOJF4j;-&0W`vyiR*fRw*=3tho*Z3+I3&$BvUyJQ{0Z-#hj)R`usD#N~V+# z4xii$fZ0y~HYcu%GShBI~7dI-2`3-^l#{iP%zyl~0DTI9V3 z)#LJ_6W)NHk`0hb8H{Y}Rv^5R*F?WI_s>$Vq3WVd(WYR=-155|jfAwL(V_+%=^Z&e zB?6t&VXt`CO{2Yat7JaFD*c@4p<$8^>dc3uaLRt9=8=M`Yl?SMHREcHpN`L5j*Lm~ zR_KGS)Q*mHlmApb6;&O;p0HkGT)#niC@GvMva-z3&9~kE=Ttgu+l&=+9uRlf{(zqQ zaqaXZq~!zM=8~ycCzfd9i^I!#4g{Og7j}S3V*7RFfTj3yPi{)F_Ws>zjO+8_x|`~Z zbfkGr2kbZBiL^Kqqy3yom{%eF96HZELu$KR!fmep&eCWsrIrt{!nXFcelAFHjL;it z`s{(7O>G#|4Esm!jKF`~rB1|$`$SgVq-pLqek^|4pzrCE75vkDLA5zV1k@c-h{iLz zW|x5s!#MafuRqYk{K@lu);t$s0ULiq8ytbsi!6)yBa@*;k%*t&vTSS&0{gbTxU1VC zM&?^m;xTz$%&`gB)en~RO2(ua6}+U{xy*QJFZyua@gQ!9#z`o_S?@&1gioiq7F{=D z=K*t&C^XZnol(cojr-I0F_*hGVXj4O;Lf$vP;4 zRnn>e@Cnr}*{PQ$*1$^)_%LNVc&AU(86i(~zN2-cJs$9{uFLIxa7s&xy+iuJB`dN- zNW)NQg#)H!_3VUdDIXh#U-Vc%QdhW$oN*9#7z({wdPIx7ARu>T=eLDjL^as@e=lJR z1Bv&FsJ8(^Jsk9$&lVg@qsTJyCj7F=smCYZU>U4~RwZMB1}?mw#K9)=ds*5eSFZKp zm7qhcRpi{CwfFt<1}cSF7D}_j04sfZPwk|$u7NJgTj1ACOQ1cVyij+?)wDOp3nzhG zW*oVulS%qXaCDNz%hgtaC+aL_&SxXJIY@tCPj3LeZEgEQ1YG(n7n>6kI|D5E;9r#( z-o)|K=E1{jLdLJ9`Ec2qo~N3=QK zSkV5nVJh6=4RA%cAaj35Iep!%LGCqHF4uidoIbD9CG$#xc`2lJGIfCT&Jct7VZL8_ zMahjGOR05PBJA=0B}1GeN(@YXHn7#o4+#Jyx5HXUZ^Aq@dTR0Q`)BohQ~JHQHMs&E zMWyz&rSxiRvLwN>ahj|TuJI6|YK7eOgUowjJe5PlLB``H$7mq4#kJ{r z`!an@lvz%$Po_zs!#T(uZQM-INdnMp2dz%O&mQ8en3<1&N%N)tB^)9uiZc04R+k4wRWG^HV}op;shvy=|3=+Rl#4lyhzU--(`x z3|W^d*g!xMe5rN$WE83JBBWUVKaNMYj-4~EM8emMit678bVATPQXk&NI5I>sWp=xW z0`PH`M&{HlLCgSl+$~294ymZYu(xK&)m5HLzGq6G1V4txcTmFOr%TZ)VU%!jKT|Wa z9^Z7euXO0`+WyV8(t*8Oa>fH^=C~O^`&z6E58b}Zg}eLnxj8_*uxkdl6% z79JIEK3&b;;*Jf+U}#9V!-O#t!+)GrcRkoBiQPc~F500zxFALbZ0>Y4s1T(!8KQ?ikezLD+!u7PQmTnU8dE3^T&T@}>HdYP z;erZBz{?mKGDf!y#Rg`;@5{-2;HDkCGJNcn5<9u^NIX?DFHM(S;X;9xp;EY}tk=#_msn~N8p;F`d(w(%FPoo>9z$a~uQc*~)?nH%Z> z<#Y=9DICEj4*=#vG7^h>>V|J<#9*STuJ+-MI&0l0PRyNcwueOJQ1<}<__-1=NBR zEi@xHW57PfGGEMpEUE(1FgxaFWi2&?3X@CG7EAv57zf)1VF(0#KbLm*ZXjZN_sbX> zyTW>hFo&!45~e~~B`yug(2qmSR8#i<^(2H@@lBpprnz1`pwyTC8^qv@6#uhdKbK;=_^oxOHGopeoLvKY{`m6h0=^NDz`@bS->I9yDX~P_y;SARuBJtg6v=}G_ z)}6^2R_ZNd<3{#an!TF&5qxRW7uMw27n2w9??4Dz3_Xaxtp1_QOp&>yIL_9jU2xs$ z;Sz1-9j@uu=p_L3^4t5_{)!A(>P&Pq@^JH^LH5S?8pclub8BJ=I47%yOqtU& zB0BgYc^Ghchy(Pzf2A5ciq{1|%xOD{*9}VdsDt^9F~r=RuB|ZitLYl11DfY#UcH@6 zjo{uc))3vlE^Ta;^LvGl*kC%VCQC&}pZr3(W}$nA^-BP{LKRl0ZSaqYwAsROs=>gw z{$Tz2R+3QF_`U3AI7VL!v=WX1de3qxnSxO#S>qB89gInOx>}j(j4IKApL=rCxQRuV|n%)dw2o&^jQ( ziY_K%sR$dyuqf!UmU^$N^O%7_zCL-u$mhmvneeW82OK5tLb@Ze3C-vP`UXd|{ATmU z;l+Or4-4#oPhRk7+gZ+OZ4*rKqBPPS7PM72v-<(+37B=&Ih1n%4pq5}#cqD&_V4Sg z9r!5)_E-xWCjP-FtBq%BQ+H!F{mQ$^sz&852vdjx4Ns$nF|({>1jaPIuv>%5FFu~1 z_uu@)fueOgaV(O5)sI0BTF!oT9^&z=64Dk7!qbnYTCv@JSJj+mpDTgX*vPxlPWk5pI z9)&jS{+mSzzi|0$)wH&s6q~e(g4zu@Onx5#J&*(y%BZcd2c^`|#TtqC7(mau!Hc+p z;N%u5=Z?I7(&A}?j-Yq*hu*bvju^7rDfEoi2fc>h6T=Ba{Vzf{1x(qZrzS=}KYtC& zPCCwmq@@vZ@~rS+KaB}C(Ijc)^7gX)K00yw!zio@@v;mMNI8-{wSG61=dPRs$R8s> zO~YqFLs%teIGTXM`a!fkgI>$)9OT=bCcrn4ZK4inh0Gnzq$i@(>$pM72!ZmoAWKz; zD@iM70g-F>3i~=^cli}QXq}D05VR*@gty zDK62|o5=Jpx((b=+a+DPw-}r&)_4g(<$A;-7aIj^mQ}i%frrDvEGcvqf6kP%dn;1f7JI3G@|rU^LyYY{q>H zqZ^81tyqj&aq6K$mN43!BrRTj{E&qDY)`dZ9{AEFY;?9AeJC`@fLT!Q&}aa_q(Lh< zd}fzM*gJk8yjzq}%H%RFG9;*{CED+N_jsRs%W!K#WmuXXe478(5`$jwW6iY*0=49z z8Qbrgc?nfsE+)w?wwkyIwQn!wkveKec4Z&kT>kf1MGl%PkGp)HICg+kg!Px>grpKK zO@NqQ|Nd?oKs(_5(_FtVsS5yz^a<>+BR>FA!~ETA1V_e;!U!(gueBH5A?-f;Dhv{K z>6Jdw7IMfOFixJirgP*(%oPoNLUaX0E|W`xYMG~*>G!vl3uX^uU5A6SRnYbw*cRAy zwafgpkk`ZPqFvAUFrRC&O>U&B59!NeNwWJ32)RO7Br-nXwb~dK?S=!O69BF^q(b^` zSnpm4F&87~_oc0iBubn^nl&uvf+5;fC?zeqMqj1(#O4<=Y?u|e-|HYpGR$b>%_p~f zyqUeiFw77Qfg3?UTQB2Eqj}I*O9me?P9YxZ1@XrsusW0I7QoEDZIO71g{`#Eac=3085^;InJ(fr93`Lt%>ln-$T?B$sj$18&<|pp9 za;U8+w3}qTle_rC)5J^{MN6~T5PxQv6k{JC`_oRZ`6Syso9b+j`G#tBH)sY;x^mXp zS3s#=xU~g7Kd%=`%X~%jI@>xw&u2OkjkxK+X+tg2N&B|FMN#`5G z+>yo;hUoU|gY`pNs_o&0Rjcol{gJ2iW(()u5oz65B1XOxU^E0!f{Vz5n0ByHDU zbB)Y566=Sz!rG`9Z8dFZ5n7Pua|xAsOaW=J{if7K5i2q= zwMihU@=bI=qAlq-H{Jty43T=g-rDEL_=T1!3`2asv{`D)Ut=&|y>oU$%1FiG+KQy0 z+X!0h1-OW+`yZ`zd2pbnQ#RI}y^9Eq>VCI`5aj-Bync{=6e48GC{YwY7&;8pvE&@dWJujCD2u#HOf4Chi`^ zY|4rNMm(xiC0UHFcmvJhhQF@G`g;W63PsP=QrM9@*&ORDZr&mSdGi5zjwg8>fitIO z7{#HlFf>A7`Zd3)E1~D8@mAH?^o@;^N2;hRS1> z>QEN4&1s}$%tnFiF*`324fuS)T%5#eD{7$t3M&3o<10?vIhUyDYB#+Eyx$fJa#+O9 zJcfo>CK?)2Ef}aNzib>{yc`zyE9#f^DY*iw_&x5?(7ox~q!ieblyAt;ol41>Dk4*9 z$_{Tg4ptlxo`(biU{m_*i82Y@V*flHdm2}~PaM4crsWR?#H$R4#0eQl4Yx8O_L#B* znw9Qi)%Sz3x}PsI+2+$pHFG=<^}RxC<@I~Hws`o}is9+C-Xd&RO1OOr-?2)$Deob0 zDCPWI>RJWZ^ARLvcI@_d^XOUaz$n}_npK0^+}|-1lfiE*D*Vn2$HV^M$_IkaRI5)~ zjd%;!ono54+h*2o*+H&*Ss z^1D7e_6caNgd1qogR{nSAV4$d9ZEpdlz_j4*Bkfv>wLXM63cP+YQw zd3%mf_!kl`otnCn1OXWSaVEsUuoY78S$jX3joG-wkJHmsH1)3&+nDpc&Y4QhT}=F>W~o z>T)6cED@wtg3zfW-mrmbaiL@-G=03MNpNjoxkVyoYGN>!W#)vdnxkM zi5#g*QOK6mFDTY)oGo0oSXMid{>Ege^clKqG8JCfHkN(Q%dMhI)S2f1<%<((Z7wAB zP}(R#eSOc?N)znI#dfkFKau)S}@!$7?Vlz-AwPb;{3 zeGO`OyH}Zs%DA(o`iSt`R*8=-dz6f~LicA85}b1AKO+NzQ1-f|BQ@^Ol69ultVih;r14JN za?)J#t>KLt(#~IFe>wxUeQ@}>iF@uL(7QzFm&@sKnQx#@FCL(5fD75d(FEgowCL92kYdG?T15`hUG zi;`~^Pjj5Ojq|VTy>u_@YaGMU1zn@H6;w*ur<@fA?m~o2#{l_W5+ayb{k0>oFZ*ft z$(^54x`S#jqQf{zBT8$&haWSX&$mZb={=@sgDH873tdrHBnizMw&fnt3Q_6bjG^7M z#y@^&JcNfC67!Y-tb8NuTK{`*>HGqKu9S|k(lckl?#fS{@io@_Gxu9lv+VS*ub(O1 z^2Bbdo@{D-?S}Yd?i=Q=Iuuy^+u(=5oMNxg?t&2?bw1^ts*Ae-u^XSQU6TTM0^u#8 z+MZv@DN+TxNc5`2;;RpEz{qgxCcYT6Q6da)H;M1Q;m$+S8!3GS9%L^W&t#l3fO_dDRQJ2 z4-#ZkR+ADydN(c5{nFv#QVZxZht3@$pEg2=HG{@)%{rb5sN^y!d;N#f?25bX9s6Q1 z#j>3yDHyH*w8%qdsNn_UUVU(gWeEX+S#TxLj;x9703u?!8Mg8l;eI}*A^5~bz5n4k& z9hC$(h*eI|5R(&)7g9fJM2mijmNLBx<|TypWNZ}~bo$sUw@m%BE2U?t*gfK~hZWLZ zMo+!CvUmV{h`=@L*7QbG1^HPbMlCwa`D2b`ACh#3<2+vWGt0K|f(#e<(*r%H$p9q{ z)2bk#=FtelvnlGN7U5JWEG3^8Tvg+xeQP^2sDgR(mtvV~Brna0G(OpJMm_w)JE0l) znytRWqC)Jsw|rdz{?S7FV%~sDPJW|4W*Rlc+(iiX8`+YSKd7=vrB5s=w=T!?N$Pxf zZp8D2AF$__@&hTr`tafi~)N<#qSj7-YAloOf>~g}^dvfna=Gy6So`Wq z7AF6<$KbLxlMb4>z|5*i^IpRkiQA3dUOqg%cZ$$Ly{$S+V((fu~bLP zBCyqD-#-wBC3#D8t}eiwih3mI&zazWYre7^bq?uP5t&)mwGN+k`?c?ivpTn!x+RN? zjgpP4g}~~ZR@^eWa*Rxup6G!6nfQg_<1P$R>Qneca(6ZM75iS({PmqYs0-I)YD~%6 zTAc+!;S?LARO5T^k_f>%jU^~F@+X9(Bw+3?PPA_)Vy_=9MLhQp8?@-erfw2IphH+t zvx+C;NhUam@|cJJVU!uF4sz&4qN!NP$+7J^P@q04-R>w ziiAu71yl)3n3zP;O#LXVLR1|9R&Dil%6rZ@%oNAFiRq`*U-QPE_Mhv^tu?>TuAK`t z2AEr=JjnJU=;=2P#&ex%{nz(~&PArfzYZTI!NLJOLWW~;Wl#il_FmNtGJ6VD(~PKqsT)q2X9iu{ zY?9jLS>cXYe_mv`?VXdSqxg0Pn^5bg8q*b$!VKG;EXmq&Xk9lBY6gmn8{yX3eDSX3 zuSv|DFHVQq-y^QDi5Awv&hx$c@(t!`qcSeW4`!FYhH{+|A^WF|&caFYY}GZ`4sTJo z-}-7izIvQ?-;=Iyy5z_Kklq5Xn4*W*DvAcm4qFk&I36X+twZvr+osj?|`&24Xa~O{q5No7A#=` zzdN(M$G8{I%1`h-e%MkcK)=xIx3njlc}6Y45N^0>UVn`@FKcaDcxp%gGA?x{F&l^1 z?^>eq#=IJ~R}yEhKFMvWdA4g4fcw#-(l%UtW0_qfm#i1cOJCPANqfqgYKaId{}7>x zmz9F=6&e+CB=e{A@Xzjy&(jdU1v_`oyDI^fI?B%4-RlA#GDAZ&z(35S-3Pst^nlJP zXvnxpHzv!6!*x3QP6@b8*4nDGkrXyECv@7RcVl$!5omg+|Gl#7hVlkE-S&tns8nP) znWZPZ44&qvNqg|v48e-6pysVr|3Weu1hpdI=1bOZFKCUV_O~DsHEeLZL8y?W81cE+nRj; z%-p;Fhnf3!pK7gos8y@#oT`2HIcIO580CB<9pTG^EYj*VRvS1!1KG1VJWRku>%J_v zQE%zWE~tMeMD1M}@hU~<=1Xun@U0{$(Jr7xP(?951ZM|K6yUAUa{;EAYRn5S?{K`SXhHBnoUAOYt(_R1OswgxlbI;VF)(cm?d?q+ofvFPR8{_8 z_pRh*9dZgFZm~qkn)|fe)PsUsTU(C^6imdC6gj})hhoG|>AMS(z00KiBjF?UEBT|# zBRq&w!kJtJEk-QF)a>l+`~4z+K-C-`ud=y=;?YcrZCw{t{G?6+WvX1ImzUSJR`Zyu zV3u0TS(#;}DoV0^vNWUYzDfqIPyQ_|k&>#Vdg3Thpp~SRDxIo>p_y?M+md#AFW_4+ zh{cmS*z5quUSB9}9VG}CLFbrJTFwJFJX_|->+2w*+lJlN|8xJRqN+3DT&Tmc7_Lzv z%l_5UYU|sKBk!ZpY#Cu-x`8kK+k?)-+Dv$U?o;;iUY4l(a#+|L#yYc9aZA%Np8{Tz zUh4?Z#uw)M>idL%&W|K5jvOFsCEfifyv4?in&XY1f*g-`#qbGONMSC4kaDP=7X0|w zq^YNAOw>wQo!)4iGKP`M!^2)!dea~fJNdzV)H=4~_zNyV4r%zO$S=#8rkN6+@6z!l zR3Qpkh;uXBA;W1HQ5%^$I$3%VRq~S??cB`(PoxHw4mv_cBO+m_dCjmPx+hJ5thde; zEN$lGkmL!Q{6Q(r?%H%*9|pS0K*`YsQUmtkwJ_jSej%Pe-B)y~kWIP->L@4tPm&6Q zA0V98+QoTmOdCwpS}kheK4H*8PRo0r_G^%z56Ncms!A*Z6!lF&v1{jT|M=)supv_0*6DdW$c1c{m zChW^en~-IXqUNDfu69AP^iv|MH1GjO#?MiP+nvTy-69@*gF4SBYr2%v`vf1AH61zQ zc-pvDUNC?#( zppN1a1Gf*-c90aHU9@C=_is@z3v(jISyjLZ6*Ng7kn6}o);*oj-iNYYoQo;m#jnB% zqhNSRvy<@u%zk#W&tZ`NeEYcXKb9Gr>`l4Wa@qrz_Rnixea-l5)11kuLH87*6nR7B z9>XiB(ylUCT04aSuisCG$tDk2m(JfFT7K?WzMYIe>klLsCnr};Zbs?rWPo`-@Pexu zT1pRKVq;V$w3_2@W;Q0_HKU1MseS?#Jny8)r#snAKh>uH} za+Q%Tr5as+zvgR;2?7C=k$gM2iqT=`OE#%-+AWmo+*?LuVh-`#-sUP9LjX%YU&Z0u zYOvY-J>?Bwlh`!3KP>=6pJu-e0mrL@?F#6&US6&5hwgUKGd;97%_OgDG2T&*PnvLk zkqWnW-wRE$EyvV<65x}~@3Z=uQgW-}r#Rqgj-lQyq)F^7we)*;MaNuq>EzKrLh5AK z5%w2!M>$iG!USY7=hFR(96-~`Z0~GSVhx`=EA0|z*^Nm|c`XMbjO8JJNS}{PPff`? z@4@7S2U<3HAP5V=L(dK$3#1|c7^5Oaj`JpZ#1w0QDm``_qTM7XW=g|`iGY@gF9Ok5 zV7IIQr&e~=K+))DI%Lx`n@4`!7x|<4KMPc1Obd-W{vEl<@PFN0{p%j5WMZj0Rh>LC?}Vk&(k^=vDLbl%nM1APVCG=E8^ zZ=mU~^DgkK$1%>Zs6?*X88gM^S0eK!#$UW`5ec=dp2S!HZi>qwp(jKk_DT+xmei(j z+??z_%lm`DfY3o;$BT_94mlQ-KYN>xNQA%s7s2z@Y2^WwnIwIMb=(oDn2=)B4|d^1`-<<_kQ}*QRH!zj z;$|P9q9aB?@b4Zs(061yF@w30wq}+`*Ad2NrEjXBd6YLAdsjpoSP( z8^aPxUU5w6ZMI`epNt)h$~~e* zf))U9H7FQo4w)Qz;u?|z7!1%OidyqOdJM4GK+H0fKP29vxnIUmA%~@NN(dhg5+M+L zL+G1yvw$B#dK4O9T2pR8YD^-TzUYs(k{qWpQ4$>)EtJgtPumhkYIkh(?`ak0EHn2` zs_&^vWk8XR#fS0@fhCNQ$agkQYL>83?Z%0P=%9g-pNSG81wEfrLe{#fRV!-uq=i$mCi&x~iG@?L&H9^0;~Jk)UUra2)ZgAn)j z!4N3uU<1a!5%{@g-b*dXT~tSv|!=XrJSWXs})V1yt8Dxf!tIYA2qc znt`rXeq{st=Y%!^^0w9@LfB9<2-RO}s>iu$_AC|I@p~z308f>}QD|#9J;OAYh{Ev_ z&WIl7Pn_b6?9RNkZ~eiP1Ov8`eNa&eHg^RYkn{V(-Bj!$bMzI(Kb+c@|I8H0z|IBF zb4m6oNpTN-r~8SMz3Ef?X6*w!A9BvT;XX0yZ1gSvXa|=|0ksoaH|q;)3ZbSnt+bdi zK0fcU$BX(AgpPx%iaWwZAC^TBOznefIqcc8W2*NLrKPc)4nDwtXpw5c3^xD<@2--{ z={67r>E)2$zv|il?aYC2IMBecrsIv9_v@EX!#W_{JZjtnQXRhyw|@Mz0sKHO>)tG~j(2bZp;5D2c~yJ2tGr8(2|sQ?_n$kTK(3Y=_z-WWRTV5m>Qy zKwX&*NZL`0jUWsoTHFTcn8tI;Nt>ZH_YMoiA~)dXj{<*8zc$9Wk&`9BDiy`Z&s`)S zZ>+YKzGszKW}p=PY!$mEM8b9x$RPc=Nf?24M^ZJ!xQBqLgPvQc`~^M=$_*p@mta>i zGxmiRB(33Jio5a?iX)|t1q6sWSWF+Jn_M4*8@$jY;K=bQ+DZg$L*v|soM%gQE1;a` z)|2C0ZQ;d}mPz})egv!QDCu#&c!sn265Riq`3X057JxtOeR-pB89mRP^8q;qVP7D9 zl8XHb1y3g~B@J^UU5rI#ez}Crla8q9X@3d<#ROL=?wv~#e#5W1pn6J|P_X7{?kOrB zwlf__jrb9PYDfkcX_!(8Do!MXMZQ%KMG1J02q#D#%QF6w^G~i0>Zq{83x0j^ksjo> zp;AnhSD5EqUwAZdL{9t@vhA4u3%r6jq)5kEyd*b1-1kS~Ys1 zN+Lf}YA&aQXvmGmYPjI9-M5juzL<*4vWs?lF)0=P;aEK2%i6ua2AjpeYZd}%g8VSJ z)Hdq0B|f*s&Gp_mf*abIO_@YaiE61l1Wvx`*0SH;U_!)<9iyJ;3BtHo|D7+f3(IRj zOSSg3v7xYbk>K;VqQ_x@^MMry6-u!W}VFfyU)SKdyvCOc2SqTN6ac#Us=-tj+n7TQ7`+0h=(uk6sEQBhnz&FT!AzX zvR|QDYiX+i5xiE1{4!Td8>ovf^l{kt9r#XPi1G^HuW}`6bF_IF-8NT@kZ&7iLWD`8 zHVtCaA@X`M9!J?}P&UX`Y~a@dbBW5Sq0z1^uk0sCIqfK=gX8*6ne0{DoFPh|@CqH# zOrJLHVn9b?l4%NLW4WekR$s%Pj|+k{ndnF}*u+{bW0NHHgQT3uv^-%H?Ie3k&8_&T z*b+*>8HBh{FNP{KY@9{T*8R#1XSNMKW(RA zlrm?ff1_;)R)Y`od}=DP^og~c?{gkQ>Ki&xpq_r4i!MmSn2qw~!wRc92h2r=Cvn>~ z7UlbrTl45D9rw1iZm`7?U|$5=4N<#b1dJ6J);7;K*9%1bdh)ZvA#nO`@qS{MKP7yR ztXCFqFmHH}{IrQtxVGI`y0MP18~q(e0*|2UXK?H{Te{Mqg+Q(N^*H%GX8BQ_z&ByLsf`2&p$pB^c z3W{{|NYCZvrIu%I!OFnp9k|pP-}%HgaZ}A2h#qC+9Q^hL2af>a#g}(9xVa z?zV=(Kqb1?rIY@F`Pg()5-*sOr-^Pm_(r>^^~3!0{dil^=QEL?-kPOzF0A}?R{_%jb5K?-sX3RYtk%AQPpdV%E-=p+L$UjZHyQ&V4iu$E zJ_q>G%o?1%v5UV>nICxKf3@L4Di++h zq$Osd`G?Be#b?@z+Rt+!E`z)fo}9dxEFnr1I<~3n|7;rAuoH+ZCJFxm{#b?3OgU`J z@I#s*v>8BmM?hyhUBSV?Ct41ko53_V(RiOZRB$S82cOgLufg0el0uw>PJ#q!q6l>y7iBDN^?rlbsyTa?+$G@ zK6sKC;{CBBSPGBtZ< z*4ZhWX@_jlKww4tLmva?f|EShPFHcDnM|ZSU(zocJ_?3LK*og|r{PpZ18(%F zi1`Gx{X5H}PXf3_O4EMe#d5-UbUn1+w11BZE(xC&I0=2&%%1c)O7F3yMZT$u+O+Vq z_}uVnGR@1?gE8CQ$Dhj*hi#3~Ux>DIqR!S-8Y~!+zH=Q+sOb`ugjk9}5v!Pe=Dmte z^-^{|WDY*$V2p0bfZ8?Vs8V#gL8Dr5b$khTnH?3l1p1@>OPV00kz7y^fFFLM)EIL}Z$9vraEj{c zwr;t4Nj-GUS!{uabQ-V44abpa#$&J5+a6rPQ0j3xomRIFZz&dW39}v^^U{Ecly-`Z zVYE)Z%2&8k#ct>{fx=aOHucC>QW0M?CYvpFT*t)lRo2u4(>n=&E)9Q;KgBj`kvaaF zUa_p3epv+pz&1b2s9c9r`oqyV=kNShF=ql3YFXJ`10^I*`mD~whFZ4PL67*aEN^{P zxpt{VT}ARyPcIanp0UY?kez?xA+yJ1{qzta{fRv(;1_@Ja1UDmf*vYgA}_&+A5;Aj8ty zne^d$VF(axWBqrhoqX>lbwe*F1&kiH5*#el|UW6>#;;lZktF zz{xmIm=Xs`nyI%yAk0`Ip0ZvS@?2kW>|`Z012#VbT)PMHxk2G;=@>F9!AsZYa&Kmy zx$>1gL&yJ!vzQOPHX#uzie$D#Q*E5|Mf2;Ka{GA4eZ(}`{I4ny+Td`xM^7pG>JYM z`{!xOGC>r$3bTCVpE?`}HPXp~O7JR&1}r;^rFxc6?8#AzeOpcF5uX=0mTn!pJ0Qx= zkT}_qOR@jpHhNZ^w1f6lBQ_nh@gM88^e_0{y;gXI|1){4vXS$CucG}mJ~5DN5YIby zSLAe&KIBtX=X`OTJva*5g%}@#u{=8d)l(DYD0@oiOJKTDJ);z7WUtMR#J!7Z0?7K# zn)q&tbnj>b*)oj|od9tB0VA1+a)gTg9biVKBj4VC5;A(*sC4!Swc0Y}!MWC712g@G z2tuamwaA|&uCH`&F`Cb|XK7X@hIyb!^5G#Es32xjjV%yIE-KC;oYLXGBTThjdeEh` z_pD=JT5 znBCng-bHtQD%`mceqZ^psNMcEKi8*k*4_+0!wTIqa8Cu0=B~lz4q*AHjSVv5Pr~O?JxvQr1p8?*k z3aBBJMHh`#xOiM-*eAbF%PRvbZh=3YFO%fjadYG4!YH?H)zp-h2^YgS4zcfO1gP&v zZCtYJY}FjUBTWqwWpcHRDS)Rlkg=ahKM;|#mB3CAm$4UINGp-&h*|^^OmR@)g8!4b z^9e?(FUd`c65)}uOa7D%oRPBc28A+ooL?o+2ue?X{F1^7c6^i3Mk}n z43x*?*e~ODWhsAe$MC$rYuT?udm9Tmrz*c(9U9KE|k#P1gIxU(O zMDJXi4rQ=S{jj#wHc4qGAYlffrXMww96#hZQLJwxshpgIZx&{0UmAB@E%K%5iL^tl zljE2|-DNBHXom0Y-Treg2HlN-jzXo|IVMr{SA4uaG_K5U6M#YGf}wVfsA{>}%e4g% z3lTTl!EL692P8bo&$Jqhg3OtsfZr^{tLR|z?`@ZkR>Vf@?{bF>KCpR@)ZC1>?SB4Q zXid%3hQLc;m*P}3xr{qXsj;GPtc_%OWwvML%So*KH-^5ME6L~+wp>{$O}8L}s;(`= zIZ@P;^9^t70>C zWN5WI6p__Icdlp~2N@K>a>C=zPHTYcKoMS}MV`f-8G6y5Sv7b2 z8~)!K8*mfvsxTXyJVrEnE+#=TvTs?;OoV zZ$Eebn>0>xXoXxSj;^J9lZf!26L``r2o5>KQPqUelR|Cn1r8dUVz-J$b<6&U1p2WA zkIRzkrx%YD{254jsi@!G>!tk9^pFH~@HShvE&wdQy#X7PQ;HVh3Zl2_Iwv4b{t(qKnYWMn~_*58Om)Xi^Ic!_N^G zkpSyaRaX$)xA8iN?odo`*F}CWyWVI>J~yxnoA??(wO2l@+$^i#7_D=)OTE04uT%KHjU8QUt1@Jd|2_<-V>z&qVseDL!XeO@W*FVlFzo zyLz&j4^f#3Ox((3I;nV_!5)QV@wJ-TY{BVdMc^ogH!Za_&nJ=_BT*mziocUKLvUWwxzSEzKpJ~I!` zagv7!&!i+rmEN?`HY(|_6f->mmx7E+;^Oy2S3$Y;LV65WI~$CcL)~iG5k%EY*`t|Y z=?h8bXg1Mu!{rWWnH?4;t=K7X8bBF+M+Jc^yTgR$TO>Pt{ydY$?-i$<@7=S=4Aupp zM6J59n=(p29p&)*L>$0u&N>L&*xMQHJ#{UF;6J`KrSmo{8LZ!VPhu`sBb_|EL~yl9 z%xeWvk|b8w7kaU_(Wgf6XudZV+7b-_&dUL0_7UGyH&IPZ;7gukC&#?d!GL;>Zo1q! z6p3kM{S)^RuiHO7wPH+N^Mc!^B#TMY#Bt!Xsdr%Rp;LB-biWDGE+$i-&(w}PTaM5kOAbMmo@9_T=R1rQ|oE6q2GR_b9HQwg^TgX&mSj$y$+aI1R3~?{vq- zc#8J?#o|cGpBt$sz+G|~5#iXVj>+Zs0rsd%cV$4wbAPAm6xEu_`U1@B+#*7|+1GnZ z5#WrLmQ^w`Qg&c!IJIwF&5ZF?aG* z{&L6(0ZW?N8@m>oPm1kBu+x&IeUjjmOX$1jP&GkJKO`SQC`1eWwD5z%>ZH~=)ccn{ zj*J(75hK(q*xC+MYsG&~Wh@MkRg&lr@py1G-|893%6w{dG<9=(={b5#xF;X{B2=W5m(0v>UNt#;!D!cb8sF{ zE!PPnyh)eIDT>)7kD)YSX|PqxN2&f;&hn^Ve1EWcl6R(E_)X~tO9wK!fos^;{>|?d%y<0=yu5VP#)s_M;on;*gWRyMuAag3T$hwo2=D$bPoB*$*K$g{=^wm@zDpn|2~VM#o4JF z2nz~g(1QrVpG-nYPM%ETOHT5C+MhjtU;RfW6-N%!@v83E5*A$gho)_v-xh~eVL3HX znO(QBB=p2XLyIR8e91uq0@05d{0&v%73DSPm7)x)%ih2&k94g3gq<-{H1!yoa*Rp& zNK8dk?n#jGV_!k=)AaiGMC7(j=gkA?M=c1_<+?gv)S1#QyrU(K%dlXYt~$j>^xtyiMc4`z*) z2|3HoQ}=tX-H$#NKX3Haz^`1~_SY}d7LR8?XWo;`o&k^ekK2dwM>~M47AUOZv7X_) zqXYN|9yi&tqt6{(tQW#B?%vw0JLx`7rs_6zro)TnYIT8HZ2`{k^CDhX;QeGC_?QeA z6u3|ryd~@OydMoQyJieAYkZnb9xOUfn=d)f-djNjEYR*|JKk-s)!U!-89COCnzhf+ zw$d-wXu>a=)+&grv;)c#fxYgMX-MaBy8;0mtUx(M0 z1LKzhFMi8S<>X%zoukj+F;5RH;&Ex;Dc6l^wXLJpcMe4zR~RPI0X@Rxa6so{;p@f^ z1wVK789yqEWdlcD?@88gJ+G@?735xlthA0uU*A{YV|Qo$loJ5nUuM8gU$fhQA)i;@ z=GC{X3!hrvi`huZhPl4z!FR*jlMmNvIDWJj3?&ct&IWc|ecx#k_UHak6?H;CT%Apj2Yj zY5sgzOZxn<`+RCVbUo=bn6blTTt6#W7o>V!4DZYU66QY=e49SJ(kF)vUQMsh(>Y7V z7t%krCv`;h+deLQ7P;s)?OaEls@83lh@`LfN#CO`f!SXzZ%evPZ<`ZG9Q?mtmX&w) zh{`WT4=Y_QhW58(e0MrTGVqE%gFY^m0mGHw!2G?S>&d&IKJ>`sd)0cO)tBSzCf&z@ zo$oTy>?G@JR0iMd!tASs!=(yv(lS`QRoXO1u2?OtAPO71zymKN-owIvUy>*Kd@K ztHbBnP|zmIVn9;&^_h8G?6hB@M56O;X_x46t#D>BQ{vrpZ-1?~$Nhby(kI4)P;kGnK3UcW)tX7VK(d;C&v zwN8JO3t4_V1vfjc-<`Lg<gB=juG~>4^|A|cvmyXbU8N1lnd0%Ntlvr_Am^UjhXvD8|o3@-S z6Fi)TDBG*sq|I=AM7j*y-Bv*WU$JWlI zy0Mn{S8<*_*+4MKQB%RqV-4K?MVKirv6++~c6j$cIkGn%EuM9K z^j{tIidFwWFHQE+>G@UjIp}i^}tm6*RR)&l*vq48dP@gUl973xI zW{Q0*U(?%BAnksa!{Z2v;%ntWFv1aRWvUcKixp<_Nsp#Zp0>HNMP*ihVKaakzlW+N z8khbH<+x0k!fmEtS9gpK;m|dWEsoZbrR1VSp{S`GG=FaZ3dpFlI=v|gSE9#S+MiwD z@k??{)Mc3Qd1#hQUZFr+x6W3!Z`T!GCm`}^(9f^~=F8<$CEz(Au5Pixd!va$y zq_@9@ZzfE8!W5LSm**xReZTu_5b-dA+37T}yQ_aFR`>LXI%s}_1DC_`uImvdQEcjh0F4DD!h!$=v#;Ak+S*vy2m)hGsy1}Xo!a0t7_#Zr)$koW@4ZR4!os@D z_i5@hb*;I$SQ1uhrU~@RI0==-fQ{x)ZmS{}M5B)8`x4$qeNI5{7xsu(5{9KjO-8OJ zrvrjTn-v-8t|I?E*Vspk1wx|S!kj=)gVr4&Kjpe2;fQZCS2s+5Grl9#xO2U?NnPmj zZQB(6ldnkRu|y3n+cg~!jqa{uKn8MgE;||Q#XMzPvw=4E=E1|!gdoR=AkYScRN}Te<6ZnK!qsf!5w(G%i?@-ZYjtM@#I94z#?Ra92gyNtJ@5T`dC%7MI1BIx zeG`7S`f3clWu9w`mmT47>pRGCpW)hr*)XJqjRt-!yTgyC`M&;|1$a96^0X$VKbCoU zF(u#r?Br9zq%%AZ6(hLxW_U<)6j_MmffPl8gi zE*Xl(!lA!3d8;sW?Th#cFhxB=x(fnLhXL!7S>Fm#50JrmK~cXuVIw^mYt5_$IWZt) za=67do#vBI=rV1SmXtUJ=3G5EJW7vdk=fTQs@RYBLGX+fw%BXIX6DT3@P7|OWR+sb zjS~+EyHm}L;~h4i;l`afPjEcuia*K1G@Zo|AC9CSD!%nT$x|7HWKbxftxFIuqobUM zWSA*rkS&AD_&I(6c(-!x8RTFr z9)WCf>>4?aIu<1oydX#GeTSHtLMH+g_hX1J<}c2We2Pbpnzgn~T`hJ`pZV%B1xLn# zvLb#x9u$?tB`A(;r1Xb11dlUi%ZDO4G|4KfXh9R%Zh`mEey_&G;77Z+q;+xvP@81J zb#fLkisj^Oe+p{Q`DCwka#8^EHVb>dzP&iOdX5u@4R37F3`!bv@ANk`(<>Fsj|M>$ zKiSMP5b*Z~|33E(zMuG$U_PKXbZ12p6PS)q3-o(el}$0dt)DT%h|8|SmeuAc4{urQ zhn|FUhieobM%JUv3Xw5Y{EVD3`e*z|%YzaE#7t~s)_>b6yMLOn)K3E@rx&{cgbZAb zm94~=F(GiyQSMD#kABdBDulEAYyQOii_qP0nNz$A+hE%w1YB^e_j?v^-~>#OUKs%f z*N9GCY#WM*DSg~SpiW$aTn301e~O~)w`7~a@$my(yur=w5$(3fKc*4W`YHj9CKzD*nwMx81ve zya`>Bo=EdTzA(9yI3*H5dKt8ZHVsS!@TutaY1=fv^R!}~P3{FQp*Iu=+3 zgceozknFB9D>aWicZq7RRdus8Jaqb}+S0BjZ~iaRbEdqU?^8a7Rn(i?QqZ^IO9A=4 zVr$!=yQB|i%qD5|sB#~YwW5jqPv!sS9ghBm{I#IG{Oba$nHkycW}Qx1R@YjJ)$sQg z+$=hNS2ocs+mkgJ_l%qXXjXLPYe*kNJ6oxGm<-v!fSbav!w|BuZ8S^~FOvoG?^?zNVz)9$|Ol0H@+`a!mYwo@U4N~yTs>m zy7ti$wu4ZgMwH^p1Kx>FSWFHW=3gFda0$&LML83xU&n!i+@3JFgoYl<{JS>D2~7)D zCGVBrr1Z;mb6i%Sw+qW_b9@#gSL#a;^StIlwTqeyofA-{FC=i=GO!$4E>Rj+V`6y! zTA=Bk?5H=IRC)FMo7Ub8;&4JSv*b4 zNg~iz(ou|p2$ri9D3Q~&d~Y>3$2G^swRX zJ)Eh)@bMpJ>ei?NiKtih9`T_OvT>r$qT+qUsA{1%Iw1;$V;rj?VlsIb$UOm?zt5|EJj4wubA_RKP3yH0i5b_F4N( z;_Hwwma2v`IHc9vrKl`PThKtUs%YsJ&QEQ`U+Y>YW!4a7CnB!rd`lN9E$Y1X3 zj~m0$_}gW@BiwC@hH*@ro+By0T&eJFoP5r9-T$EB5R{xY$XbMS-?;Nv_5Ta9PuoGns^ql}bl&$mgxL~&njsB-!S%gWUi{cS zN*24LYPx^CQtd%xQ}(u0uSEdDa6wD)$toMm7gV>j8w>qk;K36~yr@ve^g|abG2FT2 z{!vp!zWY9DLv#D+cdaVErn`Ga{wN_yw1tY!2N!qnI3Z2Qc3y1^zX730yYT_M)*6N^^EA^+8e;redCp#WjFHl6@f75WU_1ggz~4 z$Yx+0D=#q5^uKU;VCA0_iS71Gc)zJ2L;@A;1p^rzGa<$5-*jpz{XdkUh-`9BkX}Nq z;r%O^QlP)!cYQE17!dXFs+HJ<4LhdM6Wspyil`@MHTbsh9Yn*|sRHW~eCs1glV&nm z>$_f7FBTLQ&z-oCG_CET zIw`xr&M2y+HBwR*S8hoUPe3`-{_MUqLWFvcoKVW|J!1vJo+l*c9J=`M;;X*Mi` zSW1=JIU>U!tw&iEU8JimR5H}di*irYRMEbBL~Bh7snR5fI~e+3?kN2t35S6rJ#chk zMX%t7@cpYxuOaSNA1RNWe`pmW#B^?35B0G7E=*8EC;xu|^uT{1`X&}_5^|tdiG&_~ z*r!69hE~|4zUD_cmM(IczTpznKjMYPp6cgH8nx;_)mq9@jj8m~E}#cq;hL@|-V~Lr zreDbYx4zVg^-e+*kG`9wm~JKbDTWThNQ0}dO7({F2FIqWhFEdUG5HJ4Jd*q20@71u zlW&)sew8oqqd|A=8Hq-My&VMGs$>>}R3#g<5VnCy}CN(r>h-pxdf`<;i zJ%%*zzJnokBK<}Jw3v`mDPMfZkDhED&?1mH1nU`!Bz$z_e+l8#LPylt-;<=ks)s}= z`_M;eh=kCaf93vMh3Vek^@E%bM{Xn9zU{W1Iu=_aY`qAY|(%AFWbF3X0%=7RDA*&Kc6qi+yZ7V-zheMx+D>Gi!nriHK-Y zwxpS|R2n93aSFvwY#FQHDdrp~=lSWSOK2nF@U&x84xi`5N|NAoveeaoeOK2UD~Hn& zDv;4l(Z=F}T-2Vd>~&W0tCRO7D7sY!7$X0`#RZZqOyZN;PitN|MKG|*^8NnhppRZe zt^2>T>tQyFBbkwzf&{qd&Ao*?6Fi^#F|mYx;EZczn_?GPW78qU;QCW#-{@ojnSs(U zW6uZ^Qj|f>Vb9naYf}$@6ni;HC_L8X={CqPG#m%Zj)}>^zz`9P6vpW%K20@~p{xNS zEa#__WZh^sS>E{@KBz3%8`OGNGw*eTkL#$-l7yEPIGA-FzluP$wrlQm!xE&|t3EXL zgiue^0;sUII#%{-K2Oe@*&O)3TP7mShMuPZKy*y}H64mCL1Aaa#qNV*fd`NOoLr+q zA&CCFCKSyRAv4m2fE8cN6LWu8CoZkDY^>4o*Y!fxd^Zh*(Kqr( zqc+Qx-9j{>!Y~_y+vjSF$@Q2)fkHF86*m8~sO#_+c*xf~GR#XzeY}m%hgIur!k4n; zW-{n=`DKjtU}w2i=o7c%LkUa|&$oKbeQ$WYcp~8jpQ%@UCfN|}$Bi|C=cXtkz{9*< zDttQj=%+Hsj87$Yd9Cx{U3p64<9d?q<#SxE<4cD{2X}2}{$cM^N7$iLUq|2}8J87+ zJ2U>e;EZpVJoa#0SUdam@T&DIl?UbUT4xtp6kkDK65ajfTYtGi>nMuoFEx~}h>?`Q#r*Wd4Z`W z_dA3Ao?ktX$L9X~!igTz_ttf`b*p0AzEL+GG13l32Gr|zRq`E){Jmb_*{ss|wDFcc ziuR9=Af9L6{bcT@-e+5iV0qH&`Fe40o5$l}?@txuYlU&A&7mQME8C}UEz5RSz3H55 zRZPz-xn_gfkB3jWPlr$2r}Jm-noM5669@GLusDh>wK_JemiKAG7LioE8^X5w;rmeW z3JzB`?k<#todOEGI-mvg=#CEmzF3ye8mXzn^qTZ-yYouYr$_B@r2?I?Ua0#+DV*(Nk}J7umD+-qHIU zhci5TH~arkm!kjVa|E!ddd6XFS$9?nVmL_B00e@eR!!qSQ%zUwbdGW`TFN`~fj`;l zrR89LS{cpeRkI-@Gdq+T)KMc=zzSLAO~!TAk{^u0abktCy@m|lAj^AeqG=_GC5}QQ z$n?j_1jd@8?4fq=!tM-|#?;Vg(ZQi7|3Sg}hNO;+bFlX1@eKx3CEXWS`RC!cKir`X zF7Uz*juqA_Fft0o@I?pCsUsr)?pYmNr#)W>hhTU}`yvCMP{IDgNvxE?KqMZVNHLOk z$;Qe2ZA$_{`!60a4iNOu-(HhHriaXsa#0B1Q2mKb!P&4C37Ms!n_$`8wO_?RU6)Ws z*U?36AIspfZ3Pcjyybby$lB#R^vq_N0?+G;F#B9wql=4ym9dUk^AT$c!N3Fe0cwwh zn*|3wz0*O>Cw7siTHItnM#WJJ2(Kqkw0srwLR5T&tK+-FiVbUmL`kiTm3o+W9iVUW zpt+rJVyQ&~em7Xiy#Hj4ugkfK$=z`ph&EU8&&0QFMQ6xOKo4=>?;f` zGJDRoufHp8i`bartQ0IZJt9ex>rtuA*}53RjV%T1X(*y6zC(vLu`7x{qE%$y%G74x z8r&%b74&T{1zld~a?WvRw$fNhi>WChFZ@9dXqrp)q$XQ2#F#yhWq80)HJ1<5jw+3q{u?et9j0&``gi9LHs$~+Wvtqvkw}wd z8YV*#8on1yD+%Xxk&r?ca#hMicl^iV*%1qoVoVom%q>RgfC1Mvq^^J)BAF=DzEJw+ z048k3jh$0gCUf@-9#c|I8Zt~*pv@jKB_DhM-@iGhNIIe&qw{o=w#Iv-X8tFJzeh%~ zmRwjUlIj{JtS$Xk;h8LEkgnI+y0LB%mT4X_642cu)jjEnXzBXiwBadFP?X=3=ko7_ zDKq=Z=?fUg;KJAVb|CwQPyEi-bj~$wK@t7ps+pLN|DWK^KC8?9FIb$snfzrny?QrPp$zW+hnTLs0nZehE@2_7`KHtrUJYjD@#?(W{f zU4k_ZAxLm{cXxs$IKkaLoQ7oWz4l-K#i>(uF1osk8z^edIll4AGuf^Je^h55loWE| zP;=rGvJFd(r0!LfRA?9F)6-B%(+;MRIexyYEOXW_vXm*g1sZNq!b&^VMz&`Itj{#M z%CnU@Jl^gAsU=f+(Jz%}E@VO(8?7e#C#zUV)pqgnet%Am>BlrOsZvT1>pigB&p z8;Bs?b5k2s_y#j6_7ZqWfzTHOZNWlGZy5pNumdQ5RF(DlVRvp7#^CPO=#2G6FYg|@ zW-mw`_lpXWeH#G9UxfU>1}PAZ7kGA;r^-`=>N+29s^<^ zVE~1B!Vdpi#P%pu}A|9-UDZtd6V@fwEDaFA{Gb;)+K(|vma zxGXlV#MkY4E=Q9Z!1srnH0?xdh-kIz`qD^E`T7y?b(Vs|&^3&rh!FheUzPb->&K~_ z`g>fp^*0=TWSbX<_H(#GgS4`n8ryhQ1aamC8WTe7J=;_3 z%1bu1@)xv<#GqG3%n#Hird4a5R5P?cV$`cV)k*Bv`Ij+l+lGexAZ;m-I7uCEajj8YK2S-2Te;JU7uDy}HVs92oK)-P%Qn1sMTU-`LgVxsg%X zfMDU?k&=jVNGLDMPtEa*P(Z#vD2PD>gl5Jmqm2NMMntjzw>d1 z<{$7_L?VLam@+g7^s%sGv{*&X`VFvhLO#=xP<_ z<|_#?$O5w>1SmL2lFs!+ano~lq)rG8;Rv<=PS ziZa$OUu1Rx7(WJTP*}fslBlI|8po? za1H{yvc29-9b!#0LAWk{U`zHgom+;AZejnUOEQW|3)T4^BY;r?IaotLFSJ9B(UTMT~ZEZ$+>>4WNYa~)! zxvk@R30rE!V$D(nBL4D^$n`V9)t5a}Pr7DEJWDk80)*+xM%PPts)H675@!Ij-Yl?A z7y*D%6%djsKp4|XCvC#&#@V|sXqCiUfM!mZc0n0rU<#mzoiaYYym$>_%%MQvyZa*NCo1vHUE z!6-Vl^+-Qqiy|()dv544ofY#uSNLl0I^Dn5^h;CuBcT86*g7|u&TJ-)@sS!`uCahz zAl#U9!bP~+6{laeYUOMJE`VrZz;ne4Bmo1SE43hR7yva8(X@at%fX;syCC}B+jnEJ z;s3Jc^@G?|lEDskmXe(|Jx=lCxlxWTldt=^ zY2`AQvE!5E;8WO8A@OAUPWJjo5xxQNUV(qTRGokQFm3AWjopfO>)9J7C%5C&CEu*` zji_L|AEz=cKYqtgGBxoM3gr4d-7k#pJ8gqkG@InN$zCSl6-`!qc<{&i0`O%;nz{(n|9%}b&vml@rXvto=k0>ypQy47qtq`F*vEBG37!D7)G`qlkc z+^6JhkKUGUGS=^|Ha#b}u8v6KO7ug=tdM#3(UiIckj*7v9dNrE#fNYN$}DC5Cc*H;^>YP{PlhQl~h+9O~i7P{%#+UU`O|D(eWtQ zy@#-?7%wlkI48r!Z7p3|B+LE9GX|!6xpf9cQ5@6HY=L0Sf zdm$)TJmJMTMrCg{|4zd=KM*#0K%7(uS^$AFm|%rBrr-74-7y#I`q^fSpqqy#^a+Wn z$AGL*NU*R(l8}d}Bp+s1vkNB|4gdf)k#=#q(MP`#uraod4A5`H4V8GaGA7awl3Ae- zZ&JBF(iyKd>&u`b?3Ffv#17jh^Z=%K~0{i5T%}}?9eB|1@hqm#5WBb z#>Gb!Aa1I>LRu*q_+YYY$CQp7!WwB3q%KBkMli=HJnWTp5dccOd;mI_{i5P&AmOv3 zt4N>ljs}ox{^&WiPcJ3@IxyT#lO{GYXSe5jL7bUZW*E8#E~>_e$f-(tfp&7x`X5dA zi*?aRYo?zts8SQ42+X4_6^_?UDf~tjuNGFA3#t5ZGcPV&dNVOeik2QrMUA%bTdt~7 z94+-=Vto4Yl=oQF$nw73dJ(5`^@Bo#rYDT}9XGpPlTrMA)piXMUk?I*@+S<;#f*>S zMUsN^vo$d6A?u$GMxD`pHY4C#oWLIjMxv9eeJs=gPK10JU?d`Qx8ZPL1uGy&2A*^2-h2Z*%Ni_YX*!n2CPGd zH#>>F?$Uv7bfE`D{!K;hW%LPJwBcG5pR|MylFo~I(%%QF=SfM%$VjI(+f&;ev4YKw zg!gWfzzUw+%`wuKG?Ho@zqrIqTXCa-CM;nA`Vt3A2#QmfZAP+KNF)2T{NUGaa0*Gn zZ0a@kLdGwrT>@|hNov7awKAi0$fNc$I;~5Wr7saAYND$R`EX^TR?CCv7oLwax z%2^n&t1+v*&zwPTS57r&z%6jRJ@u`D1R(O(@Ueyz5+?&jpmRsKyM#Ox`&!JvcS@}I zPsYepVB10j#7hn!0cy8n1UIQGkeFE`I0gHwXdszd#FUKM#b*G6vCwt$9M{%mq~xKYYQg+UnAySWM*|@% zjcF{#2{gtj#H3n34nqBp=k+Qp>QiTl&R!f*%Vd1II$rfEW{4n-^WG6zq$Fq+Tu?_i zg&>w7gsY8k`P%d;E{=b|$z!fIB8{Cq2qS_b2w1dnTeGq?hb|c5lX!%oAdj;Fz>fjPH_rbX-*`v%ulRe#ZP$JU^Eb-~i=`Ts|0^;ua3{@}ZiX>|-dbJefGGuQB6Gq)V+W#$6^ zNUMo|hA!E&wCV&Nx`1bCl?*&|;S;ik-_!rTbbM56TKitC$8X&v=2UjfY)yz`v2)PW z>lR@J5o`5%MSuSTeO;%UbM4cVMY4oss4-)s~OS9Gy{$(Ny_!k`_j zA!GgGTS7w^QPkHFyx3D{*_*>!StMLSgCf1x6&J@`j;EcCc0jBp(p`VfJ1B+CMg$=GGZpl zHD}TQ6VT8QLt?^5TBdRpCAGrrbR|h#K&f|}3a2C^=+{NkmXodVl`aqiRF(1)Ae<^@ zox;hwogz$I1o6E{mxrAyX@8_ksXx*s`#;j9GACHND)wz7x;Z1Os#oBt??v5E&<6uSCGo zWx;Ln?){Kvn@Lk^9$qWJv!&|FHf+omMpj2vK>hnrqKktxhke9_EuHyK$KMIb3}ES! zm1Z}>;S!h&ChS2Z99v&a*J9-I3E7mTUxK6RNjw;Lw%6mHLhoqrfsj1dDnR3cO zEsFMH>BFR~4|Aw$VT3c3v73p`7EgR(dBp5Y4bwy*z|VGbcc26mTJOltT z5S$>hI|^3NjQ}75m>=6+Z%Z0-9FF+j`BCVCdNxp-#m0d!HduT%Ydlm*TLDP{t#Ymds|sIp=AhEoE?H=dxxVn6!=2k ze6I>9Ax~RWe;n>FZn@nsU2xp?*rt1f(>EdS_3^H$;X2oWgugynv=|XEhdG5pZP`cL zcMwcr$`Y=0q&SAWzq#RXNSf+kA)rIAeuzmse)s7FIzlCN`B4PLyv*Y2$&bzCgWZv&qo!Rwie4| zbJ9>t0n5m^?SNpwZH5IPawqUAxj zs&Ief5S0Pvk=+tn|HJX##g$=(<-&0`X9?L$r8Tl)icx}ZOm`pA@*t^({McoOuJlUJ zqCnMIp>4K4;b7pV`y%n%u&eEz-@TNcVq14S$|g=F5UxKsqM^IHSL|Sce1P2wkow?Y z8b<52^Uw&xVyBMnZTD`+8)ZrzZ9D$&6$yX!|3pcAH zBsqDaz`6pB97Rfr7M_n1Wgb_;n4Yg_A+{lgp(Wvv@IMgQ8~3<>n(SPoQE(UK{>1}P zHM#UU{n*2LWEPz?x4W7$jCX$6zYH6ZP_I^UUZJSB>w_!<3ag-{Vr->Cgm6kk1bI5; z8;p?=^lS&|_)kcRsRZ8aQw3{~F%USoMo9Ca_Q0Is9wwMgAz_eY7#wV%{?53G-&b#b zM1lz?i=Fw5@ee_}+O(8p+q+00u3{HC0}|^NE5$=3SYeHtfu!_~lN(Ibs=iyq7-{GH z;`BDb0a}ifgHUx|PY8usTvd+r8`^C~{dL+g-wb6OYNte5p$sVEnf+XJs49&-rhNzR04Usbr&gS%emMH|p;c zbte$VO`UvAi^WsZmXu0@@YN_3%#%=YR<>=Fit8!9$yI#wMYJ+FPqa7qO>cM-Iu>tB z&s`FQYNA^Csmubm2_@=cNZR;n&x{=izuuG7-@pG3D^zuwoBVD)5WKWNEiX7Z0u_l) zeCZlE-?@kbS~;OM2pwSavXn;RMknms+es52=8#8Z>ffQIEi^$4vd~Hlk!nNm`3W>SK2o z_$gyUAg5=YcJJVm&>-HwLhXWn!e&fSiVYztag2BNBl;A{FcYARJ}H@8BS%b6y9$M| zagHGKdYt?fxz;>fcFEoTjJI0RDv0BVLY$rc-uTs8?=P5UaNNQ~gIda)Q~o7xu~Cw| zNAtKSo0h-6^tmjeml?ZmF*M;@fl2kHDyZU!f(WdPjUQ34LGaW=9aB(3071%f<+?uS zqwjnwJA3swn?>*2c+`osAH1U^k%?a#jn7(E9()K`RA|ioxPXQhgrna zPG$c}M3Q~f3x|41L{7KXSrW*#yM1%GnJsj=yKChIquMGDo(TQ49>>@}5i-LV9W|YC!dM-)m5#Av^_g${PE*sca*3i=U0&a2 zE#)Kc%*&|W&gWckRk$LhgFH^`>Jz)WHebSjz`1+vZGm)dIafv`cgSgHkLN^uZ(EW2 zSyzB_zDzxzec`8*9fOyan{2g|RjGJH?-$UOm`Zzz$0GT!| zdA6;<8I{8yYA`;c}ZQq{76Do2glYg@fuF*i=-GmiAG~P*}KjigBLls&|=A zcm+gEy!Hlt%B@Fi{Nc(0m0PIFz*C{b_qLu$A+S}~b_891l_xo_$poE#5Z$i{-gfZ+ zzIi}KN+W0|wRfj;ldbxo?oVn#fZuk|CHzxshq1;vjqiP2^JSIJbXvu$w+EeM&J{2b ztG`j`Md9!(;E#{n!9REezdrtm4(b{Q0Qakjk*UFb|I#qxsO1Q4qHn*K2)O8G@@kbl zpt%f3uw@r-A=s;|(q$)0e&j3R+yL*QeN@R~o`td0qGQ9)RL$nJ($6g1+_9yz1Kiq< zx+SMkvjkrctGS3yz7!u+Q8XdEgFmdKrZtYpLxbg^_pADl_4QgEl7U-o|DcST-`Gj) zjoO3k9$y}FfdPIoZ*+@?yB3fmBu5&jt}ylIy;o5q-|eq~Xv=7SP8Dn<+huni7qk7N z{G)@M(U}N~3XmsDP3k@1{PN7==fg^Y?9Yqa{oMms@-(0??*j2M0?$Z!N!o@Z+vC-K z?V2uA@oEw76G!vIS<{|}y_*GGUDL?uXg`jBfwaHRmLqBws`SFi^)xX5Fxooqod{DV`lG82c z4KMzag{gX0{2V_cvysmI;pv*^-kL%4F6#Am7c}b)Hthti?HXi;Av`W7^I{h)cRw2U z^G~2M*0F`NX}0)MfUm~-6o|ZtQ41%uK@i}rHfHL#UNLq^ z+?;PRA9p`ceF>Lx-mn+bnbI1_p|vUH-wk9eQexXkLpD%ZCjf@9(0*3?ow3JX$wejC zjfbG-jz-?n*^vTp#M{zm7Wo#?317;B;=w#1IUf+9Bx`5KPIzwx4_)Q+I)G%WUIE?^ z>5*XJ{TV>a$If8U?#u!8UbN2ZX##cXUb_0{;r95Ol}n;`U@bKdyJJ%i^_sXnkl*(w z#XIjy(o)fKRAOLK#_a;uUCW}c=9S%kOn#(u<***14j%XH$u%>HEpSD3iGaVEf0VJ- z_vxt{AAfj%yL+X0`%>g-{dA|ghEH~UqNe;lwR{8gK%N%z`f>i?s_OT{-Im8~TcejA zwHZr|*wNhtXXAeVrq}UVjfXAhe5KhcI_v7t4t2j~RuAYK&^X$r<6}PctEy#IH${u! zxy*U>^Jh)zk6*U>Z-1TBErewFP8vUPdoQ;T|Kz|}Z1nAL{QmS)a7AZHtGw~fbsDz5 z6qbp)&U0Y-&iCp^kqtXg^?RL{gTmqdhPskX+N9ODy1`%Hl~<@6@&@Vh%O>XwTx1{h z%pUH(*=zt?SP@>aE^)^sx8dQDQdlbei z9la%E-4(Cxwzg}V(|xZM-@Li&j#&*Jk#|ohwE6-*#|eIm?N(B2AC5sv16uZ<1#i!d zR1Px*NB8HISE0fhW;4yu=8Ddsjg^=(g_dt~p%3zaeO^dI5f-N!-massO)Mnl=uSIM z_CAAJx+*{4>l>gk^>;yJ#=r!$kfMUSBfmJ_3--i2u6mCf@i7YWOHq8`V-v-bGWx>D zC3+=kWWd*|FeUkwgilznOtKd-(}<*3Meq~1e&tBqKqrr7L!c51&hEsQGl?LX2PK6g zq&Q)5U~gddbZF??#Hx-l0J(z7(1-V5vTtHPu=5n=Prm&@f;XAL4KLS0euO2=HIwlH z9yu3hjVA+*fL#qi(Z1$dKn=0ep{1DGMsA0)rFaYe(+w#FGRWTiMty@3)x|ECE@TON zH%H%1v?+6Cw2N_*U#hN{Am(uE)YyagQF43p2pF+6(FZ|z+~l%x#JJ_nGUg>Sdf=7u zHs#P7*W{Rczypa>XhNTP*g7+0SdLnsdGPoS4$&?^p!U?R|7V@Nbvof)&(x!2y3e(~ zzip+gS1xfEz8T``;b$8!GahS*^o(+o%#~l7v$u~WCWJ^TrXWj0R{W`w(#mUgoAaMC z)4;_g#k#?gp`=Y{?Er_PC1iZ51!P&f42u1Dazk$g0Eco=)0eb^M za9<6&A#!#m27K|s_F zW>RqQO~o852-|tzKHpClwu$JS%p@Ux=7BzAmauWdi@TvktLUB3A0wDUuc&~&IoM0X z$BR7hfsI^&vE%jXd=MuN>?O0DF=jyJQ45B^rG5?SH*1dhzTsX&StLHwgwr=sFxNoC z`TozpkuH|LWkLF&?*j$(obFX;LRvxwE~9oHb>`=rSWb|&u>*X+|02|!@qLJ+539Pa zIVk&Z^E{^CdPtBpOV;M+m@@ljLr!2+AOCR?DSJ$)k0c-j4Zcu z>m4A9c<)A!rr*7nokQKS+aBMUD>eXT+nSpFe#=I89KG)Tb7bO9%UcM^W>6#GBXMrCARR2>BN|9kvcx?L|6*<6NUim z8@Y;snsM=9nRD;A1MD$Q#v&Z z^eKpBn zGLqU!kn7a5IjWCf!pP`al01V86bIj*#%D;|tArdZKKb^aQ8E$)H&Vu=JH>piH#6>R zPiw&Rg2$RAj>9vD>Lr4AvfE*&ZG=7UW|}Q_K(btSwv{xmu%|;eyLLLSuy(Tw-F4vo z^hL(QecD}B10mB9(69YI-Sl?JG41H^VY|`KxAE#1uuV?+X;zz-jOjP<(eM(~R&lyM zZeglR$h21Y&U0Odo-MG3NxK3>M#hqQfaEh}1y^?C;=8<{v&0=|@e)}NLRJ(M{?}KaMMjV|r&{WaDm+x_Tcd&8nL4#@M zZHvClsC)a{;I?34gU>GdvBK-2>gM`red#xVfsZMw(XPCeqOrUmW%Ft#h)9e|eC zWU7Zw2CK9lPMsIQfd9nL&5>bO1WmfyUgs0zAABzF`iG4&pB|hv`G1ZY=r{S^wO{ju zHn$&BF5Rkl9DSN&81r;!%gi4Kb1U+*hOnRPm!tEs@AQD!K;HI?DsXPhaT&F5nBu;F zSl8{e0Iap#_oXSWAhTJ%OH%^6p9d!^i&fwbN^MTI`JY(W;pGMhG!C2P{l1ETzqP!Kt8slsqlcb&glS|( zYviMBG2@-<#?|0QWURM7#a0%=D+9JOA7%RvEp0bnB5CKLxUEcrtAawVa&iw-oUYN;N9Y z_%gC=iXC|8s|mzD@pVg%;IIVQx}eX&$dvZ>z>u^bb7}5>bBO;& zhl1b#QE`#0Dm>>yr3xl{cxDcXHRWrvT;>Y^rIgStfidQFpyIRy6%e&0#s*$87EJZk@>dE z3IH}mKj;EWyTR$7k>Ls#a1#aJo1-q!_R3b`b;>E3{_CYB9)J3%@Md7OLg#X;Gj*4k z+1in+7&f1wM)Yr(S)-W*0X$aK8!AxeoF&C*5HRr5|6*D%1rzAtbx!L5&u)t?z z8w&XP=={VuN%Vldnsha6oFFaDVTs*NdVGYeAtK)ONk?^(Ryjcgv&OX zu*)1o``4N<_#d!W9cvIcS5()gY6#Sfy?0Ta8ZkHVyw5_x&hvp!`v211r6RYG% zgdccw;wCnw`yHN}2@PT;8N?h~N7%Ka^*Uu2rDh0XdQq$mncsD^vC275#!5L)Le?#z zfHy$T@32+KZ+b(WT!3$scR-;ct-b*LSD&0$m<=OlV1o@D=&_41BG=cc=~UR>_6D6! zH~2Cmgp++0VlW`^>*4*{)P+fbKMHM$)J;tyCkcMd+k_%CdKsUL(dRH3c#5j;p)ldv zp=d=iBO7O(0!30RG1uLm=DmiPQh7s#d%d(kqK|bK*6)?alY^Xy@H3dHXbGy#=Lx4A zx3ou%KK}(Eq+!&?esqSJlaa|7{{C6IL9||OBs1bNPC6NEuSsSjVkHbeH>}3L&~YS2 zm{X{$$bQ99`&icV9BNB(t~_#NVC@705b|GwEcw%a_y^x!Qj{D8GhhG$ttM3=7=Uog z{|rD#0Rs>U5MM%+VPF7)DgH~0ND(M;9sx5LJqA1jd^g-268_UGMn~-~bN>8cvrNmozG2qzIS+=T z_csrw#kAb!bq@TS2s?80DQx~H5k^nMa`)qldyiJVdyjl?FF819*-JiE!<#}m{lQ`# z={hTtyNk6}IF-p);GJ-mBiNdj9s*m_hG1)&?3boo62)I@THE7lqj&hlnlAZkO`pSa z{*N^cG`uyZZ@CK#|MrzhoxFF~xS0ut~d1lwbYHH_vht}htxP<&j@(GJn6SB{# z&1sb9Db02}EJbYn0ic zo7Nl(w5`hjOut78rR9lHutyM)+E?UTnXgK}3q+U3>uFiG_p7S_KG2}9u?KMY=zm0P zkh!i`*{ByCSD!s%nA|PR9xUEFF4AnSDzhyNw*9PY3uB`_wuC0%C*rQUkl?IZLw?4X z4mKbH&KSWnAz|a}rKTft4llHJxN(%|>Ph4m(VFjXMM?BEq)`P&jz>mb0SxSM&IJ;I zGqJ*(`g}6E+KKjCncFWz!Txs5>m?CNe)E!)A?kT) zCkjNPPLomv8n7O$GRtgdQMrO^4)%B8401@^%k3kc49*}|{mCE`)ciMtjB5n~14PLF z1dwC@29R0hC&D~#RCr18{}goev0ehmqXjPkWXOrwJr??d$Z)O=|ItV;HpZTjaK;VD z;ke`~%5?g0iU|LK)SF6bXZkQaI>^3o4HgEOk_fav0c4z{z(Cc>RWiR-VU|_MH9gf| z^@0=i+AZpsdst%F9;y(_!j((t21|}_bp8n-3;ziq<2C=E0p!-_05Ze>Zy23GNO?^I zs@7~}MN+ELPs);O`Bnb1fS}YNMD|2XQ(Ec)6{S!~x(*-(mTnv(8cd(ok494MZVsv~KRS5I ze{{syNfjeM+-&Wu;ty~_myF8nFe|4H2ez@6=E>|(THy`m5V4{~a5xl=Rel3nl?7ltBi=)d@di#K&0hGKFs!mJttdsUp!4Z{Y_1nAsQ0HVFKREgJRE9j z%EN0C^K8Vbad>YhHIn#p8DI3&I5#40^Kx<<9FcWLHbw+5kusQ}bZ&}MX&1)Tycf>7 z(iugbX5HpW+$jrdbV`Na{|+@* zCJQR!03<4?zW-~u*S{F<`(0^~@a!w1jCh{apY=>XO!@9f zsn+zGje~4R{Szq%VO12wBj=GJFH0R@vEakNTqaIx9@9x?$iYT85!zckea;!(D1BYH( z=uZ>D9q|HHUt-_Gabh-&I3QH;eB} zs&M3qXVn(=oR{x-Ui}Vrd*hOq0qKL(65BWw?axQ6E2?d@Eks1cv|d`b=$oN~=mOuG zUTf~wO{Bs^URHysgjzj!=a1J6IPCBuypt+^RR3XtMHpXx$pGMC{Y~uy*sID&^IdG4 zQcpNO5y&OK6+7tsvPO1vV(#$9>*^KjsAd=?F!^K75RnJ?kKl4%*qCOIcN=K>R5I4L z%u^v7ulhshJEGRiEkrfkAc#B=z=bG{{tDiflb?$X-W+5a2;hcIsMrD73Y=XhR zb!ZDz7z}U)`r~jsjxku?l{I|ZZGNH(PhBqs+^Bw!?iGqOSr!}YwT*A2edp@{oj?^t+Y=G6F7jRoy8;ck%zl99o1lth@NCa0F3QSkyl--Y_*N3Q;v42A7+)1A~h z`PC!2@t7ddf_}X;kWe3(y44;~@6tyBfB^buI1aI`Di?Vf?rMKH(dJ@4WCz+|3+O%g ztC#!UR_tPrHdd_0CVr&Aai3#YW-P;cg_AY4?ED8$Q}}T%f_Ry6_Wt{BV^-ZPND25i z>F9KcK&7{@LiIti&+B;)etKBB7WC^lu>+TmHinKc zlTP~&9nGq|c}s%F``5yN4ho&&_>m$|UzeWdnd`Sl?C3Hcvl`9Pj;kqozV4d#EkY&R z`i{ldr(Z@2@H;djmwO&@X|+{u4sR`~4wG}FkDZH?*WI(x)T17uq%Q(po6p`-lTkCf(;|~=$m3mSG*a6<_$p;{b7G=&jobcPqzE3h8aFoyzR zeW6JzYS6+7zdAAp`6m7L2k|Rsy?v3Bg}JL&_D8iXyqKl_{%jQ(Bx;9&-B4xW;zDu{ z=74xmUp%<;UPdjf6n2EC_daj~eTlnG82*{`V+=rx23MI=!ini44&;;)`Jlm&Kw~=h zSa92;NNq0`7w}H4c!2Z|kh9_2k6;;a)e!s!ju+0)9xg4ojW4ar%GId-sfJ4>1g)V1 zNI?wV0C6M6E%osbXo%ST+}2>APldh#bT_0}CjufyFMuA2 z-Q;8v7GoC{y9x~T=@b=RgT#Oqh4t1(gNE;z^cDEzrR9b5!u44S681X(L|TvRW^hXg zroY;i>1emaT&?|1TIg*;Yc@iZ+$=(abSxrgRi);=0*!hD1fag~o`KMO013biTDy?g z2W08m8bylhT3eR`_)V-|P?fsQLiE;A2HgYx8bx^BTg^op-rQZ!WJ}Y!^bMHg<9`~6 zeWeao{{>s-GO^$Pr-K+U4HtX4X9)%CW;Qz(!(AP9j2SgKHgewj%al8;O=%Nqxp5N; z2&QBZpFFD55y#r0x-B<<4Ens0W`arChTF%omO|rP>`>!oi6_?qriKJ`XCIEnMNIst z;3BYE|1@7576Da?tMOKq!@&UlyQtWy5(XxWxGWl{`k8?|{$3x~d91bIbg<~8G(Joq zEtEbQC~`s(jkU|`jW}_HjIl8NWWTT|0mxc|vpp8$LX_!^JHH5>3^ zNSO?i!n#6IoNY1_+4t2%HX??A%lA-QJQ9*lIAE}><_`k@;TX9FB|wT(py*+9Dtq{{ZQrZ-h4+9_r#$ESNGac}8 z1iG{dWiROSbFwK^k?3Laep(O^dR6rp_R2Wi81C&(J@Q5G`Ig_JJN8a-jG2K4%Nf1# z1f_twqsD`m<~Z0xuzJ6UW&fYrIU+9-{(u;sAUH1N>cG%lag)FehM+&Er7*zw^+)-L zOJA40*He1iK+peF5t`mK9=lq8cu>%0TZbz)?YS1f1&~Y`yQii1DI5KCzE^IR(yLs` znnm?_6E=!Q?b(>rXQ`PGqH}(Deu~6@>%Laf=I1;|Oer8bEWYYCZM)=` zFxPHEME;?E$kdDoC0Ax_%lCx;likgr?q?#XWa#kgLcQ$5(c)KSvy1u35U8IA-TN6a z`~pipoX26?F?x3^x8n}wJV5q6t8IBozJuRv!?ufQN9B=3ri)Hv#8LA{UW11L&20|A zrv<)29RaQN+sZpQ$n>N zrq6q=rTp7HpIG+f$;sj_OM3cAJN5VW)P(?u(%#~3E6wiC#prY#)T;TzPdk5WIEUkj zz1`f0hhB5Z`upAPD8B7Ns_(Ia$Z;vK+4u2_`{P~rT=AD{^p3ra>3Z3{M{f6pYDUx$ zN%Qt6P%xL1P!>wzllIG*m;!!R^P8Md2;JPR*B_{?d2+lw18kYC@LH`%7XILNA zrRg75AAMWnzgc~=CB#Hg`ZqyzX{r14ZGK&^TMEXX<2{{ zr#uw68aG3sVTdbeEQ*teq?FX2Pu5VGaTGXT|f#gzHW zjC9)z*|+?z%e_N&QuoH?xu)3;yxJ#om=pK7orA$(jJrc%{@WdCMU4DQ3D83bewOIG zIFg^~zPm66$zb0maW3$mp5`&)3qP!tBl4L-GTGey(j93L8u^D3plbLc(cy%@=-b|< z8qd$b$4$dz6pxiR?3CTQ0fD;@_2kbaofc_a!$)=c7m<$1xM|{qPZo{gD59&L`@a~m zmAAG3M^_Vb>rYp+SPQZB39)?x@c;v^SDhLR$%e&r_nZH0f)_F0_vT9{I>K+HKHCZ- zW&{!L05F#i_h4OcbOya~ld4nn`+nIotMbX`k3W@}qKH6pe8*_<4 zXBT`hOt?Q5Hf6Z9##{5D)vrp(lvBv`#%~th`iF&f!BE17BHc8Qz@vToA1|jFG3aUw zLc|vTsOyZ!mN;oeySc%g_^|ttp*q6FtsgsXNR<@&mx{P?k%IdHh@gN%08`lG*KT_> zXrLgM8ha=$0bPmt^A5(O5CpmH-&S+fW^KGGMUMDdNr?jAn%clMmg*NIq>6#_K|xjplaWJ6(Rv2jKp8-M zS@XpKN|Iy8^$L?TbnkfuTN?Aej!z285oBbTYW8Y4oS433}23h(e}If<9;i zg5LiY_9JM{@il+DcWTJ;wtCrj7A3q$#_GgOwu>uF5hP%RCC=aHdV1JfiB!-AG$#D* zZSdBx%!{zUp6P}{9zxAvfl_>L?WKZWx4yKg)U21K)<0M5oHh15c8^*Aj@_j{V^`;S z?4JL3>^A>@K~GUH+N>j9qZqG-itj(JO8GNF z`u=|q(sO@YmEIRuMFIN^?5emtyDB69a#gJU?W#omaaCHL5z_czSLO8CRT0Y!LYn#| zLmFb&DvSbjSJoU@L$&)Yf>0kP2*`v6GXDMz())d>=6~^@7N7#RC=&LPLE}EQ9nPF^ zPK5km)L(}MFJQm7nHcA#16W?MFWoyKcIVbCx!kOJ<9wDVS2 zjDDXyY~THISe$WHTlMpL>7e_Zm^jtsPEuF9sHN8igY6yA!xlUk&h2c{3i5531a5Y^ z1{->nn+YL#(@cG<-9YzLHUAH5Zxt4G+^%g4(jcIeC@lj>w}OO}N=r9Lw{(LeDj+4z z&q&J}kZ&ui==BC%gQndU!DqPoRchmH)2Zb{vqoUR2u$ zvCdc*JWmF{ahg`(8DaiPq^Zjf6U6Qz& zGX*U@VX)l$GtDm^o+)hUZ`@BL3&6T)N6D8bE6qjc=kn7N6yPshrE^4hTP|bYE-o@( znPqmIkA!qOe1u-S&)nKOXMemceBaAfJ^zj6r$;U)r{+`W*4x65DJs4Q7wAwq`RkPM zW52KhM(eZjkhT2rp1|DD8t1yLHK@~Gw3?U&tp~?VIm{-$*>K67;x#$uwmwceOYw{*u z3)k%Bx$OW4ML%S~x5-_j(KlHBiEWt+Z3~%a34eKyklo4YZqMN(3a_8GYi)}IzrdM` z=YEhU>p>xOtMkJY;Ka?#3;7uOqb>F+my)%M%ttnzCl?peeptV3W@0a=7JxqmYE2iQ z`U_4kIknJ|vpNAXy4xWa5ej6+Zc<4)H7Dl+o~O2R7F?g^6c}9WRg&Z zA9$m@plSn*dPJ}dHchGAYdavrXb$ybz_MeSqx?a;n%X=QLQOJeWH#5Y-q?-}2|R(H`2a}$my zAcxM4_fQ72%zp^G8R#@ClaPF;dvTg96n#Hj$SnZ^?fQ~XDo3%jWVZ(tLQ*(+aJeCI zm{h8)?cR^ONYJ6CTKKPo>X1_sJ+VFv(7wFE%o%3)@Xn3sYi{uC@cKr-8BR$rjlvyTUI0m@je*1NblHhe~&>J#P4d5U| z=pA$Xl5hRCpI3`Wyo}BIdk3+C8=_LsjvQ?#V`>S*bWrGbRvcuH@tHMw;mL8 zpp;iTQUIHQk<&qp$Kc5wOQKXm26jWt`@d3C2QYx|5&aM+v{yhMM7NUk?U@#E?BGBQ zYy=J#df3U-V-CclwB`B4;Y|=lXLv{7RW4HX1rcqmm$3JavNTr*L-vZTt~ zd01ylSO&yLA2#GF*y$F<`Q~UTsHH6lS_q=6WWQi-^Fgf-?D^r#OvC&!rYFi;0b%ec zQ)fXM1A?@mqyk~=rqY_xdlMl?*gQrhk0Bz80G(h_D$f_TxR6kWFD_z7FrcFnsIbLF zo@W4jaWO>*UtH92Uo9@E)?kYZldi%2sLJ*%^Jq$}H$;Oa{z|+Do-^45?p3&XYPO)4 zQ-XveC)RC4)MwU8 ztE!7H*p#?NP^ju2;Y{oqKP6Wu3n0SsTDG$bRbha}cKFOIm8+Xl5TZWIwojly#&oks zeRT5$Z;T{l#PQ|R7)91N%#<%T($t9w8fge(@t-s2I$|m;(R>hP0Rpp-b0Xzj@t<#$ z@p7I^KFyZlYi*Q6dn=w#)_xO0T1~5X6VPNpY^rIQIT#r<=`(@)#~Qr;;Sbb5OcC`D zH=zDOhp2xH|5N|ShSfhRknZJ@oejT<*ORuY`s=~)Yd>p4uuxy7uOeAg8Kz)M#9(}Gbu)gzPu64GSK!w}9*^M+Oe2>d zy?$eciA>5OSGL2+pBE|+y*R*IQ2_CZqvb*_b%%Ub1<@n3K_F9cz}}B>mf%Zm*3k(5 z*fE;7$@`Ou-ltvfJVk!qFu6oQ>ik8I9QrVn{MF|<-fzSM@#u<+8lMXUl6;^(oh6|n z5VHIQAc$+5KU-kLoxAi?w(BhS6D%_At71hz=ib%?@;FpP9ycDF&b9-~<4Rz8oF0(J z1p#?n;G`KC7RX`30=aKMAXg0pa;C6At{5K3C9MO2+yFd~OI!g0IrHm4P7(;@1UrB{ zE)$l=;Q)DD!Ve&i+rJOb<4j?BTo){ls{r!2OjsV*3(Mn*fIM!62gu{h5qVq$kjH@? z<$yp=4i?Cf!UDMzAdp+(0s^@;SRls>1ak6Mfm}Btkc&VBatYChJWc_T$E{!Iamk~9 z^0*IIc^uYN9`_KD$0gDI&EwGO!0tZ2{A3z+~Pp)IR zPE$lIw}g&}<**R3TnIdt%aKFGa=Ab(*Nuqfn6F~F1Vk)X`6rfp@gK1q%XKW54vXbD z|39(ZBqEl}fyZ(d;Egzw$0W2mzo(M*7(?r?Nl~Mces7ynpD???xxmjIcOSa#20{(W zz;9&4Z0lUle$^n*z)YK`iX4tGNMZQVYZXCqaJtgQf!~5=rm%XM-0-dYWzqu`4o;40 zJuQf?G=%ky+TNM|;rzP$*Z7clm3^?g8~=9AsJ(}lctNuKxz9#NODM%ft(*NgUJ|dh zrciapciAw40=wU9g~y+S$vvzVE#E)ly>R@EL#arg#11|_DEuzCr6>IQ*G$W)=IT`S zuiELvB*mJfN$G+zE1@`uB6jACjj0Y_0tLmRj_GuvS1}FF)p^A2W!vAlH+sv!l3ceS zLj^yl?2^aExIL^PdWuI=+f#l{4wcF(xOsS#^^Vz(tSN=KA5iCk!i1g zB53j^8;8nphBcYe7ppBonhW#}JnwE`A^f^p;k_)jdx%gHPPU!M_MqSRddHW6b}{a< z_2r8J9ZhHF+%=;S60lA3sr%;ePQ6ad4csHJBi^}|`&6Gj_Xpk;k)+q=f)_uFXPGM& zd~Y8kezn+j|~eMw|~T^hb0PaX3j2 zX|eP!0u3|62L;rWF6T>z7LAxI9W55eOW`@|g6rJTM-A5fb5YNBfd9brl=Gp3Lir2* z_6ITAJOXbM+Kk!;VrNv3{hJ&mY|dydW_AyUoloj(E`OZnb@}jby6Av+6!c8KPNBy(MTR@zI8^z;{Pysm*o=SgmZ5}#avuELDWV%?A9xbxtnz@^{aGn(eQ+zqR* zp=5f6JA7vmabzyojnL*Svo`2vdm3xoVashiXYo*D2M<1ri2*xJJ?PEXP`6=Xf{jV+l0-sq?1!nD#vtw=u$< zx*1$T%_5-#%PVz+wXw#@^g}CE_D{&S>A#-WI>xv=m-Hwg^Fbc`8fuiw7?)kH=2N5k zx^5y@x3miTCxc7g2vu`#tqun+lgQSbZoTsw_?|qn6ytm}xTO=B*7t_Dp1V5YB>ilP zR8O!k-{^D{H))A^W9bT29Fg!>bboxRaB*Z-?+i+$!<{@K!a1zCL zQaT(I)j?0$2Tta5oK(n{3?o6^-N=NH4?#nML<`+^FTnRR$G5e=4<71E3!Q%ZO}t;9 zS3tIL^odoL(1U)w-6ci=TBlv&vV%nvEtJp zbK2(j`p)nCswK(%Od?OJ1PBrnbsrg-+$5+`$y6*J?`dfG%@K#5!PR&^Gb3nKy+6|@ zd@@NLbfCd|1emRVFaGLd1MBRZOz6swYqwAcUwY|JEYfqXa-53NukQLSeD0vk``jTv z9NNLtKA3q-HwlTP0x=+;q(kbdKrFyH$0IbJjS8_6=Y8tqGqKWZ3*hIa4S#v}mB0n$WXZD5%^w0eAAyM6R#$AU`;D#XFA zcLbPUD)<0oUy&wan+%v|ODHKL4w>tm9cSMcB8aiS!kb~tKJXvSq`fRfu$V(Rud6N& znc8K>Qay*4jq_b=KfzIo}l z@cMvXk9vVxxDRKW*a7+DMx8N7`3JpR+gIDR-HX3T==UBU$ztLy*WC;2aN7}GQt0o& za|_)s7o+$9cwf$NaJi3=#cmYMs@qcaGhyL&gXxiwmi0v6e(Tpl#~0dBfMjm=UQbz|1dF1!PyY#^)Oq z?GPCsU~+QoQw|5j6UWtAWRTUd-7vAXM>|dWtJ-g6*i@IZ-Zh9iYWldiu$JOEgr%4S z$b3DU1aab7YS3FGOsTcrvH80D5FXzJ>~MPldu@NFI+igA{{s-6%)NNin|jLo7MvbY z)aCG`H=#c6$2Psa&5Iiu{cO-$K_vARaK-O%3g|s}rG*tyoZLKtsnG|RSb*t~P@O)t- zOx6uw{e2ykk>e{bNz_*Ljs3bd!exFv|ENkCfQa|Ath}G@Q{~u6^_L7M*aTCk8*RPy zJL@xzDojffvphNhpzzuP(Et=48i2yP2SefA>g4r(vL?c)12*hocowu~3tI-Xr|3S@ z>_MTLc@#9UXQ6@1{HYDgT^+EJ7!wf|>{YVA>9){>iYORGDt_I=f6*H;oQ_5H-Hh(5 z0QB?Q$LV=2s3~7C(y}N}U%}h*(U_uulmtJ8>g2%?82vzC+gsPl~P&E+|s)`~))pTwkRaF?|mjqJPfg@O|+KB_CsygsgRUSrx zokFClkiV(wfD=4bW$$NWC#JL0an>RMaXa3l$&I};xg1ZMnHkRGWQY+xCN;*4^)ZH@ zIYr0Q!;ZN{!Jz_)9;At+i0K&58$CM%9a8!39<@Du0!&!*vd>WBY-mVs)qQ`#ZdP%- zVGZMR%OeUqTsAbMl8;{A9t3wx?Au9u!zfK|NF4jpHY$vzNmT4K@bTdb@Q~<3zA}Iw z^WHhFRiEYl@r6VUru1;3x0{1QSg*SEa0qMN@ZP7n>sibOHjC-}$1K(gpT!uEu0}CV z*eI3*jAFzm|BPZ1|BPbUh*1om1Q^9Mfl-W25E#XxV53+J8QUT-inY({*pd3VTv8j8 z72h%#*wk>y9}sB>uDL58WQ}>0eS5EL#m8g~yLN^8?6?pe#TPB+R+-v^y8$v^c;moU zGhUvpEvPH1jwDOuJGS2a^SC4{6kBgYyA7*5`0>+L4yasH2;9;6wW&N4Zkp<6BnbqA zBX4Hd;o0Le&vF1W*^^eJh{w+Xec;Ls^j<(hHZp%J;h~G;d&5H9*FSLji*6;f3YSv< zTne#bFzWZd<-_Wr{T|SeVQgoi$rFLeM_%3yHoPYg?Dj(JGe?NoPl0WuTi&c50`FJ4 z$@|~NetXc%sXwpyj@*GYby3jZl!3cXb%~FwBi)?ldkbBN^00O_Ju6v_>dCrL?q=Jt zUztide`3W2?pxsn9dRA=%%_w$*^Kgwzq|?wAh|t0;TGD_73iAFQlV!$E=n%S1~z4x zoGC;f?fJ;G^=_nPv#kDe`)kQ3KXv`;hb%6moHZpnmMp!byFLX8OX>MnTdibJRumi% zL7xb$y?Arm!`7_w;}Zc*?bam0w=yNFsa=#N(OJdMlYoB&uFkJx?!G1RVpb}kp?8F9 zHTb@h(0XuOA0l6SCew%a4pC3ZZMHwL)r#L^RU= z)+b6cBK_eP)vXjDF7XIToJ%WN>n?wf=(ZFgle(0$)m?==(}xO8Ez)_fB^6c75AO{` zepNKtYxJr-!I6_WcdoLtB%xt&&C~N%XZgyN$|idZq)R^%1?fqkNIMnpEFFd+KbvR) z1`>q1nf5ifpGcDA((_?T^|5sGj8xd4S--h5E9OjdJ}n;C}lIxZltZflV*^p)q6(643DVE8u=R88Q#y*LZX$ z|15VG=6-Vq%K`GYnptyg>-L&PK>mhXWSwW`2gu)^T*=?G*1m_#ynyG)a<8u3Zv+kh z=E>2X?avJriULhna*Y?EMcM8X>PS|l3p}a|_j1i|5f%C7s6IE&*{vQiqqa!fJE$Eg zH8dd6!_8qqhen-)gTr*5e$S8b)UAnrn`? zfXJK+aK8n7&$orS-`>o5FY_LQ0r}e(K>jvr)G(6yARLgt$u41#OHu*yw_Sw%Z4i*Z zdD;Q;HzvUSX14&i-)I2$+X3Kyi}D5BZ_Jy~_pjY=k5c}+-{$@s?zbJnFfd&H_NWyu ze|wD&m%p6}!{u)~#|Zgb2SWaqj|+Fdojr!T-*%?|xZffW?l)^vcqiM zG2TUJ-V_j;H!Ny|<}I=5TJz>e1=qZ_AtAvuZ;(rb=Itj!^Y-Cd^QH#9*1U;&Tx;I8 z1paE?PF=1wZ&H)jnm6U_Yt0*R(zWJoJp8Zb4KMRr^Vat0TJsiAd98UHGybD_D?@1B z3@olRZ(iKjnm4y=&0B8FU(Fk+_`joh6V-uh-X5~THE&jc=54eLu6f%qg=^kaJK>tQ zvBqo7n?XFd5Li<;Ws5Z}JGun}IT1^Cp`G)4WNI;{uvDTtM^Y z4AZ(TkQ8$&0nM9evi1o~^JX!G8V6|J@*}0$0nHo!Lt+ht=8d3doeua$^&;gZ zDP|MY@GWXt2%veJd7pFt_De>vAueD+rwZfp+kGpRVce(lIFi?elzmP_Dxn5;f~dHH zul>fcIf}6>=>e_9+~_nri}xob|LwRKQNJqS1W_inMLX^+Gi^|xrb{-BU=0Q6SMFsy ze)4sAl5WHgS2?UX`Y6~NV&7T6hG{#jW3fOP12voglY>w;_WnBDb`OY^ZbHIXYnwZ)DzQ8C{nHF@ZYlK8P8%%QAf98*=eb+mmN`O1($i*f`8&pSJTQ5- zRwM5yci17>KwGby17w5Q^M`YSFero`q+1@*NA^#5xiS z$+uH{7K~%8w{j<)WWvcKaPMakabd5yc-Q3 z`QQfqfgJVf5=DukIs4K=s-ZZ?Cib08wx*3gXF*=GR%)e|h>n`dkcx_fvCp(3&om8m z3X8EKp@y2`HGm|2_HZr7EOT1t@ygIQ(-|Gw?NbK&S-7QqW%l-!66}TmGKq&QaHK1M ziRX~bn&3>41TQiv3-p3%t3Gspca3?WN5oha@tfKW{u%kQ2N#u-$H1?&eoP2l`;_+g z;UALBRd|s}K$;D9ru8P3A|t|S>(JqlJrPVh0encBkQVSal9`^t?zECcom1xLjo_b> zFTH;+bvx3mv-lrFmhONkU=?IcuzB10zJAr&0v4}`-|YPRtq(Vt3610K-5gSSy4lGY zJQ~07@!Km&Nj|aDwnA|(#*QFqHZIPd$}~=<?iHk9$=+wheRH5L&v^UtsUf8srDpj+{=Ck&sx(fDcktE|P>5kaO z4$`#tJy6?+Y@#wM)V2zvk&s?bkO*P*`uc%hhxC$?A|WWMGUXV8INuT1r?|r zf7HE$U(REVRF?9X%7ZIWT(7GeX=l0{NtjR#7trXb;C7Z{(7gZ$ZLqf7>-mtxnVu-K zN;@3a`Qf4{!-;wQ-c2Nc3BOJhIN6$mTa>}ayoN2U*E{LbP&xw9-7ZL>8kRvRgj@On4$GNf()(SfFZT zj;I>(BAD=?KTP;1*G%|RGB^|78^MGJeo+HVc*#^a6Fzeg&V(mGFyXTub&Ft3_;3Uh zK5h7#32!uZnDA=|CcGfPgik;);cEaUd?bPiZ~qSy ze*Rx3y!|y3o*%)4UsHrL;XeoBNC_G4^=CzLu}%d^aXZ-eW*rn$mE^r(ya{8%hfAp% zg@G`QM7CofyvxQxl3fNWNeCwVcYP59^#}siP+Zn<%xI7|&xxMKdWG_sTKLbXC3hb4 zSsGGZ9s3Gp-9JotN2O~f{EXB8#e~ncxMIRH&RsF#-@%yh__8FrrdLe(jbJzve&Z9s zgx~thgdeB=hY4RGdCi31h=4KSZ$JK@GT~#dnDFVp04BWo;B%V-fC+E^hY2t7UozpD zu9@(oFed!Z|MyIIga0lQUgE#OgztfQSbhOac&UGw@NC%sGU1I8On5996W$hJ!XLs! zEMx!^J}V-kjI7?tlJB>=cF%mrWvC|Zch#cIqddOx-OrSrI$`wfy*e@@r8!HOW2jeXA)az`>?5>pJZ^Cg2Rg<&V*?%A(m^H zJ8V-wVkO6%b%ubXUpLp&DOu&$!WzL8qgG&C57&LZpnzclq;8djtwx)+G)nV0EYNWB$&t0;qu^sc?N;(6HdcdyB+(2Frokn7ZfWK3 z4g-t;B9+y{H_l{FPLm{b^!tQIX1RH>R86kCejvZ_t6$uF{Se<40LXsdxWlly_+8lQO{w925-y3IB|yM(S+3GNj#EEO}fO6W$LTPIkL^ZiY&yu78Z7) zNQ!~)f_yXyyS25!Wb@qqF|SObZv<<_p%{G}TKe%NOz0MgD^6wSUBkv_9|&~l-aKT$ zyHhPACBROFA_iu~CWG#4{CJxrE!MH^$;&9SqR4TZPu{w+RpYAz)=m9Ioj?mycKqg4 ziSi{B-;PYzP@aB0SM5|T9q0k7sA_hX(ev7cLF~81{aHEltzb1i7bF5TyI&g#)lXw{ zt+3V;s-DJLT2U}2R6aFlvf`8)(E5=O#rvQwlZ9a@Tvj@`gqYnXu}`)yf*2X>Bm1(> zftcGP(fEAB>T?cdF@Am8t1l`mA5jOiOQ~}`8sA;|E(B|pEfO(Qh0cj*r$^FD$r+0X z4)HT<=W`pR4rPLGXb@!vOBK6|Tg?(J<`gTLmXuJaC0Z+$QHe(-f9gJn6L-ppw@?b? z4*rQ@?H-zm>@*=QrcK_DDyBxB@jEoqmvZLANZ~?`VlmFo7AYP^iPY41dnVOzTHQhV z-~bFzfH5Y@ zr+J^pNC(I1e-Dx0|Jk1u5xDpENUN!=3R8e_t&H^U&POhW^GJheD_`HU^IO?V4X6eTb&V4ZpK60IOQ8HWF{O^rQzOB(j_zv8P<#wcD zXlXX_lDWs*W(W=sJt2#DFEbkhAk1|VqKjf<$Yhd`WGg3djGWu(=9L~I;XxkxcXrZB zia$3J_XGgu3R_C#cAWBX_pr^ zm#(>Dr++-ajO5K|f!l@CPJw`|f@ctrRq*YDuM+v(z&TrIpkEf(HjYMWCX15lVS-mR0q_z&PC$4Gdr}TIJ8;urUP1zD@KwxI?lqT}89WN+G??5J z+6GI{E_^9Um?$gRZ!6wipHSwr%Ddpv{CO|eHaM!(*Fs%PBKHg9sH=uWDK3wqtGllG zBu7yXE4owk`{wS8=uXx|t8poz0!`_L$9su=6eA5u8c&MpxU`;IHJ0|};`R1^;hlJ| zIQqy^4NSLYLWHF-$NXSsEnc6QOAyxSCJsxA^F5VOy0LfW8}M!U{&dle(p!P)qB3Mu zJ5~z@JS#ZNgf_f(DXJy@0co+aFVkAB#>+pL+_A{qdFr5bb|YLxp`1F*tXOYpc<=@8 zTW?zX51$A_AJo#jZUQ8ppeci!>M!aZr*`@iov~Kd^4h)ak-mM_sP6W-@l3QuXkwJe z89Uf^+qa`p?(M{rmw$4mIjaE3>wRE?tMGpToMO74tbSlY+Vdu+(V{JN&qC zr^eQ?sfzg%vw&;=pm9iY2aqU$3CUYb@X}fU%Xue-Tu90+@ogtG;6R~vah>BDD`gr| z^aS#i4)B~mTKyn**j3`K_j=Ewcz@2mFmDeJeUo4?JS?N=i1wvIXP)^_84p^T4`Xg* zq%}>rY2k~V>;bb+%kIfaFYzw^#8!ASSd9K=g#C@EnsV=#pR;mkPgiODaT#$e3ytwh z0Jf9}F@LYY=ZEh@cwd%bdx`Vd~KLrDx1G;lYy~Mi-16hXMI>fJRmdEC|ydrKa4g9cDWFc z+i7RS9N?F|{KbOUR|%77r<96RC3`Hsz0IQ>8k@xro#JNfXHp%0>BLm*A6fhS>&jQRB_%57$ZX#9?2(u@}P0@8GX>;{$USQjB|zN&9mJ%DQFtR znUHx+nB2%eA3wZ7KO2K2V5xqLrGzM@wpx>FERgkMR0+G)T@8FoL;VR)HKJTS3H7hp zX;Zz#rSR;HS;MLR&UhAQ-=0`gfv6L&UAJ6f!4szp)^YDctbAHyttY~a>P(C_@itHL z?v230Hz*e1p~6Q0t*rg{M`nTAW2z~t?N%`QXyHArXLbg8Qc>2x$q(7KF_wJnjWldO z1+Dt%$eV$SMWSU{0<51(u?{~2>6>r2s%Q86)KvzR;Vv;MJNbMIr5jz(xYw#>aIrqB zbVos`90`30Et!zijc5qo`5QySsRFcPUNU?H;y0wmcj3=5X7RQ}B!V#*qFDXzPGEvV zU&OSyHr^iw4jRe2W8oe~U~dG|FuGl97}NT%HH?CA4P$RIT*GMc4X$CdM`#!|5E@1S zgocrh9Ik`WMpziX|FJM)I>8TmA`uowNhj|oFbyN%{&+6&Y=agyimbp#kte_;5{Z~Z zs(?u(2r-Gg{$~=I`)3m2Z)m(2#=QlThR9`7FZ-U1-JM#FUot?KP+`q@jWcg>r(KfO zMB(X@!Ji9_pfH`grFS*_g!S(FR>s)vqTM7wCtjwaddH65mV%5;(2lbF*>+#pPrT+g zAI)U{!0krbMw@T95^4wrCQK`)eZ5L6c&QrcCdI(0HO3_OtOIolD=wYh&Xdt@nvqkL zIyvoD3Fh4Fws|J_^3C|#=Y_3w^j}9|xI;7S{dUTGbiPW%Bw^)EjbZ;=6YNa<>-jFMWAZD$90cBb+DOt*eAwqcseVrXAfs=4@uH%1R`4EER-FuV9OOxz zs!Cy%Eiz7Q#nGgSXIAxg%+E}uQSF9f_w(iBleF!a3Ea)Ad&P>|eID4u;;Eva`HAR} z`Z@)FL$aIaS{dc>RIxTPIs3!ax=!9y;C)V1@kE7 zGsZIYEJjPs6L-z3hE_tSZ|&MX`Jjd>C8;Ly1iIbK2k{l!*oNI3^6hTF!z7UuJo=OzaKQQ1_xl{ z;`^yzYIDHkd6$I6*thVA>ED~#=@C*GJO8o73e#D`^?47#6fkD=(kkON+ybNa6_ft} zm(q%UL@xzk1l;|Wh-~mY+MIcY@c9QcX{ipg|V-8e2x%^cq9r zV+SD;Ukw$;)rZ-M4+B8f1`>YigJc_r^^nzc$9ig+m_EID$3cl9YBkn8_F;nL-jB3eLa8)YcPUjYVimQ_ zOMYFN*#|> zh=M;J>9aYG!ty~(!vhNS1Ls5Q*s;bpwR7SDUlb_aCKztYG!DKGA#_!K_29<#mdt>! z2gf(VqFGYmthtR3_hdD#>FVf|6j}5add=g5%Z;)7Y7_ zG55QhP#K%vByi!)kAQj7^)yB+WST0JzgCFHs;SPiC`^C-oS)0MmXlLeEc!b8-s`YE zYt$&M{_HzS%YeC!0YuKpVhMa2I)eM-YdYEOwo~<8UPvd3*`5qys^!pndu!H$_a`-bpf7(Z3a%lw2#ZS62hv1Ub@U>bK!Hp#1^kKN7 z`$g8i=X$Dg4=U?GHk>U9Yzu+I7}nlgI9n37Ez}s-9rz!`I>Wv>kThpN5szB%`Dy=30}pFcd3jdN>52i3BB4;k`y>hwJS-9%$HGO6?Tn9%rtJRpdn*BgwjUm zVLXtg>3sKtgY9)MHfcm^Th7y>2H+(oXl{AeSxCpAO+}$iOUN9EY>C`hJYkbvSU|hL zg!#*2p;kh)wtDq-b|Y)iav)l4{9WdUnUJSBw4#LF8@m~k$|p%oDCv#WUMlpbllvOrg4bQ% z?vMx{5p3qFHF!=q1}rce74t+xmy&`Z!FH&nxpQz`>m@$?D;#N(3b_l+kxWNR0I>$wnhSf{de_w2juro#@*f*cE2 zkgWj=axlz-y!0I*L1qCY$N>lmvg(xtIlt*&2{KqqlZP_cX+n2%FZX_Zg2Dz#`KuHr z!g5-DOZ?K+r@1nvc|SHVs%@#5Pz$-mEt_2TTv(?b{doN>?ua| z(m*gM(LgdHW}K4s+r3`{B2elC-@*(MX3Lw9wHpwNi|AFDFb`B+N5t)}BB-n4p*HrN zWpspPXyEJTsGh3(3%A`c3K$c^^8=h!XMG%4Z+RKaN-X4u*uS2I-PXIiQ&2P1dQI02 zeHwgVTQsh0+t<2(zz$h&HqTtgWb7M_0QZlz$b?I0B^3JkAE=~+Kk1?@gM$P4ZA0L< z^+g`=*cNy0`r{4A$Y9_=S7N;%G&<|e1Sjy=c4beWe<_Py#y645ckTE4HrQ+Ti5htA z968~y9dilxt&qov$L`}lkKIkH|9tH*xUXKjUzq&-c$6XZMn>@04!;oo+T|e;!CyQ4 zdx|2yK1m7+rrM3Mw=LU!Vl{4?XxnPsQ5*XZDKTiIK&3$-M(h&;3Nw`Wrhc0(!zaK= z!2tf+8MK5K7BbRk)85r)z}2Qg$qTq3#`ql#4m=5Hu1kGUz}Tt9P_IQ(s>Paf{n|}t z{jXm;Rn!0LwQCYj{r9mOhA2(YvO`F$Krg^+lDR+A)SMY}R?}4M8MA*Vt5#*F87R4> zXM|(PqDI9^F>;zm#iU`$*h4}8q*;vpS7}yLc>Sk;(=23sx*MqQG;1A^X7#1Q(k!3U z0w6ryJ7Ue3iY9Yii6%QPs$6Oe(E}GOJuT;Xm2M&$6|4A)ZY0{=*jQ9TLrI2sG|c;L zp1+bxh=h-!N}swCYqW9zNWwtZ3)odogxD`rC%h}nAZBK|3CX?zVZ4aWI_s9I2j$ce z5xT4J=&HD>seWfs8DUWbet08$s+0|y$(nQdGt-`AKzo5WwR}*+frK=p4-6k7{jZ0} zr9VTY5PXP~`3xT-GY~^$IAVx2M+}kTh#`_OalFnHkct{1rpUEFQzR*3icCOEkwEhR zHbm9}L!{5M4WsKki@uWTf0$>bYFs&vEmYx-<7_QNo|TV-_1utVFpG+t^&$vM&>^)y z>um|uSRMu!JkPqLt=bv|qBa)cjwN}q+!iW1Z>X|_$g_40M6%QgK&<#wtat85`}pwO z*4JRKR3=lugB&dm=JB4R;n35mtWZw-lV^>nA@VGgr-#ngkeh+DQQ(}xtN5xD7GH(x z{_ox<9b4jXMU`wcNYKRtLKCUoBy7VTZK7vDTDr zVN$0Im|M7y52ysz3t2Zz20_yOy{lv^tn++&%MzF^5!+hJE&wru{Ta5cEtxMv+ypGE z{KxrsI_lA&dh?bOX9N2J6PUW}K;M$Qx>7%vwA@o4y`Wxz`nV;CbH3*uR%P3F(E;|Rm)#J{8%nghQVZj+L{@s&uz6fu>mjm5Xf zkch=ZGLf~?AXG(bMy8V^k|AyjQ=vAJJy5^%IJz~+ZGHhc%-|9OtU}T3k7p^`Qk-QQ z`_?vF-PWJIkQrH<=2%N)T8(H=MZ&|_dsdNSmS%nii>3xBRV3vDr3!K2o2yyJCcISP zw*@a%Jl}?wD$sYXOBE#d=zMI05yLu9PLp`rL(H8PZF)KGI?U5)G4O>7O6bVcTecXHQTB&1q= za+*=GnsYR5y*X{ktFQ{Qj+t`Ka-`~ga_T@>bx@1iND}Id9Q;a#9LS0RAkfu-FdBj& zV2RYyg_rIMS*ZpuHE(ByFUT89BufPdMv=HNKHOG*Ig*_g6QSBF$v8_(Vr}m(z0dcE z)1#olAA4N}*k8_Dtc~)oN&f&0H?rG3NyD56_<`v9lL{|wT}*;8c#-tA09etJfSbjS zh9wW8*eHJXvrzn0vfF)|T(7(P*6PcvRB&hIFRr|O88d#R)4mU?Twi-+%-Aj6ds53e z@go4fvPp4PNS+0?Wpzh*dr_KcuO$h|D&d(o46h6`3>)jrbKaU)tow1t`jrNHrTBiu zyZVA0Xzu#2?t69V?zIw=HAIfid<9ayu>f8f6m`&9S_&}O_7DuVSO*d?48pd3eJ-%} z=Um_$;#^=AelDPafUpT5AZ&Dqa{&nATtF6aE|82k7kKvPTtE?VF7Op`E?|H-7bpX+ z1qKKCyI|J>XYgx*2l&9bfHmS=fE_p&*g%{MB>!_R;08MvpaU-v6LyluHz%YJ6BEBD zoq9H@{!$rgfMv$@zIZsMm79@1So--F&cOs)ZpKUI7lKU1{ZC)%sRwkl4_P(r=+($7#nO!+*z?%4Sv zI(F?a8%Rs`WX~`jKrXbvB7In#}lYR4Mm~V8M zAMLn6RD*S2@i6a4Ob71fn1?{*P)0%J-hC@A8G_n;#ZTI8);I|_heOnB zD?F@SFZ&^QkANoLIE3X9hzltdqW=h(eEJ}Pj{piB-;Te6?u>^8MxfXGrzK6ERwkc~ zMCv(RZMK|h2qzlLs`_irb z1@M3Rln{BAB=M?Vc6~H2Ijg*6VFAAmX}32okUWvV&~wT%M$=OJ=7XZeSD22hdH-`8 zRowaR8b#t<7^aud`zLhe6{q%sW@Kk*(}H6Av(4OL0r(8h+suWyPWywRxw5BZ%(%s# zH@+T=xxtZNf@8@@aM~5A%9#=8PWZ@vS+|x>-f***oOA8V(iWdKK@Y^K;^JEtb07E7K<{B={?c zxUKnI#00u<=T#&Whg1eXmDT_*m=wJ7nitcD3ZE)!0O*GzUeyB>pNfzgfC24-0++$W zx^9v$12UMcpHD;p8O#v)wkw<}_Wmb3LI!g}uuBHWV5C+S>;M@I3qN@QjH}p0>XwAK z4TJhY;ccjpUToktOvlw$7Y-FW7LcLOo!IbO)#rb?l_Vgwv+!=XnR-lEJg8B^v`N^0 zQ?waI&C5jD*BTc~*JBVinEhbnr;B2ME{-`a=^qpK~OXdV-6@n%9A>%EK zC1%Of2C&4!@4WUM3D6fYQT8My(KHc{vO_XfWhNzg7A+pi(`2YHtxm`}CLSo^Z6Fz> zew#v7+}B)0Uq@g94-uVGR7li6{3ritm*+NwYtf)z09J!ikt5k3?MWuk4m zRPhRi|D+4gBN^$>i@>=79c)e+{7Mi3JSEE)56vB8008ZpIDZpOO@t?7;+Oepxred+ z*dry|<_i2e`jOKU?>_Kfe@{uM76kyb2C6#nNxQbX@nPkxy9s$lgv93IG@!i?n2GrA zL`OnGivd9TdEk)#6%qi_?+AzV%gFzQ^k)iOGx}$+t{DB!2u43CBb?E16e{9lD$_@* z^159mPC>#%&WltY(aZym+)q&;&jV={z&T@ALyR44i23${MAz)9gNOYI-oe8T z0XlfQe>-?2H2-w)*rcvIc-WD!4&ETw|8R%_t6X>Rj(`rHoarh|x0L^ALo8{~!!^#jaI$dlCGhbBlXJ|l=p?^}ZefCXB5_6etc{8+fd ztT9t?s1*;GpbouZ6O=4bLo#`b&{X|okXi&VLDiI7=N)#GCFDK3nxNA6Haj+=;S-en z^#q0UpA(eR-k`eM7L=tSX&(D-nSs7EVKtq8Ab$D!Q*aMXX}&l%X1)DqY1Crg8-XI+ zXCav$@CoYI7x)AffCI~t1#GLdqMeW{)? z8i@%tk_Blfi=#R31GRL1VwGSOR72UX>WXyH${*d@=8>KBFPC7gbTmt>rs8|Hv3oY) z>~0(X)PlTOt<(`Mktj8lA1b5H#>O*>L^CvP(^%`3uv&TmFhP~WYw3%KTKW>AmJUVK z(xKNA)Q>;4bP>b^^$Af+=N5!dP_gdUt@L?!_yG0b*JBfaenm`PikP4(1+RZIIUFHs z={txC>OEqDx&us5xahzH6{`WAIO!+{6z2}+&~n4n&A!6&HOW`8HB#Zg`e z8warFzZ#opuf`^yq|YsTKfPT=A0x)5E=Ks+lp_xxn`l2%&lsvtl1ACJgW^fuOtb@H zqjcIq(I7r!S$>U3Nn%hK&xxVJx_UT|Ds2!^m4RlQI)oZNHi6ifB{6f0nJ!Kl zW*`}=eur||#}`}N=lrJ$FtDRqHa8Yy*v9^_$*#2V4=rGx)S~&OB@(1YG^--vY%DUP zxI0agGL4m5nZO1z>87q_G?zNn*DRj)ak#jb$m$ZNUk{#^XxR>p=J12#)|4fO$fy<0 z@|S&qHb??+l;7IR*9*Yb47SOZfwC0H1D8PZHBF*0J=|6H8J?~}zq$E)j0v)Ir^1Cx zq0d)NMkKPMv9*(=;OVMN2K;*$V5|Wgd|L8ZEsn}ErE*f_8T%z(tihlF?7er?WAel_ zuwi{TfR($K=N&9tH39wo*2M)udJXJoLQqld+cVfr8MJ-cUbUBpg%S~}RK*~Rc7J}x zoq--~A-u>xkd?ueITvKXgI(PlfX0Qd9`l~o+F0Vb#*hs0L6{qhk?v8<$Ya&Rpz}o6 z_M~qQiMjoG&gYT8&eQ1VYlx{2V@H>HOFO*<_325@sSWS33~i0_xJw_p`t#`ZqE5HI zk~D+N7SoC%5ke%EXk+m06XegV->@KYPpPd5Aw@Ys7;|ZbkR==;`3xYIyN+WLJEq>w z4v#fClSz8wUA+z_bM)6FXCMW+v{Kj21_(ZjY4P%Th<*NQ;c-J;M_U8W%*9B4TpQ(p=Ix3& z+ydRJ1z44zeh9Dta~x->*U@I;atxHuZefcK90gyTaD)|*2-mrlsPCv{t_X!y)f4Jp zml;OGes1e$G3}0hW!lxT)A8S_*VXagcL<{UQ0ftW(8eh+~ zW+QikQzwcTt@8ZuO22Chf6T!qu1&?inH=o^Mr#N+itvZxY+B%r- z@=!qViknQH_xy)JLH3V0fBH>*)=?kuaQ}A#<+xn>#B#q_zzWFcfJd;FD++Q67xo;0 zq2nDsa3iv=V(x58wwM^6M>*o%8xJI8T&thEJXc z!>Gw*GPp$-ZpN^yyo)sxl6w^HXfQF90L@ma3RY(2s|WPFCE(wakp60*WFtZ^Krz*~ z*ri}GEle3*!Rrdv2EM7ZQD*Nc5<@bwf497ZtXkgVqVTU#+VnQ{rl6OU+*+gQ1D3!ENo;U zaJ2mSXHzY4todtyXxZv5Ct7an3hFATX(G->^OWj}!s%#;q%DWT>uU3iWN0zY&jx%A zh$C`TLdb&*Rb^WwxLOp*TLh3bRKMsIh+gT{AJEagMH}^0Q=1innnfI%b##+&Nd{EV zK`=#?xRQxO$OORX=BwnAwI9e50J)FxYIl;=4=O7AlI52wO7o=^Ny?J&#kXs+Zn%oeJ`Tq`|IOy>33}q!WFyI+bp%~CX8IV5{MSZ2gd}u?T%7i-0 zsH*9Dv}u~O$ttu3MUw9-zu(G%>f{QN-7?Zy-$gVafBu+(Wde}>Pv(>5au!+*?xpsIh&0F>rn5q@dhM%AvM;r*DL|$>1-4r2 z7Uk}4E3zx~W&AHQ0J{DkGXSLTDmliDJXxXZKOVr)zdV4PF@}!i|9AjT|Mmc${^bFD z{MMNP}`&RjQFa>qhZ%)|Dj=S z-rqFr=zr0$xqs0xDiHPQf8#L4f8ntGZyYA=`#*3P|Np>Y3*-ObFp0=-9CrAP!!Sv{ zaah}dri5A%Z$wRTSB1w{ehE53mkTZL_d)w$-+`=bjMQsmg1H5uS@(kj#7nhAF-iVB*AK zXG9MoiD_`5ze1GvQEn{)&-Rd0eKLF=I9~?e2^@lRB8?7Ve5OdZ0#FJE1m_;SDF=iU z;k3Ncd^}F&D1UBJ}!*z(O(F8@(QGlUU)zj4R=#6 z6HW++JI>umuz)ea%8tjzJ`RZPV-3V~B2O7GYc6D(XK6kZWvvejI6!}UMjwBTtG2z{>>+Y3zQhx%S<_K{o;MgDF?D?iH8gGh^BjusYfJ4UZ78Rx#3%|=6# zK($n#P_n|5r?IJ&_d6t6<2iQrf;aqpxWBTrVv2^78p`a+>SCkJxo0=`L$o8u+crivKU@1f*0%L5`3?*klE>Hc^`RpOGwZH-biWC9@ zVofHdAR|kLW@bhMKm&oYm|I)^>*L}M3j_@I01N~Kh6V%#RG@wCxGt9TIbD3B6o(^) zOhp|PA8FJsRa>Yt)Lfg#A#9EYQ z`K&fmtPa4kX3$r;h)na|qtFOl?huXeIrUc@N#dc7;V4U$bJpw(TkYsMi(2rb%2APm z133q`Y!I6?aj}OkbZU|mg?4R>Rgi6ZhfW+)1{9N6DMh{_k)EM+-o)LR60e4esv*Pl z)KQz(!aVe&eUm&<^xswK=8!U#vnPOu*ygmwwmCo!ift)UE>XcPaSX1>oq9nlQM+47 zHl0m_`&9&sGhNh3jPOKe#Ivi9jt1Jd#pg!nPo$2ZibreQN;mQ>cET=(=OdBue!hf2 zFqwc1Mg18T$@2;64MbmR;fom?H&<(=3h`8~qlDJdA_?QFD@%9I`0R-hiESd?zNm3b zN<2VZx16q*^b@j?jJ-jqKD;(axHgYX7St`I=D%wm(*_+xyPvnj=1nVj>X&aqR9Q_=`c z$eD?1qNkSnm_XD%l-(gc?giL>30Ip)%{WWg9T=+G_x#yE;a1P5k5t^~n}`y=o$6{M z_l|`$lJM@Tai=1~OTXd*Re+$A4zLQ^!#PNRA!uzzQc8T3kFXaU+h^*-F>dy5F5v+( z(uL4glTbE3lb6^eEONbq6twWoBs;Z3QXu~LLa^`h#N|O6i!nshy&!TbW!M=E0qa?Z zwW;6`BlU5Dal`DIwPase6)4tpU$j8BI8jIbN0;WpCI)BQ_(i zL3lpANqplZ0bAgl4vbehPc^5wP~8cf{icmKHpbg%=N*Jvk9Zcs()~qpnxV#lIH>p4t7o| z0u~Wiexva)Eou&&akwbE;PKh@Esm+KZ>?TXew0*47wg|2&u@BJ5fDqugf zHm&+PV=A^kq8h{Q6mY^mCJoTVf-Z|x(B(&9s>rp?(iC>qFwpD_F&fl_sF$|SMRD=H z6U1YPxO93q4$69LYc@qt$&kcskV-|UfBe3n48r(>)jud{{#@Rtp6tf#)t#QT*BY9Pzu87u&!Pi7monghlt9pr7 z#>J}u^b+FtGld^|Itl?|+5IR$<7P`iTL|I6^6J=mTNHY5;-nVVR<+qeoWODN_v`0!yKk>UE>pUFWYDBX&+2Hb&}GxmHIM}*1FHZZk}`KDUIu#W)H+qa zjxd=HmHtAZOAbZJfeaB9WkF=oxA;+h;Q6T-ALxjxF}jjRSK9$Z5RUzW;lVg{{MMbQ zjB|Kb*Fo^$K7JOS;sk@PurP0}3uf!-Z^Ma8C8h=GdC&>hrNb;iSmpxFVmX$$*z-!gNc)v6|B{9ET4Q_JBZLi zeuuGUX`7^ifkhgi%PVdXAV6@O+Mglan^x#*1pVdy$%@ycTQP-#gmVD}wZC-gdS4+& zd$|bi%Fak^2qT45PC6`1{m2}o22e&Je_IB8VxAJ(8)Y*aB@TPwuo3Jf+&99%D}ogK z2E0A=PsXz_4m>d~>vI+uU`aRj(#VSX%sLw zAebQGuVMw@sFI_aN8H5`fq{*^a0l@Ob{ly?n5yZfbE9z2zF3lUfv2eNpgW2I51~YG z^yXaz03$KSfXj@u3GVp`WO(AEq8g9N%=7B4O>WnCgJwd>yR4w_woRL0_$6OB2@U`P z0ZMAa`&q1ns`!(Ur109jS~hk7$?9|Fi-tH*o^+Q-x`4G10CDp3cq}<8jj9t05)};>G=xZnt)}_#z<3%6C705? zROp1_C|ei32}uzpS%$ zLf3$Ik(D0b58OZ6NlBTwnI#-<53qwAz5GLB)M@xj+Bio*UvEFfMWhxP8zDmLnB1ku z@bK3&yX%fHCQ90fB_?i`=9#D{|2FyX-dE_ZiN1M`BClxwHI2vgx&vvAdiRTMyf8kH zLPy7@dnur{l$PM&oAX}~1kKZ^P0}FJtta zM^DP#C-29WoK?ApwVXvq6cfcH1Rep3%K-13b6XP2r?3_o$c@!u(Te9Gx(Qh#CdrCG zqmZtnx)Ll80E^=P`LmlyBkwg$nI97{EPRT9p>f--VSMW85^dV zoeD@Ko8b(16@IALtM8Cdwq$0S+?v0J+S;X)<*-n({?bAa2^>aL`5KBr;a@@k=f21v zyEmf!bCseVIm%%KH6SkXMTP|#k_@-9A3)#scXetElb#za${Vi(L%6sK)F3u475jp47V5rkIPWK2PrZ8I?slZr;p!-WgEuSqjQ|mD zoZdzWzl6N@l6TJHsL1!tkiH@t6EjzNvPk9ge7l8vG1VIqOC?bhxpH8Jz4q>Gch`1`T^cQ`tew79kz+S2xU{06ITKtJ`(_<~~k$?9InreZ*Tf z{yHdHp0L;WN}RHPn7d(fjQJQeMy#T_gI52VvkT3q$IT(7wIl~X*wrE`YgO(BSDSoD z26=Qhzh2gpO*`NqEK38kAj7p^z*K)7dR*fcN-Mc^X`Z*`d}D|AHMW zJ_w4bHV1w*GgA=2*`aS+-fBgQ-hfVG z22?&o*-7caDqcWgYVrYCs@ij$o4e60pa@bW2~MX0p4Xc&Y@14WxjrdKT_o{NXi5{x zM(q6T{z|%vUqPqh+2HixAPs@V+TtS1`2sJ(pciHq*j5-I6XBM=o*$Kkjq>Ln0!Q2x zKbK)eTNYi3FEgtZOc-&VeuIA@HTuIbCR_v4$vd^Rm)c)a_wTQOYRnZi?OWMq{J}zx zE|KG_Uy-6!+g>68Ju|P@9co#Gv%NU@#J^`E2+)(JPOztVr!zx`z4iLw+K0{XsVU8@ z@t*jCd{kusLK~&<*odktaO=PNy==nzlx?}gxVT>fm?AY{L{_Ap(p zRjU3F(pW0NRxrQprw%NqN86?jF>Gzp_Y&KhrBW|qRbQzMuVlTjP;)@fhH%Bn3@r|? zDQ$NyYLK;ASQ@(L(XJ!pk-%`Z-bvmC;~1^2f_G;Du$;e#&>lWC|pl z6_PCUZJ=i2^%BMkB3qJX7NdeFPS}?2oY4Lj2=rISTQ4ZKr-bhe9cPc16CGeMXL&W6 zlU39CvwO!t{PbFePUu$8Sh94?2ri?lOep<6OKDzhY7{+7gF8-d27f26eVU_FpiHe4 zsCWPX=mwh{`}#gyXtm^Y2`BhNlGt$Gi?$dNvGrPq*t7D%v6M0#&_)?}d5lGFE($-;Xri(gFZMjPs zMgn}8u|IGt_q=G_P(d2e?S}=2n|OUcSwp-4o*mEF*bG=Ab4f{$jN3`XwOQ(C^fB_} z5)7NXwtq9CRk^_ZCym$>e6G~^A~He2C`x5F`-N(v6B<&hEm)^>ArlwNXUOB=Xps$p z2RX_b`t?itk%wv0S}JdhTkY_0DccTc+kHi&*wJ-x^b z^d`!F;7c6h)m25?x|fB|XXT;5=pA_30z!}04ff5D8^95Vo7?_~OqWyRc^n+s9Qm`` zmYn5P6@<65oc@i+&AM5!@iYtrJ|Vd~ zSS9LIBn8{Sj+?X2-dqRfGECzo>K=Psvu(REbf9vX4!Gg1jX@G(e#M-no)NgZMK{7{ zYB>RsJFXJ+%&S7Z3kNQgI3L0Id7**;(9JhY--jCl_>#g*PCq|%rJIc1rVuuOVd77w zfY;>sLW93{dNq~Letzuiu4XR+=;){@altCF6gq8 z=ap9sYwWy^>S^zg$~XD-B&IwcG&%u#HgWHf{mcBYbzyRmPj7Q}jG^2zMnc|Fes~&` zj-*OA6X=FRy1qw<7k}Q=i+dMfwGyp1>$3bJV{xQ+p(!qXT{{}Xg|AZqun{Ws0mmEV zAS8%NF;K3EfW1|=Ey=~E*golYwwfXfSrgOR3Zs=(>shMS)JqMkK&Fo+$We~@Y#y=y z_EoypinjyvR6YCb+*)@*4w2-jp|)Hb(L9EC@s8g0L2{Y_7M>X#vZbUADb$g)5$%mO z%rMy;TuIhA`g^#MMT>w72*n^xbM&_|Z!#y4Lnf@+@*i0bJ3VE(-Fn;e#Ui~+n(r`C z;9e>Jd7RU4*;R%FbH6)!0@AC+-W;$sAB#yJ-_OUXM0ZwtZh6l;AFxwj+`cUu`bW7K z@C-^sgnOS2W7^UWh_A(g3{#e;f~M1rvSRmn>=q zcu2}1Cqk8k!~N6Y=IiUbQ%)RF1Mj6zVxG*JK~71Sb10=|op7W;W!*)jdimiOc|fk~ z(jhcrB7Acb&p?sv@%?S(p~$t?)veDDphRX@r>arru)QH&WK&7DWs$e^U5J*n48;6| zZWEj)edD#j=qSWTpXeIzY_pc_`RU3^(#)&cvq(Zqs`&0tGPA-woY66u0@=Ofi|-#s zLuWJTk(_E4S}Xrvf~}g0cVqTtn@p5RP7X+I-QSD;sKitF-A&twhqT_g>xG*YO)uD|bU;5O%>sngxy%H!HEv5dB5%fvWV5~i-g6bKpp$eLsz7FuT zV%Td|I=|pQ=L0MLggAu92JGa#Q92p`S6+ zSBS7t40it9_6V^q>pJho(^wKj%>(p6&S&^XB)9*SsYY(>Ta5p%qOWtnoOJ z&Y8HwK7Zk(58+`37mv|H+&o8Ac2kxpV~O*AO32;PPO5q9PQ1lfYL17iMFU(s_{Go$ zWfC8I@P~NQ|L{+L55tQ%{tz1)Z|j**nMa-ydEao51MK-7%C)L5JDySVj&@#8cdEh6 zt$YMidO5iSq%w_eHW9AKQvqfF#a}|Vx1<*aiofto0d!L;kRFZq_3-vTo(7~oC0rd0 zx{$c_|7z(^Ffx@bzFTp#9R<8WZ>x*sca#Y(c{eAntP7y5fkNi{vTKfGPjn%wD0(!D1lhy9W!d)-Wz28zEF zFI$dHLsH!nQ3xl7cwgrG#4$Lvd4w5NBDqSTl}I0ZvO@OOeA;QUl&W-SdYXbs$^>d4RCQr$&cY-sig{|TW&Bd%SlDgC-D zaO~jgkf5B*m+)l%sk~pxOodcN9~HF%93+o3yv7=C*@FEOJ8Thd3w-f6W|ve~&D;LI z22akCETQxQq+}|_nXt4X9WDh0%^Y~}j}P$+OsIgss7G}Or2ZnN6UuiUH8C+@Ay3n(t`;^I)nGy=rj)6=u9`?C!aaX~xNytIl{ zyTq-jE$!H~^7AG8D}Sp6P@z$>lA1RK6TjXEr<;c8k~&z{bhgo=^~)uX*1U{}Q$KC2 zWTG@6ps#G9Kr_!OzN}@46C163esr~!MO168q685EEvX_|ERzpVYN>pZ7ln3EQh`O$ zWY6(~=E!vIrM{?&S$vtsH(`D7rmR6#mh@!2j2bV3)}uk{7Oo7@LN_T+TMrVa}y+&CD0aavcH+xas zw{0e?SDq?YWx>NFX^C3*$2--eFzokEFQ|)BuSqw1>bOBZ5ti@JQnGwLIR;>Bm86LH zm+3f)nmj9=$}#RlucD!TB6potMimY18-adl>!dPPm`X^c75uKrvZ|U%xmlr6#_0XY zLpkQ~PnqpZf^7MspYopsclMuWhv$Sv#qs^ew=EO66KX%@qO^DxAIH!@O=;l(Lcgc< zx-(=D<)ey^s{vUZ;i}OUz}f(u#JYQmmX1VdQ#iKUBEA&maiE=2) zee6Y?F9GyAr8!KHm{ zYH}Oq?%E!Tv%fEC1nSHWgsE~z_cZ*H*UNmklq85W?9f`8+yuqqst7pbKp5)j=GIR2 zw@jnMr{Zn|E?6GtO$S%TdtRsw;AS7%89`gtG>xz@Jkyg<%h}Av|9;|(>>!^ydWhNk zlA6VE{(F$1?8j3t5zXokPy)rCwasnMBljU^DV`L$w-0}qe5!%3CwJnX7@K{*Gl(^W z$e_*4s+(TC3hl2?0RRtE_3$hSG#Wd|i@i`nFu~ulu7Jl^L3>AcPY$lkF79{J-_?C& z%d(b5V1)BrM`o}h=WNV(F^|szm%fPA9CsIDz4&n(CwbJXd}xx$PvE{%k%Tb3^9cT`Jh|#{nROoJkgB!KT1{5&lF9 z&i;X5;i639Da%cc8N3}uh#ERoZwc8*r(m{a!1VIcHfGu9aJi`=vMAlsH6^(VZ(>&E zy3ORiq3JgOnoUCn6$oa~>8hxpo{rp(BTs%~oEVc`$NF$YoLleLL> z$|fVJoG~OfIQZSS*lztidE^ET&sl%L-04gOE?AX9MjW5hh%)v%s+@y4_1%w)Hu9w= z@>kUPuyO$tE=Cs5X%;Z0b;4+t1$fUtt}6(^E08@Xa-BuKd^XR;rJbCZJ#QBa#RE>c z%afI{VQO9*p}=idE01;|wO-~K#3FzG-H|6IgrSA7@_M#6&04&lczA_DkS6r6Lv&>= zV_+VEiXbAB*M2aEKzT7hhl*6=f;(2JX6g8KEZ+fOp~VwC+dM1`@)A2+IMMlVbOu3P z(djkEmFlP4iafc9A}fM`k*sF}9r^X5Fus>(@GGwLgsOd84tKkDQJ^o%^pBg6c-9@s z{$K3^=XJCPhgV%H{f3CheyQr4iinEh*jGdfy@94rx`FWJjKiS>1p)&zm?GB;M-w$p zxI!ktOnK2>3(2yxm^xG%b|D}YFL|8CUDeModBS&(_|YeXK`o)0GRlB0n#P<3~S zTBI+K)EJcR8oPaLsb%yRVRAQo;H!+}w8Jyt;06XsSB=RvTFEehqkOJ66;IKCBxAq& z)rW+0!ec8oOa~O^2+tv#_B~q{o1&iHXy`2a>tUPb6UivE&7tRbX4-F05zQw&Z2HRm zl@MN?uX1k{LeZrma5{}mO%zn6luFE=CLtQ@tUPh*O(w~WBTA@uL6+PZ(*zings=nv zqbd)How`82*9GDVhLg^~+!i(ZB>-&Vra#c+2>gXZ2MHI71k zIhHKd5fWcK2(Q?c(B~>EXzD?_m;|Rn7l*o{BPinmiW^5(zqJ_R4dOAGplPBT+%;&0 z?DPfgWMnN6rV4wMN5>a8D*S%}1t%!zSbJuN^q1nJPd2|}R7DGunjZ$xw80l+GfugN zFCfQ!Sb`bCg1)tbxd1iIL;yYji6jVD1pA<4!D!CLq6ojwX2T-=F>aKOAD}R7?Wa^4 zFkxz;om4L^#aLaeNx_sm?1qIegDXyJc3_a<6!lXXFYn!yHCM01iOJ@*7)vAyJ~-=k z_~qA*6*TU%DxUgH1c0u$A^;+ki=p1wLv$GFFtBCgb z;m9Xd`e=3EcS+HsGiHncvR7=UE0|2)7nh}>Uff#HW7*|j&2ZzorE|MXIbRvB{tQ_o z6&Vitkag@_e-=q;b8tZ_3>!l3-C?Mej3|c6ci%mT&G%v=8y_=zoXgyw~g7VC}?E-|a&DErG_%E?gTb+4(c)(_hOT(AKzfcb+^g3N;+* z>GAFg(wGLL@IL$0R}!s!7KG$gkPG0&=g&Wy{DCDONKA{f-r~KVoX2^GQq`kGWwY8K zc~a|!Ccj}m*U!zB*}>=gaa2K@+2c*7Hmc@56NgbMCQ%vNSH>cYk)H&mQBVYSp)}BM zKVsN1sVRETyAf9g7-F|CgEyVqovIpOb{Td|2S*ykpmI?MsVguq*UN*IrJGT>n?p59 zAs$Unh}bq#X1wVo9ZBL>l*Jwf+>I__PSU{`E)GTD!wgvTSaR z=A88Swb_er z6)TzwlAp=-sWXDx4uXcAecL%{CHIKfPY1XqEI>%T=ZaG%tqZn2^J=iW7pks81wEd!x)l(X^h{PmuoJ8y}J6f4~poFr!yzS7;$YG`uP^1Xm^^`E? z3IySo0R9M~D|gc-6&ffbtY!hE;-;bf>=tyyu0ed1w5tN>X%;YSPRs!9->Jk^UKAiq zgZOBRD)S4)VjbJaO#b@)RTO-^TQaKVw`f^ls)E(8VAX*PZyP6fKu-341{Ch57bN>b zm^Zz>ez*KSU!w0Poj!YZJZp6w@(QQv(w1`60JW*O7q6wLU_c7(+6YWnsKinD@#4scf3Vwv9}^+%Z~5i z0m8MoKYcE&Zk!M}WAbLy*Ti3O2JFZZO<^OtLLx|64Ys3{ne)a~{&26qqH}tI>e9}e z8jof(KW}Q^BJIUKzw@as)W%qZ3&~LxF4Qbx1CkG~Yt?op%g$M=*qbwJkFC3IxR6BN zJoo28Q!t-hND%fAQ&XrLX&TuSIqiPw0~+jfn>(w|Xr_&SnfGOa&G3QV72?BKQdl^X zed4w$mz7d&WKqkAg@>Y&qQv;x{}E9Yr7-H)DbPq&={V|y6~VK-f%V&gOe`$vIS*{( zUe_SljVM(g1XS|FcSMo4>4%{;dkh_mQ!Y&OT-c-r=4#K%zKYJ?KbVVjd-!Ib0Ctpg zPBRp=UAy`Nv_>}!!`AJ$>Y4BpoW+v{4&+<2sa9sEhD16ATxPPIwO0zO^}5H``ZYgd2W?ggqZnXhloS>V{Euc`oBkg*kQ zPw;aUFClU{)|Yi!9@lfOqq(2dZMO;;bnM6_B7JWz6H_(tiW#p!`zruEa#$tmqF4vLz0|oU99Z^HwO}e6jmZcINU{S~6EkSAD}(y-_RyS0 z!TXHxCD0)UVD@!2CXD=FHvnfxcm7bwk+Kj*%HreX`Rj6&KUC#{&WDl- zsj}aPW`*=}876V$*8~rsb=(-zHhU@41bFWX#NQh;@~Ufs>QWDLJlG({oE9(a23qGw zZ@p1ZF{RL0W~ZITKc>pRacL22mjdn*=8(h=uBYxE^|>KTSMjc7oF$g4!S|p<@!6BvXZ)$@)=tUmddYy>Vm1@TE zJF&MpbY&cu_hMJ6wZX0*?wE@G7B5FeBIBaisU7Q8n~}QpD_6f7kmd$nq1D5jk`zzH@L_ zq{l^fnd>+*cz`L0%tzw+_}kE!v^uM$ulg^eu(y3Qf+i=zV12zfULvrqOW5SDi2ZS7 z5=Q`$2vPXJhEE$Kg~X(eEHK0T($f6WNav$#f^Iz{BesG_FHaeK$V8Ok`l-BX01eAEfp~g<&0l{J8KZ*%Q200B5dnq55JbaH6U9roM}k|A@XO`l{098fzp7& z@62xf9_UHFrp|f&ovT;EmCG#6%>9ipzf5ICy}p{drY&$-Z5L$Z#_|VY818~5=zt!2 zx>ddD(x#aG*T6K@uyn*i0s@k!8`D;>DVhhvwL>ZFq3X|CP=(JNZW}KTi3m~p1{Jd> zStieYJHVKB>#-=4r=aoc`!gF}3E<pV8)J30L0N zO&KuAMxoMY9FCEI&BduXJ+yK8<;TF{YrzWH!X zi{odoQ|@$QG}m4#*dctndQsslOYXYZeZKj&1`y|#^;-VuRJ^2kH(uy+djfKG@jrpYenxhPQn?yrF+qa+#|?7onh60C)-e z{$qFB`{&j3AB|#;CT*1eCZdTCEyXJS_5{ve8ya}RC3dkk?U8Seq$V zr2t*`L7E@Nc9YlfoNe`r1VgjF#ZH|KM>MsuT&oi{X`0;<{ockDpL11wPFbE-UWCQX zMdM*lvMH%}q%4ilKVM- zEA6>QlJtx~jYk#C!Yxc$b#r&1-l#Q$d;uxd97E%_to5PFpkqXGkg>@jZc8FNjJU4c zomkfGz=YYB?mxl>uwEXuRzeeR1dI7o7h|R_pZjgt~s}&7wOK|J&!;>)!L^;c6^b zSBFYxb>g5Yz5r56OJ&RUJl@GHltySzv_v;hx~8e{G1X91YW$cc*CkMYOH5NSQ!4S&wbIXa=#n^>rwcg7{j z^-_50YdpC=w-NOo^*i5}5@`K+cAbffs?2~))2XIl~obs^PR{*V8=|*W{4})59Xe;jOtQiAMaAGh9efPdEI9 zxFqY=(e}iVnv3q|hu{0KO2E=X3x~J%zVKh zhPF_+*rR4xMDqz+ea4xrglhewVpHlLx_OYh6XwC#%Ud+mk$@&h;3ea?0>F2&OY zon($8cdEP3!)5x?QO{v_EMc6Nyz{pTe)KKetFO4orJHij^aOaG=4$ZIvAd}y+lHUM zu?6$ly5J>&V6W@=326T^wR#G2e0zL-?evZrp1%?CjW3^Xrd$&gv{V)zvkq-dcnOhm*}$DN$Brt~x)Am^|mGV0(~&v)5a}!`bLY zJnJbWOd=C$ne1ovuh44R402^#D$E|8F?M{18cb-PoN}#RM^J8 zRuNJUcwiy-wp#RL8v*5g7IkXk5=PnibV8N0vFmSVgC3yAeRAeu(7o~J#g5-|R;d5J zL(v)!Vz8>*K#C%G!)-w_Cph7)ODumO%{KqAeaVC$&7QMF182j+k9E#X zduVHO)*6GU&?X({c!4Y~gQF=pcs0GM4nI*a3>pP{P%a}pQjrv6<8#B~mzb;tFi=_& z>G1v6%RzvM8>%>n7BCl(*ZcMKDaT9XfOQy zV(GY31D8{D$|wSZ2BGo&1cx_Qtc57K=}TZq{ip|ozPJB^QfmjPvT3vXtUVJbCmHln z1iL9s9ez=oK6YCY4~6qtjl)bGJuM7C%AAs~NiK9NHWIQBI!xNlV8_*IYWb%rjniiA+t%jK>kqs5| zSP%jznMm*<7&rJ>wSG*l*oPoY&E^@p@aZfJuZ~`$pCIny2)LeD7EH23Zqf?0ufBs- zKXs;(EckK5=ggKdI?9(mMRi1^y^;$9;a( zt7-RsSAm|wrb^PaLoq2th9E*vjRPhLw9W$Kz;3ZnxV_7sQyD8IeisK9-p(GuKmP*i z`-?04f?!Tvrt1^o zApEomkprhoAkUofJG60Vz@k6Q-7mInT|#RgfG=v%8=TI+{ic5}&i*63lW14+9|^X) zx0>l-$7M3Tk(8X*%lPcDUh9AoJ&#{&u+aJq+T)Q|a98hD$56z94I|LagAm(^z@DB0=&@0(~WTH7MrHe0Z0wPt;L+4`M*TupwC(+(~*k&&&Xjk%}hP6o94O z4Dq5AaP8u1j}4sv1}Cj+A~9wFB9O{rOZFCO>B%#zbL#i@nb^wia9GcB5Mj{g0BUf< zQ?6do(M+@;un2kImX;3ZmUP7`WJ*i-?NeSX^hggT%DEQX=7KXfoT*)7HhO% zQ5KMvi*|%VKMMRZILdxd@*#OV{0dMT<$Bh80UR91%xXDk5`g0~w>ph`E=ErB5Zpt?(_{y2M>yrCIicHzt@fJ1|U69Qy)fXym} z0yhF2pC`lC^%%$Zb}m6E^^{=fiMHXr`6)-dz#4p0S~K>9SzkM^StTX_QxgXIFn?a& z@KH|9`uR`p{$q_59KCv=trP&l$pC2MVz)794_Z1Pc!&9oP`<9eZ;5P;X(kO3)|8*d8-W_8$;q__;asR@@(!29zgIlCuy@tVn9#c_?x z1frn*U{Qr1XzNdEKEl8!1_5JOpD1;kE-bmIuo}F^@-ZajZgvr)grdm|ku#e!o)9ul zo4yIaW8%D{b)crJeBl@MP*OAD)QrP@L3$u@<=gzK30oJA58fA3*Q*2F)#x3=L=if2 zF{K{F>GtPccg&@6z&`D}j(hn;8@1+zGW3ZbR?^h^Sn^3k2mlQGMXaEv{C=Cba=>l1)8?i=_|l zmV?lxDX^J26i)iHt0H|#_?~LlD9HJfZ64%imTD!`w{Zvn zksq?no1UYfLy;wX;zI>H%z8Yth`k`WGLSnHWTj(?`F`$N|B)3!P@Don`lRrkp_BZ^ zBz}AOTJ|`zdIzSv(rzq$+)e0AUfeN4qdpneHxM+?4}%WxBZ=#`6w@5jLS6+)EZX9` zgk1@NfVv%~%wy#j;TwK`QXYm<{l^19ofwSu6C@1T*MH&EC|I)2G>1|J!xE`3#I^a} zHq5iF>6K;ZYDp_#dZ`c1O9m}(;5=BeK13k!R3wdpSWC9xh+Ja(A3CTmS^``Q#)^Q5 zknIi}ChBF-)%2`xq3MLy$?^ia4xw{I=+G+>*m@`s3#1E+xw+dXyK2B6;(aK<(ASzy z!av0K#oS17LX0=hb(CsRi4Xy}$Hw%P-weo&@>a1aBiDz45VVSBy0S2v=;tJNh_efrpN9woYfsh-$1t#^v9*e(Y?@{A`nKAL!IpP(4u47Se(GI@cL zFVxY-(oaOG#nRVUX(D>YiBgk`-{+8&6Qch(?a7LK?q#&bM3lF^jk~u0zNl$gMVKp2 zrV|{#e8NR0bt6vj7N5R=Q~Ygw{}ds(FP-fOH`ara!rug0Bh4SYt$_gmR8hr;;$3-C zE4u%o6DvJ*vTdee*Yw%2;p*?k24b+Lvk@pQ^YjWFtRYWj zYEhd>L0ca;75FUQ%jqxM$j=-`2ScXR!K0ij`mlO^YK?z8ki;q;JdJzSYmaZneIC_} z#IIV*Q$Nc0J5w!c0D%MnfWy3TIeWozyW`JqGR3~Z#MK%tW68A6 z90A45&Og8DSD7o9OB}1dh_5NjVO?4qPah{}ItCY_51iE&!OcKRc}KuydvHaUd{h>b zww@>a{~?LlOMdu+fzJ+@bx~I1ynapE+MRgI*{7Sl@`Xeb&qNoNCBAwG7hygdjz1k} zRXf5jZ~ZM-Iu}m_tgp`K6nP(J*vuwu6Jfl)lSdl4)Cs3+Ds5G%sWNPJ96Fl;Y7~XL z8TA`&D}TMlPVMhx^QoL9yA5}mWe?nX)vj0;K5QUKc^LD#F-!G|z>>QpnPZ%EG-k#x zWyJdwqToLx(?xECm+YOtUEVet%h{G3Br}G}#>jrk?k8FS^u4E{3QHJ|f_5{I)w~n9 zsL3QN7dH@aAaU6KR4Mr{BG00Es9{b`X+hE;ctmM}$2viDmN{Ymf_m|}fBnY6)WTAk zzPYzYF&aQ{VXeTo)^OUd;Q|Xb&BDSNDuiJtoOldomQX#&OFOL*s0jsXbu(e> z-}rfy%|rd$>#z`(S!|d#tQ02QJJ;9UNzKxzdJ&uvRnhOaXA~Ma(Vmr|nKDNT2=nmH zZu$oV{HDwotkg#%W3OSH&PDPbr^y_8sWKwo(-ymcvuTHqN4^f~J&dF0%gYqqLp^do!t(+#_km7< zl7tiC{#|2jE;}`;T@lf!jtEQi5)Vc)e?Km!RP}DS>pZbPa%oeNEF|$YzC(q~)17Jg zt5uJ5R+F~!g!Pb*_gI`ydD?tAbE8}-~ zF`kOj=w5_(5gvLUtZfRaXDiXX6bo#HEM+MM!7v^m-fC?s_SEN?PqQ^njRRbbe|sfN zE8*s0^OSjto;=3p__o)_bF6*ZxvY??Xft0B@Xg5{B6dt`tjS3$=rT6O($UR<&#s)Z zD?j`^WlF9#=8~ed$*rNB2B=yTmVKSo7S^NNrao7-%X~t|zR{oJuA!Ww z6zY!3x5H;6k0DZ|#aSt8OrZ#-rXEy zDd#r}U^u*p^h4L}0)eg0 z?bLsKeQzO6n?~P~P~G0}msI&Fax7;D4Z0gc36>1$ps6dss++Q8QP3~Bhrrtq<5nkn z=7{s!cM@l*fM@3rZaxcMcfih zrz#GTs{7CCRdpaf`i|9Jw#I;kO%ombRJj#r1&*r|N&S{(*MTaItMz9@EU^)nt)GRv zIs0o_awq*Mc{R>;H}k=sZoxpOF71(rrBa^PPTN&1Lnn_GuJOv}RV4&0_y z0;h43^J~b-#vy&DV%V7-Q)q}yC__kT47V^h3t*A+!zH3n9?ivm62RG}v!_-s#fN3( z?r_fcT-hD|%Y5KbPcAZeOR)2Mvf+_IkfbtpG|Sp10H5sU$}X=2JTbMFNROxlg$E5Z zB>ZN_2Xx*&pXm{=>bT6{Y>myhm{Rn;W%>4APrM(EK(Wjh z^}ol8`UvSWkc%+7K-#Q_>88IaOlGvXVx5p5@n~){use}uL$ckgqCTa!q_s6h?2X^!DiCT|jLf(D>E|ozVGM!+yaj@3d@gSfBHhda+2v|4}Vcp1e0|RBVo{-MiYWdjSz!QhAETa{y z2(;ZW=&PB6HU#HVj#xyp5%)FDgk9hd7DZf@xPJb&7 z0J<%2Bg9l=1Bx1Sm%ZPT`zcZ-?wUMe8i%2i9e6!de~si;8ob!5Xjy}D&;xBt`PhsB zoc`(c1|Lh_@q^rS9q}sO8YH2uLnYnJ?Z53C2CD%U_aOX<)s2V|PbIG3-C86o;@9<| z={|2rUX=VtQA$+u9zP|^dnUJ-or8Y=0L>0l!bGohMtp3n+}2+pRS@>Ae!4va+?t^L zF518~T7Gq&;GxL|KzR;M=?n$kdFr-H-^r&d*uM}a#x>bHKfe=*nZ-F%yjk&o!{|xA z!FOvSY{GfPZt3Bf>#dLvzx(Z=?i}ys=6krZov$tV!T07%RQIWjX2~bZG{If^0k8u% z@-Ek#4f&+FRT;c53fHext6XR$&9H69QnG2%iI;9zu(Z&%2x^Xhij+&%5&QOH)FJ~c zJ1!Z!_4f&kjzRwn((k>uY^t@94d65}(e9K;6)~C~{_zdza*8FmzWjc?evi#P;PqeC zpVBkm{<^$PT=1jE@WUU2_I@x80yMu4BmsyMPbbGw-NRrHp`H32Z)TdjhD})v@EIZB zL?%o7rSjSF;FCUHhr7APGDR>fbKm~~n}$e}F97h|1OY7*1 zQZZl{ShpNN?qTg)ZU(*>z+FJmmjiJCNK}Z@4syVi#QcJalYvchFp#!d9zL&0kW$a^Idxq9JT2C^Ck!Ep}xvo*2t zsf7HPp=HJM@rr;Pw$ zox7*twgo{}wnKaAwOKGFj?Ec&m%G1V6{ht3FgJuoNP0;-kM2w!Kx|^6XF~~x_Gz(J z=5$+~0Pwt$kdU3ajX&bvku!ng_EFDvt?7wl8YJ=vcxWg8^0Q8^TVEJ&)g;+9n6J4N zWLMlo>bwHd)g`eewZ{P|SR&58F4889ffCX?LPcARiQ&l`=N|OLrqsw(g0$CctFsR< zjQW6%zLvx86uFxL0k|wlwPUc-&cKM*PQL&Qz@x|n?OpCvs2g~S`DOzha@5BJ?vI-8 zdCyxJd}rWR{Z#L~!gaasIMQp$AP#j4Nn%>Jb1<5ZF|^RKat6GblyC*O<;zrZBvFbC z_vj3tkt_mlvHUTCzDCD8AHY1?ouO6NCVx$e$3fp3L2 zfNV^JUPuj8P}X0Xmkpm(sDKmCLKd{OUD-RXxO@@dps&ozmo8cKJw=I{eE~-ikDg&v8havm)Z=ob?xLy`j|>AroE@W zcS32;B`0tnF&rSv)7uV1jnP#OCS%O89Kr&}4w-Sw#jPFP~z8hTX&RR9K#cu-u~4L$`OK zmSjX)f1h9Es>dc*?0v}AU%za=j1>`phX{IY28`Sui2jW4QjRvmLas*eE+%BA14shN z2kq~HPM?GMPy9 zHQWAkVG#aWfY`E;3S!5N$SigMQVdJoFFi187~HToQcnh;EP?37C&VY%B*YJGK!TmX zuV*J>y32RY&sz|h&AabofD0*s0EDo>e`Fev5qD8voZyXp^hi2;waZKg{LOC3UGo+| zzJg!v6OsmIiS}`Vy3!cJd0|-nm~1YzH3(J31%(?LtZqk->~|lB75y-Etf^ zl7&KNnx>7W{hHiAV1!XKg8W`^yMyz?il_9n>a{+E!$)>n&u-_~06Vd&0OzuWM&V&!)NrI=P;wqMo1MNn9UGaWe(>F5|E%C=89w|)j{Pcf_x0XDh8Kk z#@))}pBI8U$|fEn?W@7HD6!!%v3MT(D5+j zpv?a3ZTC`-Ry(W}RE4j~EAdYF)vXsh;aoI~2|v_}fkK)jdx1NO0{!K$eC<(xY&El{ zfr3h}G=6YVoaG!)6(G=s`PqeSO$?RVHcK?&bGT)vF(!CFXnk1l`@=tka;;RRKYTiQ z2)`?%!s^$li8>C2aq=<+2DQ9NpTLw!FGJ6e4ky#zw>&Lo>7p8r6q)ok3hkZuZ7J@=C#W*8z$@P+XJjXOlMjik%t#7eLy(qC}V-rh)vEp`5rMP(wSV-xr_@V zmS=5(&O_9(=>F@7yRQ|W;COCsEuQ<;tsAMTU^}|;Xq#C5%XcLV^zSQ6v>=&+1>+L~ zm1q`Nng*Y%q33fB~6U0wYe-ZyephhF*4NccoIlvd? z6Gyl9R_2)!27k3ixl-YG+3&L!U6kg#pd?DZpaAfz-CDCuqb4@a;U zkiJEUunmOEUjOhz|6W0RbAnoJQAFyC$@N(>#Elm@J)o|9;MyK4*phmrOs04q!&@#v zFFcrS(AXu!Up8Amo#;xMSsIH>JV-jb5bj}|EVyZdDZdeY3z;Q!I2E#go`WvA5l9iW z?1QZrWyuj4B7Wm9tEx((Sz{qXM1DoPudB~&sL?Y_na|MC_(@x@gnMZ2CvKBJUCyqV=unb`iyoQ`10Bma5&$-mas4eVa6U&PJ7B}`mvg+c`K6sS zlD!sf)fs~oe4<`3|J>MmPfHN#B(otGvxu#1UKo-J(KZ3~Dh;oLI|?gwqG#VX1tZVraD@OX1BN8ya{oL?8^1o-H%FP-;vL}P&(#ROgjzE|zRnH@& zO99*n@pbVb&ipX}&}P;yWeP~;IpVHYDL5H3!t1HHOE)b5Qp{&60^oAjiu_EARUsv# zv+iHkA}_rW^z(M=Wlc0NUB|#F>U2l2V?6R_)>m4T!g9yz?2AjVHjDas%_pXaPV1c|OWvs!&RLW=N&7M;|5!+mQ$Yd;S#APNks`x2U`JCi z?3m3~u-QnAZSds}X;=o=16zhrALUiIM@q%HWQu~cvaR?^^I-#Q=Cy)g9QeVyCM@!D~nmc(gBF7gd9K;*>XYJi>(` zHM3S>N9-?aro_&+dIy)7TkbjAmb|^V7kTP;*k($MUDAawb9Zn#v00#a2_WjtH-fOZ z5+h^mC)$MuEl+vknzsF~EAJ^#7i`GK8Y6yRc;{9x4*EMzlGH>ma(b&SvjbpS!eZ^7 z5_nlhf<}eJanrhp_713AvQx5Qw6rIjlefF_b5Bt{e2CcIZa?<=w0LG{s!r*2^T{A~ zjh2Zz;RTK-9v3P@CPlDGsmQed%&uM9zhQ0$*m3#$HfdSANOCg76Q&3#(+C<#VU@hjGg zijTT)6Z9LxW{?lbw1qy;@t5VlUnHIoY|1{DO?PLe`Vtti zh}yq7-l9Ifw0RS-X(x3gj5kjN=Mp$>YM2}nYKgR5#ri@Ki!|^TrkF%@K~*^W*?1p+ zaV^&*nUArNPlHmte@+cByvtv8SEl-3%ed~R8f=jhAmR3{kEI_svceQYY~Pz)v8Kjs zkz;aT3Rga*n^4BI5GAnwuOun;b&cs4SYIbw|kx%1j8p3?9|-@u#Ze${%km#I5YRggC=d|;f2|X_+dsV%|3fHxP}9(UT>|AZN1vI< z8xuO&Vw?ePxfJ$g4$NE!<=yD{>eqP9(t*rc$X;E0q0S(aL+%wM-WBFk>PDt+0tq>V zwSoayGTR3Y`^~ZKCoVC!%H}Wf_`H15>2);V7kiYues0LtNwTK z{c$SeX~W1d%cLrqQ}fPGTX6R^!84Y6--L-mxD5H@R+qN|WI;b8BpbV@aJ#JGAK+$M zAe22&OHsj-zCx1lP!-#&;BeCo!KYth`h@tt&KcM^KEZ%t$k5>eew14#?Xg_}et_54 zktg80{4S2Gtk%VWRdW9XtIrs2>` zk`+gRu4nNWgwc{N)iykPh=LgDGU$r~qd~_nWcDx-2Cidv{L|})d=9)DMRUjqYE*w? zY3ke>7J3DdGRgEGgwgNRihBD_CS$*m_EawoCeWi#B+vNd))G z4`bUdcn!A$*3iaxZ>9!Q4YX*F+O6Vr;vuxW`!4= z(n-J!`$?x!fw#p)V`W;kq%tGLhb)FFs1~o*ys~8gH{$b!Z-3-^-PET8oxBXR$udT0 zjmTC6pil4g4rjBRE?1CG$>No&CROlQ$6(`U7M}}?35z{V_(7f@P)}G;4v;(|J;gjEMPBz+Le#G(wSv*IJT& zvjvq3LJodww-`DcU8iC-AEvO&J@17WdgqoqSC`3uR+jYq)8=da9cI2?dgdQeTZJGt zAwK*#)utd0gU1v3ijZ&->w+Ub;_XSV%$x`dDE7L})6bdr-^8F{;4}*pzF&Hy68368 z!&0rFi3^-OPaYRAQ}Qz>;GblsZcf_5;4L404pKq@q}C^e-qFVoXVEOHRBAOto0JnPGxN% zuabx<>enERx~*p)Ic%;jqp|at2gelv$cw3VU@xM;?CM~)S})BR@lTY|LF4suF@~7Z z(sFBr`r89GALcoETRYkJz6xQU5iSRuN`IjptsQkxR@o5RoAY&Tt@7vv^AK=0jJt2F zQ!78^MTvHWwN2q({Pr~Cv!lv*QocIj+0=y1!vDIYhuWAWxP2dDt%Om|#_DYYq{WnF z)ag0vwiT0*m0-xQnODmWZ=lsZ5n}p~Dr-M)QHWp*T_LyxFT8I&&4o}qr;q7e*_t|R zKmG=1$t$laWKw`BYJ*pKq{7fb;mgSMnI9Iy z_pduo%B=DeiLA73>UllA?R{J>o@SOCN3eHtcbB1~T%Wm#vEKxMU_&a5we(vxJ1O%F ztD;0QAg&IRgP}VUZ@s$E>u!W-G<%&;Hjj-{S63#ej?BSR_Ue80kX=0hil2MNq%_kj zG`_=%)R^PMw)j3l*TSbX5Oz>w$zysDSg>{ykFIg2;7{VMU0{PI>4aZ;;L*BU0&jE- zHK~>Z+}tYl$E9I0F#_KIUaD{&Bj;icH{i93M6#uxMs*HZq2Yz@O&|XPrE&V&8@qC~ z!xdX0elTW4A>!c+KH(Vxh&fZUfH4U#i$%S~_&NEn5EIyfQ4(66lbU#3Nx-XLpDNVQ zEm>}+dAk}>G#F;|Q%vKv3xu~kL>}l>&^3yAOPQ;vRoce=HmY|IRvvE5s~e5Za^RL= z>>SBsPY<+E#(dMu=*F0sLgm*?;RfIZv(0L+}y*h9FtCP%e=DGfTYpl7n6qW75aLHg9?t)oUZ;sN3wCl{9gzOr(_l3ZGwX zVzSUlNRi2F9Jb;~4#8#PyyOsJM9RjRhAMz&!#?-tma*;wzyyx-m(^K_YNSJh0#Zm} zeUv8APuyBHXYtV}+LF(i|LU;)zNLVYlQO-Nt#3pymj^y4aXK%*Z94cod}w>9vb!A* zgbcKWVDD+SPdP?7BiRdLA&rRRh8LYU|rk-tl46wS$yi4qMQt56A(9Qxg<*_VaiVg#lnb%_OXHsv0{$-elvfjVn?+hu#1Jy>3_>O|_X5dM$$F)CP%|#eMok%{w zzLWFUlNEv0GPX@1m>*|xdp(_mZA~yTo(y5&YMs}Rh!15r!qv6z&n?L{?gxKmAjHJn zNIC;l7s*vh;Z-yYRk^2Q0-R(Kd?~2K=0_h!-R~^;vUTtk&E|*e6D3b?9}f5{D-icf z3eP;%Y;S(drRi6R5QK@Ee`UPoCBnx7n;`t>7#fB1_VN-|eg0a5#Zs1j2uScXM?>2M z?mY6X+O=a$cS9_vFZ#PN{XhlrNpy2IxUsce|W zWT>0v^v4);Bi%_X?NjW^&E(K~-+|VluSk?r^eqBd zU1{)g35X%v#UGa;L>qg0@pu1CZZj4h)3=V2haA)Uz~}yl{^Ahw^?tlfMY9g}Ygv4~ z?2dF3t>c$`xTHNU?t=U%cCnH5cC1ByHe!R`X-}6L_b~8ipQkCYh>K2X4P)!CHZVEa zu%mK23CMZTu`ALI%y%VQRv`w?2C5-+eTx6M0{>CueDm>pc2C0JCN04& zWx($BkS`FrRaRmV89}iN&a_%8{oYzC??_1FT9O*NAP3I`!aKzpGEd`G8@xiLR7Cj8?Z>AbgC&5GDF}b zd11gGM~E|m9e_RlM3NXBrHVIF<78}6Z$QVQ9TQk^%28bbsM(dZMrfM+G%UQ?T794>xQl+xx{S2$Dd= zI?AC^M^3ww$6U#1qLUrkr8(qU*f#yNZ?jVd&{mh5o7sv4h;Hm4k9x<^>&;m*Ob zkeYv;eRjBiaGB+pZ+c*;FsRh*OvZr7p5uOL?IidsS)XgYY2^!BfhSS?;lHYWRjBQ( zs^PQA^aj>Mu%yB~VA9(V?I5bT54Ctld|9g6lS%%EsngF~Gk9J?PPHrYj@Qrsc{Bs) zF?`aa=YC~dLHL6F@5^ec$rZWy|1XF&*Ibcvf&Ql?7P(m5rwaiD1pHI+A@CnNENLp< z-T%D9W~+bOt#crKZ7Vt=!Le!54|XST40X`oB>e5qK&xH1jRsAPKS_&}DF_Gjs`GNW~T=BZ{>aW@e269cFbcptUKIYEv^i{TxF`GK7UdL0$(u*sRM>|{^hnw zc9K>b1KRbjv68}y6m?O+5@^_6co^ICjz`XS0p`~uqs64ek2BnS7te19V81Pg!p#CO zml`{LakB{sd3QXvTr-x$D+)9M?=W4YAsm=-a(lTKbAvkqQT6N5=dD-nMgK0)nf2Ce z+qpey3(b{cBe)tUiX~n5>k#eZN*^9rO0#w9mQ1+vVa1OyA$kh4ZXGAkVRwV~1)8+{ z2ISx(S9B(MA~F~wfRRO0QH))lt&<<(48Xv4Tk|U*!TX}<0E@4)dv_F^=hu@M%4NqQ zAydpV@gr_gM;Hn)NTV5|JtEtQ>~8yGU}Yqd2csYQ$5rKfi5pH?U{SH!ro#m-u>l$X z>yX&j2KBR`UzM*Y#qsli==qiUpfZ6(1rS?lDjuu}aYhN%>g@)6gCZL>mfoT{iWUA1 zo1=3}`Hh;G7pekdeFb;nFl_B*Tavtz_F8L;KFyho

    g?dNgnMY}$j|QD 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 LHPWQ-pY#2Hd~7kw diff --git a/plugins/s1-secops-skills/dist/s1-secops-skills-v1.2.14.plugin b/plugins/s1-secops-skills/dist/s1-secops-skills-v1.2.16.plugin similarity index 61% rename from plugins/s1-secops-skills/dist/s1-secops-skills-v1.2.14.plugin rename to plugins/s1-secops-skills/dist/s1-secops-skills-v1.2.16.plugin index 2c5b79c93130e516ae2c2c9ba53ad20a3faf42b5..9e352de6443013aa990e0b7e5f12762f47bbc207 100644 GIT binary patch delta 1346831 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 z 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