2026-03-13 14:23:56 +01:00
{
"openapi" : "3.1.0" ,
"info" : {
"title" : "OpenAPI definition" ,
"version" : "v0"
} ,
"servers" : [
{
"url" : "http://192.168.50.86:30081" ,
"description" : "Generated server url"
}
] ,
"tags" : [
{
"name" : "Agent SSE" ,
"description" : "Server-Sent Events endpoint for agent communication"
} ,
{
"name" : "Agent Commands" ,
"description" : "Command push endpoints for agent communication"
} ,
{
"name" : "Agent Management" ,
"description" : "Agent registration and lifecycle endpoints"
} ,
{
"name" : "Ingestion" ,
"description" : "Data ingestion endpoints"
} ,
{
"name" : "Diagrams" ,
"description" : "Diagram rendering endpoints"
} ,
{
"name" : "Detail" ,
"description" : "Execution detail and processor snapshot endpoints"
} ,
{
"name" : "Search" ,
"description" : "Transaction search endpoints"
}
] ,
"paths" : {
"/api/v1/search/executions" : {
"get" : {
"tags" : [
"Search"
] ,
"summary" : "Search executions with basic filters" ,
"operationId" : "searchGet" ,
"parameters" : [
{
"name" : "status" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "timeFrom" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string" ,
"format" : "date-time"
}
} ,
{
"name" : "timeTo" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string" ,
"format" : "date-time"
}
} ,
{
"name" : "correlationId" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "text" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
} ,
2026-03-13 17:50:08 +01:00
{
"name" : "routeId" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "agentId" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "processorType" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
} ,
2026-03-13 14:23:56 +01:00
{
"name" : "offset" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "integer" ,
"format" : "int32" ,
"default" : 0
}
} ,
{
"name" : "limit" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "integer" ,
"format" : "int32" ,
"default" : 50
}
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"$ref" : "#/components/schemas/SearchResultExecutionSummary"
}
}
}
}
}
} ,
"post" : {
"tags" : [
"Search"
] ,
"summary" : "Advanced search with all filters" ,
"operationId" : "searchPost" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SearchRequest"
}
}
} ,
"required" : true
} ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"$ref" : "#/components/schemas/SearchResultExecutionSummary"
}
}
}
}
}
}
} ,
"/api/v1/data/metrics" : {
"post" : {
"tags" : [
"Ingestion"
] ,
"summary" : "Ingest agent metrics" ,
"description" : "Accepts an array of MetricsSnapshot objects" ,
"operationId" : "ingestMetrics" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"202" : {
"description" : "Data accepted for processing"
} ,
"503" : {
"description" : "Buffer full, retry later"
}
}
}
} ,
"/api/v1/data/executions" : {
"post" : {
"tags" : [
"Ingestion"
] ,
"summary" : "Ingest route execution data" ,
"description" : "Accepts a single RouteExecution or an array of RouteExecutions" ,
"operationId" : "ingestExecutions" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"202" : {
"description" : "Data accepted for processing"
} ,
"503" : {
"description" : "Buffer full, retry later"
}
}
}
} ,
"/api/v1/data/diagrams" : {
"post" : {
"tags" : [
"Ingestion"
] ,
"summary" : "Ingest route diagram data" ,
"description" : "Accepts a single RouteGraph or an array of RouteGraphs" ,
"operationId" : "ingestDiagrams" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"202" : {
"description" : "Data accepted for processing"
} ,
"503" : {
"description" : "Buffer full, retry later"
}
}
}
} ,
"/api/v1/auth/refresh" : {
"post" : {
"tags" : [
"ui-auth-controller"
] ,
"operationId" : "refresh" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/RefreshRequest"
}
}
} ,
"required" : true
} ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "object"
}
}
}
}
}
}
} ,
"/api/v1/auth/login" : {
"post" : {
"tags" : [
"ui-auth-controller"
] ,
"operationId" : "login" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/LoginRequest"
}
}
} ,
"required" : true
} ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "object"
}
}
}
}
}
}
} ,
"/api/v1/agents/{id}/refresh" : {
"post" : {
"tags" : [
"Agent Management"
] ,
"summary" : "Refresh access token" ,
"description" : "Issues a new access JWT from a valid refresh token" ,
"operationId" : "refresh_1" ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"200" : {
"description" : "New access token issued" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"401" : {
"description" : "Invalid or expired refresh token" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"404" : {
"description" : "Agent not found" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
}
}
}
} ,
"/api/v1/agents/{id}/heartbeat" : {
"post" : {
"tags" : [
"Agent Management"
] ,
"summary" : "Agent heartbeat ping" ,
"description" : "Updates the agent's last heartbeat timestamp" ,
"operationId" : "heartbeat" ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Heartbeat accepted"
} ,
"404" : {
"description" : "Agent not registered"
}
}
}
} ,
"/api/v1/agents/{id}/commands" : {
"post" : {
"tags" : [
"Agent Commands"
] ,
"summary" : "Send command to a specific agent" ,
"description" : "Sends a config-update, deep-trace, or replay command to the specified agent" ,
"operationId" : "sendCommand" ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"202" : {
"description" : "Command accepted" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"400" : {
"description" : "Invalid command payload" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"404" : {
"description" : "Agent not registered" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
}
}
}
} ,
"/api/v1/agents/{id}/commands/{commandId}/ack" : {
"post" : {
"tags" : [
"Agent Commands"
] ,
"summary" : "Acknowledge command receipt" ,
"description" : "Agent acknowledges that it has received and processed a command" ,
"operationId" : "acknowledgeCommand" ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "commandId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Command acknowledged"
} ,
"404" : {
"description" : "Command not found"
}
}
}
} ,
"/api/v1/agents/register" : {
"post" : {
"tags" : [
"Agent Management"
] ,
"summary" : "Register an agent" ,
"description" : "Registers a new agent or re-registers an existing one. Requires bootstrap token in Authorization header." ,
"operationId" : "register" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"200" : {
"description" : "Agent registered successfully" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"400" : {
"description" : "Invalid registration payload" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"401" : {
"description" : "Missing or invalid bootstrap token" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
}
}
}
} ,
"/api/v1/agents/groups/{group}/commands" : {
"post" : {
"tags" : [
"Agent Commands"
] ,
"summary" : "Send command to all agents in a group" ,
"description" : "Sends a command to all LIVE agents in the specified group" ,
"operationId" : "sendGroupCommand" ,
"parameters" : [
{
"name" : "group" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"202" : {
"description" : "Commands accepted" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"400" : {
"description" : "Invalid command payload" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
}
}
}
} ,
"/api/v1/agents/commands" : {
"post" : {
"tags" : [
"Agent Commands"
] ,
"summary" : "Broadcast command to all live agents" ,
"description" : "Sends a command to all agents currently in LIVE state" ,
"operationId" : "broadcastCommand" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"type" : "string"
}
}
} ,
"required" : true
} ,
"responses" : {
"202" : {
"description" : "Commands accepted" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"400" : {
"description" : "Invalid command payload" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
}
}
}
} ,
2026-03-13 17:50:08 +01:00
"/api/v1/search/stats" : {
"get" : {
"tags" : [
"Search"
] ,
"summary" : "Aggregate execution stats (P99 latency, active count)" ,
"operationId" : "stats" ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"$ref" : "#/components/schemas/ExecutionStats"
}
}
}
}
}
}
} ,
2026-03-13 14:23:56 +01:00
"/api/v1/executions/{executionId}" : {
"get" : {
"tags" : [
"Detail"
] ,
"summary" : "Get execution detail with nested processor tree" ,
"operationId" : "getDetail" ,
"parameters" : [
{
"name" : "executionId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"$ref" : "#/components/schemas/ExecutionDetail"
}
}
}
}
}
}
} ,
"/api/v1/executions/{executionId}/processors/{index}/snapshot" : {
"get" : {
"tags" : [
"Detail"
] ,
"summary" : "Get exchange snapshot for a specific processor" ,
"operationId" : "getProcessorSnapshot" ,
"parameters" : [
{
"name" : "executionId" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "index" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "integer" ,
"format" : "int32"
}
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "object" ,
"additionalProperties" : {
"type" : "string"
}
}
}
}
}
}
}
} ,
"/api/v1/diagrams/{contentHash}/render" : {
"get" : {
"tags" : [
"Diagrams"
] ,
"summary" : "Render a route diagram" ,
"description" : "Returns SVG (default) or JSON layout based on Accept header" ,
"operationId" : "renderDiagram" ,
"parameters" : [
{
"name" : "contentHash" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Diagram rendered successfully" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "object"
}
}
}
} ,
"404" : {
"description" : "Diagram not found" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "object"
}
}
}
}
}
}
} ,
"/api/v1/agents" : {
"get" : {
"tags" : [
"Agent Management"
] ,
"summary" : "List all agents" ,
"description" : "Returns all registered agents, optionally filtered by status" ,
"operationId" : "listAgents" ,
"parameters" : [
{
"name" : "status" ,
"in" : "query" ,
"required" : false ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "Agent list returned" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
} ,
"400" : {
"description" : "Invalid status filter" ,
"content" : {
"*/*" : {
"schema" : {
"type" : "string"
}
}
}
}
}
}
} ,
"/api/v1/agents/{id}/events" : {
"get" : {
"tags" : [
"Agent SSE"
] ,
"summary" : "Open SSE event stream" ,
"description" : "Opens a Server-Sent Events stream for the specified agent. Commands (config-update, deep-trace, replay) are pushed as events. Ping keepalive comments sent every 15 seconds." ,
"operationId" : "events" ,
"parameters" : [
{
"name" : "id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string"
}
} ,
{
"name" : "Last-Event-ID" ,
"in" : "header" ,
"description" : "Last received event ID (no replay, acknowledged only)" ,
"required" : false ,
"schema" : {
"type" : "string"
}
}
] ,
"responses" : {
"200" : {
"description" : "SSE stream opened" ,
"content" : {
"text/event-stream" : {
"schema" : {
"$ref" : "#/components/schemas/SseEmitter"
}
}
}
} ,
"404" : {
"description" : "Agent not registered" ,
"content" : {
"text/event-stream" : {
"schema" : {
"$ref" : "#/components/schemas/SseEmitter"
}
}
}
}
}
}
}
} ,
"components" : {
"schemas" : {
"SearchRequest" : {
"type" : "object" ,
"properties" : {
"status" : {
"type" : "string"
} ,
"timeFrom" : {
"type" : "string" ,
"format" : "date-time"
} ,
"timeTo" : {
"type" : "string" ,
"format" : "date-time"
} ,
"durationMin" : {
"type" : "integer" ,
"format" : "int64"
} ,
"durationMax" : {
"type" : "integer" ,
"format" : "int64"
} ,
"correlationId" : {
"type" : "string"
} ,
"text" : {
"type" : "string"
} ,
"textInBody" : {
"type" : "string"
} ,
"textInHeaders" : {
"type" : "string"
} ,
"textInErrors" : {
"type" : "string"
} ,
2026-03-13 17:50:08 +01:00
"routeId" : {
"type" : "string"
} ,
"agentId" : {
"type" : "string"
} ,
"processorType" : {
"type" : "string"
} ,
2026-03-13 14:23:56 +01:00
"offset" : {
"type" : "integer" ,
"format" : "int32"
} ,
"limit" : {
"type" : "integer" ,
"format" : "int32"
}
}
} ,
"ExecutionSummary" : {
"type" : "object" ,
"properties" : {
"executionId" : {
"type" : "string"
} ,
"routeId" : {
"type" : "string"
} ,
"agentId" : {
"type" : "string"
} ,
"status" : {
"type" : "string"
} ,
"startTime" : {
"type" : "string" ,
"format" : "date-time"
} ,
"endTime" : {
"type" : "string" ,
"format" : "date-time"
} ,
"durationMs" : {
"type" : "integer" ,
"format" : "int64"
} ,
"correlationId" : {
"type" : "string"
} ,
"errorMessage" : {
"type" : "string"
} ,
"diagramContentHash" : {
"type" : "string"
}
}
} ,
"SearchResultExecutionSummary" : {
"type" : "object" ,
"properties" : {
"data" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/ExecutionSummary"
}
} ,
"total" : {
"type" : "integer" ,
"format" : "int64"
} ,
"offset" : {
"type" : "integer" ,
"format" : "int32"
} ,
"limit" : {
"type" : "integer" ,
"format" : "int32"
}
}
} ,
"RefreshRequest" : {
"type" : "object" ,
"properties" : {
"refreshToken" : {
"type" : "string"
}
}
} ,
"LoginRequest" : {
"type" : "object" ,
"properties" : {
"username" : {
"type" : "string"
} ,
"password" : {
"type" : "string"
}
}
} ,
2026-03-13 17:50:08 +01:00
"ExecutionStats" : {
"type" : "object" ,
"properties" : {
"p99LatencyMs" : {
"type" : "integer" ,
"format" : "int64"
} ,
"activeCount" : {
"type" : "integer" ,
"format" : "int64"
}
}
} ,
2026-03-13 14:23:56 +01:00
"ExecutionDetail" : {
"type" : "object" ,
"properties" : {
"executionId" : {
"type" : "string"
} ,
"routeId" : {
"type" : "string"
} ,
"agentId" : {
"type" : "string"
} ,
"status" : {
"type" : "string"
} ,
"startTime" : {
"type" : "string" ,
"format" : "date-time"
} ,
"endTime" : {
"type" : "string" ,
"format" : "date-time"
} ,
"durationMs" : {
"type" : "integer" ,
"format" : "int64"
} ,
"correlationId" : {
"type" : "string"
} ,
"exchangeId" : {
"type" : "string"
} ,
"errorMessage" : {
"type" : "string"
} ,
"errorStackTrace" : {
"type" : "string"
} ,
"diagramContentHash" : {
"type" : "string"
} ,
"processors" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/ProcessorNode"
}
}
}
} ,
"ProcessorNode" : {
"type" : "object" ,
"properties" : {
"processorId" : {
"type" : "string"
} ,
"processorType" : {
"type" : "string"
} ,
"status" : {
"type" : "string"
} ,
"startTime" : {
"type" : "string" ,
"format" : "date-time"
} ,
"endTime" : {
"type" : "string" ,
"format" : "date-time"
} ,
"durationMs" : {
"type" : "integer" ,
"format" : "int64"
} ,
"diagramNodeId" : {
"type" : "string"
} ,
"errorMessage" : {
"type" : "string"
} ,
"errorStackTrace" : {
"type" : "string"
}
}
} ,
"SseEmitter" : {
"type" : "object" ,
"properties" : {
"timeout" : {
"type" : "integer" ,
"format" : "int64"
}
}
}
}
}
}