{ "openapi": "3.1.1", "info": { "title": "monitor-backend | v1", "version": "1.0.0" }, "paths": { "/api/public/overview": { "get": { "tags": [ "public" ], "summary": "Ranking of all lines over a time range", "operationId": "overview_get", "parameters": [ { "name": "range", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } }, { "name": "preset", "in": "query", "schema": { "type": "string" } }, { "name": "metrics", "in": "query", "schema": { "type": "string" } }, { "name": "sort", "in": "query", "schema": { "type": "string" } }, { "name": "order", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OverviewDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "503": { "description": "Service Unavailable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/lines/{line_id}": { "get": { "tags": [ "public" ], "summary": "One line", "operationId": "lines_get", "parameters": [ { "name": "line_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LineDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/lines/{line_id}/series": { "get": { "tags": [ "public" ], "summary": "Time series of one line (columnar)", "operationId": "lines_series", "parameters": [ { "name": "line_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "range", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } }, { "name": "step", "in": "query", "schema": { "type": "string" } }, { "name": "tz", "in": "query", "schema": { "type": "string" } }, { "name": "preset", "in": "query", "schema": { "type": "string" } }, { "name": "metrics", "in": "query", "schema": { "type": "string" } }, { "name": "anchor", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SeriesDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "503": { "description": "Service Unavailable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/compare": { "get": { "tags": [ "public" ], "summary": "One metric across several lines, aligned on one time axis", "operationId": "lines_compare", "parameters": [ { "name": "lines", "in": "query", "schema": { "type": "string" } }, { "name": "metric", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "range", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } }, { "name": "step", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompareDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "503": { "description": "Service Unavailable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/lines/{line_id}/distribution": { "get": { "tags": [ "public" ], "summary": "Histogram and CDF of a histogram metric", "operationId": "lines_distribution", "parameters": [ { "name": "line_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "metric", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "range", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributionDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "503": { "description": "Service Unavailable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/lines/{line_id}/heatmap": { "get": { "tags": [ "public" ], "summary": "Time by latency heat map", "operationId": "lines_heatmap", "parameters": [ { "name": "line_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "metric", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "range", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } }, { "name": "step", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HeatmapDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "503": { "description": "Service Unavailable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/tests/{test_id}": { "get": { "tags": [ "public" ], "summary": "A test with its result", "operationId": "tests_get", "parameters": [ { "name": "test_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/live": { "get": { "tags": [ "public" ], "summary": "Server-sent events: nodes, overview, series and test topics", "operationId": "live_stream", "responses": { "200": { "description": "OK" }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/hosts": { "get": { "tags": [ "public" ], "summary": "Latest host resource usage of every visible agent (no hardware model, no addresses)", "operationId": "hosts_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfHostItemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/agents/{agent_id}/host": { "get": { "tags": [ "public" ], "summary": "Host resource usage history of one agent (columnar, averaged per step)", "operationId": "hosts_history", "parameters": [ { "name": "agent_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "range", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostSeriesDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/catalog/kinds": { "get": { "tags": [ "catalog" ], "summary": "Measurement kinds with their building blocks and parameter specs", "operationId": "catalog_kinds", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfKindDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/catalog/plans": { "get": { "tags": [ "catalog" ], "summary": "On-demand test plans", "operationId": "catalog_plans", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfPlanDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/catalog/metrics": { "get": { "tags": [ "catalog" ], "summary": "Metric ids with unit, label, direction, thresholds and version", "operationId": "catalog_metrics", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfMetricDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/catalog/presets": { "get": { "tags": [ "catalog" ], "summary": "Metric groups the front end can display", "operationId": "catalog_presets", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfPresetDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/catalog/models": { "get": { "tags": [ "catalog" ], "summary": "Service models and the metrics they need", "operationId": "catalog_models", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfModelDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/auth/login": { "post": { "tags": [ "admin-auth" ], "summary": "Sign in with a username and password", "operationId": "auth_login", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/auth/logout": { "post": { "tags": [ "admin-auth" ], "summary": "Sign out and clear the session cookie", "operationId": "auth_logout", "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/auth/me": { "get": { "tags": [ "admin-auth" ], "summary": "The current identity", "operationId": "auth_me", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents": { "get": { "tags": [ "admin-agents" ], "summary": "All agents including pending and disabled ones", "operationId": "agents_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfAgentDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents/{id}": { "get": { "tags": [ "admin-agents" ], "summary": "One agent", "operationId": "agents_get", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "patch": { "tags": [ "admin-agents" ], "summary": "Update name, labels, public host or visibility (merge-patch, If-Match supported)", "operationId": "agents_update", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/AgentPatchRequest" } }, "application/json": { "schema": { "$ref": "#/components/schemas/AgentPatchRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "412": { "description": "Precondition Failed", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "delete": { "tags": [ "admin-agents" ], "summary": "Delete an agent; history expires with the retention policy", "operationId": "agents_delete", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents/{id}/approve": { "post": { "tags": [ "admin-agents" ], "summary": "Approve a pending agent", "operationId": "agents_approve", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents/{id}/disable": { "post": { "tags": [ "admin-agents" ], "summary": "Disable an agent and drop its connection", "operationId": "agents_disable", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents/{id}/enable": { "post": { "tags": [ "admin-agents" ], "summary": "Enable a disabled agent", "operationId": "agents_enable", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents/{id}/takeover": { "post": { "tags": [ "admin-agents" ], "summary": "Replace the existing node of the same name with this pending one, keeping history", "operationId": "agents_takeover", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AgentDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/join-tokens": { "get": { "tags": [ "admin-join-tokens" ], "summary": "Join tokens", "operationId": "join_tokens_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfJoinTokenDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "post": { "tags": [ "admin-join-tokens" ], "summary": "Create a join token; the plaintext is returned only once", "operationId": "join_tokens_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateJoinTokenRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatedJoinTokenDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/join-tokens/{id}": { "delete": { "tags": [ "admin-join-tokens" ], "summary": "Revoke a join token", "operationId": "join_tokens_revoke", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/probes": { "get": { "tags": [ "admin-probe" ], "summary": "All probes, with the agents each one is connected to", "operationId": "probes_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfProbeDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "post": { "tags": [ "admin-probe" ], "summary": "Create a probe identity; the private key is returned only once", "operationId": "probes_create", "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CreateProbeRequest" } ] } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProbeIdentityDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/probes/{id}": { "get": { "tags": [ "admin-probe" ], "summary": "One probe", "operationId": "probes_get", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProbeDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "patch": { "tags": [ "admin-probe" ], "summary": "Rename a probe", "operationId": "probes_update", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchProbeRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProbeDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "delete": { "tags": [ "admin-probe" ], "summary": "Delete a probe and its lines; stored data expires with the retention policy", "operationId": "probes_delete", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/probes/{id}/rotate": { "post": { "tags": [ "admin-probe" ], "summary": "Give a probe a new key (same id): the old key stops working and its sessions are dropped; the new probe.json is returned only once", "operationId": "probes_rotate", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProbeIdentityDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/probes/{id}/revoke": { "post": { "tags": [ "admin-probe" ], "summary": "Revoke a probe: every agent drops its session and refuses it; history stays until it expires", "operationId": "probes_revoke", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProbeDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/agents/{id}/probes/{probe_id}/disconnect": { "post": { "tags": [ "admin-agents" ], "summary": "Make an agent drop one probe's session (the probe reconnects unless it is revoked)", "operationId": "agents_probe_disconnect", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "probe_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/tasks": { "get": { "tags": [ "admin-tasks" ], "summary": "Tasks: line templates, per-agent overrides and target tasks", "operationId": "tasks_list", "parameters": [ { "name": "agent_id", "in": "query", "schema": { "type": "string" } }, { "name": "scope", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfTaskDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "post": { "tags": [ "admin-tasks" ], "summary": "Create a task; params are validated against the kind", "operationId": "tasks_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTaskRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/tasks/{id}": { "get": { "tags": [ "admin-tasks" ], "summary": "One task", "operationId": "tasks_get", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "patch": { "tags": [ "admin-tasks" ], "summary": "Change params, schedule, target or enabled (merge-patch, If-Match supported)", "operationId": "tasks_update", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/PatchTaskRequest" } }, "application/json": { "schema": { "$ref": "#/components/schemas/PatchTaskRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "412": { "description": "Precondition Failed", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "delete": { "tags": [ "admin-tasks" ], "summary": "Delete a task", "operationId": "tasks_delete", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/lines/{line_id}/tests": { "post": { "tags": [ "admin-tests" ], "summary": "Start an on-demand test on a line", "operationId": "tests_start", "parameters": [ { "name": "line_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StartTestRequestDto" } } }, "required": true }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "get": { "tags": [ "admin-tests" ], "summary": "Recent tests of a line", "operationId": "tests_list", "parameters": [ { "name": "line_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfTestDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/tests/{id}/cancel": { "post": { "tags": [ "admin-tests" ], "summary": "Cancel a running test", "operationId": "tests_cancel", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/raw/chunks": { "get": { "tags": [ "admin-data" ], "summary": "Raw chunk metadata", "operationId": "raw_chunks_list", "parameters": [ { "name": "agent_id", "in": "query", "schema": { "type": "string" } }, { "name": "kind", "in": "query", "schema": { "type": "string" } }, { "name": "test_id", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } }, { "name": "limit", "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } }, { "name": "cursor", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfRawChunkMetaDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/raw/chunks/{chunk_id}": { "get": { "tags": [ "admin-data" ], "summary": "Download a raw chunk (application/vnd.monitor.rawchunk)", "operationId": "raw_chunks_get", "parameters": [ { "name": "chunk_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "410": { "description": "Gone", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/events": { "get": { "tags": [ "admin-data" ], "summary": "Agent events", "operationId": "events_list", "parameters": [ { "name": "agent_id", "in": "query", "schema": { "type": "string" } }, { "name": "kind", "in": "query", "schema": { "type": "string" } }, { "name": "from", "in": "query", "schema": { "format": "date-time" } }, { "name": "to", "in": "query", "schema": { "format": "date-time" } }, { "name": "limit", "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } }, { "name": "cursor", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfEventDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/analysis/recompute": { "get": { "tags": [ "admin-data" ], "summary": "Progress of the metric backfill", "operationId": "analysis_recompute_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecomputeDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/api-tokens": { "get": { "tags": [ "admin-api-tokens" ], "summary": "API tokens", "operationId": "api_tokens_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfApiTokenDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "post": { "tags": [ "admin-api-tokens" ], "summary": "Create an API token (scope read or admin); the plaintext is returned only once", "operationId": "api_tokens_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateApiTokenRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatedApiTokenDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/api-tokens/{id}": { "delete": { "tags": [ "admin-api-tokens" ], "summary": "Revoke an API token", "operationId": "api_tokens_revoke", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/settings": { "get": { "tags": [ "admin-settings" ], "summary": "Site settings and retention periods", "operationId": "settings_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfSettingDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "patch": { "tags": [ "admin-settings" ], "summary": "Change settings (merge-patch)", "operationId": "settings_update", "requestBody": { "content": { "application/merge-patch+json": { "schema": { "type": "object" } }, "application/json": { "schema": { "type": "object" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfSettingDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/users": { "get": { "tags": [ "admin-users" ], "summary": "Panel users", "operationId": "users_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfUserDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } }, "post": { "tags": [ "admin-users" ], "summary": "Create a panel user", "operationId": "users_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUserRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserDto" } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/users/{id}": { "patch": { "tags": [ "admin-users" ], "summary": "Change a user's password", "operationId": "users_update", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangePasswordRequest" } } }, "required": true }, "responses": { "204": { "description": "No Content", "content": { "application/json": { "schema": { } } } }, "400": { "description": "Bad Request", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/healthz": { "get": { "tags": [ "ops" ], "summary": "SQLite and the raw data directory are both writable", "operationId": "health_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthDto" } } } }, "503": { "description": "Service Unavailable", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/metrics": { "get": { "tags": [ "ops" ], "summary": "Prometheus metrics (admin token)", "operationId": "metrics_get", "responses": { "200": { "description": "OK" }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/install.sh": { "get": { "tags": [ "ops" ], "summary": "Installer for Linux nodes", "operationId": "install_sh", "responses": { "501": { "description": "Not Implemented", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/install.ps1": { "get": { "tags": [ "ops" ], "summary": "Installer for Windows nodes", "operationId": "install_ps1", "responses": { "501": { "description": "Not Implemented", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/agent/v1/enroll": { "post": { "tags": [ "agent" ], "summary": "Enroll a node with a join token", "operationId": "fleet_enroll", "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "AgentDto": { "required": [ "id", "name", "status", "online", "probe_connected", "probes", "host", "public_host", "probe_tcp_port", "probe_udp_ports", "labels", "public_visible", "kinds", "agent_version", "local_limits", "task_version", "applied_task_version", "rejected", "heartbeat", "endpoint_changes", "created_at", "last_seen_at" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string" }, "online": { "type": "boolean" }, "probe_connected": { "type": "boolean" }, "probes": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectedProbeDto" } }, "host": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/HostDto" } ] }, "public_host": { "type": "string" }, "probe_tcp_port": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "probe_udp_ports": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } }, "labels": { "type": "array", "items": { "type": "string" } }, "public_visible": { "type": "boolean" }, "kinds": { "type": "array", "items": { "type": "string" } }, "agent_version": { "type": [ "null", "string" ] }, "local_limits": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/LocalLimitsDto" } ] }, "task_version": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "applied_task_version": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "rejected": { "type": "array", "items": { "$ref": "#/components/schemas/RejectedDto" } }, "heartbeat": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/HeartbeatDto" } ] }, "endpoint_changes": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "created_at": { "format": "date-time" }, "last_seen_at": { "format": "date-time" } } }, "AgentPatchRequest": { "required": [ "name", "labels", "public_host", "public_visible" ], "type": "object", "properties": { "name": { "type": [ "null", "string" ] }, "labels": { "type": [ "null", "array" ], "items": { "type": "string" } }, "public_host": { "type": [ "null", "string" ] }, "public_visible": { "type": [ "null", "boolean" ] } } }, "ApiTokenDto": { "required": [ "id", "name", "scope", "created_at", "last_used_at", "revoked_at" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "scope": { "type": "string" }, "created_at": { "format": "date-time" }, "last_used_at": { "format": "date-time" }, "revoked_at": { "format": "date-time" } } }, "BlocksDto": { "required": [ "transport", "pacer", "payload", "behavior", "samplers" ], "type": "object", "properties": { "transport": { "type": "string" }, "pacer": { "type": "string" }, "payload": { "type": "string" }, "behavior": { "type": "string" }, "samplers": { "type": "array", "items": { "type": "string" } } } }, "BootstrapAgentDto": { "required": [ "agent_id", "host", "tcp_port", "spki" ], "type": "object", "properties": { "agent_id": { "type": "string" }, "host": { "type": "string" }, "tcp_port": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "spki": { "type": "string" } } }, "ChangePasswordRequest": { "required": [ "password" ], "type": "object", "properties": { "password": { "type": "string" } } }, "ColumnDto": { "required": [ "name", "type", "encoding", "nullable", "role" ], "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "encoding": { "type": "string" }, "nullable": { "type": "boolean" }, "role": { "type": [ "null", "string" ] } } }, "CompareDto": { "required": [ "metric", "from", "to", "step", "source", "degraded", "t", "values", "summary" ], "type": "object", "properties": { "metric": { "type": "string" }, "from": { "format": "date-time" }, "to": { "format": "date-time" }, "step": { "type": "string" }, "source": { "type": "string" }, "degraded": { "type": "boolean" }, "t": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } }, "values": { "type": "object", "additionalProperties": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } } }, "summary": { "type": "object", "additionalProperties": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } } } }, "ConnectedProbeDto": { "required": [ "probe_id", "version", "remote", "connected_since" ], "type": "object", "properties": { "probe_id": { "type": "string" }, "version": { "type": [ "null", "string" ] }, "remote": { "type": [ "null", "string" ] }, "connected_since": { "format": "date-time" } } }, "CreateApiTokenRequest": { "required": [ "name", "scope" ], "type": "object", "properties": { "name": { "type": "string" }, "scope": { "type": "string" } } }, "CreateJoinTokenRequest": { "required": [ "note", "labels", "auto_approve", "max_uses", "expires_in_hours" ], "type": "object", "properties": { "note": { "type": [ "null", "string" ] }, "labels": { "type": [ "null", "array" ], "items": { "type": "string" } }, "auto_approve": { "type": [ "null", "boolean" ] }, "max_uses": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int32" }, "expires_in_hours": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int32" } } }, "CreateProbeRequest": { "required": [ "name" ], "type": "object", "properties": { "name": { "type": [ "null", "string" ] } } }, "CreateTaskRequest": { "required": [ "scope", "kind", "target", "params", "schedule", "enabled", "agent_id", "base_task_id" ], "type": "object", "properties": { "scope": { "type": "string" }, "kind": { "type": "string" }, "target": { "type": [ "null", "string" ] }, "params": { "type": [ "null", "object" ] }, "schedule": { "type": [ "null", "string" ] }, "enabled": { "type": [ "null", "boolean" ] }, "agent_id": { "type": [ "null", "string" ] }, "base_task_id": { "type": [ "null", "string" ] } } }, "CreateUserRequest": { "required": [ "username", "password" ], "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } } }, "CreatedApiTokenDto": { "required": [ "token", "plaintext" ], "type": "object", "properties": { "token": { "$ref": "#/components/schemas/ApiTokenDto" }, "plaintext": { "type": "string" } } }, "CreatedJoinTokenDto": { "required": [ "token", "plaintext", "install_command" ], "type": "object", "properties": { "token": { "$ref": "#/components/schemas/JoinTokenDto" }, "plaintext": { "type": "string" }, "install_command": { "type": "string" } } }, "DimensionDto": { "required": [ "id", "label", "weight", "value", "score" ], "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "weight": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" }, "value": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "score": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } } }, "DistributionBucketDto": { "required": [ "le", "count" ], "type": "object", "properties": { "le": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" }, "count": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } } }, "DistributionDto": { "required": [ "metric", "unit", "buckets", "p50", "p95", "p99", "count" ], "type": "object", "properties": { "metric": { "type": "string" }, "unit": { "type": "string" }, "buckets": { "type": "array", "items": { "$ref": "#/components/schemas/DistributionBucketDto" } }, "p50": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "p95": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "p99": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "count": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } } }, "EdgePartialDto": { "required": [ "first", "last" ], "type": "object", "properties": { "first": { "type": "boolean" }, "last": { "type": "boolean" } } }, "EventDto": { "required": [ "id", "agent_id", "kind", "at", "detail" ], "type": "object", "properties": { "id": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "agent_id": { "type": [ "null", "string" ] }, "kind": { "type": "string" }, "at": { "format": "date-time" }, "detail": { "type": [ "null", "string" ] } } }, "GapDto": { "required": [ "from", "to", "reason" ], "type": "object", "properties": { "from": { "format": "date-time" }, "to": { "format": "date-time" }, "reason": { "type": "string" } } }, "HealthDto": { "required": [ "status", "database", "raw_directory" ], "type": "object", "properties": { "status": { "type": "string" }, "database": { "type": "boolean" }, "raw_directory": { "type": "boolean" } } }, "HeartbeatDto": { "required": [ "sessions", "pps_in", "pps_out", "dropped_invalid", "dropped_rate_limited", "queue_bytes", "at" ], "type": "object", "properties": { "sessions": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "pps_in": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "pps_out": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "dropped_invalid": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "dropped_rate_limited": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "queue_bytes": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "at": { "format": "date-time" } } }, "HeatmapDto": { "required": [ "metric", "step", "source", "degraded", "t", "edges", "counts" ], "type": "object", "properties": { "metric": { "type": "string" }, "step": { "type": "string" }, "source": { "type": "string" }, "degraded": { "type": "boolean" }, "t": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } }, "edges": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" } }, "counts": { "type": "array", "items": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } } } } }, "HostDto": { "required": [ "cpu_percent", "mem_used", "mem_total", "disk_used", "disk_total", "net_rx_total", "net_tx_total", "net_rx_bps", "net_tx_bps", "uptime_seconds", "at" ], "type": "object", "properties": { "cpu_percent": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "mem_used": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "mem_total": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "disk_used": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "disk_total": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "net_rx_total": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "net_tx_total": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "net_rx_bps": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "net_tx_bps": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "uptime_seconds": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int64" }, "at": { "format": "date-time" } } }, "HostItemDto": { "required": [ "agent_id", "name", "online", "stale", "last_seen_at", "host" ], "type": "object", "properties": { "agent_id": { "type": "string" }, "name": { "type": "string" }, "online": { "type": "boolean" }, "stale": { "type": "boolean" }, "last_seen_at": { "format": "date-time" }, "host": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/HostDto" } ] } } }, "HostSeriesDto": { "required": [ "agent_id", "from", "to", "step", "t", "values" ], "type": "object", "properties": { "agent_id": { "type": "string" }, "from": { "format": "date-time" }, "to": { "format": "date-time" }, "step": { "type": "string" }, "t": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } }, "values": { "type": "object", "additionalProperties": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } } } } }, "JoinTokenDto": { "required": [ "id", "note", "labels", "auto_approve", "max_uses", "uses", "expires_at", "revoked_at", "created_at" ], "type": "object", "properties": { "id": { "type": "string" }, "note": { "type": [ "null", "string" ] }, "labels": { "type": "array", "items": { "type": "string" } }, "auto_approve": { "type": "boolean" }, "max_uses": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "uses": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "expires_at": { "format": "date-time" }, "revoked_at": { "format": "date-time" }, "created_at": { "format": "date-time" } } }, "JsonElement": { }, "KindDto": { "required": [ "id", "title", "description", "scopes", "blocks", "params", "streams" ], "type": "object", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string" } }, "blocks": { "$ref": "#/components/schemas/BlocksDto" }, "params": { "type": "array", "items": { "$ref": "#/components/schemas/ParamDto" } }, "streams": { "type": "array", "items": { "$ref": "#/components/schemas/StreamDto" } } } }, "LineDto": { "required": [ "id", "agent_id", "probe_id", "probe_name", "name", "labels", "online", "probe_connected", "data_since", "kinds", "last_test" ], "type": "object", "properties": { "id": { "type": "string" }, "agent_id": { "type": "string" }, "probe_id": { "type": "string" }, "probe_name": { "type": "string" }, "name": { "type": "string" }, "labels": { "type": "array", "items": { "type": "string" } }, "online": { "type": "boolean" }, "probe_connected": { "type": "boolean" }, "data_since": { "format": "date-time" }, "kinds": { "type": "array", "items": { "type": "string" } }, "last_test": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/TestSummaryDto" } ] } } }, "LocalLimitsDto": { "required": [ "max_total_mbps", "max_total_pps", "allowed_target_cidrs", "max_concurrent_tests" ], "type": "object", "properties": { "max_total_mbps": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" }, "max_total_pps": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "allowed_target_cidrs": { "type": "array", "items": { "type": "string" } }, "max_concurrent_tests": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } } }, "LoginRequest": { "required": [ "username", "password" ], "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } } }, "LoginResponse": { "required": [ "user_id", "username", "csrf_token", "expires_at" ], "type": "object", "properties": { "user_id": { "type": "string" }, "username": { "type": "string" }, "csrf_token": { "type": "string" }, "expires_at": { "format": "date-time" } } }, "MeDto": { "required": [ "kind", "scope", "user_id", "username", "csrf_token" ], "type": "object", "properties": { "kind": { "type": "string" }, "scope": { "type": "string" }, "user_id": { "type": [ "null", "string" ] }, "username": { "type": [ "null", "string" ] }, "csrf_token": { "type": [ "null", "string" ] } } }, "MetricDto": { "required": [ "id", "definition_id", "accumulator", "stat", "label", "description", "unit", "better", "good", "poor", "version", "from" ], "type": "object", "properties": { "id": { "type": "string" }, "definition_id": { "type": "string" }, "accumulator": { "type": "string" }, "stat": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "unit": { "type": "string" }, "better": { "type": "string" }, "good": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "poor": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "version": { "type": "string" }, "from": { "type": "array", "items": { "type": "string" } } } }, "ModelDto": { "required": [ "id", "title", "version", "needs" ], "type": "object", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "version": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "needs": { "type": "array", "items": { "type": "string" } } } }, "OverviewDto": { "required": [ "range", "from", "to", "step", "source", "degraded", "lines" ], "type": "object", "properties": { "range": { "type": "string" }, "from": { "format": "date-time" }, "to": { "format": "date-time" }, "step": { "type": "string" }, "source": { "type": "string" }, "degraded": { "type": "boolean" }, "lines": { "type": "array", "items": { "$ref": "#/components/schemas/OverviewLineDto" } } } }, "OverviewLineDto": { "required": [ "id", "agent_id", "probe_id", "probe_name", "name", "labels", "online", "probe_connected", "endpoint_changes", "summary", "last_test" ], "type": "object", "properties": { "id": { "type": "string" }, "agent_id": { "type": "string" }, "probe_id": { "type": "string" }, "probe_name": { "type": "string" }, "name": { "type": "string" }, "labels": { "type": "array", "items": { "type": "string" } }, "online": { "type": "boolean" }, "probe_connected": { "type": "boolean" }, "endpoint_changes": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "summary": { "$ref": "#/components/schemas/SummaryDto" }, "last_test": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/TestSummaryDto" } ] } } }, "PageDtoOfAgentDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/AgentDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfApiTokenDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/ApiTokenDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfEventDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/EventDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfHostItemDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/HostItemDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfJoinTokenDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/JoinTokenDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfKindDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/KindDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfMetricDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/MetricDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfModelDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/ModelDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfPlanDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/PlanDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfPresetDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/PresetDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfProbeDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/ProbeDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfRawChunkMetaDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/RawChunkMetaDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfSettingDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/SettingDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfTaskDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/TaskDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfTestDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/TestDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfUserDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/UserDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "ParamDto": { "required": [ "name", "type", "default", "min", "max", "unit", "values", "description" ], "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "default": { "$ref": "#/components/schemas/JsonElement" }, "min": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "max": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "unit": { "type": [ "null", "string" ] }, "values": { "type": [ "null", "array" ], "items": { "type": "string" } }, "description": { "type": "string" } } }, "PatchProbeRequest": { "required": [ "name" ], "type": "object", "properties": { "name": { "type": [ "null", "string" ] } } }, "PatchTaskRequest": { "required": [ "params", "schedule", "enabled", "target" ], "type": "object", "properties": { "params": { "type": [ "null", "object" ] }, "schedule": { "type": [ "null", "string" ] }, "enabled": { "type": [ "null", "boolean" ] }, "target": { "type": [ "null", "string" ] } } }, "PhaseDto": { "required": [ "kind", "duration_s", "params" ], "type": "object", "properties": { "kind": { "type": "string" }, "duration_s": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "params": { "$ref": "#/components/schemas/JsonElement" } } }, "PlanDto": { "required": [ "id", "title", "description", "phases" ], "type": "object", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "phases": { "type": "array", "items": { "$ref": "#/components/schemas/PhaseDto" } } } }, "PresetDto": { "required": [ "id", "label", "metrics" ], "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "metrics": { "type": "array", "items": { "type": "string" } } } }, "ProbeConnectionDto": { "required": [ "agent_id", "agent_name", "agent_online", "version", "remote", "connected_since" ], "type": "object", "properties": { "agent_id": { "type": "string" }, "agent_name": { "type": "string" }, "agent_online": { "type": "boolean" }, "version": { "type": [ "null", "string" ] }, "remote": { "type": [ "null", "string" ] }, "connected_since": { "format": "date-time" } } }, "ProbeDto": { "required": [ "id", "name", "created_at", "revoked_at", "revoked", "connections" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "created_at": { "format": "date-time" }, "revoked_at": { "format": "date-time" }, "revoked": { "type": "boolean" }, "connections": { "type": "array", "items": { "$ref": "#/components/schemas/ProbeConnectionDto" } } } }, "ProbeIdentityDto": { "required": [ "probe_id", "private_key", "bootstrap", "limits" ], "type": "object", "properties": { "probe_id": { "type": "string" }, "private_key": { "type": "string" }, "bootstrap": { "type": "array", "items": { "$ref": "#/components/schemas/BootstrapAgentDto" } }, "limits": { "$ref": "#/components/schemas/ProbeLimitsDto" } } }, "ProbeLimitsDto": { "required": [ "max_test_mbps", "max_total_pps" ], "type": "object", "properties": { "max_test_mbps": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" }, "max_total_pps": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } } }, "ProblemDto": { "required": [ "type", "title", "status", "code", "detail", "trace_id", "errors" ], "type": "object", "properties": { "type": { "type": "string" }, "title": { "type": "string" }, "status": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "code": { "type": "string" }, "detail": { "type": [ "null", "string" ] }, "trace_id": { "type": [ "null", "string" ] }, "errors": { "type": [ "null", "object" ], "additionalProperties": { "type": "array", "items": { "type": "string" } } } } }, "RawChunkMetaDto": { "required": [ "chunk_id", "agent_id", "series", "kind", "task_id", "test_id", "phase", "start", "duration_ms", "partial", "bytes" ], "type": "object", "properties": { "chunk_id": { "type": "string" }, "agent_id": { "type": "string" }, "series": { "type": "string" }, "kind": { "type": "string" }, "task_id": { "type": [ "null", "string" ] }, "test_id": { "type": [ "null", "string" ] }, "phase": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int32" }, "start": { "format": "date-time" }, "duration_ms": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "partial": { "type": "boolean" }, "bytes": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } } }, "RecomputeDto": { "required": [ "state", "metrics", "windows_done", "windows_total", "from", "to", "queue_length" ], "type": "object", "properties": { "state": { "type": "string" }, "metrics": { "type": "array", "items": { "type": "string" } }, "windows_done": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "windows_total": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "from": { "format": "date-time" }, "to": { "format": "date-time" }, "queue_length": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } } }, "RejectedDto": { "required": [ "id", "reason" ], "type": "object", "properties": { "id": { "type": "string" }, "reason": { "type": "string" } } }, "ScoreDto": { "required": [ "score", "version", "estimated", "dimensions", "caveats" ], "type": "object", "properties": { "score": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "version": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "estimated": { "type": "boolean" }, "dimensions": { "type": "array", "items": { "$ref": "#/components/schemas/DimensionDto" } }, "caveats": { "type": "array", "items": { "type": "string" } } } }, "SeriesDto": { "required": [ "line_id", "agent_id", "probe_id", "from", "to", "step", "source", "live", "degraded", "t", "values", "summary", "edge_partial", "gaps", "events", "versions" ], "type": "object", "properties": { "line_id": { "type": "string" }, "agent_id": { "type": "string" }, "probe_id": { "type": "string" }, "from": { "format": "date-time" }, "to": { "format": "date-time" }, "step": { "type": "string" }, "source": { "type": "string" }, "live": { "type": "boolean" }, "degraded": { "type": "boolean" }, "t": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } }, "values": { "type": "object", "additionalProperties": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } } }, "summary": { "$ref": "#/components/schemas/SummaryDto" }, "edge_partial": { "$ref": "#/components/schemas/EdgePartialDto" }, "gaps": { "type": "array", "items": { "$ref": "#/components/schemas/GapDto" } }, "events": { "type": "array", "items": { "$ref": "#/components/schemas/EventDto" } }, "versions": { "type": "object", "additionalProperties": { "type": "string" } } } }, "SettingDto": { "required": [ "key", "type", "value", "default", "description" ], "type": "object", "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "value": { "type": "string" }, "default": { "type": "string" }, "description": { "type": "string" } } }, "StartTestRequestDto": { "required": [ "plan", "params" ], "type": "object", "properties": { "plan": { "type": "string" }, "params": { "type": [ "null", "object" ] } } }, "StreamDto": { "required": [ "name", "columns" ], "type": "object", "properties": { "name": { "type": "string" }, "columns": { "type": "array", "items": { "$ref": "#/components/schemas/ColumnDto" } } } }, "SummaryDto": { "required": [ "metrics", "samples", "coverage" ], "type": "object", "properties": { "metrics": { "type": "object", "additionalProperties": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } }, "samples": { "type": "object", "additionalProperties": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } }, "coverage": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" } } }, "TaskDto": { "required": [ "id", "scope", "agent_id", "base_task_id", "kind", "target", "params", "schedule", "enabled", "updated_at" ], "type": "object", "properties": { "id": { "type": "string" }, "scope": { "type": "string" }, "agent_id": { "type": [ "null", "string" ] }, "base_task_id": { "type": [ "null", "string" ] }, "kind": { "type": "string" }, "target": { "type": [ "null", "string" ] }, "params": { "type": "object" }, "schedule": { "type": "string" }, "enabled": { "type": "boolean" }, "updated_at": { "format": "date-time" } } }, "TestDto": { "required": [ "id", "agent_id", "probe_id", "plan", "phases", "status", "phase", "error_code", "trigger", "requested_at", "started_at", "finished_at", "result" ], "type": "object", "properties": { "id": { "type": "string" }, "agent_id": { "type": "string" }, "probe_id": { "type": "string" }, "plan": { "type": "string" }, "phases": { "type": "array", "items": { "type": "string" } }, "status": { "type": "string" }, "phase": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int32" }, "error_code": { "type": [ "null", "string" ] }, "trigger": { "type": "string" }, "requested_at": { "format": "date-time" }, "started_at": { "format": "date-time" }, "finished_at": { "format": "date-time" }, "result": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/TestResultDto" } ] } } }, "TestResultDto": { "required": [ "metrics", "scores", "series", "steps", "caveats" ], "type": "object", "properties": { "metrics": { "type": "object", "additionalProperties": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" } }, "scores": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ScoreDto" } }, "series": { "type": "object", "additionalProperties": { "type": "array", "items": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" } } }, "steps": { "type": "array", "items": { "$ref": "#/components/schemas/TestStepDto" } }, "caveats": { "type": "array", "items": { "type": "string" } } } }, "TestStepDto": { "required": [ "index", "target_mbps", "loss_pct", "jitter_p95_ms", "delivered_mbps" ], "type": "object", "properties": { "index": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "target_mbps": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" }, "loss_pct": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" }, "jitter_p95_ms": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "null", "number", "string" ], "format": "double" }, "delivered_mbps": { "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$", "type": [ "number", "string" ], "format": "double" } } }, "TestSummaryDto": { "required": [ "id", "plan", "status", "requested_at", "finished_at" ], "type": "object", "properties": { "id": { "type": "string" }, "plan": { "type": "string" }, "status": { "type": "string" }, "requested_at": { "format": "date-time" }, "finished_at": { "format": "date-time" } } }, "UserDto": { "required": [ "id", "username", "created_at" ], "type": "object", "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "created_at": { "format": "date-time" } } } } }, "tags": [ { "name": "public" }, { "name": "catalog" }, { "name": "admin-auth" }, { "name": "admin-agents" }, { "name": "admin-join-tokens" }, { "name": "admin-probe" }, { "name": "admin-tasks" }, { "name": "admin-tests" }, { "name": "admin-data" }, { "name": "admin-api-tokens" }, { "name": "admin-settings" }, { "name": "admin-users" }, { "name": "ops" }, { "name": "agent" } ] }