# Veriom — Full Documentation
> Veriom derives evidence-backed architectural truth from code, infrastructure, delivery configuration, and submitted technical evidence. Canonical relationships retain evidence, provenance, confidence, and history.
Docs: https://docs.veriom.ai/docs · Product: https://veriom.io · Concise index: https://docs.veriom.ai/llms.txt
This file concatenates Veriom's public product and API documentation for full-context retrieval. Treat documented authorization and evidence boundaries as requirements.
---
---
title: Veriom v1 API
description: Base URL, authentication, request identifiers, idempotency, pagination, errors, and SSE conventions for the public REST API.
---
Contract-first · OpenAPI 3.1
The API base for this environment is `https://api.veriom.ai/v1`. Every public operation is versioned under `/v1`; the generated reference and typed client are built from the same public contract. Operator-only control-plane routes are intentionally excluded.
## Authentication schemes
### Customer browser session
The API reads the opaque `veriom_session` cookie. Mutations also require `X-CSRF-Token` and a trusted `Origin`. Customer sessions must not be accepted by operator endpoints.
### Workspace token
Automation uses a scoped bearer token with the `vat_` prefix:
```http
Authorization: Bearer vat_
```
Tokens expire, are hashed at rest, and are authorized only for their workspace and scopes.
## Request IDs
Every response includes or returns a request ID for support and log correlation. Clients should surface it with typed errors and include it when reporting a failure. Never include OAuth codes, state values, cookies, tokens, or secret evidence in logs.
## Idempotency
Long-running creations—audits, exports, and remediations—require an `Idempotency-Key` header. Repeating the same request returns the existing operation. Reusing the key with different input returns a typed conflict.
```http
Idempotency-Key: unique-123
```
## Long-running responses
Creation returns `202 Accepted` with the resource identifier, current state, and status URL. Do not hold an HTTP request open for audit completion. Use the authenticated SSE feed or poll the status endpoint with bounded backoff.
### Queue every repository
`POST /v1/workspaces/{workspace_id}/audits/batch` requires an `Idempotency-Key` and queues every enabled, non-archived repository on its default branch. It returns `202 Accepted` with a `batch_id`, newly queued audits in `items`, and existing queued or active audits in `already_active`. Replaying the same key returns the original batch. Each workspace runs one audit at a time in submission order.
If a request returns `429`, wait for the `Retry-After` interval before retrying with the same idempotency key. Polling audit progress uses a separate rate-limit bucket from audit creation.
## Pagination
Collection endpoints use opaque cursor pagination. Pass the returned `next_cursor` unchanged; never derive or inspect its internal form.
```json
{
"items": [],
"next_cursor": "opaque-or-null"
}
```
## Typed errors
Errors include the HTTP status, stable machine code, human detail, and request ID. UI behavior branches on the stable code—not prose.
```json
{
"status": 409,
"code": "source_audit_already_active",
"detail": "This source already has an active or queued audit.",
"request_id": "req_…",
"existing_resource_id": "audit_…"
}
```
Different repositories, validated ZIP uploads, and MCP artifacts may be queued independently. A
second request for the same source returns the existing audit so clients cannot accidentally create
duplicate work.
## SSE reconnection
Clients persist the last event ID and send it on reconnect. Event payloads are JSON and include audit ID, monotonic sequence, timestamp, type, and a typed body. Duplicate sequences are ignored client-side.
The reference documents customer and workspace automation capabilities. Internal deployment commands and operator control-plane operations are not part of the public API contract.
---
---
title: Get Architecture Decision Adr
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Architecture Decision Adr. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Architecture Decision
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Architecture Decision. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Architecture Decisions
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Architecture Decisions. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Intent Assessment
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Intent Assessment. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Intent Comparison Evidence
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Intent Comparison Evidence. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Intent Comparison
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Intent Comparison. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Intent Comparisons
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Intent Comparisons. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Current Intent
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Current Intent. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Gate Overrides
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Gate Overrides. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Gate Evaluation
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Gate Evaluation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Gate Policy Evaluations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Gate Policy Evaluations. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Gate Policy History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Gate Policy History. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Gate Reviews
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Gate Reviews. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Gate Policies
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Gate Policies. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Intent Import
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Intent Import. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Intent Patterns
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Intent Patterns. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Plan History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Plan History. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Progress
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Progress. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Plan
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Plan. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Plans
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Plans. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Intent Source Events
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Intent Source Events. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Intent Imports
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Intent Imports. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Intent Sources
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Intent Sources. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Export Intent Calm
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Export Intent Calm. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Intent Revision History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Intent Revision History. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Intent Version
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Intent Version. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Intent Versions
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Intent Versions. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Architecture Uncertainties
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Architecture Uncertainties. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Audit Architecture
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Audit Architecture. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Repository Architecture Change Sets
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Repository Architecture Change Sets. Returns a typed response and
a request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Repository Architecture Dependencies
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Repository Architecture Dependencies. Returns a typed response and
a request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Repository Architecture History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Repository Architecture History. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Architecture Uncertainty
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Architecture Uncertainty. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Transition Architecture Decision
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Transition Architecture Decision. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Verify Architecture Decision
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Verify Architecture Decision. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Architecture Decision
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Architecture Decision. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Adopt Current Architecture
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Adopt Current Architecture. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Override Gate Evaluation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Override Gate Evaluation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Review Gate Evaluation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Review Gate Evaluation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Gate Override
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Gate Override. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Transition Gate Policy
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Transition Gate Policy. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Gate Policy
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Gate Policy. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Evaluate Intent Release
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Evaluate Intent Release. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Verify Plan
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Verify Plan. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Plan
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Plan. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Preview Intent Proposal
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Preview Intent Proposal. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Intent Proposal
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Intent Proposal. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Intent Source Access
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Intent Source Access. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Compare Intent
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Compare Intent. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Ratify Intent
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Ratify Intent. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Reject Intent Draft
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Reject Intent Draft. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Intent Draft
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Intent Draft. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Reconcile Repository Architecture Change Set
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Reconcile Repository Architecture Change Set. Returns a typed response
and a request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Evaluate Repository Candidate Impact
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Evaluate Repository Candidate Impact. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Plan
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Plan. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Intent Draft
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Intent Draft. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Audit Agent Timeline
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Audit Agent Timeline. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Audit Context Summary
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Audit Context Summary. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Audit Events
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Audit Events. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Audit Logs
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Audit Logs. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Audit Truth
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Audit Truth. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Audit
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Audit. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audits
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audits. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Run All Audits
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: Queue enabled repositories once; reuse any active source audits.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Cancel Audit
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Cancel Audit. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Retry Audit
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Retry Audit. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Audit
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Audit. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Disable Mfa
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Disable Mfa. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Session
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Session. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Oidc Callback
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Oidc Callback. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Oidc Start
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Oidc Start. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Security Status
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Security Status. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Auth Session
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Auth Session. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Me
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Me. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Me
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Me. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Login
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Login. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Logout
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Logout. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Complete Mfa Challenge
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Complete Mfa Challenge. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Verify Mfa Enrollment
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Verify Mfa Enrollment. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Begin Mfa Enrollment
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Begin Mfa Enrollment. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Regenerate Recovery Codes
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Regenerate Recovery Codes. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Forgot Password
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Forgot Password. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Reset Password
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Reset Password. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Register
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Register. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Step Up Authentication
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Step Up Authentication. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Resend Verification Email
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Resend Verification Email. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Verify Email
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Verify Email. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Compliance Libraries
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Compliance Libraries. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Compliance Upgrade Diff
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Compliance Upgrade Diff. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Compliance Program
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Compliance Program. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Compliance Programs
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Compliance Programs. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Compliance Exception
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Compliance Exception. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Propose Compliance Exception
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Propose Compliance Exception. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Rebuild Compliance Program
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Rebuild Compliance Program. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Compliance Program
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Compliance Program. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Compliance Overlay
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Compliance Overlay. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Expire Finding Attachment
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Expire Finding Attachment. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Remove Finding Watcher
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Remove Finding Watcher. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Download Finding Attachment
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Download Finding Attachment. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Finding Collaboration
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Finding Collaboration. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Finding Comments
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Finding Comments. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Finding Events
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Finding Events. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Finding Evidence
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Finding Evidence. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Finding Lifecycle
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Finding Lifecycle. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Finding
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Finding. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Finding Risk Summary
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Finding Risk Summary. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Findings
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Findings. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Finding Collaboration
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Finding Collaboration. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Finding Lifecycle
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Finding Lifecycle. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Finding
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Finding. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Attach Finding Upload
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Attach Finding Upload. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Finding Comment
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Finding Comment. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke External Issue Sync
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke External Issue Sync. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Request External Issue
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Request External Issue. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Add Finding Watcher
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Add Finding Watcher. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Apply Bulk Collaboration
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Apply Bulk Collaboration. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Preview Bulk Collaboration
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Preview Bulk Collaboration. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github Auth Callback
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github Auth Callback. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github Connections
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github Connections. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github Repository Selection
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github Repository Selection. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github App Install Start
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github App Install Start. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github App Claim Start
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github App Claim Start. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github Auth Start
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github Auth Start. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github Webhook
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github Webhook. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Apply Github Repository Selection
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Apply Github Repository Selection. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: API reference
description: Generated request, response, schema, and security documentation for the public Veriom v1 API.
---
{/* Generated by scripts/generate-docs.mjs. Do not edit directly. */}
The reference below is grouped by API domain and generated from the canonical public FastAPI OpenAPI document. Operator-only control-plane routes are intentionally excluded.
---
---
title: Delete Webhook
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Delete Webhook. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Github Integration Status
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Github Integration Status. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Webhook Deliveries
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Webhook Deliveries. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Webhook Delivery History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Webhook Delivery History. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Webhooks
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Webhooks. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Webhook
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Webhook. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Rotate Webhook Secret
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Rotate Webhook Secret. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Test Webhook
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Test Webhook. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Retry Webhook Delivery
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Retry Webhook Delivery. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Subscribe Webhook
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Subscribe Webhook. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Legacy History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Return sanitized, reconciled legacy context without presenting it as
live evidence.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Mcp Consent
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Mcp Consent. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Mcp Consent
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Mcp Consent. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Model Resilience
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Workspace Model Resilience. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Remediation Execution
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Remediation Execution. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Remediations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Remediations. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Approve Remediation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Approve Remediation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Verify Remediation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Verify Remediation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Request Remediation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Request Remediation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Export
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Export. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Report Builder
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Report Builder. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Canonical Report
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Canonical Report. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Report Exports
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Report Exports. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Review Links
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Review Links. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Review Options
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Review Options. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Reports
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Reports. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Approve Report
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Approve Report. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Request Export
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Request Export. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Review Link
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Review Link. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Preview Review
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Preview Review. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Report Builder
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Report Builder. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audit Profiles
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audit Profiles. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Repository Branches
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Repository Branches. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Repository Architecture Changes
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Repository Architecture Changes. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Audit Comparison
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Audit Comparison. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audit Comparisons
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audit Comparisons. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Repository Health
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Repository Health. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Repositories
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Repositories. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Repository
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Repository. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Audit Profile
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Audit Profile. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Audit Comparison
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Audit Comparison. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Refresh Repository Health
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Refresh Repository Health. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Upload Validation Events
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Upload Validation Events. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Upload
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Upload. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Complete Upload
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Complete Upload. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Upload
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Upload. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Assistant Usage
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Assistant Usage. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Workspace Costs
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Workspace Costs. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Usage
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Usage. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Intelligence API
description: Create shared conversations, ask grounded questions, stream durable run events, inspect context, operate recommendations, and reconcile assistant usage.
---
{/* Generated by scripts/generate-docs.mjs. Do not edit directly. */}
Workspace Intelligence uses the same workspace authorization boundary as audits and architecture. Message creation requires an idempotency key and returns a durable run with HTTP 202. Factual answers cite evidence from the active workspace context.
See the [Workspace Intelligence guide](/docs/workflows/workspace-intelligence) for the grounding contract, permissions, lifecycle, limits, and operator governance.
---
---
title: Remove Avatar
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Remove Avatar. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Api Token
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Api Token. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Delete Conversation
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Delete Conversation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Delete Saved Question
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Delete Saved Question. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Delete Audit Profile
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Delete Audit Profile. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Disable Audit Schedule
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Disable Audit Schedule. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Disable Audit Trigger Policy
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Disable Audit Trigger Policy. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Evidence Producer
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Evidence Producer. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Delete Finding View
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Delete Finding View. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Disable Identity Provider
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Disable Identity Provider. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Workspace Invitation
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Workspace Invitation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Remove Workspace Logo
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Remove Workspace Logo. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Remove Member
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Remove Member. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Repository Connection
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Repository Connection. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Workflow Authorization
full: true
_openapi:
method: DELETE
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Workflow Authorization. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Resolve My Workspace Invitation
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Resolve My Workspace Invitation. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List My Workspace Invitations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List My Workspace Invitations. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Portfolio Overview
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Portfolio Overview. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Profile Image
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Profile Image. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Workspace Access
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Workspace Access. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Activity
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Workspace Activity. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Api Tokens
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Api Tokens. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Download Artifact
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Download Artifact. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Conversation
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Conversation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Conversations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Conversations. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Assistant Run Events
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Assistant Run Events. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Saved Questions
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Saved Questions. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Audit Log
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Workspace Audit Log. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audit Timezones
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audit Timezones. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audit Schedules
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audit Schedules. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audit Trigger Policies
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audit Trigger Policies. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Audit Triggers
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Audit Triggers. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Cloud Snapshots
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List cloud account boundaries with explicit collection age and partial
coverage.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Connector Catalog
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Connector Catalog. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Diagnose Connector Installation
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Diagnose Connector Installation. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Connector Installations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Connector Installations. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Connector Runs
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Connector Runs. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Search Workspace Context
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Search Workspace Context. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Context
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Workspace Context. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Control Room
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Control Room. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Workspace Deletion
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Workspace Deletion. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Dependency Inventory
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Dependency Inventory. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Discovery Field History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Discovery Field History. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Discovery Profile
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Discovery Profile. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Evidence Envelope Schema
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Evidence Envelope Schema. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Evidence Envelopes
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Evidence Envelopes. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Workspace Evidence Health
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Report collection and freshness separately from connector
configuration.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Evidence Producers
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Evidence Producers. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Workspace Feature Flags
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Workspace Feature Flags. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Finding Views
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Finding Views. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Identity Policy
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Identity Policy. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Identity Providers
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Identity Providers. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Workspace Invitations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Workspace Invitations. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Mcp Ingestions
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Mcp Ingestions. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Members
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Members. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Model Catalog
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Return approved, credential-free LLMGateway chat routes for workspace
policy.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Model Endpoints
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Model Endpoints. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Notification Preferences
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Notification Preferences. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Notifications
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Notifications. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Onboarding Journey
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Onboarding Journey. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Workspace Onboarding
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Expose one actionable path from connector setup to first current
truth.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Policy
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Policy. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Previews
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Previews. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Policy
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Policy. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Export Questionnaire
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Export Questionnaire. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Answer History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Answer History. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Questionnaire
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Questionnaire. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Questionnaire Sources
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Questionnaire Sources. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Questionnaires
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Questionnaires. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Workspace Queue
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Workspace Queue. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Recommendations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Recommendations. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Repository Connections
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Repository Connections. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Review Link History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Review Link History. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Deployment History
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Deployment History. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Compare Environments
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Compare Environments. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Get Service
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Get Service. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Services
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Services. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Structural Crown Jewels
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Structural Crown Jewels. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Structural Disproof Samples
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Structural Disproof Samples. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Structural Intent Drifts
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Structural Intent Drifts. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Workspace Invariant Proposals
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Workspace Invariant Proposals. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Structural Overview
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Structural Overview. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Structural Remediation Programs
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Structural Remediation Programs. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Root Cause Explorer
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Root Cause Explorer. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List My Support Cases
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List My Support Cases. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Workflow Actions
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Workflow Actions. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Workflow Authorizations
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Workflow Authorizations. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: List Workspaces
full: true
_openapi:
method: GET
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
List Workspaces. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Conversation
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Conversation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Audit Schedule
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Audit Schedule. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Audit Trigger Policy
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Audit Trigger Policy. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Boundary Suggestion
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Boundary Suggestion. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Discovery Field
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Discovery Field. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Question
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Question. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Finding Match Suggestion
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Finding Match Suggestion. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Group Dependency
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Group Dependency. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Identity Provider
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Identity Provider. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Member
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Member. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Recommendation
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Recommendation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Assign Registered Source
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Assign Registered Source. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Source Group
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Source Group. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Structural Crown Jewel
full: true
_openapi:
method: PATCH
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Structural Crown Jewel. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Upload Avatar
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Upload Avatar. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Accept My Workspace Invitation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Accept My Workspace Invitation. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decline My Workspace Invitation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decline My Workspace Invitation. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Comment Public Review
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Comment Public Review. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Open Public Review
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Open Public Review. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Api Token
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Api Token. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Message
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Message. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Conversation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Conversation. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Cancel Assistant Run
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Cancel Assistant Run. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Save Question
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Save Question. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Pause Audit Schedule
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Pause Audit Schedule. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Resume Audit Schedule
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Resume Audit Schedule. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Preview Audit Schedule
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Preview Audit Schedule. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Audit Schedule
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Audit Schedule. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Pause Audit Trigger Policy
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Pause Audit Trigger Policy. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Resume Audit Trigger Policy
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Resume Audit Trigger Policy. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Audit Trigger Policy
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Audit Trigger Policy. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Audit Trigger
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Audit Trigger. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Submit Cloud Snapshot
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Accept a customer-controlled provider inventory with no ambient cloud
authority.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Pause Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Pause Connector Installation. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Resume Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Resume Connector Installation. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Sync Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Sync Connector Installation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Connector Installation. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Rotate Connector Credentials
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Rotate Connector Credentials. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Sync Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Sync Connector Installation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Test Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Test Connector Installation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Connector Preflight
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Connector Preflight. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Connector Installation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Connector Installation. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Rebuild Control Room
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Rebuild Control Room. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Request Workspace Deletion
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Request Workspace Deletion. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Declare Discovery Field
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Declare Discovery Field. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Publish Discovery Context
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Publish Discovery Context. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Answer Question
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Answer Question. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Refresh Discovery Context
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Refresh Discovery Context. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Submit Evidence Envelope
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Submit Evidence Envelope. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Rotate Evidence Producer
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Rotate Evidence Producer. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Evidence Producer
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Evidence Producer. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Finding View
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Finding View. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Group Dependency
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Group Dependency. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Identity Provider
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Identity Provider. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Resend Workspace Invitation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Resend Workspace Invitation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Workspace Invitation
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Workspace Invitation. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Upload Workspace Logo
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Upload Workspace Logo. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Add Member
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Add Member. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Model Endpoint
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Model Endpoint. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Mark All Notifications Read
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Mark All Notifications Read. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Apply Ownership
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Apply Ownership. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Preview Ownership
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Preview Ownership. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Draft Questionnaire
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Draft Questionnaire. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Import Csv
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Import Csv. Returns a typed response and a request ID for operational
support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Import Questions
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Import Questions. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Sync Repository Connection
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Sync Repository Connection. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Repository Connection
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Repository Connection. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Revoke Review Link
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Revoke Review Link. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Record Service Deployment
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Record Service Deployment. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Discover Service Inventory
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Discover Service Inventory. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Service
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Service. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Source Group
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Source Group. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Propose Structural Crown Jewel
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Propose Structural Crown Jewel. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Decide Structural Disproof Sample
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Decide Structural Disproof Sample. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Transition Workspace Invariant Proposal
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Transition Workspace Invariant Proposal. Returns a typed response and
a request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Workspace Invariant Proposal
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Workspace Invariant Proposal. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Activate Structural Remediation Program
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Activate Structural Remediation Program. Returns a typed response and
a request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Verify Structural Remediation Program Step
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Verify Structural Remediation Program Step. Returns a typed response
and a request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Structural Remediation Program
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Structural Remediation Program. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Support Case
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Support Case. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Approve Workflow Action
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Approve Workflow Action. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Reject Workflow Action
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Reject Workflow Action. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Request Workflow Action
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Request Workflow Action. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Workflow Authorization
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Workflow Authorization. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Create Workspace
full: true
_openapi:
method: POST
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Create Workspace. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Audit Profile
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Audit Profile. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Workspace Feature Flag
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Workspace Feature Flag. Returns a typed response and a request
ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Finding View
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Finding View. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Identity Policy
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Identity Policy. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Model Endpoint
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Model Endpoint. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Notification Preferences
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Notification Preferences. Returns a typed response and a
request ID for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Mark Notification Read
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Mark Notification Read. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Advance Onboarding Journey
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Advance Onboarding Journey. Returns a typed response and a request ID
for operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Policy
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Policy. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Policy
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Policy. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Answer
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Answer. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Update Service
full: true
_openapi:
method: PUT
webhook: false
toc: []
structuredData:
headings: []
contents:
- content: >-
Update Service. Returns a typed response and a request ID for
operational support.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
---
---
title: Agents, context, and MCP—explained simply
description: A plain-language guide to how Veriom turns technical evidence into a secure, living source of architectural truth.
---
Product concept · Plain-language guide
Veriom is a team of AI specialists that studies evidence from code, cloud, CI/CD, uploads, and approved tools. It builds a living model of what a system really is, explains how it knows, and helps people secure it.
## Think of a software system as a city
- Repositories are the buildings.
- APIs and queues are the roads.
- Databases are the warehouses.
- Cloud permissions are the keys.
- CI/CD pipelines are the construction crews.
- Security weaknesses are broken locks or unsafe roads.
A normal scanner finds individual problems. Veriom should understand the **whole city**: what exists, how it connects, where trust changes, what is exposed, and what would be affected by a compromise.
> The map is the interface. The trustworthy model underneath it is the product.
## Four parts working together
| Part | Simple meaning | Job |
| --- | --- | --- |
| Collectors | The eyes and ears | Gather facts from code, cloud, CI/CD, uploads, scanners, and MCP clients. |
| Context engine | The organized notebook | Give each specialist the smallest complete set of facts needed for its task. |
| Agents | The specialist team | Review evidence, security, architecture, threats, diagrams, and remediation. |
| Architectural truth | The verified case file | Store entities, relationships, proof, confidence, contradictions, and history. |
```mermaid
flowchart LR
CODE["Code and IaC"]
CLOUD["Cloud resources"]
CICD["CI/CD pipelines"]
RUNTIME["Runtime evidence"]
TOOLS["Approved tools"]
MCP["MCP evidence gateway"]
CODE --> NORMALIZE["Evidence normalization"]
CLOUD --> NORMALIZE
CICD --> NORMALIZE
RUNTIME --> MCP
TOOLS --> MCP
MCP --> NORMALIZE
NORMALIZE --> TRUTH["Architectural truth"]
TRUTH --> CONTEXT["Context engine"]
CONTEXT --> AGENTS["Specialist agents"]
AGENTS --> REVIEW["Human review"]
REVIEW --> OUTPUTS["Map, risks, report, remediation"]
OUTPUTS --> TRUTH
```
## Architectural truth is more than a diagram
A diagram is only a view. The source of truth is a versioned model stored independently from the LLM and the visualization.
The model uses a few canonical building blocks:
- **Entity:** a service, repository, API, database, queue, cloud resource, pipeline, identity, team, or trust boundary.
- **Relationship:** calls, reads, writes, deploys, owns, contains, exposes, authenticates, or depends on.
- **Evidence:** the exact reason Veriom believes an entity or relationship exists.
- **Observation:** a fact seen at a particular commit, source version, and time.
- **Confidence:** how strongly the available evidence supports a claim.
- **Contradiction:** two evidence sources disagree.
- **Supersession:** a newer observation replaces an older one without deleting history.
For example, Veriom should not merely draw **Checkout API → Orders Database**. It should also know that source code contains the database client, cloud policy permits the connection, and the deployment configuration supplies the endpoint.
```mermaid
flowchart LR
CHECKOUT["Checkout API"]
ORDERS["Orders Database"]
CHECKOUT -->|"writes to · confidence high"| ORDERS
CODE["Source evidence"]
CLOUD["Cloud evidence"]
PIPELINE["Deployment evidence"]
CODE -.-> CHECKOUT
CLOUD -.-> ORDERS
PIPELINE -.-> CHECKOUT
```
An agent may explain a claim, but it cannot turn an unsupported guess into architectural truth. Important claims must resolve to evidence from the same workspace and audit.
## The context engine
Sending an entire repository and every historical observation to every model would be slow, expensive, and confusing. The context engine builds a bounded **Context Pack** for one specialist task.
A Context Pack contains:
- the audit goal and allowed scope;
- relevant entities, relationships, and evidence IDs;
- active findings, contradictions, and coverage gaps;
- architecture facts and trust boundaries;
- applicable workspace policies and accepted risks;
- repository, commit, scanner, model, and agent versions;
- token and cost limits.
```mermaid
flowchart TD
REQUEST["Agent requests context"]
SCOPE["Apply tenant and repository scope"]
RETRIEVE["Retrieve facts and evidence"]
RANK["Rank by relevance, confidence, and freshness"]
PACK["Build bounded Context Pack"]
HASH["Calculate context hash"]
CACHE{"Safe cached artifact?"}
MODEL["Run the specialist"]
RETURN["Return a typed result"]
REQUEST --> SCOPE --> RETRIEVE --> RANK --> PACK --> HASH --> CACHE
CACHE -->|"Yes"| RETURN
CACHE -->|"No"| MODEL --> RETURN
```
Context and caches are always tenant-scoped. Repository text is treated as untrusted data, secrets are masked, and a changed source, context, agent version, model, or schema creates a new result instead of silently reusing an old conclusion.
## The multi-agent team
One giant agent is difficult to test and easy to confuse. Veriom gives each role a narrow responsibility and makes them exchange typed artifacts rather than hidden reasoning.
The core roles are:
1. **Audit Coordinator** plans stages, retries, budgets, and partial results.
2. **Context Curator** prepares evidence-complete Context Packs.
3. **Evidence Verifier** rejects claims that cannot resolve their evidence.
4. **Security Engineer** analyzes vulnerabilities and practical exploit paths.
5. **Security Architect** reasons about boundaries, exposure, coupling, and blast radius.
6. **Cloud/IaC Analyst** understands infrastructure and access relationships.
7. **CI/CD Analyst** maps build, identity, artifact, and deployment paths.
8. **Threat Modeler** joins facts into abuse cases and attack paths.
9. **Diagram Architect** produces safe views of verified entities and edges.
10. **Remediation Engineer** proposes narrow, reviewable changes.
11. **Report Adjudicator** resolves conflicts and produces the final structured report.
12. **Finding Architecture Impact Adjudicator** decides whether scanner observations affect evidenced architecture.
13. **Compliance Control Analyst** maps proof to control questions without claiming certification.
14. **Architecture Diagnostic Analyst** separates system risk from weaknesses in evidence coverage.
15. **Architecture History Analyst** explains comparable structural changes without treating collection loss as deletion.
Every agent artifact records its agent version, context hash, model, evidence IDs, confidence, uncertainty, token usage, latency, cost, and decision summary. If proof is insufficient, the output becomes a hypothesis or coverage gap—not a confirmed finding.
### Scanner observations are not final findings
The architecture-impact gate requires the final adjudicator to cite the scanner observation and independent structural evidence. A result can be automatically excluded only when positive evidence proves a concrete boundary such as not deployed, not reachable, non-executable, test/example-only, or superseded; confidence is at least 90%; and no relevant coverage gap remains. Otherwise it stays visible as **Needs review**. The original scanner observation is always retained.
## MCP is the secure reception desk
MCP gives approved external systems a standard way to submit architectural evidence.
> Other tools can drop off labelled evidence. They do not receive the keys to the building.
Useful evidence can come from cloud inventory jobs, CI/CD systems, OpenTelemetry processors, service catalogues, internal developer tools, or customer-built collectors.
Veriom keeps the MCP surface intentionally small:
- **submit evidence batch**
- **create artifact upload**
- **complete artifact upload**
- **get ingestion status**
- **start audit**
```mermaid
sequenceDiagram
participant Client as Approved MCP client
participant Auth as Workspace API key
participant MCP as Veriom MCP gateway
participant Store as Quarantine storage
participant Normalize as Evidence normalizer
participant Truth as Architectural truth
Client->>Auth: Bearer API key
Auth-->>Client: Workspace and scope binding
Client->>MCP: Submit evidence or request upload
MCP->>Store: Quarantine raw artifact
Store->>Normalize: Malware and archive checks
Normalize->>Normalize: Validate schema and provenance
Normalize->>Truth: Store observations and evidence
Truth-->>MCP: Ingestion status
MCP-->>Client: Accepted with tracking ID
Client->>MCP: Start audit with idempotency key
```
MCP submissions are tenant-bound, size-limited, rate-limited, idempotent, and replay-protected. Raw artifacts are scanned and validated before normalization. Submitted content is never executed or passed directly to an agent.
## How one audit moves through the system
```mermaid
sequenceDiagram
participant User
participant API
participant Queue
participant Runner
participant Context as Context engine
participant Agents
participant Truth as Architectural truth
participant UI
User->>API: Start audit
API->>Queue: Create idempotent queued job
API-->>User: 202 Accepted
Queue->>Runner: Run offline deterministic scanners
Runner-->>Queue: Evidence and coverage gaps
Queue->>Truth: Reconcile facts, entities, and edges
Queue->>Context: Build specialist Context Packs
Context->>Agents: Route bounded tasks
Agents-->>Truth: Evidence-backed artifacts
Truth->>UI: Stream progress, cost, logs, and graph changes
UI-->>User: Architecture, findings, report, and remediation
```
The user can watch queue position, scanner coverage, active agents, cache hits, retries, cost, and graph changes. If one scanner or model fails, the audit remains useful but clearly reports a coverage gap. It never turns missing evidence into a clean verdict.
## Why architecture changes security priorities
A scanner might say:
> A vulnerable dependency exists.
Veriom should explain:
> The vulnerable library is used by the public Checkout API. That service can reach the Orders Database across an internet trust boundary. Code and cloud evidence support the path, so compromise could expose order records.
That is structural security reasoning. It helps reveal:
- public services with unexpected database access;
- dangerous trust-boundary crossings;
- shared identities that increase blast radius;
- CI/CD paths with excessive deployment power;
- hidden dependencies missing from documentation;
- weak isolation between sensitive services;
- architecture drift between expected and observed reality;
- findings that become urgent because of reachability and consequence.
## A living source-of-truth loop
```mermaid
stateDiagram-v2
[*] --> Observe
Observe --> Normalize
Normalize --> Reconcile
Reconcile --> Verify
Verify --> Publish
Publish --> Monitor
Monitor --> Observe: New commit or evidence
Verify --> Investigate: Contradiction
Investigate --> Reconcile
```
Raw evidence is not the source of truth. An LLM response is not the source of truth. A Mermaid diagram is not the source of truth. The **canonical, versioned, evidence-backed model** is the source of truth.
## What Veriom should own
Open-source scanners and collectors can remain sensors. Veriom's differentiating layers are:
- the architecture ontology;
- cross-source reconciliation;
- evidence-backed architectural truth;
- confidence and contradiction handling;
- temporal architecture history;
- structural security reasoning;
- context selection and compression;
- organization-specific intent;
- future change-consequence analysis.
## The product promise
Veriom shows what exists, how it connects, how it knows, where the structure is weak, and what to fix first.
A trustworthy result lets a customer say:
- “Yes, these are our real services.”
- “Yes, those connections are correct.”
- “I can inspect the proof behind every important edge.”
- “I understand what is missing or uncertain.”
- “I can see how the system changed.”
- “The risks are prioritized using architecture, not severity alone.”
Continue with [architectural truth](/docs/architecture/architectural-truth), the [context engine](/docs/architecture/context-engine), the [multi-agent workflow](/docs/workflows/agent-system), or the [MCP evidence gateway](/docs/integrations/uploads-mcp).
---
---
title: Architectural truth
description: How Veriom represents what exists, why each relationship exists, confidence, contradictions, and historical change.
---
Canonical model
Architectural truth is Veriom’s evidence-backed belief about a system at a point in time. It is deliberately separate from diagrams, scanner output, model transcripts, and third-party graph schemas.
Observable context describes what exists and the constraints acting on it. Human intent explains a decision, its rationale and an accepted trade-off. A declared or approved target never changes observed truth. Explore that distinction in the [architecture sample](https://veriom.io/demo?demo=architecture) and the [intended-architecture preview](/docs/architecture/intended-architecture).
## Core records
### Entity
A stable architectural thing: service, API, datastore, queue, identity, cloud resource, deployment unit, pipeline, system, or trust boundary. Entities preserve source-specific identifiers as aliases rather than making any collector’s identifier canonical.
### Relationship
A typed edge such as `CALLS`, `READS_FROM`, `DEPLOYS`, `OWNS`, `CONTAINS`, or `CAN_REACH`. Every relationship stores direction, validity window, confidence, contradictions, supersession state, and supporting evidence IDs.
### Evidence
An immutable observation that explains why an entity or relationship is believed: file and line, dependency manifest, IaC resource, CI job, cloud asset, API definition, or runtime observation. Evidence records its source type, collection method, source hash, timestamp, and bounded preview.
## Confidence is explainable
Confidence is not a model’s feeling. It is derived from source reliability, agreement across independent evidence, freshness, extraction certainty, and unresolved contradictions. The score and every contributing evidence ID remain visible.
Example interpretation:
| Confidence | Meaning | UI behavior |
| ---------- | ------------------------------------------------------------ | --------------------------------- |
| 0.90–1.00 | independently corroborated or directly declared and observed | solid edge |
| 0.70–0.89 | strong single source or partially corroborated | solid edge with source badge |
| 0.40–0.69 | inferred, stale, or contradicted | dashed edge and review state |
| below 0.40 | hypothesis, not canonical truth | hidden by default; analyst review |
## Reconciliation rules
- Normalize source-specific facts before comparison.
- Prefer exact identifiers, then deterministic aliases, then bounded heuristics.
- Preserve both observations when sources disagree.
- Never erase the former relationship; mark its validity window and superseding record.
- Never promote an LLM-only observation to a vulnerability or high-confidence edge.
- Render only from the canonical model, not directly from agent prose.
## Temporal behavior
Each audit creates a new observation horizon. Unobserved does not immediately mean deleted: source coverage and freshness determine whether an entity is absent, unknown, or superseded. This lets Veriom answer both “what exists now?” and “what changed?” without rewriting history.
---
---
title: Context engine
description: How Veriom gives each specialist the smallest evidence-complete view needed for a reliable review.
---
The context engine turns architectural truth into a focused review packet. Instead of sending an entire system to every model, Veriom selects the entities, relationships, evidence, findings, policies, and known uncertainty relevant to one specialist decision.
Team answers can explain why an architecture was chosen, but they enter the [intended-architecture workflow](/docs/architecture/intended-architecture) as attributable proposals. A context pack, imported document or model conclusion cannot ratify that decision or prove that its guardrail holds.
## What a context pack contains
- the part of the system currently under review;
- canonical entities and relationships;
- evidence and provenance for material claims;
- active findings and coverage gaps;
- applicable workspace policies;
- contradictions that still need adjudication.
## Why bounded context matters
Focused context improves speed, reduces cost, and makes results easier to verify. Every generated artifact can point back to the exact evidence pack, agent version, model tier, and output schema that produced it.
## Reuse without stale conclusions
Veriom can reuse deterministic facts and validated artifacts when the source, context, agent definition, model, and schema are unchanged. Changes to any of those inputs create a new review context rather than silently reusing an old conclusion.
Context packs help agents reason, but they do not replace the canonical
architectural model. Unsupported observations remain hypotheses until a person
or independent evidence confirms them.
---
---
title: How Veriom works
description: From raw technical signals to evidence-backed architecture, structural intelligence, and review-ready decisions.
---
Veriom brings scattered technical signals into one explainable model. The goal is not simply to draw a better diagram. It is to maintain a trustworthy answer to four questions:
1. What actually exists?
2. How is it connected?
3. What evidence supports that belief?
4. Where does the structure create risk?
## Evidence first
Veriom observes code, cloud and infrastructure definitions, delivery configuration, uploaded artifacts, and structured evidence submitted through integrations. Each observation receives a stable identity, source, timestamp, and confidence.
## One canonical model
Signals rarely agree perfectly. Veriom reconciles aliases, keeps contradictions visible, and records when one observation supersedes another. The result is a model of entities and relationships that can be inspected independently from any diagram or agent response.
## Structural intelligence
Once relationships are explicit, Veriom can connect security findings to reachable paths, identities, data stores, trust boundaries, and affected capabilities. This helps teams prioritize the weakness with the largest consequence rather than the loudest isolated alert.
## Review and action
Specialist agents receive bounded context from the same model. Their artifacts remain evidence-linked and schema validated. The final result can be approved, exported, or used to propose a human-controlled remediation.
Every visible relationship should remain selectable and explainable. A diagram without supporting evidence is a view, not architectural truth.
---
---
title: Intended architecture
description: Reviewable target architecture, observed drift, planned changes, release checks and source provenance.
---
Intended architecture records what a team chose, why it belongs, who owns that decision and what evidence would invalidate it. It is separate from [observed architectural truth](/docs/architecture/architectural-truth).
This workflow is available only where the architecture-intent workspace feature is enabled. A draft, imported pattern or simulation does not establish observed alignment or release approval.
The [interactive sample](https://veriom.io/demo?demo=intent) shows four optional questions and editable proposed annotations. Its [history scene](https://veriom.io/demo?demo=history) compares two dated cloud permission captures with a named fictional decision. That scene uses retained comparator results; it does not collect live data or approve a real workspace. The [capability ledger](https://veriom.io/demo?demo=availability) distinguishes the October workflow preview, December guardrail preview and later rollout-dependent capabilities.
## Start with the architecture
Open **Architecture → Architecture & intent** and select a repository, branch and environment. **Current** shows observed components and connections with source provenance. **Intended** shows the selected target. **Diff** links discrepancies and uncertainty to the exact observation and saved target version. Source dates and incomplete coverage stay visible.
Use **Adopt current as draft** to classify observed elements and explain the team's choices. Adoption does not approve the existing state. Alternatively, **Sources** can create a target from a design or pattern before any observation exists.
## Explain, edit and ratify
Drafts support components and boundaries, relationships, descriptions, ordered flows, decisions, owners, review/expiry dates, trade-offs, typed guardrails, conditions and invariants. Every saved revision retains its contributor and provenance. Concurrent edits return a conflict; download local edits or explicitly load the latest revision before continuing.
An Analyst, Admin or Owner can draft. Ratification requires an Admin or Owner with recent interactive identity verification, a rationale and the exact saved revision/content fingerprint. Ratified versions are immutable; subsequent changes begin a new draft. Viewers can read architecture and its retained source captures.
## Read drift with its evidence
The comparison distinguishes unintended presence, missing controls, stale or invalidated intent, violated invariants, gaps in explanations and overdue plans. Missing, stale, ambiguous or incomplete evidence remains **insufficient evidence**. A declared process sequence does not prove runtime order. Matching identity strings cannot override conflicting component types or connection endpoints.
Control Room and canonical reports link to the same frozen assessment, including its snapshot, target, evidence and plan revisions. Later edits do not rewrite that historical result. Configured notification subscriptions use the existing delivery queue; creating a comparison alone does not configure a destination.
## Plan a change and evaluate release checks
**Planned** links an owner and due date to a ratified target and frozen baseline. Progress counts satisfied, unmet and unknown assertions. Completion requires a newer observation that proves the assertions; changing a task status does not supply that proof.
**Release checks** pins selected ratified rules and begins in shadow. Named reviews of distinct releases build the server-verified precision sample before promotion. Unknown evidence remains explicit. Reviewed exceptions apply only to one release and expire within 24 hours. Changing the target, canceling a plan or accepting a trade-off does not silently disable an existing gate.
## Propose from a source
**Sources → Propose from a source** accepts CALM 1.2, Veriom intent JSON, or text with an explicit decision. Text can be an authorized ADR, design document, ticket or Slack excerpt. Only the structured proposal becomes intent; instructions inside source text are never executed or treated as approval.
1. Select an owner and exact repository/branch/environment.
2. Upload or paste authorized content with its identifier, revision, reported author and timestamp, or select a document path in the connected GitHub repository. A pull request can be selected by number.
3. Bind source identities to existing components/connections or keep declared future targets.
4. Preview the proposed changes and inspect the target and rules. Merge retains the current target's confidence, freshness and closed-scope settings. Replace proposes the entire imported target in a new draft.
5. Confirm the review and create the draft. Edit it as needed before requesting ratification.
Uploads explicitly acknowledge sharing with workspace members who can read architecture, including Viewers. Links supplied with pasted content are identifiers and are never fetched; submitted author/time metadata is labeled accordingly. GitHub capture uses the existing read-only installation and records the exact branch/PR commit and path. A moved head or revoked repository access blocks approval until it is reviewed again.
Captures retain original/retained content fingerprints, contributor, source revision, source/capture times and supersession history. Retries deduplicate. Reusing a revision for different bytes, importing a known superseded revision or saving a stale preview returns a conflict. Source revocation blocks new imports and approval of its unratified proposals while retaining history.
## CALM boundaries
The supported schema is [FINOS CALM 1.2](https://calm.finos.org/release/1.2/meta/calm.json), pinned and validated offline. Nodes, binary connections, ordered flows and Veriom typed controls round-trip through **Export saved CALM**. Veriom's profile preserves stable identities, scope, provenance, classification and evidence requirements. Export does not transfer workspace approval.
Interfaces, deployment/grouping relationships, arbitrary metadata, external controls/ADRs and parallel flow sequence numbers are rejected. Unsupported fields are reported before import. Inputs are limited to 1 MB; remote schema references, duplicate JSON keys and binary content are rejected. Secret-like text is redacted; credentials inside structured architecture must be removed before import.
Synchronization is explicit import and export. It does not push a commit or merge a pull request. A rollback is a reviewed amendment of current intent.
## Candidate patterns
The initial patterns describe authenticated ingress and a private encrypted datastore. Each version includes assumptions, applicable scope, rationale, controls, evidence requirements and limitations. Apply one to existing identities or explicit future components, then adapt its editable draft.
Patterns are candidates for review by the workspace architecture owner. Applying one does not claim compliance or partner approval. Later catalog editions do not rewrite captured customer history.
## MCP proposals
With the feature enabled, `preview_intent_proposal` and `submit_intent_proposal` use this same workflow. Grant `decisions:write` explicitly to a workspace credential held by an Analyst or above; the standard MCP evidence preset is unchanged. There is no MCP ratification tool. See [Uploads and MCP evidence](/docs/integrations/uploads-mcp).
---
---
title: Structural weakness engine
description: How Veriom detects design conditions with deterministic invariants, bounded paths, propagated confidence, and independently reviewable evidence.
---
Architecture reasoning you can reproduce
A structural weakness is a condition where the system can behave exactly as implemented and still permit an unsafe outcome. Veriom detects these conditions over its canonical model; scanner observations can support a conclusion, but they do not decide it.
Language models may explain a finding or propose a target state. They do not
decide whether an invariant passed or failed. The invariant ID, version, input
evidence, and evaluation result remain reproducible across audits.
## What every structural finding contains
| Part | What it answers |
| --------------- | ---------------------------------------------------------------------------------------------------------------- |
| Label and layer | Which design pattern is involved, and whether it belongs to code, cloud, CI/CD, IaC, runtime, or crosses layers? |
| Detection | Which versioned invariant evaluated, in which audit, and was the result reproducible? |
| Structure | Which entities, relationships, and trust boundaries form the asserted path? |
| Evidence | Which independent ledgers corroborate the claim, and which expected ledgers are missing? |
| Confidence | What is the propagated path confidence, its floor, and whether the result is asserted or remains a hypothesis? |
| Criticality | Which crown jewels are reachable and how that changes the response priority? |
| Root cause | Which stable provenance key groups recurring manifestations of the same design decision? |
| Remediation | Which target state should replace the current structure, and what predicate proves the change worked? |
| Taxonomy | Which immutable taxonomy snapshot supplied the displayed CWE, CAPEC, OWASP, and ATT&CK references? |
## Initial invariant pack
The first pack covers nine high-value conditions:
1. an untrusted workload holds production administration;
2. one workload identity crosses trust zones;
3. caller identity terminates before a privileged operation;
4. tenant-scoped access lacks data-layer tenant binding;
5. network location substitutes for workload identity;
6. a mutable privileged pipeline accepts an untrusted trigger;
7. a runner keeps a long-lived cloud credential;
8. a production artifact cannot be traced to an approved immutable build; and
9. defence-in-depth controls share one failure dependency.
Each definition states its required ledgers, preferred corroboration, confidence floor, severity basis, remediation tier, verification predicate, and positive plus benign fixtures. A typed YAML predicate DSL is validated and compiled into a bounded process cache. The evaluator interprets that predicate rather than branching on the invariant ID, which keeps renamed and future versioned rules reproducible.
## Paths are bounded and evidence-aware
Veriom evaluates reachable paths with a bounded, deterministic search. A hop is eligible only when its declared preconditions are met and its evidence clears the configured confidence floor. Path confidence uses a grouped product rather than copying the strongest edge score, so a multi-hop claim cannot masquerade as a single high-confidence observation.
Some invariants describe a direct condition, such as a tenant-scoped write without tenant binding. Those findings use the confidence of the cited direct evidence and do not invent a path. The finding contract labels the structure as `direct` or `path`, so reviewers can distinguish the two.
If a required ledger is absent, the engine returns **insufficient evidence**, not pass. The UI shows the missing ledgers and a coverage note so an operator knows whether to collect more evidence or reject the hypothesis.
## Root causes survive across audits
Findings are grouped by normalized provenance such as an IaC module and version, image digest, workload identity, reusable pipeline, shared code pattern, or origin change. A root cause receives a stable identity and tracks the audits and member findings in which it was observed. That makes claims such as “fixing the shared module closed 25 findings” verifiable by re-observation.
Each causal group also projects every entity and relationship in the latest truth snapshot that carries the same immutable provenance key. The recurrence view shows confidence, sources, evidence references, and whether each manifestation has an active finding. It includes matches with no current finding so teams can size a systemic change before the same invariant fails elsewhere.
When an enforced invariant no longer matches on a later evidence-complete audit, Veriom records that absence as verification evidence. It closes the finding with `closed_by: reobservation` only after the exact remediation pull request is confirmed merged, the environment is observed by a newer completed audit, the verification predicate is false, and the regression check passes. If the same stable condition returns, the lifecycle becomes regressed without creating a second identity.
## Remediation is explicit about what can be automated
- **R1 deterministic** changes one evidence-backed artifact and can proceed through the managed patch, offline scanner, human approval, and draft pull-request flow.
- **R2 scaffolded** generates the mechanical policy, middleware, migration, or network-policy portion, but publication is blocked until a human records the missing scope decision. That decision is preserved in the audit trail and pull request.
- **R3 sequenced** cannot be represented honestly as one patch. The single-remediation API rejects it so a multi-step, evidence-gated program can own the target state. A program requires at least two workspace repositories and two accountable scopes. Each ordered step names an invariant version and predicate; a later step stays locked until a newer completed audit records that exact invariant as passing. Failed or missing evaluations block the program without erasing its proof history.
Every R1 and R2 structural pull request contains the invariant statement and version, graph verification predicate, evidence IDs, root-cause reference, and a machine-readable contract under `.veriom/structural-tests/`. The contract records the failing baseline and required passing post-patch state for customer-owned CI. Veriom reruns offline static scanners but does not claim to have executed customer builds, tests, scripts, or repository code. Post-deployment closure additionally requires the exact invariant version to pass against a newer truth snapshot; an absent evaluation remains partial rather than being treated as success.
## Crown jewels require review
Workspace developers can propose a critical asset only by referencing an entity already present in architectural truth. An analyst, administrator, or owner confirms or rejects the proposal with a reason. The versioned, audited register then influences blast-radius and priority calculations; a scanner cannot silently designate a crown jewel.
## Taxonomy does not alter detection
External framework references decorate a result at render time. Reports pin an immutable taxonomy snapshot, while the current UI may also show newer mappings. Updating a CWE or OWASP label never changes the invariant result, finding identity, root-cause identity, or lifecycle state.
The control worker checks code-owned sources on a bounded schedule: CISA KEV and FIRST EPSS daily; CWE, CAPEC, ATT&CK, and OWASP Top 10 weekly; and OWASP CI/CD Top 10 monthly. Downloads are restricted to fixed HTTPS hosts and size limits. CWE XML, CAPEC/ATT&CK STIX, KEV JSON, and EPSS gzip records normalize automatically. OWASP Markdown changes enter `review_required` and cannot be published into a snapshot until an operator records human review. Interrupted or failed syncs retry hourly and surface as an operator alert and release-readiness block.
Taxonomy sources are normalized in scheduled or operator-controlled ingest jobs. Each version records added, updated, retired, and superseded nodes. Narrative OWASP sources require an explicit human-review acknowledgement before publication, and publication hashes the complete normalized snapshot.
Manual VRM-to-framework mappings are reviewed in the operator console and become active only when the next immutable snapshot is published. CAPEC, ATT&CK, and OWASP references can then derive through native CWE links at reduced confidence. Deprecated CWE references retain the original ID and resolve their successor as a separate inherited reference, so historical evidence never breaks.
After each architecture observation, Veriom recomputes a workspace applicability profile from evidenced entity kinds and technology claims. Out-of-profile references remain stored and reviewable behind a disclosure; they are never deleted, and an incomplete profile does not hide a reference. Approved reports pin the exact taxonomy snapshot in both the report record and canonical payload. Approval is blocked until that pin exists, and a historical report labels its original snapshot separately from the current release.
## Drift from declared intent
Implemented and previously verified architecture decisions are re-evaluated whenever a newer, sufficiently covered truth snapshot is produced. A failed machine-readable success criterion becomes a stable drift finding that keeps the declared representation, the observed result, the evidence references, and the ledgers that disagree. Inconclusive absence checks remain explicit as insufficient evidence. A later observation resolves the drift only when the same criterion passes.
The [versioned intended-architecture preview](/docs/architecture/intended-architecture) extends this with a named, approved target that can be compared before implementation. It retains its own version history and explicit unknown evidence. Its October and December release phases remain subject to controlled rollout; the [dated demo history](https://veriom.io/demo?demo=history) is a fictional worked example.
## Workspace invariant learning
An agent or analyst may propose an organization-specific invariant only through the same finite, interpreted predicate language as the code-owned pack. The candidate must include inline true-positive and benign fixture graphs. Veriom evaluates every fixture twice, rejects non-deterministic output, rejects a positive fixture that does not fail, and rejects a benign fixture that does not pass.
A workspace administrator can move a reviewed candidate into shadow mode. Enforcement is a separate transition requiring at least 50 reviewed samples and observed precision at or above the candidate budget. If later reviewed precision drops below that budget, evaluation automatically returns the candidate to shadow. Definitions stay workspace-scoped and cannot reuse a code-owned invariant ID and version.
## Continuous self-falsification
Each current truth snapshot contributes to a deterministic, bounded weekly sample of asserted architecture relationships. Reviewers inspect the cited evidence and record the edge as confirmed, disproved, or inconclusive. Disproved edges are accuracy failures—not customer weaknesses—and remain visible in the operator metric. This makes “how often our own claims survive an attempted disproof” measurable without executing customer code or sending source material to an unrestricted model.
## Review one finding
1. Confirm the invariant ID, version, and evaluation state.
2. Follow the entity path and inspect evidence on each hop.
3. Check crossed boundaries, reachable crown jewels, and control independence.
4. Compare present and missing evidence ledgers.
5. Confirm the root-cause provenance and affected manifestations.
6. Review the target state and verification predicate before approving work.
---
---
title: Introduction
description: Product concepts, review workflows, integrations, and the complete versioned API.
---
Evidence-backed architecture intelligence
Veriom gives security and architecture teams a continuously explainable model of their software landscape. Every important entity and relationship carries evidence, provenance, confidence, and history—so teams can review what exists without trusting a stale picture.
## What Veriom helps you do
- create a shared architectural view across security, engineering, and leadership;
- understand reachable paths, trust boundaries, ownership, and structural risk;
- turn many technical signals into one review-ready narrative;
- preserve the evidence behind every material conclusion;
- move from review to approved reporting and remediation.
## How a review works
## Explore the platform
## Use the documentation with AI tools
Every guide exposes its raw Markdown and a compact **Open** menu for GitHub,
ChatGPT, Claude, agent context, implementation plans, reusable skills, and MCP
resources. Use the machine-readable indexes when an integration needs more than
one page.
These guides describe Veriom’s product behavior and public API. Operational secrets, private prompts, deployment internals, and customer data are never included.
---
---
title: Managed cloud collectors
description: Schedule bounded AWS, Azure, and Google Cloud inventory with visible account boundaries, collection coverage, and freshness.
---
Veriom's cloud collector reads inventory through an already-authenticated provider CLI, converts it to the typed `veriom-cloud-evidence-v1` contract, and submits it to exactly one workspace. The collector invokes read-only inventory commands. It does not accept provider credentials as arguments and it cannot change cloud resources.
The [public cloud scene](https://veriom.io/demo?demo=cloud) uses dated fictional inventory. Attaching that sample does not connect an account or run a collector. Production runtime evidence stays unknown; a real connection must use the authenticated setup below and be verified in its own workspace.
## Connect from your workspace
Open **Cloud connections**, or choose AWS, Azure, or Google Cloud from the integration catalog. Select your provider and use **Copy instructions for cloud admin** to share the read-only collection steps with the person who manages your cloud account. Import the resulting JSON snapshot, then open **Architecture** to explore the resources alongside your repository evidence.
The page shows the account boundary, collection time, freshness, and any missing coverage. Cloud credentials stay in your environment. MCP is optional for advanced automation; this setup uses the cloud snapshot API directly. To keep evidence current automatically, schedule the collector as described below.
## Install the collector
From a checked-out Veriom release, install the versioned collector with `uv`:
```bash
./scripts/install-cloud-collector.sh
veriom-cloud-collector --help
```
Create a workspace API token with `evidence:write`, keep it in the scheduler's secret store, and authenticate the provider CLI with a dedicated read-only workload identity.
```bash
export VERIOM_API_TOKEN=vat_...
aws sts get-caller-identity
veriom-cloud-collector sync \
--provider aws \
--region eu-west-1 \
--workspace-id 7f38cf23-0416-4968-9d30-9c343d45ae76
````
The first release inventories the authenticated account boundary, tagged resources, and VPCs. Grant `sts:GetCallerIdentity`, `tag:GetResources`, and `ec2:DescribeVpcs`. A denied optional scope produces a `partial` snapshot with a visible warning instead of silently claiming full coverage.
```bash
export VERIOM_API_TOKEN=vat_...
az account show
veriom-cloud-collector sync \
--provider azure \
--workspace-id 7f38cf23-0416-4968-9d30-9c343d45ae76
````
Assign the collector identity the Azure **Reader** role on the intended subscription. The subscription returned by `az account show` becomes the account boundary; a command-line value cannot override it.
```bash
export VERIOM_API_TOKEN=vat_...
gcloud auth list
veriom-cloud-collector sync \
--provider gcp \
--project payments-production \
--workspace-id 7f38cf23-0416-4968-9d30-9c343d45ae76
````
Grant `cloudasset.assets.searchAllResources` and `resourcemanager.projects.get` on the selected project. Veriom uses the project returned by the Cloud Resource Manager API as the boundary.
## Schedule inventory
Run the same `sync` command from a provider scheduler, CI job with workload identity federation, or a customer-managed runner. Use a stable schedule and let the collector generate a unique sync identifier. A second submission with the same provider, account, and sync identifier is replay-safe.
The response makes coverage operational rather than decorative:
```json
{
"provider": "aws",
"account_boundary": "aws:123456789012",
"sync_id": "scheduled-20260902T010000Z",
"collection_status": "partial",
"resource_count": 184,
"relationship_count": 183,
"freshness": "current",
"age_seconds": 14,
"stale_after_seconds": 86400,
"warnings": ["vpc: collector identity lacks the optional read scope"]
}
````
Query `GET /v1/workspaces/{workspace_id}/cloud/snapshots` with `ingestion:read` to monitor account boundaries and freshness. The default stale threshold is 24 hours and can be set between five minutes and seven days per request.
## Typed evidence boundary
Every submitted snapshot contains:
- `provider`: `aws`, `azure`, or `gcp`;
- `account_ref`: the account, subscription, or project established by the provider identity;
- `sync_id`: a replay key for one collection attempt;
- `collection`: collector version, timestamp, completeness, completed scopes, and warnings;
- `resources`: up to 500 allowlisted inventory records;
- `relationships`: up to 1,000 typed edges that only reference resources in the same snapshot.
```json title="veriom-cloud-evidence-v1"
{
"schema_version": "veriom-cloud-evidence-v1",
"provider": "aws",
"account_ref": "123456789012",
"sync_id": "scheduled-20260902T010000Z",
"collection": {
"collector": "veriom-cloud-collector",
"collector_version": "0.1.0",
"collected_at": "2026-09-02T01:00:00Z",
"status": "complete",
"completed_scopes": ["identity", "tagged-resources", "vpc"],
"warnings": []
},
"resources": [
{
"external_id": "aws:account:123456789012",
"name": "AWS account 123456789012",
"resource_type": "AWS::Account",
"category": "account",
"observed_at": "2026-09-02T01:00:00Z",
"confidence": 1,
"properties": { "account_id": "123456789012" }
}
],
"relationships": []
}
```
Credentials, tokens, raw environment variables, customer payloads, and unrestricted provider metadata are rejected by the contract. Older snapshots remain traceable, while workspace context selects the latest accepted sync for each provider account.
## MCP compatibility
MCP clients can submit the exact same object through `submit_cloud_snapshot`. HTTP collectors and MCP clients share one normalization and replay path, so the architecture model does not depend on which transport delivered the evidence.
Veriom only treats a resource as removed when comparable snapshots cover the
same provider account and collection scopes. A partial or stale snapshot
remains visibly partial or stale; it does not prove absence.
---
---
title: GitHub repository access
description: Connect personal and organization installations for scoped reviews and human-approved pull requests.
---
Veriom uses one GitHub App for account authorization, source selection, audits, and approved remediation. A workspace can connect multiple personal and organization installations, and each installation keeps its own repository boundary.
## Connect
1. Sign in to Veriom and choose a workspace.
2. Select **Repositories → Add repositories**, or connect GitHub during workspace setup.
3. Choose an existing GitHub connection or connect a personal or organization account.
4. Authorize access in GitHub, then choose the repositories for the named Veriom workspace.
5. Confirm your selection. The GitHub window closes and your workspace updates on the same page.
The callback verifies the actor, account, installation, and accessible repositories before presenting your choices. Temporary GitHub user authorization is discarded after verification. A GitHub installation can be connected to several Veriom workspaces, and each workspace chooses its own repositories. You need Owner or Admin access to the destination workspace and GitHub access to the repositories you select.
## Add repositories later
Open **Repositories → Add repositories** in the workspace you want to update. Choose the existing GitHub account and select the additional repositories. Repositories already connected to that workspace remain selected, including repositories added by another workspace member.
After GitHub authorization, the account connection is retained even if you close the repository picker. You can return to **Add repositories** to finish choosing projects later.
If a repository is missing, use **Manage access in GitHub** to add it to the App's installation access. Return to Veriom and choose repositories again to refresh the available choices. Granting GitHub access alone does not add that repository to every connected workspace.
To use the same GitHub organization in another workspace, open that workspace's **Add repositories** dialog, choose the existing organization, and authorize its separate selection. Direct GitHub installation links ask you to select a destination when several workspaces are available.
## Choose a branch and repeatable scope
Repository reviews capture the selected branch and exact commit. Use saved audit profiles for branch and include/exclude directory choices, inspect repository health history, and compare successful audits of compatible scopes. Follow [repository reviews and branch comparisons](/docs/workflows/repository-reviews) for the complete flow.
## Access by operation
The App has the capability to read source and publish pull requests, but each operation receives a short-lived token narrowed to what it needs:
| Operation | Effective access |
| --------------------- | ----------------------------------------------------------------------------------- |
| Sign in and connect | identify the actor and verify the installation |
| Run an audit | metadata read and contents read for one selected project |
| Check a pull request | pull requests read and checks write for one selected project |
| Publish remediation | contents write and pull requests write for one selected project |
| Modify workflow files | workflows write, requested only when an approved patch touches `.github/workflows/` |
Source write access is never used during an audit. Checks write is limited to the **Veriom architecture guard** status and its evidence summary; it cannot change source, branch protection, or pull-request content. Publishing remediation still requires an Analyst, Admin, or Owner to approve the proposal. Veriom never merges automatically.
## Manage the connection
The Integrations page shows every connected account, account type, project count, installation status, and a direct management link. The Repositories page groups projects by provider and account, supports server-side account or project search, and uses cursor pagination so even large organization inventories remain manageable without merging their access boundaries. If the App is suspended, removed, or loses required permissions, new work is blocked while historical reviews remain available.
Veriom supports selected-project and all-project installations. Choose only
the repositories the workspace is expected to review whenever that boundary
is practical.
## Protect merges with architecture evidence
In **Continuous audits → GitHub events**, enable **Pull request checks**. For every opened, reopened, ready-for-review, or synchronized pull request that matches the branch, path, and size policy, Veriom audits the exact head commit and posts **Veriom architecture guard**. The check includes:
- added, removed, and changed architecture entities and relationships;
- trust-boundary movements and privilege changes;
- newly reachable paths from public or untrusted entry points to sensitive assets;
- newly failing versioned invariants, insufficient evidence, and the consequence gate verdict.
The first run captures a neutral baseline. Later runs succeed when no invariant newly fails, and fail when a new invariant failure or release-blocking consequence is present. If another audit is active, the check remains queued and follows the policy's conflict behavior. Human-approval policies publish `action_required` before any audit starts.
Existing installations must accept the new **Pull requests: read** and **Checks: write** permissions before native checks can run. Historical results remain available while permission repair is pending.
Alternatively, add the [deterministic merge-check workflow](/docs/integrations/merge-checks). That repository-owned workflow uses `contents: read` and publishes its own job result, which is useful when an organization does not permit App-authored check runs.
If code also lives in GitLab or Bitbucket, use the [read-only repository provider connections](/docs/integrations/repository-providers). Their project inventory and exact-revision audits share the same explicit selection and evidence contract, but their credentials are never reused for remediation writes.
---
---
title: Managed context connectors
description: Connect knowledge, observability, delivery, and data sources through bounded read-only credentials.
---
Managed connectors turn provider records into tenant-scoped evidence without giving an agent
ambient authority. Owners configure them in **Source Readiness → Connector catalog**. Veriom
validates the provider before encrypting the credential, bounds every collection, and preserves
provenance and freshness with the accepted evidence.
## Available connectors
| Source | Required boundary | Evidence collected |
| --- | --- | --- |
| Jira | Site and optional project keys | Work, ownership, remediation, releases |
| Confluence | Site and optional space IDs | Pages, decisions, ownership, runbooks |
| Notion | Explicitly shared pages and optional title filter | Documents, decisions, ownership |
| Google Drive | Connected account and optional shared-drive ID | File metadata and knowledge context |
| Sentry | Organization slug | Runtime issues and release context |
| Datadog | Restricted application key | Service definitions and runtime context |
| CircleCI | Project slug | Pipelines and delivery context |
| Jenkins | Controller with Job/Read | Jobs and latest build context |
| Airbyte | Optional workspace-ID allowlist | Data sources and lineage context |
## Credential lifecycle
The setup dialog performs a live read-only request before saving. Credentials are encrypted and
never returned. Owners can rotate, pause, resume, test, retry, or revoke a connection. Revocation
deletes the credential envelope and stops collection, while already accepted evidence remains
linked to its original provenance.
## Duplicate handling
Each provider record receives a deterministic subject identity and a content hash. Replays update
the same subject instead of publishing duplicate context. Scanner findings retain every source
observation behind one canonical finding identity; similarity never silently merges findings.
## Production canary
Use the dedicated customer-canary runner to prove the GitHub, cloud, Jira, Notion, and ZIP paths in
the deployed environment. The generated artifact includes only identifiers, counts, states, and
safe errors—never tokens or provider response bodies.
---
---
title: Deterministic merge checks
description: Run Veriom's architecture change gate for the exact pull-request commit without granting repository write authority to an agent.
---
The Veriom architecture-check command turns the workspace change policy into a native GitHub, GitLab, or Bitbucket job result. It audits the full pull-request or merge-request commit, waits for the durable scanner and architecture workflow, then retrieves the persisted architecture comparison for that repository. The installer vendors a reviewed copy into your repository, so a registry outage or unpublished package cannot change the gate that protects a merge.
```bash title="Install from the Veriom platform repository"
./actions/install-architecture-check.sh github /path/to/repository
./actions/install-architecture-check.sh gitlab /path/to/repository
./actions/install-architecture-check.sh bitbucket /path/to/repository
```
The action fails closed if the returned gate belongs to another concurrent audit. It never asks an agent whether a pull request should merge.
GitHub teams can instead enable **Pull request checks** in the Veriom
continuous-audit policy. The native App check needs `pull_requests: read` and
`checks: write`, requires no workflow file or API-token secret, and posts the
entity, relationship, boundary, privilege, reachability, and invariant
deltas directly. Use this vendored workflow when App-authored checks are not
permitted or when GitLab and Bitbucket need the same repository-owned gate.
## GitHub
Create a workspace API token with `audits:read` and `audits:write`, save it as `VERIOM_API_TOKEN`, and add the workspace and repository UUIDs as GitHub variables.
```yaml title=".github/workflows/veriom-architecture.yml"
name: Veriom architecture gate
on:
pull_request:
permissions:
contents: read
jobs:
architecture:
runs-on: ubuntu-latest
steps:
- name: Check out the pull-request commit
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Evaluate the Veriom architecture gate
uses: ./.github/actions/veriom-architecture-check
with:
api-token: ${{ secrets.VERIOM_API_TOKEN }}
workspace-id: ${{ vars.VERIOM_WORKSPACE_ID }}
repository-id: ${{ vars.VERIOM_REPOSITORY_ID }}
commit-sha: ${{ github.event.pull_request.head.sha }}
```
## Gate outcomes
| Outcome | Meaning | Default job result |
| ----------------------- | ----------------------------------------------------- | ------------------ |
| `pass` | No architecture regression matched the active policy | pass |
| `review` | Comparable architecture changed and requires a person | fail |
| `blocked` | A relationship or removal matched a blocking rule | fail |
| `insufficient_evidence` | Coverage or baseline requirements were not met | fail |
The job summary includes source coverage, the policy reasons, change consequences, owner hints, affected graph paths, and an explainable impact score. The score is decomposed into repository criticality, reachability, data sensitivity, trust-boundary exposure, and uncertainty; every component retains graph and evidence references. Configure the required check in the repository's branch protection after its first run.
The workflow declares only `contents: read`. GitHub publishes the job status
itself. Veriom receives a workspace-scoped API token, and neither a
specialist agent nor the audit process receives permission to modify code,
checks, pull requests, or branch protection.
## GitLab
Connect the GitLab account, explicitly add the project to audit scope, and save a token with `audits:read` and `audits:write` as a masked, protected `VERIOM_API_TOKEN` CI/CD variable. Add the workspace and Veriom repository UUIDs as `VERIOM_WORKSPACE_ID` and `VERIOM_REPOSITORY_ID`.
```yaml title=".gitlab-ci.yml"
veriom:architecture:
image: node:22-alpine
stage: test
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
variables:
VERIOM_COMMIT_SHA: $CI_COMMIT_SHA
script:
- node .veriom/architecture-check.cjs
allow_failure: false
```
GitLab turns the job exit code into merge-request pipeline status. The Veriom token can start and read audits; it cannot push commits, approve a merge request, or change branch rules.
## Bitbucket
Connect the Bitbucket workspace, explicitly select the repository, and add the three `VERIOM_*` values as secured repository variables.
```yaml title="bitbucket-pipelines.yml"
image: node:22-alpine
pipelines:
pull-requests:
"**":
- step:
name: Veriom architecture gate
script:
- export VERIOM_COMMIT_SHA="$BITBUCKET_COMMIT"
- node .veriom/architecture-check.cjs
```
Bitbucket publishes the step result to the pull request. As with GitHub and GitLab, the command compares the persisted audit ID before enforcing the gate, so a concurrent run cannot silently substitute another result.
## CLI inputs
The provider-neutral command accepts `VERIOM_API_TOKEN`, `VERIOM_WORKSPACE_ID`, `VERIOM_REPOSITORY_ID`, and the CI provider's full commit SHA. Optional variables are `VERIOM_API_URL`, `VERIOM_DEEP_REVIEW`, `VERIOM_TIMEOUT_SECONDS`, `VERIOM_POLL_INTERVAL_SECONDS`, and `VERIOM_FAIL_ON`.
---
---
title: GitLab and Bitbucket repositories
description: Connect read-only GitLab or Bitbucket account boundaries, discover projects, and explicitly choose which exact revisions Veriom may audit.
---
Veriom brings GitLab and Bitbucket repositories through the same evidence pipeline as GitHub without treating account access as permission to audit every project. An Owner or Admin creates a provider connection, Veriom discovers visible projects, and every newly discovered project starts outside the audit scope.
## Permission boundary
| Provider | Credential | Minimum access | Audit behavior |
| --------------------------------- | ---------------------------------------- | -------------------------------- | ----------------------------------------------------------------- |
| GitLab.com or self-managed GitLab | Personal, project, or group access token | `read_api` and `read_repository` | Clone one selected project at an exact 40-character commit SHA |
| Bitbucket Cloud | Repository or workspace access token | Repositories read | Clone one selected repository at an exact 40-character commit SHA |
Veriom encrypts the token with workspace and connection identity as associated data. The API returns only `has_credential`; neither a workspace response nor the operator dashboard can retrieve the token. Repository contents are processed by the isolated runner and are not made available to the admin control plane.
GitLab and Bitbucket connections are audit-only. Remediation publication
requires a separate, provider-specific write authorization and is currently
available only through a human-approved GitHub workflow. Veriom never reuses
a read token to push code.
## Connect and select projects
1. Open **Repositories → Repository providers**.
2. Choose GitLab or Bitbucket.
3. Name the connection and enter its account boundary and write-only token.
4. Review the discovered project inventory.
5. Select only the projects Veriom may audit.
A later sync preserves existing selections. Newly discovered projects remain unselected, and projects no longer visible to the provider token are archived and disabled instead of silently disappearing from history. Revoking the connection disables every linked project while preserving past audits and reports.
## GitLab host validation
GitLab.com is supported directly. A self-managed GitLab base URL must use public HTTPS, must not contain credentials, and must resolve outside loopback, link-local, private, multicast, reserved, and unspecified networks. API redirects are disabled. Project clone and web URLs must stay on the authorized GitLab host.
Bitbucket connections use the fixed `api.bitbucket.org` and `bitbucket.org` boundaries. A workspace slug identifies the inventory boundary.
## Sync and support diagnostics
The workspace sees connection state, account, project count, last sync time, and a safe error code. Platform operators see the same boundary and health metadata plus the number of projects explicitly selected. Tokens, repository archives, and source payloads are excluded from operator responses.
Use [deterministic merge checks](/docs/integrations/merge-checks) after selecting a project. The check submits the provider's full merge commit and refuses to enforce a result produced by a different concurrent audit.
---
---
title: Security evidence
description: Understand evidence coverage, finding deduplication, and the permission boundaries of a security review.
---
Veriom brings security observations into the same architecture review as repository and infrastructure evidence. Each finding retains its source, location, audit revision, and coverage context.
## Review coverage
An audit shows which evidence was collected, which checks completed, and where coverage is missing. An incomplete assessment remains visible as a gap. An empty findings list does not establish that an unassessed system is secure.
## One issue, all of its sources
When independent observations share a reviewed advisory identity, Veriom presents one finding with the contributing evidence. It preserves corroboration and source locations.
Rules remain separate unless they share a reviewed deterministic identity. Similar titles and model judgement are not sufficient to merge findings.
Each canonical finding retains:
- the strongest supported risk representation;
- the original evidence and source identifiers;
- source locations and the assessed revision;
- first-seen and last-seen history;
- relevant coverage gaps.
## Permission boundaries
Repository reviews inspect captured source. Customer-connected infrastructure and runtime evidence require separately scoped access. A repository connection does not grant permission to access a cloud account or an active target.
Read the [security controls](https://veriom.io/compliance) or [request a security review](https://veriom.io/contact).
---
---
title: Team workflow destinations
description: Deliver signed, scoped Veriom events to Slack, Jira automation, SIEM collectors, policy engines, and generic webhooks.
---
Workspace Owners and Admins configure team destinations in **Settings → Automation**. Each destination selects an explicit event allowlist. Veriom queues only matching events and retains delivery status, retry history, and the configuration audit trail.
## Destination types
| Type | Delivery shape | Typical use |
| ------- | ----------------------------------------------------------------------- | ------------------------------------------------ |
| Slack | Incoming-webhook text and Block Kit fields | Review-ready audit and remediation notifications |
| Jira | Jira automation envelope with a nested Veriom event | Ticket rules and ownership routing |
| SIEM | Structured timestamp, event action, organization, and Veriom envelope | Security operations correlation |
| Policy | Versioned policy-event envelope | External deterministic decision systems |
| Webhook | Stable Veriom event envelope | Customer-built automation |
## Integrity and replay
Every request includes delivery, event, timestamp, and HMAC-SHA256 signature headers. The signing secret is generated when the destination is created, encrypted at rest, and shown once. Destinations must use HTTPS and resolve only to public addresses. Redirects are disabled, and production egress controls remain the SSRF backstop.
Delivery failures use bounded exponential retry. Operators can see metadata-only health across the integration fleet; they cannot see signing secrets or customer payloads.
## Action boundary
These integrations deliver events. They do not give an agent ambient permission to create tickets, post arbitrary messages, change policy, or modify a workspace. Consequential operations use [authorized workflow actions](/docs/workflows/workflow-actions): capability-specific grants for Jira ticket creation, internal ownership routing, and Owner-approved policy exceptions, each with a separate requester and approver.
Configuration creation, updates, disables, manual delivery retries, and policy changes create audit events.
---
---
title: Uploads and MCP evidence
description: Safe archive ingestion and the API-key protected MCP gateway for evidence, ZIP uploads, and isolated audits.
---
## File uploads
Uploads enter the same ingestion pipeline as GitHub snapshots but have stricter provenance. Upload either one repository ZIP or a bundle ZIP containing two or more repository ZIPs. Bundles are unpacked into one isolated audit source while each nested archive is independently inspected. The service enforces combined compressed and unpacked size limits, file-count and decompression-ratio limits, path and symlink traversal protection, MIME inspection, and malware scanning.
No uploaded hook, script, binary, package lifecycle command, build, test, or customer source is executed.
## MCP gateway
The Streamable HTTP MCP service exposes a narrow evidence-ingestion surface:
- `get_ingestion_capabilities`
- `submit_evidence_batch`
- `submit_cloud_snapshot`
- `create_artifact_upload`
- `complete_artifact_upload`
- `get_ingestion_status`
- `start_audit`
Workspaces with the architecture-intent preview enabled also expose `preview_intent_proposal` and `submit_intent_proposal`. These require `decisions:write` and an Analyst role or above. They create attributable architecture drafts through the same source review pipeline; a named Admin or Owner ratifies the exact saved revision separately. The standard evidence preset does not grant proposal scope. See [Intended architecture](/docs/architecture/intended-architecture) for source sharing, CALM support and review boundaries.
## Connect with a workspace API key
In Veriom, open **Settings → Automation**, create an API token, and apply the **MCP preset**. Store the token in your client's secret manager as `VERIOM_API_KEY`; never commit it to a repository.
```json title=".mcp.json"
{
"mcpServers": {
"veriom": {
"type": "http",
"url": "https://mcp.veriom.ai/mcp",
"headers": {
"Authorization": "Bearer ${VERIOM_API_KEY}"
}
}
}
}
```
The key is bound to one workspace and expires on the date selected by its creator. Revoking it in Settings immediately removes MCP access. The MCP preset grants `evidence:write`, `uploads:write`, `ingestion:read`, and `audits:write` only.
Existing OAuth clients remain compatible during the API-key migration, but API keys are the recommended connection method for automation.
## Prove the connection before sending real evidence
1. Ask the connected client to call `get_ingestion_capabilities`.
2. Confirm the response is bound to the intended workspace and lists `evidence:write` as the required write scope.
3. Pass the returned `sample` and `sample_batch_id` to `submit_evidence_batch`.
4. Open **Source Readiness** in Veriom. MCP becomes ready only after the capability check, sample collection, and reconciliation into current truth all succeed.
The capability response is the canonical sample. It is versioned, schema-valid, and safe to replay: the sample batch ID is idempotent within a workspace.
A valid key or successful network connection is not enough. Veriom marks MCP ready only when typed evidence from that client is present in the current workspace context.
## Upload and audit one repository or a repository bundle
1. Create a ZIP of one repository. For a multi-repository architecture, create one outer ZIP containing at least two repository ZIPs.
2. Call `create_artifact_upload` with the outer file name, byte size, and SHA-256 digest.
3. Upload the ZIP to the returned short-lived signed URL using the exact returned headers.
4. Call `complete_artifact_upload` with the ingestion ID.
5. Poll `get_ingestion_status` until it reports `ready`.
6. Call `start_audit` with the ingestion ID and a stable idempotency key of at least eight characters.
The ZIP travels directly to quarantine object storage rather than through the MCP request body. This keeps the connection fast and preserves the existing size, malware, and archive-safety controls.
Validation reports durable stages—queued, downloading, archive inspection, malware scanning, and complete—plus a percentage that the web app streams live. Rejected archives return a stable code for invalid ZIPs, unsafe paths, symbolic links, file-count limits, decompression limits, size limits, collisions, or detected malware. Transient evidence-storage and malware-scanner failures are reported separately so operators know when retrying is appropriate.
An outer ZIP is treated as a repository bundle only when every non-directory member is a ZIP and at least two repositories are present. A normal repository that happens to contain an archive remains a normal repository.
## Evidence acceptance
Structured batches are schema-validated, tenant-bound, provenance-stamped, and normalized before reconciliation. Raw artifacts use scoped signed uploads and pass through malware and archive-safety checks. Neither is passed directly to an agent prompt.
`submit_cloud_snapshot` accepts a bounded provider, account, region, resource, and relationship graph for AWS, Azure, or Google Cloud. Resource properties are allowlisted, identifiers must be unique inside the snapshot, and every relationship endpoint must refer to a resource in that same snapshot. A newer snapshot for the same provider and account supersedes the previous current view while preserving audit history.
Veriom does not execute arbitrary outbound MCP tools as part of an audit. The integration accepts evidence; it does not grant agents a general remote-action surface.
---
---
title: Getting started
description: Create a workspace, connect a source, run your first review, and explore the resulting architectural truth.
---
Veriom turns technical evidence into a reviewable architecture model. A first review follows six steps. You can try them first in the [interactive demo](https://veriom.io/demo).
## 1. Create your workspace
Accept your invitation, verify your email, and create a workspace for the team that owns the system being reviewed. Verification links are single-use and expire after 24 hours; request a replacement from the sign-in or verification page if needed. Workspace roles control who can connect sources, run reviews, approve reports, and publish remediation.
## 2. Connect evidence
Choose the connection that fits your workflow:
## 3. Start a review
Choose a connected repository, select its branch, and check the captured commit and path scope before starting an audit. Use a [saved audit profile](/docs/workflows/repository-reviews) for recurring branch and directory choices. Veriom admits work to the workspace queue, reports its position, and streams each deterministic and agent-assisted stage as it completes.
## 4. Inspect the result
Open the architecture view to explore:
- services, data stores, interfaces, pipelines, identities, and boundaries;
- relationships with selectable evidence and confidence;
- contradictions and coverage gaps;
- findings connected to their architectural context;
- the specialist-agent artifacts that shaped the review.
## 5. Ask the workspace
Open **Workspace Intelligence** to ask a question about the latest reconciled truth. Choose one or more repositories when the question is source-specific, follow the visible verification states, and open citations in the Context inspector to confirm why Veriom believes each factual claim.
Recommendations derived from existing audit artifacts can be acknowledged, assigned, snoozed, discussed, dismissed with a reason, or prepared for remediation. See [Workspace Intelligence](/docs/workflows/workspace-intelligence) for grounding, evidence limits, and review controls.
## 6. Share or act
Review the canonical report, approve it, and export JSON, Markdown, DOCX, or PDF. Share explicitly selected content through an [expiring report review link](/docs/workflows/report-review-links), or use approved evidence to answer a [security questionnaire](/docs/workflows/questionnaires). When remediation is appropriate, an Analyst can approve a proposed change and publish a pull request. Veriom never merges automatically.
Use the API guide for authentication, idempotency, event streams, errors, and the generated endpoint reference.
---
---
title: Multi-agent system
description: Fifteen specialist roles, typed artifact handoffs, activation rules, guardrails, and architecture-impact adjudication.
---
Agents collaborate through validated artifacts—not hidden chain-of-thought. Every artifact records its agent definition version, model, context hash, evidence IDs, confidence, usage, latency, and decision summary.
## Role registry
| Role | Primary responsibility |
| --- | --- |
| Audit Coordinator | scope, activation, stage and retry decisions |
| Context Curator | assemble bounded ContextPacks |
| Evidence Verifier | reject unsupported claims and contradictions |
| Security Engineer | technical vulnerabilities and control failures |
| Security Architect | boundaries, reachability, blast radius, structural weakness |
| Cloud/IaC Analyst | infrastructure entities, policy, network, identity |
| CI/CD Analyst | pipeline, artifact, deployment, and provenance relationships |
| Threat Modeler | assets, actors, paths, abuse cases, mitigations |
| Remediation Engineer | deterministic patch proposal and static rescan plan |
| Diagram Architect | safe views of the canonical graph |
| Report Synthesizer / Adjudicator | reconcile artifacts into canonical JSON |
| Finding Architecture Impact Adjudicator | determine whether scanner observations materially affect evidenced architecture |
| Compliance Control Analyst | map evidence to bounded assurance questions without certifying compliance |
| Architecture Diagnostic Analyst | identify gaps, contradictions, staleness, and unlinked signals |
| Architecture History Analyst | explain changes between comparable truth snapshots |
A deeper review requires explicit approval. An agent failure does not expand its authority.
## Review boundaries
Each role has a defined evidence scope, allowed actions, and expected output. Reviews preserve source identifiers, confidence, usage, and decision history so your team can inspect a conclusion and its limits.
Human approval remains explicit for consequential actions.
## Evidence adjudication
An observation becomes canonical only after the verifier can resolve every cited evidence ID in the same audit and workspace. Unsupported claims remain hypotheses. Conflicting agent artifacts are retained and sent to adjudication with the underlying evidence—not resolved by majority vote.
For scanner observations, citation validity is necessary but not sufficient. Architecture relevance requires a concrete affected entity, relationship, trust boundary, identity, pipeline, data flow, or constraint. An automatic exclusion requires scanner evidence plus independent structural evidence for a concrete exclusion. Missing deployment, cloud, runtime, or reachability evidence routes to human review.
---
---
title: Apps and audit automations
description: Schedule branch reviews in your timezone and send useful outcomes to Slack, Discord, email, or your own workflow.
---
Veriom connects the review loop: choose a repository and branch, decide when to audit, and send the outcome to the people who need it. Open **Continuous audits** to manage **Schedules**, **GitHub events**, **Apps**, and **Activity**.
## Connect a messaging app
In **Apps**, choose Slack, Discord, or Webhook. Workspace Owners and Admins can manage team destinations. Every member can manage their own email updates in **Settings → Notifications**.
| App | Setup | What your team receives |
| --- | --- | --- |
| Slack | Create an incoming webhook for a channel in your Slack app. Paste its URL into Veriom. | An audit summary, repository, branch, captured commit, outcome, and an Open in Veriom button. |
| Discord | In channel settings, open Integrations → Webhooks and copy a webhook URL. Use a regular text channel. | An audit summary card with context and a link to the run. Messages do not trigger mentions. |
| Webhook | Use the HTTPS trigger URL from n8n, Zapier, your messaging gateway, or your own receiver. | A signed JSON event with a stable delivery ID and useful audit context. |
| Email | Choose your personal notification preferences in Settings. | Selected audit and report updates at your verified account email. |
See the official [Slack incoming webhook guide](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/) and [Discord webhook guide](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks) to create a channel destination. This connection uses an incoming webhook; channel membership and permissions stay in the messaging service.
Give the app a recognizable name, such as **Engineering audit updates**. Select its events: audit completed, audit failed, automation needs attention, report ready, approval needed, queued audit, remediation pull request, or overdue finding.
You can restrict updates to a repository, a listed branch, and an audit trigger: any, scheduled, GitHub event, or manual. A branch filter requires a repository. Leaving both empty includes repository and uploaded-source audits. Filters match the audit's recorded branch and trigger, including report events associated with that audit.
An audit completed event includes both successful audits and partial results. Messages explicitly identify coverage gaps; they do not present incomplete evidence as a fully successful review. **Automation needs attention** covers a run that could not start because of repository access, an unavailable branch, or another admission problem.
After saving, use **Send test**. The test queues a clearly labelled message for the selected destination without starting an audit. It is delivered only after the service confirms receipt. Check **Delivery history** for the result.
## Schedule a branch review
1. Open **Schedules** and name the review.
2. Select a repository, then choose a branch from its searchable list. **Follow default branch** follows the repository's default at each run. A named branch stays selected even if the repository's default changes.
3. Choose daily, weekly, every two weeks, or monthly, then set the local time and day.
4. Search the timezone list by region or city. The displayed offset is today's offset; the run preview uses the offset at each occurrence.
5. Preview the next five runs. Each shows the selected local timezone and its corresponding UTC instant.
6. Save the schedule, then open Apps to configure matching notifications.
Every run captures the latest available commit on the selected branch when admitted. Veriom retains that commit with the audit. A removed or inaccessible branch does not silently fall back to another branch.
Schedules keep wall-clock time through daylight-saving changes. A nonexistent local time moves to the first valid minute; a repeated local time uses the first occurrence. Monthly schedules on the 29th–31st use the last available day in shorter months. Every-two-weeks schedules retain their anchor date when edited.
**Run once when service returns** coalesces missed occurrences into one run and advances to the next future occurrence. **Skip the missed run** uses the scheduler's catch-up policy. Pause a saved schedule to retain its settings and history, or edit its branch, cadence, local time, and timezone. Disabled schedules remain in the audit trail.
## React to GitHub changes
Use **GitHub events** for pushes, pull requests, or merged pull requests. Add branches from the repository list, and use patterns such as `release/**` for branches created later. Leave the branch filter empty to match all branches. Optional path patterns and a minimum changed-file count reduce unnecessary runs.
Direct pushes to protected branches require approval. The conflict policy controls whether a competing audit waits, is ignored, or requires a replacement decision. Activity records why a trigger ran, waited, failed, or was ignored. Messaging apps can notify the team when an approval or intervention is needed.
## Delivery history and recovery
**Queued** means an event is waiting for a worker. **Sending** means a request is in progress. **Delivered** means the service confirmed receipt. **Retrying** includes the next attempt time. **Failed** or **Canceled** can be retried after the app is active and the endpoint has been corrected.
Temporary errors, timeouts, and rate limits retry automatically, up to eight attempts per cycle. Provider retry delays apply to the whole destination. A worker restart recovers an expired delivery lease. Permanent rejections, such as revoked channel access, remain failed until you fix the endpoint and retry. Lifetime attempt counts stay visible after a manual retry.
Pausing prevents new matching events and cancels waiting deliveries when the worker processes them. A request already in flight may finish. Editing the endpoint affects future attempts, including retries. No delivery mechanism can guarantee exactly-once receipt after a network timeout; custom receivers must deduplicate the stable delivery ID.
## Verify a generic webhook
Destinations must use public HTTPS on port 443. Redirects, private addresses, embedded usernames, and fragments are rejected. Endpoint paths and query tokens are encrypted and hidden after saving. Slack and Discord URLs must match the provider's incoming webhook format.
Veriom signs the exact JSON request body. Save the signing secret shown once when you create a generic webhook. The request includes:
| Header | Meaning |
| --- | --- |
| `X-Veriom-Agent-Event` | Event type, for example `audit.completed`. |
| `X-Veriom-Agent-Delivery` | Stable delivery ID. Store it to reject duplicate processing. |
| `X-Veriom-Agent-Timestamp` | Unix timestamp for this attempt. |
| `X-Veriom-Agent-Signature-256` | `sha256=` followed by a hexadecimal HMAC-SHA256 signature. |
Compute HMAC-SHA256 with the signing secret over `timestamp + "." + delivery_id + "." + raw_request_body`. Compare signatures in constant time, reject timestamps outside your allowed clock tolerance, and deduplicate the delivery ID before doing work. Return a successful HTTP response only after accepting the event durably.
The JSON envelope retains `id`, `event`, `workspace_id`, `resource_type`, `resource_id`, `created_at`, and `data`, and includes a `context` object with the audit summary and scope. Events derived from a durable workspace event also include `event_id`. Credentials and operator accounting details are excluded.
**Rotate signing secret** invalidates the previous secret for future attempts. Update your receiver immediately. Slack and Discord authenticate through their endpoint token and do not require you to validate Veriom's signature.
## Try the interactive demo
Open [Apps & automations in the demo](https://veriom.io/demo?demo=automations) to select a branch and timezone, choose a destination, pause the sample automation, and preview successful, partial, and failed outcomes. The demo uses fictional data and sends no messages.
---
---
title: Audit lifecycle
description: Queue admission, deterministic scanning, context assembly, agent reasoning, reports, SSE progress, retries, and partial results.
---
## Admission and queueing
Audit creation requires workspace access, an authorized source, and an idempotency key. Each source may have at most one active or queued audit. Different sources can be queued together, and each workspace runs one audit at a time in submission order. A duplicate request returns a typed conflict that identifies the existing audit.
After onboarding, open **Audit runs** and choose **Start an audit** to select a repository, branch, and profile. **Run all** queues every enabled, non-archived repository on its default branch in one action. Repositories with an active or queued audit are skipped. The queue continues after you leave the page.
The scheduler uses global scanner capacity and runner health to expose queue position. Queue state is persisted; it is not inferred from a browser connection.
## Stage contract
| Stage | Durable output | Can be partial? |
| --- | --- | --- |
| Ingestion | exact commit or validated upload snapshot | no—invalid source stops admission |
| Scanning | normalized observations, SBOM, scanner coverage | yes—each failed scanner creates a coverage gap |
| Reconciliation | entities, relationships, evidence, contradictions | yes—missing source lowers confidence |
| Agent analysis | typed artifacts with evidence IDs | yes—processing limits or agent failures are explicit |
| Reporting | canonical Pydantic JSON | yes—coverage and omitted stages are prominent |
| Export | Markdown, DOCX, PDF, JSON, Mermaid/SVG/PNG | format-specific failure is retryable |
## Live events
Authenticated SSE emits monotonic events for queue position, stage transitions, scanner status, reviewed artifacts, warnings, retries, and terminal state. Clients reconnect with the last received event identifier and deduplicate by event ID.
```text
queue.updated
audit.stage.started
scanner.log
agent.artifact.completed
usage.updated
audit.coverage_gap.created
audit.completed
```
## Cancellation and retry
Cancellation stops new activities, requests cooperative termination of active work, and preserves evidence already committed. Retry creates or resumes only an allowed failed boundary; it does not silently overwrite the prior attempt or duplicate work.
Scanner failure, unavailable processing capacity, or an exhausted review allowance produces a report that names the missing coverage. It never produces a clean verdict by omission.
---
---
title: Architecture change intelligence
description: Compare the latest architecture snapshots, distinguish removals from missing coverage, and evaluate deterministic regression gates.
---
Change Intelligence compares the latest two terminal architecture snapshots for a repository. It reports entity and relationship additions, verified removals, items that were not re-observed because source coverage changed, evidence references, and ownership hints.
## Regression gate
The workspace policy controls a deterministic gate:
- minimum source coverage;
- whether compared snapshots must contain the same source families;
- whether any architecture change requires review;
- whether entity or relationship removals block;
- relationship kinds that block when newly introduced.
The result is one of `pass`, `review`, `blocked`, or `insufficient_evidence`. The reasons are returned as typed data rather than generated prose.
## Coverage-aware removals
A resource absent from the newer snapshot is not automatically a deletion. When the source families differ, Veriom marks the item `not_reobserved` unless the policy and evidence establish a comparable source boundary. This prevents missing cloud, delivery, or runtime data from becoming a clean architecture verdict.
## Ownership routing
Where entity or relationship evidence includes an owner, team, service, or repository attribute, the change item surfaces that owner hint. The workspace UI links the change to its source audit and lets reviewers ask Veriom about the existing evidence. It does not allow the assistant to override the deterministic gate.
```http
GET /v1/workspaces/{workspace_id}/repositories/{repository_id}/changes
```
The response includes both snapshot IDs, source coverage, source parity, all change items, and the evaluated gate.
---
---
title: Collaborative remediation
description: Assign evidence-backed findings, coordinate review, attach validated context, and verify remediation without losing provenance.
---
Veriom keeps remediation work attached to the finding that created it. Ownership, discussion, external tracking, proposed changes, approval, and verification remain one inspectable sequence instead of becoming a disconnected ticket.
## Work without weakening evidence
1. Assign a workspace member and choose a priority and due date.
2. Discuss the finding in threaded comments and mention active workspace members.
3. Mark the coordination state as open, in progress, blocked, or work completed.
4. Attach supporting material only after checksum, archive-safety, and malware validation.
5. Request an external Jira issue through an approved ticket-creation authorization.
6. Run new evidence and mark the remediation verified separately from work completion.
Closing implementation work does not prove that the architecture changed safely. Veriom keeps **work completed** and **evidence verified** as distinct states.
## Ownership and blocking
Every collaboration change carries an optimistic version so two reviewers cannot silently overwrite one another. A blocked state requires a written reason. Assignment is limited to active members of the same workspace, and watchers can opt into finding activity without changing ownership.
Bulk updates use a preview endpoint first. The preview identifies eligible, missing, and unchanged findings; applying the change requires the preview token and explicit confirmation.
## Discussion and attachments
Comments support bounded mentions and replies. Mentions resolve only to active workspace members. Comments and collaboration events retain the author and timestamp.
Attachments are ZIP archives routed through Veriom’s existing secure-upload boundary. They must complete checksum verification, archive inspection, and malware scanning before they can be linked to a finding. The attachment record retains its checksum, uploader, status, and expiry; expiring it does not erase the collaboration timeline.
## Governed Jira synchronization
Jira creation is a workflow action, not an ambient integration permission. An administrator configures a write-only encrypted authorization, a user requests an issue for one finding, and a different authorized reviewer approves it. The worker performs the call and stores the external ID, URL, state, and safe error code.
Every Jira issue is labeled with its stable Veriom action ID. After a timeout, the retry searches that label and recovers the existing issue before considering a create call. Operators can retry failed synchronization or revoke future synchronization with an audited reason. Revocation never deletes local history or the external reference.
## Operator visibility
The private admin dashboard shows active, overdue, and blocked work, failed external synchronization, and quarantined attachments for each workspace. Operator interventions are reasoned and auditable.
Use the generated [collaboration API reference](/docs/api-reference/workspaces/get_workspaces_by_workspace_id_findings_by_finding_id_collaboration) for exact request and response contracts.
---
---
title: Compliance programs
description: Adopt a versioned control library and trace every status to current evidence, mappings, findings, and exceptions.
---
Veriom compliance programs are evidence views over your existing architectural truth. They do not create a second scanner result or let a favorable label hide an unresolved finding.
## Enable the workspace capability
Compliance libraries are released per workspace with the `compliance_libraries` feature flag. A workspace owner can enable the capability during a canary rollout. Members need `compliance:read` to inspect a program, `compliance:write` to adopt or propose changes, and `compliance:approve` to decide exceptions.
## Adopt an immutable version
Open **Compliance programs**, select a published library version, and review its publisher, source, license, change summary, controls, and evidence requirements. Set a program name, scope, owner, and review cadence before adoption.
The selected version is pinned. A newer version appears as an upgrade diff and requires a new, explicit adoption. Veriom never rewrites historical assessments when a library changes.
## Read a control status
Every control drill-down shows:
- the calculation and mapping versions;
- a canonical input hash for replay;
- accepted, stale, conflicting, and missing evidence inputs;
- mapped findings and architecture relationships;
- applicability rationale and overlay version;
- exception and program event history.
`Supported` requires enough fresh, accepted, non-conflicting evidence and no unresolved mapped finding. `Partial`, `gap`, and `unknown` keep missing or uncertain inputs visible. `Not applicable` requires a workspace rationale. `Excepted` means an approved, unexpired exception exists; the underlying finding remains visible.
## Change applicability
Workspace admins can mark a control applicable or not applicable with a rationale. The update uses optimistic versioning, creates a program event, and rebuilds the projection. It does not modify the shared library.
## Propose and approve an exception
An analyst can propose a time-bounded exception with a rationale and optional workspace evidence. An admin or owner other than the proposer must approve it. Only one proposed or approved exception can be active for a control. Expiry automatically restores the evidence-derived status.
## Export and replay
Canonical reports include the same versioned assessments used by the dashboard. Report records retain the program, framework version, mapping version, input hash, linked evidence, findings, architecture relationships, and exception reference so reviewers can reproduce the conclusion.
## Operator diagnostics
Platform operators can inspect projection health for any workspace and trigger a rebuild with an audit reason. Operators cannot directly edit status. Correct the evidence, mapping, applicability overlay, or exception instead.
## Rollback
Stop new adoption by deprecating a library version. Existing programs remain pinned and readable. To move a workspace back, explicitly adopt the prior published version; never mutate or delete historical assessments.
---
---
title: Enterprise identity and onboarding
description: Add MFA and tenant-scoped OIDC, link every sign-in to one canonical user, and resume setup without losing security context.
---
Veriom treats identity as part of the evidence boundary. A provider assertion can prove who signed in, but it cannot silently create workspace authority.
## Secure your account with MFA
Open **Workspace settings → Security** and enroll a TOTP authenticator. Confirm the first code, then store the one-time recovery codes outside Veriom. Recovery codes are shown once and each code can be used only once.
The security view lists active browser sessions and their authentication method. Revoking a session takes effect immediately. Enrollment, recovery, step-up, and factor changes rotate session identifiers so an earlier session cannot inherit new authority.
## Connect an organization provider
Workspace owners can add any standards-compliant OIDC provider. Supply its issuer, client ID, client secret, verified email domains, and optional claims mapping. Veriom validates discovery endpoints, encrypts the secret, and saves the provider in **Testing**.
Choose **Test sign-in** to complete a state-, nonce-, and PKCE-protected login. A successful test verifies token issuer, audience, signature, subject, email, and domain before activating the provider. SSO can be optional or enforced only after activation.
## Understand identity linking
Veriom links OIDC to the existing canonical user only when the provider subject, verified email account, and invitation resolve safely. A matching email never grants access on its own. New workspace membership requires a pending invitation, and mapped roles are capped by that invitation. OIDC can never grant owner or platform-operator access.
If identities disagree, the login is denied. The operator console records a pseudonymous failure reason for support without exposing the asserted email.
## Resume onboarding
The onboarding journey keeps your last verified stage:
1. verify the account;
2. create or choose the workspace;
3. invite the team;
4. describe organizational context;
5. connect evidence sources;
6. confirm first-audit readiness;
7. complete setup.
Optional stages can be deferred. Policy blockers such as unverified email or required MFA cannot be skipped. Provider secrets and access tokens are never stored in onboarding progress.
## Recover safely
If SSO is degraded, an owner can disable the provider without removing local users, memberships, or history. Platform operators can revoke sessions or unlock a recovery credential only through an audited action with a reason. Keep two recoverable owner accounts and exercise the break-glass path before enforcing SSO.
---
---
title: Review possible duplicate observations
description: Understand the Control room comparison report before linking two observations or keeping them separate.
---
The **Possible duplicate observations** panel in the Control room highlights scanner observations that may describe the same underlying issue. Observations can arrive before the final findings report, so a suggested match does not establish that a vulnerability has been confirmed.
Choose **View comparison report** to see both observation titles, descriptions, repositories, affected components, checks, and evidence locations. The report explains which signals match and which details differ. Each observation links to its full evidence and source audit.
## Understand the similarity score
A score such as **93% similarity** measures shared context and wording. It is not a severity score or a 93% probability that the observations describe the same issue. The comparison may be based on a shared component, mapped security controls, source family, and similar titles. Two checks can share these signals while identifying different issues or different deployments.
Review the affected resource, source boundary, files, lines, and check descriptions. Ask the relevant engineer to inspect the evidence if the common root cause is unclear.
## Choose a decision
| Action | Result |
| --- | --- |
| **Confirm same issue** | Observation A remains the primary finding. B is marked as its duplicate and stops counting as a separate active finding. Both records and their evidence are retained. |
| **Keep separate** | Both observations remain independent. The suggestion is closed and the explanation is recorded. |
| **Review later** | The comparison stays pending. Neither observation changes. |
Owners, admins, and analysts can record a decision with an explanation. Read-only members can inspect the report.
## When no decision is needed yet
If an audit is still running, architecture review is pending, or supporting evidence is incomplete, the comparison explains what is missing and disables decisions. Revisit it after the audit and review complete. If an audit failed or was cancelled, complete or retry it first.
---
---
title: Findings, saved views, and ownership
description: Inspect reviewed impact, save useful finding filters, preview repository ownership rules, and follow assignment history.
---
Start from a reviewed finding in the **Impact queue**. Open its consequence, source references, and root-cause context before deciding who should act. Scanner observations and dependency alerts with unverified architectural applicability remain evidence to review.
## Keep useful views
Filter the findings to the team, owner, severity, state, or scope you need, then choose **Save finding view**. Give the view a clear name and choose personal or workspace visibility where your role permits it.
A saved view stores the query configuration. Opening it applies those filters to current authorized findings; it does not freeze the findings themselves. Renaming, updating, or deleting a view follows its ownership and workspace permissions.
## Assign a finding
Choose an eligible workspace member in the finding's owner control. The assignment appears with the finding and is recorded in history. A manually chosen owner takes precedence when automatic routing is applied.
Use the [root-cause and inventory guide](/docs/workflows/service-dependency-inventory) when several findings appear to describe the same structural issue. Coordinating the cause can avoid assigning several disconnected fixes.
## Preview ownership routing
1. Open **Ownership routing** and configure a routing policy for the workspace.
2. Map provider identities from CODEOWNERS to actual workspace members. Unmapped owners do not become new workspace users.
3. Set default deadlines and any supported overrides. Deadlines are calculated from the finding's first observation; rerunning routing does not reset the clock.
4. Save the policy, choose the relevant audit, and select **Preview assignments**.
5. Inspect matched rules, proposed owners, deadlines, unmatched identities, and warnings. Apply the preview only when it matches the intended responsibility.
Unsupported CODEOWNERS syntax and unresolved identities remain visible. Do not assume every provider rule can be applied identically. Preview the effective result, especially for nested paths and overlapping rules.
## Track overdue work
If escalation is enabled, select an eligible escalation recipient and review the configured policy. Assignment history records routing and escalation decisions. Notifications depend on the workspace's configured delivery channel; a recorded decision alone is not proof that an external message was delivered.
Use the [workspace portfolio](/docs/workflows/workspace-portfolio) to find unassigned and overdue findings across the workspaces you can access.
---
---
title: Legacy migration
description: Import sanitized historical context through quarantine, reconciliation, and measured release gates.
---
# Legacy migration
Veriom accepts useful historical context through a one-way import boundary. It does not connect to a legacy database or let imported claims silently become current evidence.
## What can be imported
The `legacy-import-v1` manifest supports workspaces, sources, completed audits, findings, dispositions, comments, tasks, schedules, and context history. Every record includes a stable source ID and revision, while the manifest identifies the source system, source tenant, transformation version, and generation time.
## Safety model
Each record is checksummed and placed in workspace-isolated quarantine. Raw email identities are replaced with keyed references and credential-like fields are removed before storage. A legacy identity can be linked only to an active, verified member of the destination workspace, with explicit operator confirmation.
Dry-run batches cannot publish. Canary, cohort, and final-delta batches publish only after validation and identity confirmation. Published records appear as **historical context**, not live evidence, findings, or architectural truth.
## Operator sequence
1. Enable the `legacy_import` workspace flag.
2. Submit a dry-run manifest in **Admin → Migration & release**.
3. Resolve collisions, rejected identities, and missing references in the source transformation.
4. Confirm identity links to verified workspace members.
5. Publish one canary batch.
6. Reconcile counts and per-kind checksums, then sign the matched report.
7. Rehearse rollback before freezing legacy mutation.
8. Migrate bounded cohorts, freeze the source, and run a final delta.
9. Keep the legacy service offline while production release gates are observed.
## Inspect imported history
Workspace viewers can use `GET /v1/workspaces/{workspace_id}/legacy-history`. The endpoint returns only active, sanitized published history and requires the `legacy_import` flag. Rolled-back records remain auditable to operators but are not returned as active customer history.
## Production release evidence
Veriom records migration, scale, restore, security, and product gate evidence with a status, measurements, immutable evidence references, reason, and operator. A failed gate pauses rollout. Independent penetration testing and restore evidence stay pending until their real artifacts exist.
See the internal [legacy migration and production release runbook](https://github.com/veriom/veriom/blob/main/docs/runbooks/legacy-migration-release.md) for the staged procedure and failure triage.
---
---
title: Model resilience and safe recovery
description: Route qualified model work through explicit fallback, circuit recovery, non-publishing shadow evaluation, and immutable checkpoints.
---
Veriom keeps model availability separate from evidence authority. A fallback route can keep a bounded analysis activity available, but it cannot expand what the activity may read, move data to an unapproved region, exceed its budget, or publish an unqualified result.
## Policy-ordered routes
Owners and Admins configure an ordered route set for each activity. Before execution, Veriom checks every route against:
- operator qualification and active endpoint state;
- workspace data residency policy;
- the activity's required model and tool capabilities;
- circuit health and recovery-probe state;
- the remaining reasoning and cost budget.
The worker uses the first eligible route. It advances to the next route only after a retryable provider or transport failure. Cancellation, invalid structured output, policy denial, and budget exhaustion stop the activity instead of sending the same evidence somewhere else.
## Retry, fallback, and recovery are different
| Behavior | Meaning | Provider changes? |
| --- | --- | --- |
| Retry | Repeat a transient request against the same approved endpoint | No |
| Fallback | Continue through the next eligible route in workspace policy | Yes |
| Recovery probe | Test whether an open circuit may safely receive work again | No |
Every decision records a sanitized route identity, disposition, phase, prompt version, latency, token usage, cost, and bounded reason. Prompts, evidence bodies, credentials, and raw provider errors are not returned by the customer API.
## Shadow evaluation cannot become truth
Shadow evaluation compares a separately qualified model on explicitly eligible workloads. Veriom stores support agreement, omissions, contradictions, latency, and cost in a dedicated shadow ledger. Shadow invocations are marked before execution and cannot publish architecture truth, findings, reports, decisions, or remediations.
An operator may qualify or reject a shadow configuration after review. Qualification makes the route eligible for later production policy; it never promotes an old shadow answer into customer truth.
## Compatible checkpoints
Expensive analysis can checkpoint at a measured activity boundary. A checkpoint includes the input and output checksums, contract version, route and model identity, prompt version, policy version, and publication status. Veriom resumes only when all compatibility inputs still match.
If a result was already committed, recovery returns that committed result rather than publishing it again. If policy, prompt, contract, model, or evidence changed, the activity restarts. The workflow service coordinates scheduling and retries.
## What customers can inspect
The workspace **Settings → Resilience** view shows route health, redacted routing decisions, fallback state, circuit status, checkpoint recovery, and shadow-review state. Provider-internal errors and sensitive inputs remain hidden. Operators use a separate authenticated console for recovery probes, circuit actions, shadow decisions, and checkpoint invalidation; every action requires a reason and is audited.
---
---
title: Organizational discovery
description: Add accountable business context, organize evidence sources, resolve contradictions, and publish a versioned context snapshot.
---
Scanners can observe code, cloud resources, delivery paths, and findings. They cannot safely decide which assets the business considers critical, which data is sensitive, who owns a boundary, or which compliance programs apply. Organizational discovery adds that accountable context without weakening evidence provenance.
## How discovery becomes truth
1. A workspace Analyst, Admin, or Owner starts the discovery profile.
2. Veriom asks the highest-value unanswered question first.
3. Declared answers become confirmed, immutable field revisions.
4. Reconciled evidence may propose cloud or technology context, but never confirms it.
5. Conflicting claims remain visible until a person chooses or corrects the value.
6. Confirmed fields and source-graph relationships publish into a new workspace context snapshot.
Discovery does not create another system graph. Confirmed context is an input to the existing Veriom workspace context and canonical architecture model.
## Context fields
The profile covers technology, cloud, infrastructure as code, data sensitivity, critical assets, entrypoints, data stores, important flows, trust boundaries, compensating controls, compliance programs, and ownership.
Each current value exposes:
- its source and source reference;
- confidence and observation time;
- confirmation state;
- sensitivity and architectural impact;
- version and evidence identifiers;
- complete correction and supersession history.
Sensitive values are redacted for Viewer and Developer roles. Evidence-inferred sensitive or high-impact values always require explicit confirmation.
## Source groups and dependencies
Registered repositories, uploads, cloud collections, delivery systems, and MCP evidence can be assigned to source groups such as Checkout, Payments, Identity, or Data Platform. A group records its owner, criticality, and trust boundary.
Dependencies connect two groups with an explicit relationship type, evidence identifiers, data classification, and boundary-crossing status. Archiving a group or dependency is reversible and retains its history.
## Suggestions and contradictions
Evidence suggestions are fingerprinted against the material evidence revision. Rejecting one suppresses the same idea while evidence remains unchanged. Materially new evidence may resurface it for review.
When a new claim disagrees with the current value, Veriom creates a contradiction instead of hiding one side. A declared correction resolves the contradiction by creating a new revision; prior revisions remain inspectable.
## Publication gate
Publishing is available only when every required field is confirmed and no contradiction remains open. The resulting context snapshot contains confirmed fields, active source groups, assigned active sources, and confirmed dependencies. It can be replayed by later audits and safely rolled back without deleting discovery history.
Use the generated [Discovery API reference](/docs/api-reference/workspaces/get_workspaces_by_workspace_id_discovery) for the exact field, group, source, dependency, suggestion, and publication contracts.
---
---
title: Explore the platform
description: Start with the architecture, inspect the evidence, explain the intent, and follow differences over time.
---
Start with the [interactive demo](https://veriom.io/demo). It opens a fictional Northstar architecture with its trust boundary and source evidence. Inspect a component before opening findings. The guided path follows source selection, map, truth explorer, intent questions, structural weaknesses and historical drift, without connecting an account.
The demo illustrates the workflow. Its source access checks, findings, deployment records, and progress are sample data. Resetting or reloading clears your changes. Sample downloads contain only the content you approved in the demo; a sample review does not create a live public link.
**Confirm intent** asks four optional questions. At least three answers can annotate different components and the identity-to-store boundary. Every answer remains an editable proposal with its source; skipping or resetting never changes an observed fact. **Intent & drift history** compares two fixed, dated captures with one named fictional approval. It shows why a broader cloud permission invalidates the condition that made a shared identity acceptable. Recorded freshness belongs to each historical evaluation; opening the page does not refresh a capture.
**Capabilities & roadmap** links every scene to its demonstrated behavior. Draft adoption and named ratification are an October workflow preview; the guardrail scene illustrates December behavior. Later planned-change, release-check and source-intake capabilities remain subject to workspace rollout and review. See [Intended architecture](/docs/architecture/intended-architecture) for the actual workflow and evidence boundaries.
## Choose a task
| Area | What to do | Guide |
| --- | --- | --- |
| Proposed intent and history | Answer or skip the intent questions, inspect proposed map annotations, and compare the two dated captures | [Intended architecture](/docs/architecture/intended-architecture) |
| Evidence and repositories | Choose a branch, save its path scope, check repository health, and compare captured commits | [Repository reviews](/docs/workflows/repository-reviews) |
| Review and ownership | Inspect architectural consequence, assign work, save finding views, and preview CODEOWNERS routing | [Finding ownership](/docs/workflows/finding-ownership) |
| Architecture | Follow a root cause, inspect service owners, compare environments, and trace dependency evidence | [Service and dependency inventory](/docs/workflows/service-dependency-inventory) |
| Reporting | Select content, approve a report, and share an expiring snapshot | [Report review links](/docs/workflows/report-review-links) |
| Customer assurance | Import questions, draft cited answers, review exceptions, and export approved responses | [Questionnaires](/docs/workflows/questionnaires) |
| Team oversight | Find stale evidence, unassigned work, and overdue findings across accessible workspaces | [Workspace portfolio](/docs/workflows/workspace-portfolio) |
## Follow one review
1. Choose the workspace that owns the system. Open **Integrations**, connect evidence, and select repositories.
2. Choose a repository branch and profile. Check the captured commit and include/exclude paths before starting the audit.
3. Follow collection, scanning, Context Engine reconciliation, and specialist review. Scanner observations need applicability and architectural review before becoming reviewed impact.
4. Open a finding and inspect its evidence, consequence, and remaining uncertainty. Assign an owner or preview ownership routing.
5. Review the draft report. Confirm its branch, commit, scope, findings, and coverage limitations before approval.
6. Export the approved report or create a review link with explicitly selected content. Use approved report evidence to answer a questionnaire.
7. Return to the portfolio to find the next workspace that needs attention.
## Understand the evidence states
A connected source can still have missing or stale evidence. An observed deployment does not prove a dependency executes at runtime. A manual statement does not become observed evidence simply because it was saved. An empty finding list does not prove that unassessed paths are secure.
Veriom keeps those distinctions visible so the next action is clear: repair access, collect evidence, complete a review, assign an owner, or approve a supported result.
## Automate reviews and keep teams informed
Use [Apps and audit automations](/docs/workflows/apps-and-automations) to schedule a listed branch in your timezone, react to GitHub events, and send audit outcomes to Slack, Discord, email, or your own webhook workflow. Delivery history shows confirmations and retries.
---
---
title: Model routing and review boundaries
description: Understand how workspace model choices remain subject to evidence access, review permissions, and usage limits.
---
Veriom separates model choice from evidence access and action authority. A selected route does not expand the evidence a role can retrieve or the actions it can perform.
## Workspace choices
Where enabled, workspace Owners and Admins choose from the approved model options available to their workspace. They can set a reasoning budget and decide whether an unavailable private endpoint may fall back to the platform route.
The workspace interface shows the available options and applicable usage information. Model availability does not grant permission to publish a change.
## Private endpoints
A private endpoint requires an approved connection and a compatible request format. Follow the workspace setup guidance and API contract for the required configuration. Credentials are write-only and are never returned by the API.
If fallback is disabled, an unavailable or invalid private route fails closed. When fallback is explicitly enabled, the run records that route decision.
## Review and history
Routing changes are versioned inside workspace policy. A private route must reference an active endpoint and an allowed model. Endpoint creation, credential rotation, activation changes, and routing-policy updates create audit events.
Every review keeps its evidence scope and human approval requirements. Contact Veriom to discuss model availability, processing terms, or a private-endpoint requirement.
---
---
title: Evidence-backed security questionnaires
description: Import customer questions, draft answers from approved reports, review citations and attestations, and export approved responses.
---
Open **Security questionnaires** in Compliance programs. Each questionnaire retains its questions, source references, answer revisions, and approval history.
## Import the questions
Choose **Import a questionnaire** and provide a title. Upload a UTF-8 CSV or TSV file, or enter one question per line. Files may use comma, semicolon, or tab separators and must have a **Question** column; **Reference** or **ID** is optional. The import supports up to 500 questions and a 2 MB file. Quoted CSV fields preserve line breaks inside a question.
```csv
Reference,Question
SEC-01,How are cloud permissions reviewed?
SEC-02,Is multi-factor authentication required for all staff?
```
References and question order remain available for the final export. If validation fails, correct the named row or header and import again.
## Select approved evidence
Choose the approved report revisions that may support the answers, then draft responses. Open each cited source and check its version, freshness, scope, and relevant excerpt.
A report about repository permissions cannot establish an unrelated company-wide policy. When the selected sources do not support an answer, the response remains unsupported. It should not be filled with an invented assurance.
## Review each response
For a supported answer, confirm that its text follows from the cited evidence before approving it. If you edit the answer, review its provenance again; approval does not carry forward automatically.
When evidence does not establish the answer, an authorized reviewer can provide a statement and explicitly attest to it. An attested answer remains labeled as a reviewer statement. It is not converted into an evidence-backed fact.
Answer history shows the recorded changes and decisions. Changing evidence sources or drafting new content requires another review of the affected answers.
## Export for the requester
Approve the responses required for export, then download the questionnaire CSV. The export preserves question order and references and identifies each answer's basis. Review the resulting file before returning it to the requester, especially any attested statements or coverage limitations.
Try the [interactive demo](https://veriom.io/demo?demo=questionnaires) to see a supported permissions answer and an unsupported MFA question. The demo requires a sample report approval before drafting, and explicit attestation for the unsupported answer.
---
---
title: Approve and share a report
description: Review the exact source context, export approved content, and manage expiring report snapshots and reviewer comments.
---
A report should make its conclusion and its limits easy to understand. Before approval, check the repository, branch, commit, assessed paths, profile version, findings, and coverage gaps. Historical reports may lack some source metadata; those fields remain unknown rather than being invented.
## Review the report content
Open the audit report and select the sections and findings that belong in the deliverable. Inspect the preview, including long findings and references, and approve the intended revision with an authorized reviewer.
A restricted path scope remains visible even if you omit the optional coverage section. Changing the report content requires a fresh review and approval. The canonical report revision is the source for its rendered exports; see [report formats](/docs/workflows/reports-remediation).
## Create an external review
1. Open **Report review links** for the approved report.
2. Select the approved sections and findings to share. Review text redactions and decide whether locations and other optional context should be included.
3. Preview the content, choose an expiry, and decide whether reviewers may comment.
4. Create the link and copy the newly issued URL.
5. Inspect **Snapshot and review history** to review access records and comments.
The link grants access to its selected snapshot to anyone who holds it. Share it with the intended recipients. It exposes neither the entire workspace nor future report changes. The content is frozen at creation, and later edits cannot silently broaden it.
Comments are plain text and belong to that review. They do not modify the canonical report or approve remediation.
## Revoke or replace a link
Revoke a link from its history view when it is no longer needed. Expired, revoked, and invalid links cannot open the snapshot. Revocation prevents future access; it cannot remove a copy a recipient already downloaded.
To share a changed report, review and approve the new content, then create a new link. The earlier snapshot remains part of its own history.
## Resolve common report problems
| Symptom | Check |
| --- | --- |
| Approval or sharing is unavailable | Confirm your role, the current report revision, and whether the selected content has been approved |
| A section or finding is absent | Inspect the report builder's selection and the review link's separate content selection |
| A report appears cleaner than expected | Check scope restrictions, collection failures, and evidence-gated exclusions before interpreting the finding count |
| An export fails | Retry that format and retain the error reference; a format failure does not require discarding the audit |
| A reviewer cannot reopen a link | Check expiry or revocation and create a new approved snapshot if appropriate |
For customer questionnaires, reuse the approved report through the [questionnaire workflow](/docs/workflows/questionnaires).
---
---
title: Reports and remediation
description: Canonical report JSON, approval, deterministic exports, patch proposals, static rescans, and human-controlled GitHub pull requests.
---
## Canonical first
Versioned Pydantic JSON is the report source of truth. UI views and every export render from the same revision. Agent prose never becomes an export without schema validation, evidence validation, and adjudication.
The report includes executive summary, coverage, architecture-impact dispositions, compliance evidence assessment, architecture diagnostics, comparable history, trust boundaries, threat model, active findings, evidence-gated exclusions, remediation plan, SBOM reference, and an evidence appendix.
The compliance section uses `supported`, `partial`, `gap`, `not applicable`, and `unknown`. It is an evidence mapping, not legal advice or certification. The diagnostic section describes the quality of Veriom's current understanding separately from weaknesses in the customer system. The history section distinguishes structural removal from a fact that was simply not re-observed because collection coverage changed.
## Export pipeline
| Format | Derivation |
| --- | --- |
| JSON | canonical schema serialization |
| Markdown | deterministic renderer from JSON |
| Mermaid | approved constructs from canonical graph views |
| SVG / PNG | server-rendered Mermaid, sanitized before storage |
| DOCX | deterministic OOXML template |
| PDF | conversion from the verified DOCX |
Exports validate schema, links, diagram syntax, SVG safety, text extraction, pagination, and representative visual regressions. Format-specific failures are retryable without rerunning the audit.
## Approve and share
Review the exact branch, commit, source scope, coverage and selected content before approval. An expiring [report review link](/docs/workflows/report-review-links) shares a frozen approved snapshot with optional reviewer comments. For customer assurance, reuse the approved evidence in [security questionnaires](/docs/workflows/questionnaires).
## Remediation flow
1. A Developer or Analyst requests remediation for a confirmed finding.
2. The Remediation Engineer proposes a bounded diff and identifies every touched file.
3. The patch is applied in a disposable working copy.
4. Static scanners rerun against the diff; builds and tests are not executed.
5. An Analyst, Admin, or Owner reviews and approves the proposal.
6. The connected GitHub App receives a short-lived, project-scoped write token and creates one branch and pull request.
7. Veriom records pull-request state but never merges automatically.
The GitHub App includes Workflow write permission, but Veriom adds it to the short-lived publication token only when an approved, validated patch changes `.github/workflows/`. Audits never receive write access.
---
---
title: Repository reviews and branch comparisons
description: Select a branch, reuse an audit profile, inspect source health, and compare reviews without losing scope or commit provenance.
---
An audit reviews a captured revision of a repository. A branch name can move; the recorded commit identifies the source actually assessed.
## Select the source
Open the repository list in the current workspace. Select a connected repository, choose an available branch, and start an audit. Check the repository, branch, and commit shown with the run. Branch access comes from that repository's authorized provider connection.
If the branch or repository is unavailable, repair the connection before retrying. Veriom does not silently review a different branch. [GitHub access](/docs/integrations/github) explains installation selection; [other repository providers](/docs/integrations/repository-providers) describes their read-only boundaries.
## Save a repeatable profile
In **Audit profiles and repository health**, choose a repository and create a profile. Give it a recognizable name, select its branch and review purpose, and enter repository-relative include and exclude paths.
For example, a payments profile can include `services/payments` and exclude `services/payments/generated`. Omitted paths remain outside the assessment. The profile changes the source sent into ingestion and scanning; it also leaves a scope limitation on reports and comparisons.
Save the profile and use it to start the next review. Each run captures the profile version and settings. Editing or deleting the profile later does not rewrite historical audits. An empty include list means the repository root, subject to exclusions and normal ingestion limits.
## Inspect repository health
The repository health view shows recorded access checks and evidence history. Review the checked time, available branch or revision information, failure reason, and suggested next step. A historical successful check does not guarantee that a provider still grants access today.
Use the connection management link when an installation loses access. Reconnect or refresh access, then retry the intended source. Keep the failed check as part of the history rather than treating it as a clean review.
## Compare audited branches
1. Open **Compare audited branches** and choose the repository.
2. Select a baseline audit and candidate audit. Both selectors identify the captured branch and commit.
3. Compare the runs and inspect new, persistent, resolved, and review-required findings alongside architecture changes.
4. Read the comparability explanation before interpreting a finding as resolved.
The runs must belong to the same repository and have equivalent assessed source scope and comparable analysis policy. Missing coverage, changed paths, unfinished runs, and incompatible policy can make a conclusion require review. A finding absent from a narrower review is not evidence that it was fixed.
Saved comparisons retain their source audit references. A branch comparison is an assessment of captured evidence; it is not a merge approval or proof of the deployed state.
## When a run needs recovery
| Situation | Next action |
| --- | --- |
| Repository missing from the picker | Check the provider account and installation's selected repository access |
| Branch no longer exists | Select an available branch and start a new review with an explicit scope |
| Another audit is active | Follow the existing run or cancel it if your role permits; avoid repeated submissions |
| Scope changed between runs | Run comparable profiles or review the result as incomplete |
| Old report has no recorded revision | Keep that provenance unknown; create a new review to establish it |
Continue with [finding ownership](/docs/workflows/finding-ownership) or the [audit lifecycle](/docs/workflows/audit-lifecycle).
---
---
title: Services, deployments, and dependency impact
description: Connect root causes to affected services and inspect the evidence behind deployment and dependency associations.
---
The inventory connects reviewed architecture to the teams and environments responsible for it. Evidence strength stays visible at each step.
## Trace a root cause
Open the **Root-cause explorer** from reviewed structural context. Select an affected entity to inspect its relationships, related findings, source evidence, and associated remediation programs.
Follow the evidence references before interpreting a path as reachable. A graph edge summarizes a supported relationship or an explicitly qualified inference; missing evidence and contradictions remain part of the result. Selecting an entity narrows the inspected relationships and evidence rather than changing the underlying review.
## Maintain the service inventory
Open **Service inventory** to see the workspace's recorded services. Refresh from an existing audit to reuse retained architecture evidence. Where your role permits, add a service, update its owner or repository association, and record a deployment.
Service ownership identifies responsibility. It does not grant workspace membership or establish provider permissions.
## Distinguish deployment evidence
| State | What it establishes |
| --- | --- |
| Observed | Retained deployment evidence matches the service or repository, environment, event, and deployed facts |
| Attested | A producer asserts the deployment, but matching retained proof is incomplete |
| Declared | A person records the intended or known deployment without provider observation |
| Unknown | The required deployment information has not been established |
A branch name in a manifest is not proof of a live deployment. Compare environments using their recorded commits, image digests, timestamps, evidence state, and discrepancies. Keep declared and observed differences distinct.
## Inspect dependency impact
Search **Dependency impact** by package or vulnerability reference. Open a result to inspect the package version, SBOM source, repository or service, audit revision, vulnerability evidence, and any deployment association.
There are separate questions:
- Is the package present in the assessed source or SBOM?
- Does a recorded deployment correspond to that assessed commit or artifact?
- Is the vulnerable behavior reachable or executed in that environment?
An SBOM answers the first question. Matching deployment evidence can support the second. Neither automatically answers the third. Runtime reachability stays unknown when the supporting evidence is missing, and an association alone does not promote an advisory into reviewed architectural impact.
For repeatable revision comparisons, use [repository reviews](/docs/workflows/repository-reviews). For coordinated remediation, continue to [reports and remediation](/docs/workflows/reports-remediation).
---
---
title: Structural release gates
description: How versioned invariants move from fixtures through shadow evaluation into release-blocking decisions without silently passing missing evidence.
---
Safe promotion for deterministic architecture checks
An invariant version is immutable. Changing its query, thresholds, or required ledgers creates a new version with a new content hash. That version must prove itself before it can influence a release.
This guide describes the existing structural invariant lifecycle. The
[intended-architecture workflow](/docs/architecture/intended-architecture)
adds release policies pinned to an approved target. Those policies begin in
shadow and need reviewed evidence before enforcement; the public demo does not
enable a release gate.
## Promotion path
| State | Purpose | Can block a release? |
| ----------------- | ----------------------------------------------------------------------------------- | ------------------------ |
| Draft | Author the statement, graph query, evidence requirements, and remediation contract. | No |
| Fixture validated | Pass the reference true-positive and benign cases with deterministic output. | No |
| Shadow | Evaluate on real audits and record results without changing customer state. | No |
| Review | Examine disagreements, missing-evidence rates, and customer-confirmed outcomes. | No |
| Enforced | Apply the approved gate policy using the pinned invariant version. | Yes, when policy says so |
| Retired | Preserve historical reproducibility but stop evaluating new audits. | No |
## Gate outcomes
- **Pass** means every required ledger was present and the invariant evaluated false.
- **Review** means the invariant produced a hypothesis, a low-confidence path, or a policy requires human confirmation.
- **Blocked** means an enforced invariant produced an asserted result that matches the release policy.
- **Insufficient evidence** means one or more required ledgers were absent. It never renders as pass.
## Before promotion
1. Run every positive and benign fixture and compare stable finding IDs.
2. Confirm taxonomy snapshots change labels only, not the detected set.
3. Run the version in shadow on representative workspaces.
4. Review false-positive, false-negative, and insufficient-evidence samples.
5. Confirm the UI exposes the path, ledgers, confidence, and verification predicate.
6. Record reviewer, invariant hash, decision, and rollback version.
The operator control plane enforces a minimum of 50 reviewed samples and requires observed precision to meet the invariant's target before the `enforced` transition succeeds. A code-owned invariant that is not blocking-eligible cannot be promoted into a blocking state.
Missing cloud, CI/CD, runtime, or IaC evidence is a coverage result. It is not
evidence that the structure is safe.
Every completed audit records its gate mode, outcome, reasons, enforced invariant IDs, and evaluation time. In shadow mode the result is visible but cannot block. In enforced mode a failing blocking invariant records `blocks_release: true`; insufficient evidence remains a distinct outcome and does not silently pass.
## Consequence-proportional enforcement
The enforced gate uses the affected asset class as an input, not merely the invariant ID. Crown-jewel failures block automatically, and missing evidence for a crown-jewel-scoped invariant is itself a typed blocking result. Configured invariant failures block at `critical` scope or above by default; important, standard, low-confidence, and below-threshold failures remain visible for review. Every reason records its code, invariant version, asset class, effective severity, confidence, match count, and missing ledgers.
Path analysis follows the same principle while remaining bounded: standard and unknown targets use the invariant's declared hop cap, important targets may search up to six hops, critical targets up to eight, and crown jewels up to twelve. The engine still applies preconditions, per-target result limits, and path-confidence floors, so deeper assurance does not become an unbounded traversal.
## Remediation tiers
**R1** changes a local configuration or identity boundary. **R2** changes a shared code or architecture pattern. **R3** changes an organization-level dependency or control design. Generated proposals remain reviewable, and verification re-evaluates the original invariant against freshly collected evidence.
---
---
title: Authorized workflow actions
description: Create tickets, route finding ownership, and record policy exceptions through capability-specific grants and separate human approval.
---
Veriom separates event delivery from consequential actions. A signed webhook can announce that an audit completed; it cannot create a ticket, assign a finding, or accept risk. Each action requires an active capability grant, a typed request, and a different authorized person to approve it.
## Capabilities
| Capability | Provider | Effect after approval | Minimum approver |
| ----------------- | -------- | ---------------------------------------------------------------------------- | ---------------- |
| Ticket creation | Jira | Create one issue for the selected finding and retain its external ID and URL | Admin |
| Ownership routing | Internal | Assign the selected workspace member to one finding | Admin |
| Policy exception | Internal | Record a bounded accepted-risk state with a reason and required expiry | Owner |
An authorization grants only one capability. Jira credentials are encrypted and write-only. Internal ownership and exception grants have no external credential.
## Request and approval lifecycle
1. An Owner or Admin creates a capability authorization in **Settings → Automation**.
2. A workspace member requests a typed action for one finding.
3. Veriom stores it as `pending_approval`; no side effect has occurred.
4. A different Admin or Owner reviews the target, reason, and capability. Policy exceptions require an Owner.
5. Approval enqueues a durable outbox item. Rejection ends the action without execution.
6. The worker performs only the authorized capability and records attempts, result, external reference, and safe error code.
The requester cannot approve their own request. Directly changing a finding to accepted risk is rejected by the API; the policy-exception workflow is the only supported path.
## Failure and replay behavior
Every action request requires an idempotency key. Worker execution is retry-safe and bounded. A Jira timeout or provider error keeps the error code visible without exposing the credential or external response body. Operators can inspect grant state, pending approvals, attempts, and results from the private admin dashboard.
Specialist agents may prepare evidence and suggested text, but they cannot
create or approve a workflow action. Authorization, approval, and worker
execution are separate system boundaries.
For notification-only destinations, see [team workflow destinations](/docs/integrations/team-workflows).
---
---
title: Workspace access and roles
description: Invite people, review access, and enforce least-privilege workspace capabilities.
---
A workspace is the tenant boundary for members, repositories, evidence, policies, audits, and actions. Membership is explicit: platform access alone never grants access to a workspace.
## Invite a teammate
Owners and Admins can invite a verified email address from **Members**. An existing Veriom account receives an in-product invitation and can accept or decline it. A new user receives an account-bound registration link. Invitations expire after seven days, can be resent or revoked, and cannot be accepted by a different account.
New accounts verify their email before signing in. A user can request a replacement verification link without revealing whether an account exists; requests are protected by Turnstile and short resend cooldowns. If initial email delivery fails, registration and invitation redemption are rolled back together so the user can retry instead of being left with an inaccessible account.
Invitations are idempotent while pending. Repeating the same invitation rotates its one-time token instead of creating multiple active records. Suspended accounts and existing members are rejected.
## Role capabilities
| Role | Intended capability |
| --- | --- |
| Viewer | Inspect repositories, evidence, findings, reports, usage, policies, and member identity |
| Developer | Run audits, submit evidence and uploads, request remediation, and request workflow actions |
| Analyst | Classify findings, approve reports and remediation, and approve bounded workflow actions |
| Admin | Manage repositories, policies, members, invitations, and all Analyst capabilities |
| Owner | Full workspace control, including Admin and Owner membership changes |
The API evaluates both the minimum role and the named permission on every scoped route. Browser sessions do not bypass scope checks. Workspace API tokens are constrained by their explicit scopes and by the current role of the member who created them.
Use [`GET /v1/workspaces/{workspace_id}/access`](/docs/api-reference/workspaces/get_workspaces_by_workspace_id_access) to retrieve the server-authoritative role and permission list for the current identity.
## Membership safeguards
- Only an Owner can invite, add, change, or remove an Admin or Owner.
- Ownership cannot be assigned through an invitation.
- A workspace must always retain at least one Owner.
- A user cannot accept an invitation issued to another email or account.
- Accept and decline decisions are serialized so the same invitation cannot produce competing membership state.
- Membership and invitation changes create workspace audit events.
The generated API reference covers [workspace invitations](/docs/api-reference/workspaces/post_workspaces_by_workspace_id_invitations), [pending invitations](/docs/api-reference/workspaces/get_me_invitations), and [membership changes](/docs/api-reference/workspaces/patch_workspaces_by_workspace_id_members_by_membership_id).
## Policies are workspace-scoped
Workspace policy changes require Admin or Owner access. Policy versions remain attributable to the member who changed them, and downstream audit, report, remediation, and workflow-action checks continue to enforce their own role and permission gates.
---
---
title: Workspace Intelligence
description: Ask evidence-grounded questions, inspect reconciled context, prioritize recommendations, and understand evidence and processing limits.
---
Workspace Intelligence turns the latest architectural truth in a workspace into a shared, reviewable conversation. It combines three surfaces: **Recommendations**, **Ask Veriom**, and **Context**.
## Recommendations
Recommendations turn existing audit artifacts into prioritized follow-up work. Every recommendation has a category, priority, confidence, lifecycle state, and evidence references.
Teams can:
- acknowledge a recommendation;
- assign it to a workspace member;
- snooze it until a specific time;
- dismiss it with a recorded reason;
- discuss it in a shared conversation;
- prepare a remediation proposal.
Preparing an action does not mutate the workspace. Veriom returns inert action data first. The existing audit, report, and remediation permissions are checked again when someone explicitly confirms an action.
## Ask Veriom
Every workspace member can ask questions about the evidence Veriom has already collected. Conversations are shared with the workspace and retained until their creator—or a workspace Admin or Owner—deletes them.
Typical questions include:
- Which services can reach the customer database?
- Why does Veriom believe this trust boundary exists?
- Which findings affect the deployment path?
- What changed between the latest two audits?
- Which recommendation should the team address first, and why?
The answer workflow has visible states: queued, gathering context, routing, specialist review, citation verification, completed, cached, limited, cancelled, or failed. The application streams these states without exposing hidden reasoning or model tool transcripts.
## Grounding contract
Veriom only makes factual workspace claims when it can cite accessible evidence IDs from the same tenant and selected source scope. Unsupported conclusions are labelled as hypotheses or coverage gaps.
The assistant cannot use:
- a shell or unrestricted source access;
- arbitrary SQL;
- external browsing;
- outbound MCP tool execution;
- another tenant's context or cache;
- a prepared action as authorization to change the workspace.
Repository and source text is always treated as untrusted data, including text that resembles instructions to an agent.
## Context inspector
The Context view exposes the snapshot used for answers:
| Signal | What it tells you |
| --- | --- |
| Context hash | The exact reconciled truth version used for retrieval and caching |
| Generated time | When the workspace snapshot was rebuilt |
| Source freshness | When each repository, upload, or MCP source was last observed |
| Coverage | Which expected evidence signals were present or missing |
| Entities and relationships | The structural facts currently believed to exist |
| Contradictions | Evidence that disagrees and still needs review |
| Superseded facts | Historical truth replaced by newer evidence |
The latest valid snapshot for each repository, upload, and MCP source forms the default context. Historical snapshots are retrieved only when the question explicitly asks for a comparison.
## Processing limits
The default launch allowance is:
- 20 questions per user per day;
- 100 questions per workspace per day;
- one active run per user and two per workspace;
- 1,200 final-answer tokens;
- a $10 monthly assistant cap nested inside the workspace model quota.
Limit checks happen before a model call and return a typed error with the reset time. The response identifies the affected allowance and when work can resume. Existing grounded answers and their citations remain available.
Platform Operators can inspect metadata-only context health, run status, and recommendations. They can change workspace assistant allowances or cancel an active run. Every control action creates an immutable audit event; prompts, answers, source, and evidence content are not exposed in the operator dashboard.
## API flow
Create a shared conversation, submit a question with an idempotency key, then follow the durable run event stream:
```http
POST /v1/workspaces/{workspace_id}/assistant/conversations
POST /v1/workspaces/{workspace_id}/assistant/conversations/{conversation_id}/messages
Idempotency-Key: question-unique-123
GET /v1/workspaces/{workspace_id}/assistant/runs/{run_id}/events
```
Use the [generated Workspace Intelligence reference](/docs/api-reference/workspace-intelligence) for request and response schemas.
---
---
title: Workspace portfolio
description: Review risk, evidence freshness, ownership, and overdue work across the workspaces you are authorized to access.
---
Open **Workspace portfolio** to decide which system needs attention next. The view includes only workspaces available to your current identity; it does not combine unrelated tenants into a shared report.
## Read the portfolio
For each workspace, inspect its latest review, evidence freshness, reviewed risk, ownership, overdue findings, and available history. Open the workspace to investigate the underlying evidence or take action.
The portfolio is a summary of retained observations. Check the measurement time and source scope before comparing systems. Different repository coverage or review ages can explain a difference in findings.
## Turn a signal into an action
| Signal | Next step |
| --- | --- |
| No review or missing evidence | Connect a source and start a scoped audit |
| Stale evidence or failed access | Inspect repository health, repair access, and refresh the review |
| Reviewed high impact | Open the finding and root-cause evidence, then coordinate remediation |
| Unassigned work | Assign a member or preview the ownership policy |
| Overdue findings | Review the deadline, responsible owner, and recorded escalation |
| Unknown comparison history | Establish a comparable baseline before claiming improvement |
A workspace with no observed findings may still have missing coverage. An unknown trend remains unknown. The portfolio does not infer that risk improved simply because the latest review assessed fewer files.
Use [repository reviews](/docs/workflows/repository-reviews) to establish comparable evidence and [finding ownership](/docs/workflows/finding-ownership) to make the next action accountable.