Pro Tier Integrations
API paths that contain tenant keep that word for compatibility. In the product it means your workspace.
The Pro tier adds team workflows, webhook automation, and audit exports so your SOC or compliance team can integrate Dralvia with downstream systems. If a term is unfamiliar, open the Glossary.
What you get
| Capability | Description | Where to manage |
|---|---|---|
| Teams & members | Organize responders, assign owners, and map roles to your SSO identity system. | Pro Tier Console (#/pro-tier) |
| Webhooks | Subscribe to report.generated, audit.export.ready, saas.lifecycle.stuck, and email.verdict events (Slack/Teams or generic JSON). | Pro Tier Console (#/pro-tier) |
| Audit exports | Generate JSON exports for scans and reports. | Pro Tier Console (#/pro-tier) |
Access requirements
- Signed-in workspace session is required for the console and API routes.
- License must be active for your workspace.
- Pro entitlements must be present on your license; otherwise the API returns
pro_tier_required. - Dralvia support can assist if your workspace context or entitlement is not visible.
Route layout
#/pro-tier now opens on Overview first, then separates work into:
- Teams for responder groups and membership changes
- Webhooks for outbound event automation
- Exports for audit artifact generation and replay/download actions
This keeps the current plan posture readable without mixing team, webhook, and export controls into one continuous page.
Teams & members
- Open Pro Tier Console.
- Create a team with a name + description.
- Add members by email and role (
owner,member, orviewer). - Remove members or delete teams when they are no longer needed.
Teams are workspace-scoped and never visible across workspaces.
Webhooks
- Open Pro Tier Console.
- Add a webhook URL, event list (comma-separated), and an optional signing secret.
- Use Send test to validate delivery and Delete to remove old hooks.
- Use your webhook endpoint to ingest notifications.
Slack and Microsoft Teams
Paste a Slack incoming webhook URL (https://hooks.slack.com/...) or a
Microsoft Teams connector URL (https://...webhook.office.com/...) as the
webhook URL and Dralvia posts a readable alert (event plus the key fields like
verdict and risk) straight into that channel. No extra setup: the destination is
detected from the URL. Any other URL receives the signed JSON envelope below, so
your own systems keep working unchanged. (Slack and Teams ignore the signing
secret; it applies only to generic JSON endpoints.)
Supported events
| Event | Fires when | Payload highlights |
|---|---|---|
report.generated | A scheduled or on-demand report finishes generation for your workspace. | report_id, report_type, download_url |
audit.export.ready | A Pro audit export job reaches the ready state. | export_id, include, download_url |
saas.lifecycle.stuck | A SaaS governance record has sat in discovered or reviewing past the per-workspace lifecycle SLA. Driven by the periodic SaaS lifecycle stuck-in-state sweeper (see Browser Protection). | app_id, lifecycle_state, lifecycle_state_changed_at, stale_for_days, threshold_days, owner, review_status |
email.verdict | Email Protection scored an inbound message as risky (Caution or Avoid). Clean (Safe) messages do not fire, so a Slack or Teams channel is not flooded. | verdict, risk_level, risk_score, subject, sender, message_id, reasons, trace_id |
Subscribe by listing the event names (comma-separated) when you create a webhook. Each delivery is one event_type per HTTP POST and carries the same envelope:
{
"event": "saas.lifecycle.stuck",
"tenant_id": "<your workspace>",
"payload": { "app_id": "...", "lifecycle_state": "reviewing", "stale_for_days": 30 }
}
Delivery details
- HTTP
POSTwithContent-Type: application/json. X-Dralvia-Eventheader repeats the event name for routing.- When a signing secret is configured, the body is signed with HMAC SHA-256 and the digest is delivered in
X-Dralvia-Signature. Validate the signature before processing. - A 5-second connect/read timeout applies. Non-2xx responses are recorded in
last_error(visible in the Pro Tier Console) and the next sweep retries; the same(workspace, app_id, lifecycle_state)will not re-page until the app advances out of the monitored state and re-enters it. - The dispatcher de-duplicates
saas.lifecycle.stuckper(tenant_id, app_id, lifecycle_state)so a single stuck app pages once per state until it transitions or the policy is widened. - When the per-workspace policy sets
escalation_after_sweeps > 0(default 3), the sweeper auto-opens a TicketBridge ticket once it has observed the same stuck triple that many times in a row. The ticket carries the SaaS app id as adomainartifact, the SLA breach context inrisk.reasons, and a human-readable summary in theuser_note. Each triple escalates exactly once until it transitions out of the monitored states. - Per-workspace SLA thresholds for
saas.lifecycle.stuckcome fromGET|POST /swg/saas/governance/lifecycle/policy(default 14 days for bothdiscoveredandreviewing, clamped[1, 365]). Workspace admins can edit the thresholds inline from the Browser Protection KPI strip without leaving the UI.
Triggering the SaaS lifecycle sweeper
The sweeper that fires saas.lifecycle.stuck is on-demand. Drive it from your own scheduler (cloud scheduler, Lambda timer, GitHub Actions cron, etc.) by calling:
POST https://dralvia.tech/api/tenant/swg/saas/governance/lifecycle/sweep-stuck
Authorization: Api-Key <workspace API key>
The endpoint requires the lifecycle admin role (tenant_admin or tenant_owner). Each call evaluates your governance records once, fires saas.lifecycle.stuck for any newly stale apps, and returns a JSON report with the per-app results.
The sweeper is idempotent within a window: if your timer fires every hour but the SLA is 14 days, the second hour fires zero events because Dralvia remembers the previous send and only pages once per stuck (app_id, lifecycle_state) pair until the app advances out of discovered/reviewing.
Audit exports
- Open Pro Tier Console.
- Choose
includevalues (comma-separated, e.g.scans,reports). - Optionally set
since_daysto limit the time window. - Download the job payload once the job is complete (Console → Download, or
GET /pro/audit/exports/<id>/download).
Exports are stored under your workspace storage root (see EvidencePack (Dralvia's exportable evidence report) storage guidance).
API endpoints
All endpoints require an active signed-in workspace session or workspace API key, plus an active license.
GET /pro/teamsPOST /pro/teamsPOST /pro/teams/<id>/membersDELETE /pro/teams/<id>/membersGET /pro/webhooksPOST /pro/webhooksPOST /pro/webhooks/<id>/testDELETE /pro/webhooks/<id>POST /swg/saas/governance/lifecycle/sweep-stuck(run the SaaS lifecycle stuck-in-state sweeper; lifecycle admin role required)GET|POST /swg/saas/governance/lifecycle/policy(per-workspace SLA thresholds that drivesaas.lifecycle.stuck)GET /pro/audit/exportsPOST /pro/audit/exportsGET /pro/audit/exports/<id>GET /pro/audit/exports/<id>/download
Operational notes
- Webhook delivery failures are retried automatically; monitor
last_errorin the console. - Keep webhook endpoints restricted to HTTPS and validate the HMAC signature.
- Audit exports are immutable artifacts; store them in your compliance evidence system.
Who this is for
This guide is for workspace owners, workspace admins, and security operators who need clear, repeatable steps without support intervention for day-to-day execution.
Role-based start here
- Workspace Owner: Start with Before you start, then complete Step-by-step and Known limits and rate limits.
- Workspace Admin: Focus on Step-by-step, What each button does, and API and automation.
- Security Analyst: Start at Day-2 operations and Troubleshooting, then use API error quick reference.
- Integrator/Engineer: Start at API and automation, then validate with Step-by-step and FAQ.
Before you start
Use this short checklist before making changes:
- Confirm you are signed into the correct workspace account.
- Confirm your role includes the permissions needed for this page.
- Confirm your browser session is fresh (if pages behave unexpectedly, sign out/in once).
- Confirm required prerequisites (API keys, agent enrollment, license, upstream integrations) are already in place.
Step-by-step
Follow this sequence for predictable results:
- Open the workspace from the workspace menu.
- Review current status/health/last update indicators before making changes.
- Apply one change at a time and save.
- Run the available validate/probe/refresh action.
- Confirm the expected output appears (status change, new event, successful result).
- If behavior is not as expected, use Troubleshooting below before repeating actions.
Day-2 operations
After initial setup, keep this surface healthy with a simple routine:
- Daily: verify data freshness and error banners.
- Weekly: review trends, limits, and failed actions.
- Monthly: review permissions, keys/tokens, and stale entities.
- After any incident: capture evidence and update your internal operating notes.
What each button does
Button labels can vary by module, but behavior is consistent:
- Refresh: reloads the latest data from backend APIs without changing configuration.
- Save: persists workspace-scoped configuration changes.
- Run/Probe/Validate: executes a non-destructive health or verification action.
- Download: fetches workspace-scoped artifact(s) (for example bundle, checksum, signature, or report).
- Verify: checks integrity/consistency and returns pass/fail details.
- Enable/Disable: toggles module behavior for your workspace; audit evidence should be recorded.
If a button appears disabled, check role permissions, required fields, and workspace license/feature entitlement first.
Self-check playbook
Use this 5-step isolation flow before escalating:
- Configuration: confirm required inputs are present and formatted correctly.
- Permission: confirm your role can perform the action (
401/403usually indicates authz/authn mismatch). - License/feature: confirm the feature is enabled for your workspace plan and module toggles.
- Quota/rate limit: check for
429responses and cooldown windows. - Service health: if you see
5xx, retry once after 30-60 seconds and capture exact error text.
If still failing, escalate with workspace ID, UTC timestamp, route, action, payload shape (no secrets), and screenshot/error response.
Troubleshooting
Use this quick triage order to reduce time-to-fix:
- Auth/session: refresh token by signing out/in.
- Workspace context: confirm you are in the correct workspace.
- Inputs/config: verify required fields and formats.
- Quota/license: confirm limits and feature entitlement.
- Service health: retry after short delay if backend is transiently degraded.
For escalation, include workspace ID, timestamp (UTC), route name, action attempted, and full error message.
API and automation
Everything in this page should remain workspace-scoped. If your team prefers automation, use the corresponding API endpoints with the same guardrails as the UI:
- Use authenticated requests bound to your workspace context.
- Use idempotency/retry controls where available.
- Validate outcomes in the UI after automated runs.
If your endpoint mapping is not obvious, start from Help Center and follow the linked API docs.
Next best actions
After finishing this page, continue with related workflows so your workspace setup stays end-to-end complete:
- EDR response and host actions
- Web Access Protection and dry-run events
- Identity risk and OAuth response
- EvidencePack verification and transparency log
- Risk economics and plan recommendation
FAQ
Q: I clicked save but nothing changed. A: Refresh once, confirm permissions, and verify required fields.
Q: Why do I see missing API key/unauthorized errors? A: Confirm your workspace API key/session is valid and mapped to the correct workspace scope.
Q: Can non-admin users use this page? A: Usually read-only access is possible; write actions require workspace-admin or equivalent roles.
Next steps
After finishing this guide:
- Validate the result in the related dashboard/workspace.
- Export or capture evidence if this affects compliance/incident operations.
- Share the same runbook internally so other operators follow identical steps.
- Return to Help Center for adjacent workflows.
API error quick reference
Use this matrix when a UI action fails with an HTTP/API error.
| Error | Meaning | What to do now |
|---|---|---|
401 Unauthorized | Session token is missing/expired or request is not authenticated. | Sign out/in, refresh once, then retry. Confirm your session is active in the correct workspace. |
403 Forbidden | You are authenticated but your role is not allowed to perform this action. | Confirm your role includes the required permission for this button/action. Ask a workspace admin to grant access. |
404 Not Found | The route/resource does not exist in current workspace context (or feature not enabled). | Confirm URL/route, workspace context, and feature availability. Refresh and retry; if persistent, capture timestamp and route and contact support. |
429 Too Many Requests | Rate limit/quota window was exceeded. | Wait for cooldown/reset window, retry once, then reduce burst traffic/backoff if automated. |
500 Internal Server Error | Backend failed unexpectedly while processing the request. | Retry after 30-60 seconds. If still failing, escalate with workspace ID, UTC time, route, action, and full error text. |
Known limits and rate limits
These limits can vary by plan and feature, but behavior is consistent:
- Burst traffic can trigger
429 Too Many Requests. - Workspace quotas apply per feature/module and reset on configured windows.
- Repeated retries without backoff can extend recovery time during saturation.
Recommended operator behavior:
- Retry once after cooldown for 429 responses.
- Use exponential backoff in automation.
- Monitor usage/quota dashboards for sustained high utilization.
- Request quota review when normal workload regularly approaches limits.