{ "openapi": "3.1.1", "info": { "title": "moshiro-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" } }, { "name": "ip_version", "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/ipv6": { "get": { "tags": [ "public" ], "summary": "IPv6 configuration and collector diagnostics without addresses", "operationId": "ipv6_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfAgentIpv6Dto" } } } }, "403": { "description": "Forbidden", "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", "parameters": [ { "name": "ip_version", "in": "query", "schema": { "type": "string" } } ], "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/nodes": { "get": { "tags": [ "public-nodes" ], "summary": "Display info of the visible agents and probes: system, architecture, country and ISP (never an address)", "operationId": "nodes_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfNodeInfoDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/public/about": { "get": { "tags": [ "public-nodes" ], "summary": "The backend's version, tag and build time, if the site shows build info", "operationId": "about_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AboutDto" } } } }, "403": { "description": "Forbidden", "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/setup": { "get": { "tags": [ "admin-auth" ], "summary": "Whether the panel has no users yet and still has to be claimed", "operationId": "setup_status", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupStatusDto" } } } } } }, "post": { "tags": [ "admin-auth" ], "summary": "Create the first administrator (needs the claim code from the backend's log); the same response as the password sign-in. Closed once the panel is claimed (a user exists)", "operationId": "setup_complete", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "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" } } } }, "409": { "description": "Conflict", "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/passkey/options": { "post": { "tags": [ "admin-auth" ], "summary": "A challenge for signing in with a passkey (discoverable credential, no username needed)", "operationId": "auth_passkey_options", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasskeyRequestOptionsDto" } } } }, "429": { "description": "Too Many Requests", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/api/admin/auth/passkey/login": { "post": { "tags": [ "admin-auth" ], "summary": "Sign in with a passkey assertion; same response as the password sign-in", "operationId": "auth_passkey_login", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasskeyLoginRequest" } } }, "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/releases": { "post": { "tags": [ "admin-build" ], "summary": "Register a CI-signed release manifest; online nodes get it right away (their updaters verify the signature). Admin or release tokens", "operationId": "releases_publish", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublishReleaseRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReleaseDto" } } } }, "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" } } } } }, "x-moshiro-capability": "release.publish" }, "get": { "tags": [ "admin-build" ], "summary": "The latest signed release manifest of each component", "operationId": "releases_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfReleaseDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "update.read" } }, "/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" } } } } }, "x-moshiro-capability": "authenticated" } }, "/api/admin/auth/passkeys": { "get": { "tags": [ "admin-auth" ], "summary": "The signed-in user's passkeys", "operationId": "auth_passkeys_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PageDtoOfPasskeyDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "authenticated" }, "post": { "tags": [ "admin-auth" ], "summary": "Register a passkey from a WebAuthn attestation (ES256, user verification required)", "operationId": "auth_passkeys_register", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterPasskeyRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasskeyDto" } } } }, "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" } } } } }, "x-moshiro-capability": "authenticated" } }, "/api/admin/auth/passkeys/options": { "post": { "tags": [ "admin-auth" ], "summary": "A challenge for registering a new passkey (the user must be signed in)", "operationId": "auth_passkeys_options", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasskeyCreationOptionsDto" } } } }, "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" } } } } }, "x-moshiro-capability": "authenticated" } }, "/api/admin/auth/passkeys/{id}": { "delete": { "tags": [ "admin-auth" ], "summary": "Remove one of your own passkeys", "operationId": "auth_passkeys_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" } } } }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "authenticated" } }, "/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" } } } } }, "x-moshiro-capability": "authenticated" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.read" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.read" }, "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" } } } } }, "x-moshiro-capability": "fleet.write" }, "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" } } } } }, "x-moshiro-capability": "fleet.revoke" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.enroll" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.write" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.write" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.enroll" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.read" }, "post": { "tags": [ "admin-join-tokens" ], "summary": "Create a join token for an agent or a probe (role); 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" } } } } }, "x-moshiro-capability": "fleet.enroll" } }, "/api/admin/join-tokens/{id}": { "delete": { "tags": [ "admin-join-tokens" ], "summary": "Revoke a join token; with purge=true delete the record for good", "operationId": "join_tokens_revoke", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "purge", "in": "query", "schema": { "type": "boolean" } } ], "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" } } } } }, "x-moshiro-capability": "fleet.enroll" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.read" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.read" }, "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" } } } } }, "x-moshiro-capability": "fleet.write" }, "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" } } } } }, "x-moshiro-capability": "fleet.revoke" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.revoke" } }, "/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" } } } } }, "x-moshiro-capability": "fleet.write" } }, "/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" } } } } }, "x-moshiro-capability": "tasks.read" }, "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" } } } } }, "x-moshiro-capability": "tasks.write" } }, "/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" } } } } }, "x-moshiro-capability": "tasks.read" }, "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" } } } } }, "x-moshiro-capability": "tasks.write" }, "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" } } } } }, "x-moshiro-capability": "tasks.write" } }, "/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" } } } } }, "x-moshiro-capability": "tasks.write" }, "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" } } } } }, "x-moshiro-capability": "tasks.read" } }, "/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" } } } } }, "x-moshiro-capability": "tasks.write" } }, "/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" } } } } }, "x-moshiro-capability": "data.read" } }, "/api/admin/raw/chunks/{chunk_id}": { "get": { "tags": [ "admin-data" ], "summary": "Download a raw chunk (application/vnd.moshiro.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" } } } } }, "x-moshiro-capability": "data.read" } }, "/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" } } } } }, "x-moshiro-capability": "events.read" } }, "/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" } } } } }, "x-moshiro-capability": "data.write" } }, "/api/admin/audit": { "get": { "tags": [ "admin-audit" ], "summary": "Audit log of admin actions, newest first", "operationId": "audit_list", "parameters": [ { "name": "actor", "in": "query", "schema": { "type": "string" } }, { "name": "action", "in": "query", "schema": { "type": "string" } }, { "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/PageDtoOfAuditDto" } } } }, "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" } } } } }, "x-moshiro-capability": "audit.read" } }, "/api/admin/trust": { "get": { "tags": [ "admin-trust" ], "summary": "The operator trust root: genesis fingerprint, version, whether it matches the registered passkeys, and the next version to sign", "operationId": "trust_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrustStateDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "fleet.read" }, "post": { "tags": [ "admin-trust" ], "summary": "Store the next operator set, signed with a passkey (the first one sets the genesis)", "operationId": "trust_commit", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignedStatementDto" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrustStateDto" } } } }, "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" } } } } }, "x-moshiro-capability": "accounts.manage" } }, "/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" } } } } }, "x-moshiro-capability": "keys.read" }, "post": { "tags": [ "admin-api-tokens" ], "summary": "Create an API token with the chosen capabilities (a subset of your own); 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" } } } } }, "x-moshiro-capability": "keys.manage" } }, "/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" } } } } }, "x-moshiro-capability": "keys.manage" } }, "/api/admin/capabilities": { "get": { "tags": [ "admin-api-tokens" ], "summary": "The capability catalog: groups, which ones change trust, which are reserved, and the presets", "operationId": "capabilities_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CapabilityCatalogDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "keys.read" } }, "/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" } } } } }, "x-moshiro-capability": "settings.read" }, "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" } } } } }, "x-moshiro-capability": "settings.write" } }, "/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" } } } } }, "x-moshiro-capability": "accounts.read" }, "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" } } } } }, "x-moshiro-capability": "accounts.manage" } }, "/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" } } } } }, "x-moshiro-capability": "accounts.manage" } }, "/api/admin/build-info": { "get": { "tags": [ "admin-build" ], "summary": "Version, tag, commit, build time and update state of the backend and every agent and probe", "operationId": "build_info_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BuildInfoDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "update.read" } }, "/api/admin/nodes/{id}/update": { "post": { "tags": [ "admin-build" ], "summary": "Ask an online agent or probe to install the release it has been offered", "operationId": "nodes_update", "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" } } } }, "409": { "description": "Conflict", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "update.confirm" } }, "/api/admin/nodes/{id}/binary": { "delete": { "tags": [ "admin-build" ], "summary": "Accept the node's current binary: clear its binding so the next handshake binds it again", "operationId": "nodes_binary_clear", "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" } } } } }, "x-moshiro-capability": "fleet.write" } }, "/api/admin/backend/update": { "get": { "tags": [ "admin-build" ], "summary": "Current channel and host-verified backend update", "operationId": "backend_update_get", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackendUpdateDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "update.read" }, "post": { "tags": [ "admin-build" ], "summary": "Confirm one verified backend release before the host restarts it", "operationId": "backend_update_confirm", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfirmBackendUpdateRequest" } } }, "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" } } } }, "412": { "description": "Precondition Failed", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "update.confirm" } }, "/api/admin/backend/update/live": { "get": { "tags": [ "admin-build" ], "summary": "Server-sent backend update notifications", "operationId": "backend_update_live", "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" } } } } }, "x-moshiro-capability": "update.read" } }, "/api/admin/links": { "get": { "tags": [ "admin-links" ], "summary": "Every probe/agent pair: whether it is linked, the manual override and whether it is connected", "operationId": "links_list", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkMatrixDto" } } } }, "401": { "description": "Unauthorized", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } }, "403": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } }, "x-moshiro-capability": "fleet.read" } }, "/api/admin/links/{probe_id}/{agent_id}": { "put": { "tags": [ "admin-links" ], "summary": "Force a link on or off, or give it back to the automatic setting (enabled: null)", "operationId": "links_set", "parameters": [ { "name": "probe_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "agent_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetLinkRequest" } } }, "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkDto" } } } }, "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" } } } } }, "x-moshiro-capability": "fleet.write" } }, "/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 (requires ops.metrics)", "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": { "get": { "tags": [ "ops" ], "summary": "The static one-line installer for Linux and macOS nodes (same bytes for everyone; its SHA-256 is published with each release)", "operationId": "install_sh", "responses": { "200": { "description": "OK" } } } }, "/install/manifest": { "get": { "tags": [ "ops" ], "summary": "The signed release manifest of the component an install code is for (exact signed bytes)", "operationId": "install_manifest", "parameters": [ { "name": "code", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/install/manifest.sig": { "get": { "tags": [ "ops" ], "summary": "Base64 DER ECDSA P-256 signature of the manifest", "operationId": "install_manifest_signature", "parameters": [ { "name": "code", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK" }, "404": { "description": "Not Found", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDto" } } } } } } }, "/install.ps1": { "get": { "tags": [ "ops" ], "summary": "The static one-line installer for Windows nodes (same bytes for everyone; its SHA-256 is published with each release)", "operationId": "install_ps1", "responses": { "200": { "description": "OK" } } } }, "/api/release/offer": { "post": { "tags": [ "release" ], "summary": "Register a release manifest that carries a valid CI signature (no token needed)", "operationId": "release_offer", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublishReleaseRequest" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReleaseDto" } } } }, "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" } } } }, "409": { "description": "Conflict", "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" } } } }, "/api/agent/v1/enroll/trust": { "post": { "tags": [ "agent" ], "summary": "The operator set chain and the grant of a join token, for the node to verify before it enrolls", "operationId": "fleet_enroll_trust", "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "AboutDto": { "required": [ "show_build", "backend" ], "type": "object", "properties": { "show_build": { "type": "boolean" }, "backend": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/BuildDto" } ] } } }, "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" }, "ipv6_host": { "type": "string", "default": "" }, "ipv6_supported": { "type": "boolean", "default": false }, "ipv6": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/Ipv6DiagnosticDto" } ] }, "public_host_auto": { "type": "boolean", "default": true }, "ipv6_host_auto": { "type": "boolean", "default": true }, "added_by": { "type": [ "null", "string" ] } } }, "AgentIpv6Dto": { "required": [ "agent_id", "name", "online", "ipv6" ], "type": "object", "properties": { "agent_id": { "type": "string" }, "name": { "type": "string" }, "online": { "type": "boolean" }, "ipv6": { "$ref": "#/components/schemas/Ipv6DiagnosticDto" } } }, "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" ] }, "ipv6_host": { "type": [ "null", "string" ] }, "public_host_auto": { "type": [ "null", "boolean" ] }, "ipv6_host_auto": { "type": [ "null", "boolean" ] } } }, "ApiTokenDto": { "required": [ "id", "name", "capabilities", "created_at", "last_used_at", "expires_at", "revoked_at" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "capabilities": { "type": "array", "items": { "type": "string" } }, "created_at": { "format": "date-time" }, "last_used_at": { "format": "date-time" }, "expires_at": { "format": "date-time" }, "revoked_at": { "format": "date-time" } } }, "AuditDto": { "required": [ "id", "at", "actor", "method", "action", "target", "detail", "remote", "success" ], "type": "object", "properties": { "id": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "at": { "format": "date-time" }, "actor": { "type": "string" }, "method": { "type": "string" }, "action": { "type": "string" }, "target": { "type": [ "null", "string" ] }, "detail": { "type": [ "null", "string" ] }, "remote": { "type": [ "null", "string" ] }, "success": { "type": "boolean" } } }, "BackendUpdateDto": { "required": [ "channel", "enabled", "state", "current_tag", "current_digest", "available", "error" ], "type": "object", "properties": { "channel": { "type": "string" }, "enabled": { "type": "boolean" }, "state": { "type": "string" }, "current_tag": { "type": [ "null", "string" ] }, "current_digest": { "type": [ "null", "string" ] }, "available": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/ReleaseDto" } ] }, "error": { "type": [ "null", "string" ] } } }, "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" } } } }, "BuildDto": { "required": [ "version", "tag", "commit", "built_at" ], "type": "object", "properties": { "version": { "type": "string" }, "tag": { "type": [ "null", "string" ] }, "commit": { "type": [ "null", "string" ] }, "built_at": { "type": [ "null", "string" ] } } }, "BuildInfoDto": { "required": [ "backend", "nodes" ], "type": "object", "properties": { "backend": { "$ref": "#/components/schemas/BuildDto" }, "nodes": { "type": "array", "items": { "$ref": "#/components/schemas/NodeBuildDto" } }, "backend_update": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/BackendUpdateDto" } ] } } }, "CapabilityCatalogDto": { "required": [ "groups", "presets" ], "type": "object", "properties": { "groups": { "type": "array", "items": { "$ref": "#/components/schemas/CapabilityGroupDto" } }, "presets": { "type": "array", "items": { "$ref": "#/components/schemas/CapabilityPresetDto" } } } }, "CapabilityDto": { "required": [ "id", "trust", "reserved", "implies" ], "type": "object", "properties": { "id": { "type": "string" }, "trust": { "type": "boolean" }, "reserved": { "type": "boolean" }, "implies": { "type": "array", "items": { "type": "string" } } } }, "CapabilityGroupDto": { "required": [ "id", "capabilities" ], "type": "object", "properties": { "id": { "type": "string" }, "capabilities": { "type": "array", "items": { "$ref": "#/components/schemas/CapabilityDto" } } } }, "CapabilityPresetDto": { "required": [ "id", "capabilities" ], "type": "object", "properties": { "id": { "type": "string" }, "capabilities": { "type": "array", "items": { "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" } } } }, "ConfirmBackendUpdateRequest": { "required": [ "seq" ], "type": "object", "properties": { "seq": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" } } }, "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" }, "ip_version": { "type": "string", "default": "ipv4" } } }, "CreateApiTokenRequest": { "required": [ "name", "capabilities" ], "type": "object", "properties": { "name": { "type": "string" }, "capabilities": { "type": "array", "items": { "type": "string" } }, "expires_in_days": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "null", "integer", "string" ], "format": "int32" } } }, "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" }, "role": { "type": [ "null", "string" ] }, "controllers": { "type": [ "null", "array" ], "items": { "type": "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_commands" ], "type": "object", "properties": { "token": { "$ref": "#/components/schemas/JoinTokenDto" }, "plaintext": { "type": "string" }, "install_commands": { "$ref": "#/components/schemas/InstallCommandsDto" } } }, "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", "net_link_mbps", "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" }, "net_link_mbps": { "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" } } } } }, "InstallCommandsDto": { "required": [ "linux", "macos", "windows" ], "type": "object", "properties": { "linux": { "type": "string" }, "macos": { "type": "string" }, "windows": { "type": "string" } } }, "Ipv6DiagnosticDto": { "required": [ "address_configured", "socket_supported", "listening", "has_global_address", "has_default_route", "state" ], "type": "object", "properties": { "address_configured": { "type": [ "null", "boolean" ] }, "socket_supported": { "type": "boolean" }, "listening": { "type": [ "null", "boolean" ] }, "has_global_address": { "type": [ "null", "boolean" ] }, "has_default_route": { "type": [ "null", "boolean" ] }, "state": { "type": "string" }, "network_scope": { "type": "string", "default": "unknown" }, "host_has_global_address": { "type": [ "null", "boolean" ] }, "host_has_default_route": { "type": [ "null", "boolean" ] } } }, "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" }, "role": { "type": "string", "default": "agent" }, "created_by": { "type": [ "null", "string" ] } } }, "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" } ] }, "ip_version": { "type": "string", "default": "ipv4" }, "ipv6_available": { "type": "boolean", "default": false } } }, "LinkDto": { "required": [ "probe_id", "probe_name", "agent_id", "agent_name", "linked", "override", "connected" ], "type": "object", "properties": { "probe_id": { "type": "string" }, "probe_name": { "type": "string" }, "agent_id": { "type": "string" }, "agent_name": { "type": "string" }, "linked": { "type": "boolean" }, "override": { "type": [ "null", "boolean" ] }, "connected": { "type": "boolean" } } }, "LinkMatrixDto": { "required": [ "auto_link", "items" ], "type": "object", "properties": { "auto_link": { "type": "boolean" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/LinkDto" } } } }, "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", "return_session" ], "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" }, "return_session": { "type": [ "null", "boolean" ] } } }, "LoginResponse": { "required": [ "user_id", "username", "csrf_token", "expires_at", "session_token" ], "type": "object", "properties": { "user_id": { "type": "string" }, "username": { "type": "string" }, "csrf_token": { "type": "string" }, "expires_at": { "format": "date-time" }, "session_token": { "type": [ "null", "string" ] } } }, "MeDto": { "required": [ "kind", "capabilities", "user_id", "username", "csrf_token" ], "type": "object", "properties": { "kind": { "type": "string" }, "capabilities": { "type": "array", "items": { "type": "string" } }, "user_id": { "type": [ "null", "string" ] }, "username": { "type": [ "null", "string" ] }, "csrf_token": { "type": [ "null", "string" ] }, "auth_method": { "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" } } } }, "NodeBinaryDto": { "required": [ "sha256", "signed", "seq", "bound_at", "violation", "violation_at" ], "type": "object", "properties": { "sha256": { "type": "string" }, "signed": { "type": "boolean" }, "seq": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "bound_at": { "format": "date-time" }, "violation": { "type": [ "null", "string" ] }, "violation_at": { "format": "date-time" } } }, "NodeBuildDto": { "required": [ "id", "kind", "os", "os_name", "arch", "version", "tag", "commit", "built_at" ], "type": "object", "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "os": { "type": [ "null", "string" ] }, "os_name": { "type": [ "null", "string" ] }, "arch": { "type": [ "null", "string" ] }, "version": { "type": [ "null", "string" ] }, "tag": { "type": [ "null", "string" ] }, "commit": { "type": [ "null", "string" ] }, "built_at": { "type": [ "null", "string" ] }, "update": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/NodeUpdateDto" } ] }, "binary": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/NodeBinaryDto" } ] }, "owners": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/NodeOwnerDto" } } } }, "NodeInfoDto": { "required": [ "id", "kind", "os", "os_name", "arch", "country", "isp_key", "isp_name" ], "type": "object", "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "os": { "type": [ "null", "string" ] }, "os_name": { "type": [ "null", "string" ] }, "arch": { "type": [ "null", "string" ] }, "country": { "type": [ "null", "string" ] }, "isp_key": { "type": [ "null", "string" ] }, "isp_name": { "type": [ "null", "string" ] }, "version": { "type": [ "null", "string" ] }, "tag": { "type": [ "null", "string" ] } } }, "NodeOwnerDto": { "required": [ "credential_id", "passkey", "account" ], "type": "object", "properties": { "credential_id": { "type": "string" }, "passkey": { "type": [ "null", "string" ] }, "account": { "type": [ "null", "string" ] } } }, "NodeUpdateDto": { "required": [ "state", "current_digest", "available_tag", "available_version", "error", "at" ], "type": "object", "properties": { "state": { "type": "string" }, "current_digest": { "type": [ "null", "string" ] }, "available_tag": { "type": [ "null", "string" ] }, "available_version": { "type": [ "null", "string" ] }, "error": { "type": [ "null", "string" ] }, "at": { "format": "date-time" } } }, "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" } ] }, "ip_version": { "type": "string", "default": "ipv4" } } }, "PageDtoOfAgentDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/AgentDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfAgentIpv6Dto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/AgentIpv6Dto" } }, "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" ] } } }, "PageDtoOfAuditDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/AuditDto" } }, "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" ] } } }, "PageDtoOfNodeInfoDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/NodeInfoDto" } }, "next_cursor": { "type": [ "null", "string" ] } } }, "PageDtoOfPasskeyDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/PasskeyDto" } }, "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" ] } } }, "PageDtoOfReleaseDto": { "required": [ "items", "next_cursor" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/ReleaseDto" } }, "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" } } }, "PasskeyCreationOptionsDto": { "required": [ "challenge", "rp_id", "rp_name", "user_id", "user_name", "exclude_credentials", "timeout_ms" ], "type": "object", "properties": { "challenge": { "type": "string" }, "rp_id": { "type": "string" }, "rp_name": { "type": "string" }, "user_id": { "type": "string" }, "user_name": { "type": "string" }, "exclude_credentials": { "type": "array", "items": { "type": "string" } }, "timeout_ms": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" } } }, "PasskeyDto": { "required": [ "id", "name", "created_at", "last_used_at", "transports" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "created_at": { "format": "date-time" }, "last_used_at": { "format": "date-time" }, "transports": { "type": "array", "items": { "type": "string" } } } }, "PasskeyLoginRequest": { "required": [ "credential_id", "authenticator_data", "client_data_json", "signature", "return_session" ], "type": "object", "properties": { "credential_id": { "type": "string" }, "authenticator_data": { "type": "string" }, "client_data_json": { "type": "string" }, "signature": { "type": "string" }, "return_session": { "type": [ "null", "boolean" ] } } }, "PasskeyRequestOptionsDto": { "required": [ "challenge", "rp_id", "timeout_ms" ], "type": "object", "properties": { "challenge": { "type": "string" }, "rp_id": { "type": "string" }, "timeout_ms": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "allow_credentials": { "type": [ "null", "array" ], "items": { "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" }, "ip_version": { "type": "string", "default": "ipv4" } } }, "ProbeDto": { "required": [ "id", "name", "created_at", "revoked_at", "revoked", "online", "connections" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "created_at": { "format": "date-time" }, "revoked_at": { "format": "date-time" }, "revoked": { "type": "boolean" }, "online": { "type": "boolean" }, "connections": { "type": "array", "items": { "$ref": "#/components/schemas/ProbeConnectionDto" } }, "ipv6": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/Ipv6DiagnosticDto" } ] }, "added_by": { "type": [ "null", "string" ] } } }, "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" } } } } }, "ProposedCredentialDto": { "required": [ "id", "name", "created_at" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "created_at": { "format": "date-time" } } }, "PublishReleaseRequest": { "required": [ "manifest", "signature" ], "type": "object", "properties": { "manifest": { "type": [ "null", "string" ] }, "signature": { "type": [ "null", "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" } } }, "RegisterPasskeyRequest": { "required": [ "name", "credential_id", "attestation_object", "client_data_json", "transports" ], "type": "object", "properties": { "name": { "type": "string" }, "credential_id": { "type": "string" }, "attestation_object": { "type": "string" }, "client_data_json": { "type": "string" }, "transports": { "type": [ "null", "array" ], "items": { "type": "string" } } } }, "RejectedDto": { "required": [ "id", "reason" ], "type": "object", "properties": { "id": { "type": "string" }, "reason": { "type": "string" } } }, "ReleaseDto": { "required": [ "component", "seq", "tag", "version", "digest" ], "type": "object", "properties": { "component": { "type": "string" }, "seq": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int64" }, "tag": { "type": "string" }, "version": { "type": "string" }, "digest": { "type": "string" }, "channel": { "type": "string", "default": "release" } } }, "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" } }, "ip_version": { "type": "string", "default": "ipv4" } } }, "SetLinkRequest": { "required": [ "enabled" ], "type": "object", "properties": { "enabled": { "type": [ "null", "boolean" ] } } }, "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" } } }, "SetupRequest": { "required": [ "claim_code", "username", "password", "return_session" ], "type": "object", "properties": { "claim_code": { "type": [ "null", "string" ] }, "username": { "type": [ "null", "string" ] }, "password": { "type": [ "null", "string" ] }, "return_session": { "type": [ "null", "boolean" ] } } }, "SetupStatusDto": { "required": [ "needs_setup" ], "type": "object", "properties": { "needs_setup": { "type": "boolean" } } }, "SignedStatementDto": { "type": "object", "properties": { "statement": { "type": "string" }, "credential_id": { "type": "string" }, "authenticator_data": { "type": "string" }, "client_data_json": { "type": "string" }, "signature": { "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" } ] }, "ip_version": { "type": "string", "default": "ipv4" } } }, "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" } } }, "TrustProposalDto": { "required": [ "statement", "version", "challenge", "added", "removed", "server_key_changed" ], "type": "object", "properties": { "statement": { "type": "string" }, "version": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "challenge": { "type": "string" }, "added": { "type": "array", "items": { "$ref": "#/components/schemas/ProposedCredentialDto" } }, "removed": { "type": "array", "items": { "type": "string" } }, "server_key_changed": { "type": "boolean" } } }, "TrustStateDto": { "required": [ "initialized", "genesis", "version", "in_sync", "proposal" ], "type": "object", "properties": { "initialized": { "type": "boolean" }, "genesis": { "type": [ "null", "string" ] }, "version": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ "integer", "string" ], "format": "int32" }, "in_sync": { "type": "boolean" }, "proposal": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/TrustProposalDto" } ] }, "install_url": { "type": "string", "default": "" }, "operators": { "type": [ "null", "array" ], "items": { "type": "string" } }, "install_sh_sha256": { "type": "string", "default": "" }, "install_ps1_sha256": { "type": "string", "default": "" }, "install_matches_release": { "type": [ "null", "boolean" ] }, "server_key": { "type": "string", "default": "" }, "server_key_listed": { "type": "boolean", "default": false }, "operator_details": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/NodeOwnerDto" } } } }, "UserDto": { "required": [ "id", "username", "created_at" ], "type": "object", "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "created_at": { "format": "date-time" } } } } }, "tags": [ { "name": "public" }, { "name": "public-nodes" }, { "name": "catalog" }, { "name": "admin-auth" }, { "name": "admin-build" }, { "name": "admin-agents" }, { "name": "admin-join-tokens" }, { "name": "admin-probe" }, { "name": "admin-tasks" }, { "name": "admin-tests" }, { "name": "admin-data" }, { "name": "admin-audit" }, { "name": "admin-trust" }, { "name": "admin-api-tokens" }, { "name": "admin-settings" }, { "name": "admin-users" }, { "name": "admin-links" }, { "name": "ops" }, { "name": "release" }, { "name": "agent" } ] }