/api/metrics
Prometheus-compatible metrics
ALLOD API
Servers
- https://swg.your-domain
- https://vrm.your-domain
The ALLOD platform runs entirely in your own infrastructure. Every API call stays inside your network - no vendor cloud in the path. This reference covers two products: - **ALLOD | SWG** - the Secure Web Gateway and its admin API - **ALLOD | VRM** - Allod Vendor Risk Management and its governance API
SWG - System
Health check and metrics endpoints.
/api/health
Health check
/api/admin/setup
Get initial setup state
Returns whether initial setup has been completed and what steps remain.
/api/admin/setup
Complete initial setup step
/api/admin/log-level
Get current log level
/api/admin/log-level
Set log level at runtime
/api/admin/license/sync
Sync license with license server
Forces an immediate sync of the license and catalog data from allodlicense.
/api/admin/license-settings
Get license server settings
/api/admin/license-settings
Update license server settings
/api/admin/integrations-config
Get integrations configuration
/api/admin/integrations-config
Update integrations configuration
/api/admin/debug-bundle
Download debug bundle
Generates and streams a ZIP archive containing logs, config (secrets redacted), and diagnostic info for support.
SWG - Firewall
Firewall rules, default policy and domain allow/deny management.
/api/admin/firewall/rules
List firewall rules
/api/admin/firewall/rules
Replace all firewall rules
/api/admin/firewall
Get firewall state (default policy, default TLS inspection, rules)
/api/admin/firewall
Update default firewall settings
SWG - IDS/IPS
Suricata-syntax content/header signature matching against decrypted traffic - custom rule import, per-rule action overrides, and the curated abuse.ch URLhaus feed status.
/api/suricata/rules
Get IDS/IPS status and custom rules
Returns whether IDS/IPS is enabled, every Source==custom rule individually, and a count+version summary for the curated URLhaus feed (never listed rule-by-rule - it can carry tens of thousands of entries).
/api/suricata/rules
Import custom Suricata rules
Accepts raw Suricata .rules text (Content-Type: text/plain) or a multipart/form-data upload with field name "file", and replaces the entire Source==custom rule set. A malformed line is reported per-line in the response rather than failing the whole import.
/api/suricata/enabled
Enable or disable IDS/IPS
The single on/off switch for Suricata rule evaluation (both custom rules and the curated feed). Off by default. Rules keep loading/refreshing regardless of this setting, so toggling it takes effect immediately with nothing to reload.
/api/suricata/rules/{sid}
Set or clear a per-rule action override
Overrides the effective action for one rule by Suricata sid, regardless of source. Uses this API's own block/alert/allow vocabulary (not Suricata's drop/alert/pass keywords).
| Name | In | Type | Description |
|---|---|---|---|
| sid * | path | integer | The rule's Suricata sid |
/api/suricata/rules/{sid}
Delete a custom rule
Custom-source only - a rule loaded from the curated URLhaus feed can't be deleted this way (the feed would just reload it on its next refresh); use PATCH with an "alert" override to silence a specific noisy URLhaus sid instead.
| Name | In | Type | Description |
|---|---|---|---|
| sid * | path | integer |
SWG - DLP
Data Loss Prevention - events, configuration, body samples.
/api/dlp/s3config
Get S3 storage configuration for DLP body samples
/api/dlp/s3config
Update S3 storage configuration
/api/dlp/events
List DLP events
Cursor-paginated list of DLP upload/download events.
| Name | In | Type | Description |
|---|---|---|---|
| before | query | string(date-time) | |
| before_id | query | string | |
| limit | query | integer |
/api/dlp/config
Get DLP configuration
/api/dlp/config
Replace DLP configuration
/api/agent/screenshot-event
Report screenshot content for DLP (agent → server)
Called by the agent when a screenshot is taken while the device has an active sensitive-context resource (ZTNA/VRM). ocr_text is matched against DLP rules; the event is dropped (not stored) when no sensitive context is active. process/window_title (the foreground window at the moment of capture) are best-effort and may be empty on a headless session. The domain the device was browsing (host/domain_category) is attached server-side from the navigation heatmap, not sent by the agent. Also covers screenshots that never touch disk - a capture pasted straight to the clipboard (PrtScn, Cmd+Ctrl+Shift+3/4) is reported the same way, with path empty and filename set to the synthetic "clipboard-image.png".
/api/dlp/events/{id}/content
Retrieve stored body sample for a DLP event
Fetches the body sample from S3 and streams it inline, decompressing gzip/zstd/deflate automatically.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
SWG - CASB
Cloud Access Security Broker - shadow IT, app usage, tenant discovery.
/api/casb/v1/shadow-it
Shadow IT report - license-server authenticated
Same as /api/casb/shadow-it but authenticated with a license-bearer token rather than an API key. Used by the allodlicense server to aggregate cross-deployment analytics.
| Name | In | Type | Description |
|---|---|---|---|
| days | query | integer | |
| limit | query | integer |
/api/casb/v1/internal-domains
Uncatalogued internal-domain discovery - license-server authenticated
Returns hosts observed in the last 30 days that fall under the configured internal DNS zone and have no saascat catalog match - internal tools (e.g. a self-hosted git server) that shadow-IT detection can't see because they aren't SaaS apps. Matching is DNS-zone-based, not IP/CIDR-based, to avoid ever matching a private IP range an employee's home network happens to reuse. Consumed by Allod VRM's swgsync poller for asset discovery.
/api/casb/v1/app-usage
App usage aggregates - license-server authenticated
Returns per-app traffic aggregates for the last 30 days, including apps used only through desktop clients. Authenticated with a license-bearer token. Byte totals cover every source (browser and desktop/CLI) and match the Corporate IT view for the same app. BytesUp/BytesDown are wire bytes on the client connection (client to proxy / proxy to client, TLS overhead included) measured by the proxy for every connection, not just inspected ones.
/api/casb/tenants
Discovered cloud tenants
Returns tenant identifiers extracted from proxied traffic, grouped by cloud app.
| Name | In | Type | Description |
|---|---|---|---|
| days | query | integer |
/api/casb/shared-accounts
Shared (non-IdP) accounts
Returns non-IdP accounts used by more than two distinct people across devices, aggregated from tenant sightings - a shadow-IT and credential-sharing signal.
/api/casb/shadow-it
Shadow IT report - discovered cloud services
| Name | In | Type | Description |
|---|---|---|---|
| days | query | integer | |
| limit | query | integer |
/api/casb/processes
Process-level CASB observations
Returns network activity for the last 30 days broken down by originating (non-browser) process name, sorted by DevicePct (share of the fleet running that process) descending. Paginated - use limit/offset to page past the first window. BytesUp/BytesDown are wire bytes on the client connection (client to proxy / proxy to client, TLS overhead included) measured by the proxy for every connection, not just inspected ones.
| Name | In | Type | Description |
|---|---|---|---|
| limit | query | integer | |
| offset | query | integer |
/api/casb/firewall-log
CASB-enriched firewall block log
| Name | In | Type | Description |
|---|---|---|---|
| days | query | integer | |
| limit | query | integer |
/api/casb/extensions
Browser-extension network activity
Returns per-extension connection activity for the last 30 days, aggregated from requests carrying an Origin: chrome-extension://... or moz-extension://... header (i.e. actually initiated by the extension's own script, not a page/user directly). Fleet-wide visibility into which extensions talk to the network, independent of whether any firewall extension_initiated rule exists. Sorted by DevicePct descending; paginated - use limit/offset to page past the first window. BytesUp/BytesDown are the request and response bytes of the extension-initiated requests.
| Name | In | Type | Description |
|---|---|---|---|
| limit | query | integer | |
| offset | query | integer |
/api/casb/coverage
CASB coverage breakdown by traffic bucket
Returns connection counts for the last 30 days split by inspection category (managed SaaS, unmanaged SaaS, unknown).
/api/casb/corporate-it
Corporate IT (managed) app usage
| Name | In | Type | Description |
|---|---|---|---|
| days | query | integer | |
| limit | query | integer |
/api/casb/config
Get CASB configuration
/api/casb/config
Update CASB configuration
SWG - ZTNA
Zero Trust Network Access settings.
/api/tunnel
Agent reverse tunnel WebSocket (agent → server)
WebSocket upgrade for reverse tunnels. Agent registers the local ports it listens on (e.g. debug port). On-prem processes can then connect back to agent localhost through the connector hub.
/api/connector
Connector daemon WebSocket (connector → server)
WebSocket upgrade for on-prem connector daemons. After upgrade, connector sends a register message with its name and the CIDRs it can reach. The hub then routes proxy connections for those CIDRs through the connector. Protocol: JSON control frames + binary data frames with uint32 conn_id prefix.
/api/admin/ztna-settings
Get ZTNA settings
/api/admin/ztna-settings
Update ZTNA settings
SWG - Access
Step-up SSO and just-in-time access requests - approval workflow and self-service resource discovery.
/api/admin/access-requests
List pending JIT access requests
Powers the Access Requests admin page. Requires an authenticated admin session - not currently available via X-Api-Key.
/api/access/resources
List self-service resources available to a device
Powers the end-user self-service page for pre-provisioning a step-up SSO or JIT grant before opening a non-HTTP client. Requires an authenticated session - not currently available via X-Api-Key.
| Name | In | Type | Description |
|---|---|---|---|
| device_id * | query | string |
/api/admin/access-requests/{id}/decide
Approve or deny a pending JIT access request
Same decision path used by the Slack, Teams, and PagerDuty approval buttons. Requires an authenticated admin session - not currently available via X-Api-Key.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
SWG - Events
Unified event log - firewall blocks and DLP events.
/api/events
List events (DLP + firewall blocks)
Cursor-paginated event log. Returns DLP upload/download events and firewall block events.
| Name | In | Type | Description |
|---|---|---|---|
| before | query | string(date-time) | Cursor: timestamp of last event on previous page |
| before_id | query | string | Cursor: event_id tie-breaker |
| limit | query | integer | |
| type | query | string |
/api/email-auth-weights
List email-authenticity signal weights
Returns the weight table behind Controller.ScoreEmailAuthenticity, keyed by signal name (e.g. display_name_mismatch). Used by the events admin UI to render a full per-signal score breakdown for a flagged email.
/api/admin/event-store/test
Test external event store connection
/api/admin/event-store
Get external event store configuration
Returns configuration for the external event store (ClickHouse or compatible).
/api/admin/event-store
Update external event store configuration
/api/admin/event-log-config
Get structured event log sink configuration
Returns configuration for structured event log sinks: local file, Elastic Beats, syslog.
/api/admin/event-log-config
Update structured event log sink configuration
/api/access-log
Proxy access log
Returns recent proxy request log entries (all traffic, not just blocked/DLP). Cursor-paginated.
| Name | In | Type | Description |
|---|---|---|---|
| before | query | string(date-time) | |
| before_id | query | string | |
| limit | query | integer | |
| search | query | string |
/api/events/{id}
Get a single event by ID
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
SWG - Devices
Enrolled agent devices and their status.
/api/admin/gdpr-export
GDPR data export for a user
/api/admin/gdpr-erase
GDPR data erasure for a user
Irreversibly deletes all events, access log entries, and device records associated with the given user.
/api/admin/devices
List enrolled devices
/api/admin/device-locations
Get device location data
Returns last-known geographic locations of enrolled devices derived from their IP addresses.
SWG - Agent
Agent lifecycle - enroll, heartbeat, config distribution, upgrade.
/api/ws
Agent real-time WebSocket (agent → server)
WebSocket upgrade. Agents use this for real-time config pushes and DLP local-path enrichment. Requires Upgrade: websocket header.
/api/quic-metadata
Report QUIC SNI metadata (agent → server)
Agents post SNI hostname observations gathered during QUIC downgrade mode so the proxy can log them for shadow-IT purposes.
/api/mitm-cert
Get per-hostname MITM certificate (agent → server)
Called by agents during TLS inspection to obtain a CA-signed leaf certificate for a given hostname. Returns PEM-encoded certificate and private key.
| Name | In | Type | Description |
|---|---|---|---|
| host * | query | string |
/api/heartbeat
Agent heartbeat (agent → server)
Sent periodically by enrolled agents. Response includes config push: block_quic, proxy_token, access_routes (CIDRs for transparent proxy), windivert_url (Windows only), and local_path_enabled.
/api/enroll
Enroll a device (agent → server)
Called by the allodswg agent on first run to register the device.
/api/config
Get proxy config for agent
Returns CA cert and proxy address for the agent to configure the OS proxy.
/api/agent/download
Download agent binary for the current platform
Used by agents to self-update. Returns the binary for the requesting platform.
/api/admin/agent-versions
List available agent binaries
/api/admin/agent-upload
Upload a new agent binary
Multipart upload. The binary filename must follow the pattern allodswg-agent-<platform>[.exe].
/api/admin/agent-upgrade
Trigger upgrade on all connected agents
Sends an upgrade command to all agents connected via WebSocket. Each agent will download the latest binary and restart.
/api/admin/agent-sync
Push config to all connected agents
Broadcasts the current firewall rules, CA cert, and proxy settings to all agents connected via WebSocket.
/api/agent/assets/{name}
Download a platform asset (e.g. WinDivert)
Serves files from the controller assets directory. Used by Windows agents to auto-download WinDivert.dll and WinDivert64.sys on startup.
| Name | In | Type | Description |
|---|---|---|---|
| name * | path | string | Filename (alphanumeric, dots, hyphens, underscores only) |
SWG - CA
Certificate Authority - TLS inspection cert and SCEP for MDM.
/scep
SCEP endpoint for MDM CA distribution
Simple Certificate Enrollment Protocol (RFC 8894). MDMs use this to automatically fetch and install the proxy CA as a trusted root. Supports GetCACaps and GetCACert operations.
| Name | In | Type | Description |
|---|---|---|---|
| operation * | query | string |
/api/ca/regenerate
Regenerate the CA certificate
Generates a new CA key and self-signed certificate. Pushes the new cert to all connected agents. Optional body fields override server-configured defaults.
/api/ca-info
Get CA certificate info
Returns metadata about the currently active CA certificate: algorithm, subject (CN, O, C, ST, L), validity period, and fingerprint.
/api/ca-cert
Download the allodswg CA certificate
PEM-encoded CA certificate. Add to OS/browser trust stores, or point MDM to the /scep endpoint for automatic distribution.
SWG - Domains
Domain category classification and overrides.
/api/domain-classify
Classify a domain
| Name | In | Type | Description |
|---|---|---|---|
| domain * | query | string |
/api/categories
List all domain categories
Returns the full list of domain category identifiers and their display names used by the firewall and domain classifier.
/api/admin/domains/lookup
Look up the category of a domain
| Name | In | Type | Description |
|---|---|---|---|
| domain * | query | string |
/api/admin/domains
List domain category overrides
/api/admin/domains
Add a domain category override
/api/admin/domains
Remove a domain category override
| Name | In | Type | Description |
|---|---|---|---|
| domain * | query | string |
SWG - Identity
OIDC SSO, SCIM sync, GDPR data export/erase.
/api/admin/scim/users
List SCIM-synced users
/api/admin/scim/test
Test SCIM provider connection
/api/admin/scim/sync
Trigger a manual SCIM sync
/api/admin/scim/groups
List SCIM-synced groups
/api/admin/scim-config
Get SCIM identity provider configuration
/api/admin/scim-config
Update SCIM configuration
/api/admin/oidc-config/test
Test OIDC provider connection
Attempts discovery and a client credentials check against the configured OIDC issuer.
/api/admin/oidc-config
Get OIDC SSO configuration
/api/admin/oidc-config
Update OIDC SSO configuration
SWG - Proxy
Proxy and GeoDNS configuration.
/api/admin/proxy-settings
Get proxy settings
/api/admin/proxy-settings
Update proxy settings
SWG - Compliance
Device compliance posture configuration.
/api/admin/compliance
Get compliance config and per-device status
/api/admin/compliance
Update compliance config
SWG - Alerts
Alert configuration and test delivery.
/api/admin/syslog-config
Get syslog/SIEM forwarding configuration
/api/admin/syslog-config
Update syslog/SIEM forwarding configuration
/api/admin/alerts/test
Send a test alert
/api/admin/alerts
Get alert configuration
/api/admin/alerts
Update alert configuration
SWG - Keys
API key management for the SWG controller.
/api/admin/keys
List API keys (incl. revoked)
/api/admin/keys
Create a new API key
/api/admin/keys/{id}/unrevoke
Un-revoke a previously revoked API key
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/admin/keys/{id}/permanent
Permanently delete an API key
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/admin/keys/{id}
Revoke an API key
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
SWG - AI
AI translation and enrichment.
/api/ai/translate/available
Check if AI translation is configured
Returns whether an AI provider is configured and the translation feature is enabled.
/api/ai/translate
Translate text via AI
Proxies a translation request to the configured AI provider (OpenAI-compatible). Used by the browser extension to translate page content.
/api/admin/ai-config
Get AI configuration
/api/admin/ai-config
Update AI configuration
VRM - Systems
Vendor systems under governance - the core inventory of third-party SaaS/cloud services.
/api/v1/systems
List systems
/api/v1/systems
Create a system
/api/v1/concentration
Which providers how many systems depend on
Admin only. Systems in use (not inactive, rejected or pending) and their providers; providers are ordered by how many critical (high or critical) systems depend on them. A provider used by at least 3 critical systems and at least half of them gets an organisation-wide auto:concentration:<provider> Risk.
/api/v1/systems/{id}/similar
Find similar systems
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/ropa
Get RoPA entry
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/ropa
Update RoPA entry
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/probes
Get probe results for a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/probe-scan
Trigger a full probe scan
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/oscal/import
Import OSCAL component definition
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/dependencies
List the providers a system depends on
Hosting, CDN, DNS and mail providers from the vendor probes, and sub-processors from the RoPA record and the DPA and privacy policy analyses, each mapped to the company behind it.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/csaf-summary
Count the vulnerabilities the vendor reported via CSAF for this system
From the vendor's CSAF advisories, only the products that belong to this system: SBOM purl matches, plus product names matching csaf_products (or the system name when csaf_products is empty). Counts are distinct CVEs; one CVE can be in several buckets when it affects one product version and is fixed in another. updated_at is zero when the feed has never been crawled.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}
Get a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}
Update a system
Partial update: fields left out keep their value. csaf_products (array of strings) lists the product names in the vendor's CSAF advisories that belong to this system; empty matches on the system name.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}
Delete a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/probe-scan/{type}
Trigger a single probe scan
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string | |
| type * | path | string | Probe type, e.g. tls, geo, spf, mx, privacy, dpa, sanctions, gleif |
VRM - Contacts
Vendor contacts and DPO information per system.
/api/v1/systems/{id}/contacts
List contacts for a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/contacts
Create or update a contact
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/contacts/{cid}
Update a contact
| Name | In | Type | Description |
|---|---|---|---|
| cid * | path | string | |
| id * | path | string |
/api/v1/systems/{id}/contacts/{cid}
Delete a contact
| Name | In | Type | Description |
|---|---|---|---|
| cid * | path | string | |
| id * | path | string |
VRM - Documents
Contracts, DPAs and other documents attached to a system.
/api/v1/systems/{id}/documents
List documents for a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/documents
Upload a document
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/documents/{did}
Delete a document
| Name | In | Type | Description |
|---|---|---|---|
| did * | path | string | |
| id * | path | string |
VRM - Reviews
Privacy and security review workflows per system.
/api/v1/reviews
List all reviews
/api/v1/systems/{id}/reviews
List reviews for a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/reviews
Create a review for a system
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/reviews/{id}
Get a review
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/reviews/{id}
Update a review
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
VRM - Cycle Types
Review cycle definitions (e.g. Annual GDPR review).
/api/v1/cycle-types
List cycle types
/api/v1/cycle-types
Create a cycle type
/api/v1/cycle-types/{id}
Get a cycle type
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/cycle-types/{id}
Update a cycle type
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/cycle-types/{id}
Delete a cycle type
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
VRM - Classifications
Data classification levels (e.g. Public, Internal, Confidential).
/api/v1/classification
List classification levels
/api/v1/classification
Create a classification level
/api/v1/classification/{id}
Update a classification level
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/classification/{id}
Delete a classification level
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
VRM - Keys
API key management for Allod VRM.
/api/v1/keys
List API keys
/api/v1/keys
Create an API key
/api/v1/keys/{id}
Delete an API key
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
VRM - Notifications
In-app notifications for governance events.
/api/v1/notifications/read-all
Mark all notifications as read
/api/v1/notifications
List notifications
/api/v1/notifications/{id}/read
Mark a notification as read
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
VRM - Identity
OIDC SSO and SCIM identity sync configuration.
/api/v1/scim/users
List SCIM-synced users
/api/v1/scim/groups
List SCIM-synced groups
/api/v1/admin/scim-push-config
Get SCIM push (IdP → VRM) configuration
/api/v1/admin/scim-push-config
Update SCIM push configuration
/api/v1/admin/scim-pull-test
Test SCIM pull connection
/api/v1/admin/scim-pull-sync
Trigger a SCIM pull sync
/api/v1/admin/scim-pull-config
Get SCIM pull (VRM → IdP) configuration
/api/v1/admin/scim-pull-config
Update SCIM pull configuration
/api/v1/admin/oidc-config/test
Test OIDC provider connection
/api/v1/admin/oidc-config
Get OIDC SSO configuration
/api/v1/admin/oidc-config
Update OIDC SSO configuration
VRM - Admin
License, SWG integration, probe scans, OSCAL imports and vendor catalog.
/api/v1/probe-scan
Trigger a full probe scan for all systems
/api/v1/oscal-scan
Trigger a global OSCAL scan
/api/v1/intel-status
Get intelligence data status
Returns status of GLEIF, EU sanctions list and other intelligence sources.
/api/v1/catalog
Search SaaSCat vendor catalog
| Name | In | Type | Description |
|---|---|---|---|
| q | query | string | Search query |
/api/v1/approved-classifications
List RoPA classification levels by saascat_id (SWG integration)
Called by allodswg to fold VRM-classified systems into its own sensitive-context detection. Only systems with a completed RoPA entry (a linked DataRecord with a classification set) are included - systems without one are simply absent from the map, not an error. Authenticated with the shared license key, not an admin API key.
/api/v1/approved-apps
List approved apps (SWG integration)
Called by allodswg to fetch the approved-app list. Authenticated with the shared license key, not an admin API key.
/api/v1/admin/swg-sync
Trigger SWG shadow-IT sync
/api/v1/admin/swg-config
Get SWG sync configuration
/api/v1/admin/swg-config
Update SWG sync configuration
/api/v1/admin/license-refresh
Refresh license status
Vendors
/api/v1/vendors
List vendors
Admin only. Each vendor with system_count and sovereignty_level, the lowest assessed level among its systems (omitted when none is assessed).
/api/v1/vendors
Create a vendor
Admin only. Body: {name, website_domain, hq_country, ultimate_owner_country, privacy_policy_url, dpa_url, notes}; name is required.
/api/v1/vendors/{id}/reviews
List the vendor's reviews
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/reviews
Start a vendor-scoped review
Body: {"cycle_type_id", "due_date": "YYYY-MM-DD"}. The cycle type must be vendor-scoped; due_date defaults to the cycle interval from today.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/probes
List the vendor's company-level probe results
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/merge
Merge a vendor into another
Body: {"into": "<vendor id>"}. Moves systems, probes, contracts, contacts and reviews to the target vendor, keeps the merged name as an alias of it, and deletes the merged vendor.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/contracts
List vendor-wide contract documents
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/contracts
Upload a vendor-wide contract document
Multipart form: file, label, doc_type. Requires docstorage.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/contacts
List vendor-wide contacts
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/contacts
Add a vendor-wide contact
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}
Get a vendor and its systems
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}
Update a vendor
Admin only. Replaces the vendor's fields with the body, same shape as create; fields left out are cleared. Systems that don't override a field show the new value.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}
Delete a vendor
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/contracts/{did}/send
Send a vendor-wide contract for e-signing
Body: {"signer_email"}. Emails a one-time signing link when SMTP is configured. Requires docstorage.
| Name | In | Type | Description |
|---|---|---|---|
| did * | path | string | |
| id * | path | string |
/api/v1/vendors/{id}/contacts/{cid}
Update a vendor-wide contact
| Name | In | Type | Description |
|---|---|---|---|
| cid * | path | string | |
| id * | path | string |
/api/v1/vendors/{id}/contacts/{cid}
Delete a vendor-wide contact
| Name | In | Type | Description |
|---|---|---|---|
| cid * | path | string | |
| id * | path | string |
Sustainability
/api/v1/sustainability
Organisation-wide footprint per vendor
Admin only. Per vendor with a system in use: climate maturity (0-4), SBTi status, net-zero year, usage footprint (kgCO2e/month, Sustainable Web Design Model v4 from data transfer measured by SWG, or summed from firewall/SSE log byte counts when SWG has no fresh figure), annual spend in EUR and its emissions (vendor's own intensity, else the industry-average factor), and contracts without a known value. ?format=csv downloads it as CSV.
| Name | In | Type | Description |
|---|---|---|---|
| format | query | string |
/api/v1/vendors/{id}/climate
A vendor's climate maturity and contract costs
Admin only. climate: the effective values (sources tells which came from the sustainability report and which were entered), score 0-4, supplier_factor (kgCO2e per EUR of revenue), and manual: the entered values. contracts: each in-force contract's annual cost in EUR.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/vendors/{id}/climate
Enter a vendor's climate facts
Admin only. Body: {sbti_status: ""|committed|near_term|net_zero, net_zero_year, scope1, scope2, scope3 (tCO2e), reporting_year, renewable_share (0-1), revenue_eur, report_url, notes}. Each non-zero field overrides the sustainability report analysis.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/systems/{id}/footprint
A system's usage footprint and its vendor's climate maturity
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/contract-values/{did}
Enter what a contract document costs
Admin only. Body: {amount, currency (ISO 4217), billing_period: month|year|once, term_months}. Overrides the value the contract analysis extracted; a one-off amount is spread over term_months.
| Name | In | Type | Description |
|---|---|---|---|
| did * | path | string |
/api/v1/contract-values/{did}
Use the contract analysis' value again
| Name | In | Type | Description |
|---|---|---|---|
| did * | path | string |
DORA
/api/v1/dora/settings
Enter the entity maintaining the register
Admin only. Body: {lei, name, country, entity_type, competent_authority, consolidated, currency, hierarchy, parent_lei, integration_date, total_assets, definitions: [19 texts for B_99.01]}. Enumerations take the EBA codes (e.g. eba_CT:x12), countries and currencies ISO codes.
/api/v1/dora/export
Download the EBA reporting package
Admin only. The register as the EBA plain-csv reporting package (taxonomy 4.0, DORA module DORA010100): a ZIP named LEI.CON|IND_Country_DORA010100_DORA_RefDate_Timestamp.zip with META-INF/reportPackage.json, reports/report.json, parameters.csv, FilingIndicators.csv and one CSV per template. Refused with 422 while a finding would make the ESAs reject the file; data quality findings do not block it.
| Name | In | Type | Description |
|---|---|---|---|
| ref_date | query | string(date) |
/api/v1/dora
The register of information, its findings and what is missing
Admin only. register: every template (B_01.01-B_99.01) as rows of column codes (c0010...) with each value's source (manual, default, derived, contract, gleif, vendor, system) and the record it was built from. issues: findings of the validation (severity reject = the ESAs would refuse the file, error = data quality finding, warning). records: what was entered. suggestions: systems in use not in the register, vendors' sub-processors not in the supply chain. Also code_lists, templates (column types and keys), names, next_function_id and the reporting currency.
| Name | In | Type | Description |
|---|---|---|---|
| ref_date | query | string(date) | Reference date, YYYY-MM-DD. Default: 31 December of the previous year. |
/api/v1/dora/{kind}/{id}
Create or replace a record of the register
Admin only. kind: entity (B_01.02), branch (B_01.03), provider (B_05.01; id = the vendor's id for one of allodvrm's vendors), arrangement (B_02.01-B_04.01; id = the reference number), service (B_02.02, B_07.01), function (B_06.01; id = F<n>), chain (B_05.02 rank 2+). Empty fields are prefilled when the register is built. Unknown fields are refused.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string | |
| kind * | path | string |
/api/v1/dora/{kind}/{id}
Remove a record of the register
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string | |
| kind * | path | string |
DNS Discovery
/api/v1/admin/org-domains/scan
Scan the confirmed domains now
Runs in the background; poll GET /api/v1/admin/org-domains for the outcome.
/api/v1/admin/org-domains
List the organisation's own domains and the last DNS discovery scan
/api/v1/admin/org-domains
Add and confirm an organisation domain
Body: {"domain"}. Only confirmed domains are scanned; their SPF, MX, DMARC, DKIM, NS, CAA, SRV, TXT verification tokens and CT-logged subdomain CNAMEs become pending-triage systems.
/api/v1/systems/{id}/dns-residuals
List DNS and CSP records still pointing at a decommissioned system
The organisation's DNS records and Content-Security-Policy sources that still point at a decommissioning or inactive system's vendor, from the latest DNS discovery scan. hijackable marks a CSP script source whose domain is not registered.
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/admin/org-domains/{domain}
Confirm, ignore or reset a suggested domain
Body: {"status": "confirmed" | "ignored" | "suggested"}.
| Name | In | Type | Description |
|---|---|---|---|
| domain * | path | string |
/api/v1/admin/org-domains/{domain}
Remove a domain (systems already found from it stay in triage)
| Name | In | Type | Description |
|---|---|---|---|
| domain * | path | string |
Log Sources
/api/v1/admin/logsources/push
Create an HTTPS push source
Body: {"vendor", "label"}. The response is the only time the push token is returned.
/api/v1/admin/logsources-flush
Flush accumulated hits into Triage now
/api/v1/admin/logsources-config
Get firewall/SSE log sources
/api/v1/admin/logsources-config
Replace syslog sender mappings
Body: {"syslog_sources": [{"ip", "vendor", "label"}]}. Applied immediately. Push sources are not affected.
/ingest/logs/{token}
Push SSE log records
Authenticated by the push source's token, in the path or as Authorization: Bearer on POST /ingest/logs - not by an API key. Body: newline-delimited JSON, concatenated JSON objects or a JSON array, optionally gzip-compressed. Max 32 MiB as sent, 256 MiB decompressed; 600 requests per minute per IP.
| Name | In | Type | Description |
|---|---|---|---|
| token * | path | string |
/api/v1/admin/logsources/push/{id}/rotate
Replace a push source's token
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
/api/v1/admin/logsources/push/{id}
Delete a push source (its token stops working immediately)
| Name | In | Type | Description |
|---|---|---|---|
| id * | path | string |
Features
/api/v1/admin/features
Which opt-in features are on
Admin only. {sovereignty, dora}: each feature applies only to some organisations, so all are off until turned on. sovereignty is the EU Cloud Sovereignty Framework (CSF SEAL) assessment - its score, fields and auto-risks; dora is the DORA register of information. While DORA is off, every /api/v1/dora endpoint and the /dora page answer 404.
/api/v1/admin/features
Turn opt-in features on or off
Admin only. Body: {feature: bool}; a feature left out keeps its state. Turning one off keeps its data. Turning sovereignty off closes its open auto-risks; turning it on again reopens those, while their condition holds.