openapi: 3.1.0
info:
title: Vijil Console API (Combined) agent-configurations Dome API
description: Combined OpenAPI specification for all vijil-console microservices.
version: 0.1.0
tags:
- name: Dome
description: Protection, guardrails, and telemetry
paths:
/v1/webhooks/register-dome:
post:
tags:
- Dome
summary: Register Dome
description: 'Register a Dome instance URL for an agent (called by Dome at runtime).
Idempotent: safe to call on every Dome restart; each call overwrites the
stored dome_url for that agent''s config.'
operationId: register_dome_v1_webhooks_register_dome_post
parameters:
- name: X-Webhook-Api-Key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Webhook-Api-Key
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterDomeRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterDomeResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/detections:
post:
tags:
- Dome
summary: Create Detection
description: 'Create a new detection request.
This endpoint accepts a detection request and starts processing it
asynchronously. The response includes the detection ID which can be
used to poll for results via GET /detections/{id}.
Note: This endpoint does not require authentication to support
the Execution Flow test input feature.'
operationId: create_detection_v1_detections_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DetectionRequest'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DetectionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/detections/{detection_id}:
get:
tags:
- Dome
summary: Get Detection
description: 'Get a detection by ID.
Returns the current status and results of a detection.
Status values:
- CREATED: Detection is queued for processing
- PROCESSING: Detection is being processed
- COMPLETED: Detection finished successfully
- ERROR: Detection failed
Note: This endpoint does not require authentication to support
the Execution Flow test input feature.'
operationId: get_detection_v1_detections__detection_id__get
parameters:
- name: detection_id
in: path
required: true
schema:
type: string
title: Detection Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DetectionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/dome-configs:
post:
tags:
- Dome
summary: Create Dome Config
description: 'Create a new Dome configuration.
If no config_body is provided, uses the default configuration.
A dome config is standalone and can be assigned to multiple agents via the agent''s dome_config_id.'
operationId: create_dome_config_v1_dome_configs_post
parameters:
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigCreate'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
get:
tags:
- Dome
summary: List Dome Configs
description: List dome configs for the team; optional filter by bound agent_id column.
operationId: list_dome_configs_v1_dome_configs_get
parameters:
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
- name: agent_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
description: If set, only configs whose dome_configs.agent_id matches (paginated).
title: Agent Id
description: If set, only configs whose dome_configs.agent_id matches (paginated).
- name: limit
in: query
required: false
schema:
type: integer
maximum: 1000
minimum: 1
description: Page size
default: 100
title: Limit
description: Page size
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
description: Pagination offset
default: 0
title: Offset
description: Pagination offset
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/dome-configs/{config_id}:
get:
tags:
- Dome
summary: Get Dome Config
description: Get a Dome configuration by ID.
operationId: get_dome_config_v1_dome_configs__config_id__get
parameters:
- name: config_id
in: path
required: true
schema:
type: string
format: uuid
title: Config Id
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
put:
tags:
- Dome
summary: Update Dome Config
description: Update a Dome configuration.
operationId: update_dome_config_v1_dome_configs__config_id__put
parameters:
- name: config_id
in: path
required: true
schema:
type: string
format: uuid
title: Config Id
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- Dome
summary: Patch Dome Config
description: Partially update a Dome configuration (e.g. set or clear dome instance URL).
operationId: patch_dome_config_v1_dome_configs__config_id__patch
parameters:
- name: config_id
in: path
required: true
schema:
type: string
format: uuid
title: Config Id
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigPatch'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Dome
summary: Delete Dome Config
description: Delete a Dome configuration.
operationId: delete_dome_config_v1_dome_configs__config_id__delete
parameters:
- name: config_id
in: path
required: true
schema:
type: string
format: uuid
title: Config Id
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/dome-configs/{config_id}/apply:
post:
tags:
- Dome
summary: Apply Dome Config
description: 'Apply a saved dome config: promotes config_pending.json to config.json and binds it to the agent.
Backs up the existing config.json as {config_id}_config.json, promotes
config_pending.json to config.json, and sets the agent''s dome_config_id
and protection_status to domed.'
operationId: apply_dome_config_v1_dome_configs__config_id__apply_post
parameters:
- name: config_id
in: path
required: true
schema:
type: string
format: uuid
title: Config Id
- name: team_id
in: query
required: true
schema:
type: string
format: uuid
description: Team ID (required)
title: Team Id
description: Team ID (required)
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomeConfigResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/default-dome-config:
get:
tags:
- Dome
summary: Get Default Dome Config
description: 'Get the default Dome configuration.
Returns the default guard configuration for new agents.
This endpoint does not require authentication.'
operationId: get_default_dome_config_v1_default_dome_config_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Get Default Dome Config V1 Default Dome Config Get
/v1/telemetry/counters/{metric_name}/total:
get:
tags:
- Dome
summary: Get Counter Total
description: Get total counter value.
operationId: get_counter_total_v1_telemetry_counters__metric_name__total_get
parameters:
- name: metric_name
in: path
required: true
schema:
type: string
title: Metric Name
- name: time_range
in: query
required: false
schema:
enum:
- 15m
- 30m
- 1h
- 2h
- 6h
- 1d
- 7d
- 30d
type: string
description: 'Time range: 15m, 30m, 1h, 2h, 6h, 1d, 7d, 30d'
default: 1d
title: Time Range
description: 'Time range: 15m, 30m, 1h, 2h, 6h, 1d, 7d, 30d'
- name: evaluation_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by evaluation ID
title: Evaluation Id
description: Filter by evaluation ID
- name: test_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by test ID
title: Test Id
description: Filter by test ID
- name: probe_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by probe ID
title: Probe Id
description: Filter by probe ID
- name: agent_configuration_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by agent configuration ID
title: Agent Configuration Id
description: Filter by agent configuration ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CounterTotalResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/telemetry/counters/{metric_name}/time_series:
get:
tags:
- Dome
summary: Get Counter Time Series
description: Get counter time series.
operationId: get_counter_time_series_v1_telemetry_counters__metric_name__time_series_get
parameters:
- name: metric_name
in: path
required: true
schema:
type: string
title: Metric Name
- name: time_range
in: query
required: false
schema:
enum:
- 15m
- 30m
- 1h
- 2h
- 6h
- 1d
- 7d
- 30d
type: string
description: 'Time range: 15m, 30m, 1h, 2h, 6h, 1d, 7d, 30d'
default: 1d
title: Time Range
description: 'Time range: 15m, 30m, 1h, 2h, 6h, 1d, 7d, 30d'
- name: evaluation_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by evaluation ID
title: Evaluation Id
description: Filter by evaluation ID
- name: agent_configuration_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by agent configuration ID
title: Agent Configuration Id
description: Filter by agent configuration ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MetricQueryResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/telemetry/latency/{metric_name}:
get:
tags:
- Dome
summary: Get Latency Over Time
description: Get latency over time.
operationId: get_latency_over_time_v1_telemetry_latency__metric_name__get
parameters:
- name: metric_name
in: path
required: true
schema:
type: string
title: Metric Name
- name: time_range
in: query
required: false
schema:
enum:
- 15m
- 30m
- 1h
- 2h
- 6h
- 1d
- 7d
- 30d
type: string
description: 'Time range: 15m, 30m, 1h, 2h, 6h, 1d, 7d, 30d'
default: 1h
title: Time Range
description: 'Time range: 15m, 30m, 1h, 2h, 6h, 1d, 7d, 30d'
- name: time_window
in: query
required: false
schema:
type: string
description: Time window for aggregation (e.g., '1m', '5m', '15m')
default: 1m
title: Time Window
description: Time window for aggregation (e.g., '1m', '5m', '15m')
- name: percentiles
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated list of percentiles to query (e.g., '0.5,0.95'). If not specified, defaults to [0.5, 0.9, 0.95, 0.99]
title: Percentiles
description: Comma-separated list of percentiles to query (e.g., '0.5,0.95'). If not specified, defaults to [0.5, 0.9, 0.95, 0.99]
- name: evaluation_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by evaluation ID
title: Evaluation Id
description: Filter by evaluation ID
- name: test_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by test ID
title: Test Id
description: Filter by test ID
- name: probe_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by probe ID
title: Probe Id
description: Filter by probe ID
- name: agent_configuration_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by agent configuration ID
title: Agent Configuration Id
description: Filter by agent configuration ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/LatencyOverTimeResponse'
title: Response Get Latency Over Time V1 Telemetry Latency Metric Name Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/telemetry/logs:
get:
tags:
- Dome
summary: Get Logs
description: Get logs.
operationId: get_logs_v1_telemetry_logs_get
parameters:
- name: time_range
in: query
required: false
schema:
enum:
- 15m
- 30m
- 1h
- 2h
- 6h
- 1d
- 7d
- 30d
type: string
description: Window to pull logs for
default: 1h
title: Time Range
description: Window to pull logs for
- name: service_name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by service_name label
title: Service Name
description: Filter by service_name label
- name: level
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by level label
title: Level
description: Filter by level label
- name: job
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by job label
title: Job
description: Filter by job label
- name: exporter
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by exporter label
title: Exporter
description: Filter by exporter label
- name: agent_configuration_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Restrict to a specific agent configuration id
title: Agent Configuration Id
description: Restrict to a specific agent configuration id
- name: evaluation_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Restrict logs to an evaluation id
title: Evaluation Id
description: Restrict logs to an evaluation id
- name: test_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Restrict logs to a test id
title: Test Id
description: Restrict logs to a test id
- name: probe_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Restrict logs to a probe id
title: Probe Id
description: Restrict logs to a probe id
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Substring search applied via LogQL pipeline
title: Search
description: Substring search applied via LogQL pipeline
- name: logql
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Advanced LogQL expression (overrides generated selector when provided)
title: Logql
description: Advanced LogQL expression (overrides generated selector when provided)
- name: limit
in: query
required: false
schema:
type: integer
maximum: 5000
minimum: 1
description: Maximum log lines to return
default: 200
title: Limit
description: Maximum log lines to return
- name: direction
in: query
required: false
schema:
enum:
- forward
- backward
type: string
description: Return order for log entries
default: backward
title: Direction
description: Return order for log entries
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/LogsQueryResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/telemetry/traces:
get:
tags:
- Dome
summary: Search Traces
description: Search traces.
operationId: search_traces_v1_telemetry_traces_get
parameters:
- name: time_range
in: query
required: false
schema:
enum:
- 15m
- 30m
- 1h
- 2h
- 6h
- 1d
- 7d
- 30d
type: string
description: Window to search for traces
default: 1h
title: Time Range
description: Window to search for traces
- name: limit
in: query
required: false
schema:
type: integer
maximum: 200
minimum: 1
description: Maximum number of traces to return
default: 20
title: Limit
description: Maximum number of traces to return
- name: service_name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by root service
title: Service Name
description: Filter by root service
- name: agent_configuration_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by agent id
title: Agent Configuration Id
description: Filter by agent id
- name: min_duration_ms
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: Lower bound on trace duration (ms)
title: Min Duration Ms
description: Lower bound on trace duration (ms)
- name: max_duration_ms
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: Upper bound on trace duration (ms)
title: Max Duration Ms
description: Upper bound on trace duration (ms)
- name: query
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Advanced TraceQL query
title: Query
description: Advanced TraceQL query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TraceSearchResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/telemetry/traces/{trace_id}:
get:
tags:
- Dome
summary: Get Trace By Id
description: Get trace by ID.
operationId: get_trace_by_id_v1_telemetry_traces__trace_id__get
parameters:
- name: trace_id
in: path
required: true
schema:
type: string
title: Trace Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TraceDetailResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
DetectionParams:
properties:
api_key_proxy:
anyOf:
- type: string
- type: 'null'
title: Api Key Proxy
hub:
anyOf:
- type: string
- type: 'null'
title: Hub
model:
anyOf:
- type: string
- type: 'null'
title: Model
type: object
title: DetectionParams
description: Parameters for a detection request.
DomeConfigUpdate:
properties:
config_body:
additionalProperties: true
type: object
title: Config Body
description: Updated guard configuration.
type: object
required:
- config_body
title: DomeConfigUpdate
description: Request model for updating a Dome configuration.
DetectionResponse:
properties:
id:
type: string
title: Id
status:
type: string
title: Status
detector_inputs:
items:
$ref: '#/components/schemas/DetectionInput'
type: array
title: Detector Inputs
detector_outputs:
items:
$ref: '#/components/schemas/DetectionOutput'
type: array
title: Detector Outputs
error_message:
anyOf:
- type: string
- type: 'null'
title: Error Message
type: object
required:
- id
- status
title: DetectionResponse
description: Response model for a detection.
LatencyOverTimeResponse:
properties:
metric_name:
type: string
title: Metric Name
description: Name of the latency metric
time_window:
type: string
title: Time Window
description: Time window used for aggregation (e.g., '1m')
percentile:
type: string
title: Percentile
description: Percentile value (e.g., 'P50', 'P95')
values:
items:
$ref: '#/components/schemas/TimeSeriesPoint'
type: array
title: Values
description: Latency data points over time
type: object
required:
- metric_name
- time_window
- percentile
- values
title: LatencyOverTimeResponse
description: Response model for latency over time
TraceSummaryResponse:
properties:
trace_id:
type: string
title: Trace Id
description: Hex encoded trace identifier
root_service_name:
anyOf:
- type: string
- type: 'null'
title: Root Service Name
root_trace_name:
anyOf:
- type: string
- type: 'null'
title: Root Trace Name
start_time_unix_nano:
anyOf:
- type: integer
- type: 'null'
title: Start Time Unix Nano
duration_ms:
anyOf:
- type: number
- type: 'null'
title: Duration Ms
type: object
required:
- trace_id
title: TraceSummaryResponse
RegisterDomeRequest:
properties:
agent_id:
type: string
format: uuid
title: Agent Id
description: The agent being protected
team_id:
type: string
format: uuid
title: Team Id
description: Team that owns the agent
dome_url:
type: string
maxLength: 2083
minLength: 1
format: uri
title: Dome Url
description: Base URL of the Dome instance
type: object
required:
- agent_id
- team_id
- dome_url
title: RegisterDomeRequest
description: Request body for register-dome webhook.
DomeConfigCreate:
properties:
config_body:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Config Body
description: Guard configuration. If not provided, uses default config.
agent_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Agent Id
description: Agent to bind this config to. When set, writes config_pending.json to storage.
type: object
title: DomeConfigCreate
description: Request model for creating a Dome configuration.
TraceSearchMetricsResponse:
properties:
inspectedTraces:
# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vijil/refs/heads/main/openapi/vijil-dome-api-openapi.yml