Control-plane API route schemas
This page gives the parameters, the request body fields, and the responses of each route on the Control-plane API endpoints page. It comes from the OpenAPI document of API v0.1.19. The full document, with every route and nested schema, is at api.eu.verdictan.com/v1/openapi.json (EU) and api.us.verdictan.com/v1/openapi.json (US). Load it into an OpenAPI viewer or a client generator to browse every nested schema.
A field table lists the top-level fields of a body. A type that is a schema name, for example ErrorEnvelope, is defined in the components.schemas section of the OpenAPI document.
Identity and tokens
GET /v1/whoami
Get the authenticated identity.
Returns the authenticated principal's organization, project, roles, teams, capabilities, and effective permissions.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Authenticated identity context | WhoamiResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
auth_method | string | Yes | |
capabilities | array of string | Yes | |
console_session_expires_at | string (date-time) or null | No | Fixed deadline for the Console browser session. Activity does not extend it. |
display_name | string or null | No | |
email | string or null | No | |
org_id | string | Yes | |
org_name | string | Yes | |
permissions | array of string | Yes | |
project_id | string | Yes | |
resolved_roles | array of ResolvedRole | Yes | |
role | string | Yes | |
team_ids | array of string | Yes | |
user_id | string or null | No |
GET /v1/tokens
List governed tokens.
Returns one bounded page of visible governed tokens. Pages use descending creation order and an opaque continuation cursor.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
purpose | query | string | No | Token purpose filter. |
principal_type | query | string | No | Principal type filter. |
gateway_id | query | string | No | Gateway binding filter. |
team_id | query | string | No | Team binding filter. |
status | query | string | No | Computed token status filter. |
cursor | query | string | No | Token ID of the last item on the previous page. Do not set it for the first page. |
limit | query | integer (int64) | No | Requested page size. The API limits this value to its maximum page size. A value above the maximum uses the maximum. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | One page of tokens | ListTokensResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
next_cursor | string or null | No | Cursor for the next page. The last page does not have this value. |
tokens | array of TokenView | Yes |
POST /v1/tokens
Create a governed token.
Creates a governed token with validated bindings, policies, roles, lifetime, and depletion controls. The secret appears only in this response.
Request body (application/json, required): CreateTokenRequest
| Field | Type | Required | Description |
|---|---|---|---|
bindings | TokenBindingsInput or null | No | |
expires_at | string or null | No | |
expires_in_seconds | integer (int64) or null | No | |
key_class | string or null | No | |
metadata | any | No | |
name | string | Yes | |
policy_ids | array of string | No | |
principal_type | string or null | No | |
purpose | string or null | No | |
role_ids | array of string | No | Specified role IDs to attach. The token also receives its baseline capability role automatically. Manually supplied roles do not replace it. |
Responses
| Status | Description | Body |
|---|---|---|
| 201 | Token created | CreateTokenResponse |
| 422 | Validation failed | ErrorEnvelope |
201 response fields
| Field | Type | Required | Description |
|---|---|---|---|
attached_policy_ids | array of string | Yes | |
bindings | TokenBindingsView | Yes | Effective resource and rate-limit bindings for a governed token. |
created_at | string (date-time) | Yes | |
created_by | string or null | No | |
created_by_email | string or null | No | |
depletion | TokenDepletionView | Yes | Current budget and request depletion state for a governed token. |
expires_at | string (date-time) or null | No | |
id | string | Yes | |
key_class | string | Yes | |
lifecycle | TokenLifecycleView | Yes | Current governed token lifecycle state, alerts, and evidence links. |
name | string | Yes | |
principal_type | string | Yes | |
purpose | string | Yes | |
resource_id | string | Yes | |
resource_vrn | string | Yes | |
status | string | Yes | |
token_prefix | string | Yes | |
token_value | string | Yes |
DELETE /v1/tokens/{id}
Revoke a governed token.
Revokes one active governed token and records the mutation. A token that is missing or already revoked returns not found.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Governed token ID |
Responses
| Status | Description | Body |
|---|---|---|
| 204 | Token revoked | None |
| 404 | Token not found | ErrorEnvelope |
POST /v1/tokens/exchange-code
Exchange an authorization code.
Consumes a single-use authorization code and creates a governed API token. The client, redirect URI, and PKCE verifier must match.
Request body (application/json, required): ExchangeCodeRequest
| Field | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | |
code | string | Yes | |
code_verifier | string | Yes | |
purpose | string | Yes | |
redirect_uri | string | Yes | |
runtime_bindings | RequestedRuntimeBindings or null | No | |
scope_metadata | RequestedScopeMetadata or null | No | |
token_name | string | Yes |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Authorization code exchanged for an API token | CreateTokenResponse |
| 400 | Authorization code exchange failed | ErrorEnvelope |
| 403 | Requested token scope is not allowed | ErrorEnvelope |
| 422 | Requested runtime bindings are invalid | ErrorEnvelope |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
attached_policy_ids | array of string | Yes | |
bindings | TokenBindingsView | Yes | Effective resource and rate-limit bindings for a governed token. |
created_at | string (date-time) | Yes | |
created_by | string or null | No | |
created_by_email | string or null | No | |
depletion | TokenDepletionView | Yes | Current budget and request depletion state for a governed token. |
expires_at | string (date-time) or null | No | |
id | string | Yes | |
key_class | string | Yes | |
lifecycle | TokenLifecycleView | Yes | Current governed token lifecycle state, alerts, and evidence links. |
name | string | Yes | |
principal_type | string | Yes | |
purpose | string | Yes | |
resource_id | string | Yes | |
resource_vrn | string | Yes | |
status | string | Yes | |
token_prefix | string | Yes | |
token_value | string | Yes |
OAuth
POST /v1/oauth/token
Exchange an OAuth grant.
Exchanges an authorization code or refresh token for an access token. Authorization-code exchange validates the redirect URI and PKCE verifier.
Request body (application/json, required): TokenExchangeRequest
| Field | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | |
code | string or null | No | |
code_verifier | string or null | No | |
grant_type | string | Yes | |
redirect_uri | string or null | No | |
refresh_token | string or null | No |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Access token issued. Response includes `Cache-Control: no-store`. | TokenResponse |
| 400 | OAuth token error | OAuthErrorResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
access_token | string | Yes | |
expires_in | integer (int64) | Yes | |
refresh_token | string or null | No | |
scope | string | Yes | |
token_type | string | Yes |
POST /v1/oauth/revoke
Revoke an OAuth token.
Revokes an access token or refresh token for the specified client. An unknown token also returns success.
Request body (application/json, required): RevokeRequest
| Field | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | |
token | string | Yes |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Success. Response includes `Cache-Control: no-store`. | None |
Agents and gateways
GET /v1/agents
List agents for the authenticated organization.
The response contains one cursor page with gateway bindings, resource tags, published endpoints, and seven-day governance health counts.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
cursor | query | string | No | Agent ID of the last item on the previous page. Do not set it for the first page. |
limit | query | integer (int64) | No | Requested page size. The API limits this value to its maximum page size. A value above the maximum uses the maximum. |
q | query | string | No | Case-insensitive substring match against agent name and description. |
status | query | string | No | Specified status filter: `active`, `inactive`, or `suspended`. |
sort | query | string | No | Sort field: `created_at` (default), `updated_at`, or `name`. |
order | query | string | No | Sort direction: `desc` (default) or `asc`. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | One page of agents | ListAgentsResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
agents | array of AgentSummary | Yes | |
next_cursor | string or null | No | Cursor for the next page. The last page does not have this value. |
POST /v1/agents/{id}/provider-key-access/bindings
Attach a role to an agent.
The operation creates the global role attachment and updates the organization authorization version. The caller must hold every permission of the role unless the caller is an organization owner (403 `iam.privilege_escalation` or `iam.owner_required`).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Agent ID |
Request body (application/json, required): CreateAgentRoleBindingRequest
| Field | Type | Required | Description |
|---|---|---|---|
role_id | string | Yes | Role ID. |
Responses
| Status | Description | Body |
|---|---|---|
| 201 | Role attached to the agent runtime | AgentRoleBindingResponse |
201 response fields
| Field | Type | Required | Description |
|---|---|---|---|
binding_kind | string | Yes | |
role_id | string | Yes | |
role_name | string | Yes |
POST /v1/agents/{id}/provider-key-access/simulations
Simulate provider-key access for an agent.
The operation evaluates the agent's effective role and secret policies for one provider. It does not change the policies.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Agent ID |
Request body (application/json, required): SimulateAgentProviderAccessRequest
| Field | Type | Required | Description |
|---|---|---|---|
provider | string | Yes | Provider ID. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Agent provider-key access simulation | SimulateAgentProviderAccessResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
simulation | AgentProviderKeySimulation | Yes |
DELETE /v1/agents/{id}/provider-key-access/bindings/{role_id}
Detach a role from an agent.
The operation removes one global role attachment and updates the organization authorization version.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Agent ID |
role_id | path | string | Yes | Role ID |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Detach a role from the agent runtime | None |
GET /v1/gateways
List gateways.
Lists gateway records that the authenticated principal can read. An optional region key restricts the organization scope.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
region_key | query | string or null | No | Region key used to restrict the gateway list. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Gateway list | GatewayListResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
gateways | array of GatewaySummary | Yes | Gateway summaries in the selected region scope. |
POST /v1/gateways/{id}/machine-token
Rotate a connected-gateway machine token.
The operation revokes active runtime tokens and returns new one-time token material for the selected gateway.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Gateway resource ID |
Request body (application/json, required): RotateGatewayMachineTokenRequest
| Field | Type | Required | Description |
|---|---|---|---|
expires_in_seconds | integer (int64) or null | No |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Gateway machine token rotated | ConnectedGatewayRegistrationResponse |
| 400 | None | |
| 401 | None | |
| 403 | None | |
| 404 | None | |
| 500 | None |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
customer_api_origin | string or null | No | |
gateway_id | string | Yes | |
gateway_resource_id | string | Yes | |
machine_token | GatewayMachineTokenMaterial | Yes | One-time machine-token material returned during registration or rotation. |
name | string | Yes | |
runtime_location | string | Yes | |
runtime_registration_id | string | Yes | |
status | string | Yes |
Configuration templates
GET /v1/templates
List configuration templates.
Returns published configuration templates with catalog metadata and policy-chain summaries for the authenticated organization.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Configuration template catalog | ListTemplatesResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
templates | array of TemplateRow | Yes | Published template catalog entries. |
GET /v1/templates/{id}
Get a configuration template.
Returns one published configuration template with its catalog metadata, source context, and policy-chain summary.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Template ID or slug |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Configuration template | GetTemplateResponse |
| 404 | Template not found | ErrorEnvelope |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
template | TemplateRow | Yes | Published configuration template and its catalog metadata. |
Events and evidence
GET /v1/events
Query governance events.
Returns authorized organization events with filters and cursor pagination. Team access limits the returned event set.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
since | query | string | No | RFC 3339 or relative lower time bound |
cursor | query | string | No | Cursor from the previous page |
limit | query | integer (int64) | No | Maximum events to return |
source | query | string | No | Event source filter |
request_id | query | string | No | Request ID filter |
event_type | query | string | No | Event type filter |
agent_id | query | string | No | Agent ID filter |
team_id | query | string (uuid) | No | Team ID filter |
session_id | query | string | No | Session ID filter |
verdict | query | string | No | Decision verdict filter |
gateway_id | query | string | No | Gateway ID filter |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Governance event page | QueryEventsResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
events | array of Event | Yes | |
next_cursor | string or null | No |
GET /v1/exports/jobs/{id}/manifest
Get an export evidence manifest.
Returns the stored evidence manifest, artifact inventory, and integrity summary for a completed, unexpired export job.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | Export job ID |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Evidence manifest and integrity metadata | ExportJobManifestResponse |
| 409 | Export is not available or has no inspectable manifest | ErrorEnvelope |
| 410 | Export has expired | ErrorEnvelope |
| 413 | Compliance bundle exceeds an inspection limit | ErrorEnvelope |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
artifact_inventory | any | No | |
file_name | string | Yes | |
integrity | EvidenceIntegritySummary or null | No | |
job_id | string | Yes | |
manifest | any | Yes |
AI usage streaming
GET /v1/ai-usage-stream/delivery-health
Get AI usage delivery health.
Returns delivery counts, recent errors, last successful delivery times, and queue age for each organization destination.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Per-destination delivery health | DeliveryHealthResponse |
| 403 | Action grant is not sufficient | ErrorEnvelope |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
destinations | array of DestinationDeliveryHealth | Yes |
GET /v1/ai-usage-stream/destinations/{id}/delivery-status
Get destination delivery status.
Returns the 50 most recent delivery attempts for one organization destination, in descending creation order.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | Yes | Destination identifier |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Recent destination delivery attempts | DestinationDeliveryStatusResponse |
| 403 | Action grant is not sufficient | ErrorEnvelope |
| 404 | Destination not found | ErrorEnvelope |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
attempts | array of DeliveryAttemptResponse | Yes |
Context Fabric
POST /v1/context/register
Register a context session.
Creates or updates the repository and branch scope for one client session. Returns inherited context counts when the branch changes.
Request body (application/json, required): RegisterContextSessionRequest
| Field | Type | Required | Description |
|---|---|---|---|
branch | string | Yes | Source branch. |
commit | string or null | No | Source commit. |
repo | string | Yes | Source repository identifier. |
session_id | string | Yes | Client session ID. |
team_id | string or null | No | Team ID used for shared context. |
working_directory | string or null | No | Working directory within the repository. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Registered context session scope | ContextSessionRegistrationResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
branch | string | Yes | Source branch. |
branch_context_summary | BranchContextSummaryResponse or null | No | |
commit | string or null | No | Source commit. |
created_at | string | Yes | Registration creation time in RFC 3339 format. |
history_session_id | string | Yes | Backing History session ID. |
registration_id | string | Yes | Registration ID. |
repo | string | Yes | Source repository identifier. |
session_id | string | Yes | Client session ID. |
team_id | string or null | No | Team ID used for shared context. |
updated_at | string | Yes | Most recent registration update time in RFC 3339 format. |
working_directory | string or null | No | Working directory within the repository. |
POST /v1/context/share
Share a context document.
Stores a team or organization context document with source scope and provenance. Detects similar content and supports an explicit duplicate resolution.
Request body (application/json, required): ShareContextRequest
| Field | Type | Required | Description |
|---|---|---|---|
branch | string or null | No | Source branch. |
commit | string or null | No | Source commit. |
content | string | Yes | Context document content. |
content_addressable_ref | string or null | No | Content-addressable storage reference. |
duplicate_document_id | string or null | No | Existing context document ID selected for duplicate resolution. |
repo | string or null | No | Source repository. |
resolution | string or null | No | Duplicate resolution action: `replace`, `keep_both`, or `discard`. |
resolution_token | string or null | No | Token returned by a preceding duplicate prompt. |
session_id | string or null | No | Registered client session ID used to resolve source scope. |
source_kind | string or null | No | Context source kind. |
source_ref | any | No | Structured provenance reference. |
source_type | string or null | No | Provenance source type. |
tags | array of string | No | Search and classification tags. |
team_id | string or null | No | Team ID that owns the document. |
verification_hash | string or null | No | Hash of verification evidence. |
verified_by | string or null | No | Principal or system that verified the content. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Duplicate prompt or resolution result | ShareContextResponse |
| 201 | Context document stored | ShareContextResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
document | ContextDocumentResponse or null | No | |
duplicate_detected | ContextDuplicateDetectedResponse or null | No | |
resolution | string or null | No | Applied duplicate resolution. |
resolution_token | string or null | No | Token used to bind a duplicate resolution request. |
status | string | Yes | Share result state. |
POST /v1/context/search
Search context documents.
Searches safe, nonsuperseded context documents in the resolved organization, team, repository, branch, and agent scope. Returns ranked results and a direct answer when confidence is sufficient.
Request body (application/json, required): SearchContextRequest
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | No | Agent ID used to restrict results to cited documents. |
branch | string or null | No | Source branch used to restrict results. |
include_disputed | boolean or null | No | Includes disputed documents when true. |
limit | integer (int64) or null | No | Maximum result count. The maximum is 50. |
query | string | No | Search text. An empty value returns recent matching documents. |
repo | string or null | No | Source repository used to restrict results. |
session_id | string or null | No | Registered client session ID used to resolve source scope. |
team_id | string or null | No | Team ID used to restrict results. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Ranked context search results | SearchContextResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
confidence | string or null | No | Direct answer confidence label. |
direct_answer | ContextSuggestedAnswerResponse or null | No | |
direct_answer_confidence | number (double) or null | No | Confidence score of the direct answer source. |
direct_answer_source_document_ids | array of string | No | Context document IDs used for the direct answer. |
results | array of ContextDocumentResponse | Yes | Ranked matching context documents. |
suggested_answer | ContextSuggestedAnswerResponse or null | No |
GET /v1/context/recent
List recent context documents.
Lists recent safe, nonsuperseded context documents in the resolved team, repository, branch, and agent scope. Supports cursor pagination.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
session_id | query | string | No | Registered client session ID used to resolve source scope. |
team_id | query | string | No | Team ID used to restrict results. |
agent_id | query | string | No | Agent ID used to restrict results to cited documents. |
repo | query | string | No | Source repository used to restrict results. |
branch | query | string | No | Source branch used to restrict results. |
limit | query | integer (int64) | No | Maximum result count. The maximum is 50. |
cursor | query | string | No | Opaque cursor returned by the preceding page. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Recent context document page | RecentContextResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
items | array of ContextDocumentResponse | Yes | Recent context documents. |
next_cursor | string or null | No | Opaque cursor for the next page. |
POST /v1/context/verification/apply
Apply context verification outcomes.
Applies up to 25 verification states and confidence scores to context documents in the resolved team, repository, and branch scope.
Request body (application/json, required): ApplyVerificationOutcomesRequest
| Field | Type | Required | Description |
|---|---|---|---|
branch | string or null | No | Source branch used to restrict updates. |
outcomes | array of ApplyVerificationOutcomeRequest | Yes | Verification updates. The maximum count is 25. |
repo | string or null | No | Source repository used to restrict updates. |
session_id | string or null | No | Registered client session ID used to resolve source scope. |
team_id | string or null | No | Team ID used to restrict updates. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Context verification update results | ContextVerificationApplyResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
outcomes | array of ContextVerificationApplyOutcomeResponse | Yes | Result for each requested update. |
skipped | integer (int64) | Yes | Number of skipped documents. |
updated | integer (int64) | Yes | Number of updated documents. |
POST /v1/work-receipts
Create a work receipt.
Validates source scope, related agent traces, bounded evidence, and confidence. Stores a sanitized work receipt and records its Trail change.
Request body (application/json, required): CreateWorkReceiptRequest
| Field | Type | Required | Description |
|---|---|---|---|
agent_call_trace_id | string or null | No | |
agent_id | string or null | No | |
agent_tool_call_trace_ids | array of string | No | |
commands | array of WorkReceiptCommand | No | |
confidence_score | number (double) | Yes | |
errors | array of WorkReceiptError | No | |
evidence | array of WorkReceiptEvidence | No | |
files | array of WorkReceiptFile | No | |
final_outcome | string | Yes | |
git_branch | string or null | No | |
git_commit | string or null | No | |
git_repo | string | Yes | |
intent | string | Yes | |
normalized_prompt_hash | string | Yes | |
patch_summary | string or null | No | |
supersedes_receipt_id | string or null | No | |
symbols | array of WorkReceiptSymbol | No | |
task_fingerprint_hash | string | Yes | |
team_id | string or null | No | |
verification_status | string or null | No |
Responses
| Status | Description | Body |
|---|---|---|
| 201 | Created work receipt | WorkReceiptResponse |
| 422 | None |
201 response fields
| Field | Type | Required | Description |
|---|---|---|---|
agent_call_trace_id | string or null | No | |
agent_id | string or null | No | |
agent_tool_call_trace_ids | array of string | No | |
commands | array of WorkReceiptCommand | No | |
confidence_score | number (double) | Yes | |
created_at | string (date-time) | Yes | |
errors | array of WorkReceiptError | No | |
evidence | array of WorkReceiptEvidence | No | |
exact_hash_match | boolean or null | No | |
files | array of WorkReceiptFile | No | |
final_outcome | string | Yes | |
git_branch | string or null | No | |
git_commit | string or null | No | |
git_repo | string | Yes | |
intent | string | Yes | |
match_novelty_class | string or null | No | |
normalized_prompt_hash | string | Yes | |
patch_summary | string or null | No | |
receipt_id | string | Yes | |
superseded_by_receipt_id | string or null | No | |
supersedes_receipt_id | string or null | No | |
symbols | array of WorkReceiptSymbol | No | |
task_fingerprint_hash | string | Yes | |
team_id | string or null | No | |
updated_at | string (date-time) | Yes | |
verification_status | string | Yes |
POST /v1/work-receipts/search
Search work receipts.
Searches organization and team-scoped receipts by repository and task evidence. Returns bounded ranked matches with their stored evidence.
Request body (application/json, required): SearchWorkReceiptsRequest
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string or null | No | |
error_signature_hashes | array of string | No | |
file_paths | array of string | No | |
git_branch | string or null | No | |
git_repo | string | Yes | |
limit | integer (int32) or null | No | |
normalized_prompt_hash | string or null | No | |
symbols | array of string | No | |
task_fingerprint_hash | string or null | No | |
team_id | string or null | No |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Search results | SearchWorkReceiptsResponse |
| 422 | None |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
receipts | array of WorkReceiptResponse | Yes |
POST /v1/context-flush
Condense History context for reuse.
Condenses captured History entries when estimated context exceeds the provider token limit. Stores a reusable recall document when session capture permits it.
Request body (application/json, required): ContextFlushRequest
| Field | Type | Required | Description |
|---|---|---|---|
agent_id | string | Yes | Agent ID associated with the History session. |
context_plan_hash | string | Yes | Digest that makes the flush idempotent for the History session. |
conversation_id | string or null | No | Optional conversation ID associated with the request. |
estimated_tokens | integer (int32) | Yes | Current estimated context token count. |
history_session_id | string | Yes | History session ID to condense. |
provider_token_budget | integer (int32) | Yes | Provider token limit used to calculate the flush target. |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Context flush result | ContextFlushResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
condensation_id | string or null | No | New or existing History condensation ID. |
condensed_tokens | integer (int32) | Yes | Estimated tokens in the new condensation. |
recall_document_id | string or null | No | Recall document ID created from the condensation. |
DELETE /v1/context/by-user/{id}
Delete a user's context data.
Deletes organization-scoped context documents, feedback, and context session registrations owned by one user. History sessions remain unchanged.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | User ID whose context data will be deleted |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Purged context-fabric data for the user | PurgeContextByUserResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
purged | PurgeContextCounts | Yes | Deleted record counts. |
user_id | string | Yes | User ID. |
Discovery and health
GET /v1/openapi.json
Get the public OpenAPI document.
Returns the generated OpenAPI document for current operations, schemas, servers, authentication requirements, and discovery metadata.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Public OpenAPI JSON document for the Verdictan control-plane API | any |
GET /v1/health
Return the versioned API liveness state.
This public versioned route has the same process-only behavior as `/healthz`.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | The API process is alive | HealthResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | Process liveness state. |
GET /healthz
Return the API process liveness state.
This public probe reports whether the HTTP process can answer requests. It does not test database, storage, signing, or audit dependencies.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | The API process is alive | HealthResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | Process liveness state. |
GET /readyz
Return the API dependency readiness state.
This public probe checks database, signing, encryption, rate-limit, storage, audit-trail, and audit-anchor readiness.
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Required API dependencies are available | ReadinessResponse |
| 503 | One or more required API dependencies are unavailable | ReadinessResponse |
200 response fields
| Field | Type | Required | Description |
|---|---|---|---|
database | string | Yes | Database connectivity state. |
degraded_reasons | array of string | No | Machine-readable reasons for a degraded state. |
signing | string | Yes | Evidence-signing state. |
status | string | Yes | Overall readiness state. |
Next steps
- Control-plane API endpoints: find the task page for each route.
- Verdictan API overview: authenticate a request and read the error envelope.
- Permissions reference: find the permission that each operation needs.