Universal Action
If it has an API, ManySignal can act on it
Universal Action lets you define any HTTP-based API call as a governed action module. Authentication, request templating, success validation, and rollback payload are all expressed in a single YAML file — no code, no plugin development.
Universal Action manifest — YAML
One file to define, authenticate, execute, and roll back
Define the request template with context bundle interpolation, map the success condition, and optionally declare a rollback action. The platform handles retries, rate limits, and audit logging.
action:
name: okta-suspend-user
display_name: "Suspend Okta User"
category: identity
reversible: true
auth:
type: api_key
header: Authorization
value: "SSWS {{secret.okta_api_key}}"
request:
method: POST
url: "https://{{config.okta_domain}}/api/v1/users/{{context.entity.okta_id}}/lifecycle/suspend"
headers:
Content-Type: application/json
body: {}
success:
status_codes: [200]
extract:
user_status: "$.status"
rollback:
request:
method: POST
url: "https://{{config.okta_domain}}/api/v1/users/{{context.entity.okta_id}}/lifecycle/unsuspend"
body: {}
rate_limit:
requests_per_minute: 60
retry_on: [429, 503]
max_retries: 3 Governed by the same autonomy framework as built-in actions
Once defined, a Universal Action module is indistinguishable from a built-in action. It runs at the configured autonomy level, stores rollback state if declared reversible, and is subject to guardrail rules — blast-radius limits, entity protection lists, and dry-run preview all apply.
Secrets referenced in the manifest are resolved from the platform secret store at execution time, not stored in the manifest itself. Rotation of an API key updates all manifests that reference the secret without manifest edits.
What Universal Action covers
REST and webhook targets
Any endpoint that accepts HTTP requests. JSON, form-encoded, and XML request bodies are supported. Response parsing uses JSONPath or regex extraction.
GraphQL mutations
Wrap a GraphQL mutation as an action. The manifest includes the query string and variable mapping from the context bundle.
Context bundle interpolation
Reference any field from the alert context — entity ID, finding severity, IP address — directly in the URL, headers, or request body template.
Secret management
API keys, OAuth tokens, and bearer tokens are stored in the platform secret store with encryption at rest. Manifests reference secrets by name, never by value.
Rate limit handling
Declare rate limits in the manifest. The platform queues and retries requests automatically, with configurable backoff. No silent drops.
Action as evidence source
A Universal Action can be used as an evidence source in an agent question set — call VirusTotal, receive a structured response, use it to answer a threat intel question.
Universal Action — FAQ
Does Universal Action support OAuth 2.0 authentication?
Yes. The auth block supports API key, bearer token, Basic auth, and OAuth 2.0 client credentials and authorization code flows. Token refresh is handled automatically using the configured refresh token or client credentials.
Can I test a Universal Action before deploying it to production?
Yes. The action sandbox lets you supply a test context bundle and execute the action against a staging endpoint, with the full request and response visible. Dry-run mode is also available for production testing without committing the action.
What if the target API doesn't support rollback natively?
Rollback is optional. If the action is not reversible by nature (e.g., sending an alert notification), leave the rollback block empty. The action is marked non-reversible in the UI and cannot be rolled back from the case timeline.
Are Universal Actions shared across the team?
Yes. Actions are tenant-level objects. Any workflow or agent question set can reference a Universal Action by name. MSSP tenants can publish shared actions to child tenants.
How do Universal Actions interact with the autonomy ladder?
Every Universal Action is assigned an action class (identity, network, endpoint, notification, cloud) when defined. The autonomy ladder then applies the tier configured for that class — recommend-only, approve-gated, or autonomous. Blast-radius limits and dry-run previews apply to Universal Actions identically to built-in action modules.
How many Universal Actions can a tenant define?
There is no hard limit on action definitions. Performance considerations apply when action execution queues are large; high-frequency automation is best handled via the native integration modules rather than general REST calls where possible.
Can Universal Actions call internal APIs behind a corporate firewall?
Yes. In self-hosted deployments, the response automation service originates API calls from within your network, reaching internal endpoints directly. In cloud-hosted deployments, outbound calls to internal APIs require either a public endpoint, VPC peering, or PrivateLink configuration.
What is the timeout and retry policy for Universal Action execution?
Default timeout is 30 seconds per action attempt with 3 retries using exponential backoff. Timeouts and retry counts are configurable per action definition. Failed actions after exhausting retries create a manual task for the analyst rather than failing silently.
Is there a community library of Universal Action templates?
Yes. A curated library of Universal Action templates is available in the platform under Actions > Templates. Templates exist for common integration patterns — Webhook notification, REST CRUD, GraphQL query, and vendor-specific API patterns — and can be forked and customised in the YAML editor.
Connect the tools you already have
200+ shipped action modules plus Universal Action for everything else. If it has an API, it works.