Files
justme fb3a9c260f fleet: send log counters in heartbeats and pull the text on demand
Heartbeats carry per-level counts, the most frequent log types (a stable hash of the message) and the newest id, no text. The node keeps its last 2048 lines; moshiro.logs.fetch lets the backend pull them. The log page pulls when it is open, and the backend pulls warnings and errors once a minute after a node reports an error.
2026-10-22 05:28:29 +08:00

9863 lines
233 KiB
JSON

{
"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 node (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/hosts/{node_id}": {
"get": {
"tags": [
"public"
],
"summary": "Host resource usage history of one node (columnar, averaged per step)",
"operationId": "hosts_history",
"parameters": [
{
"name": "node_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 nodes: 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/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 nodes (agents) including pending and disabled ones; each says whether it listens, which dialers are connected to it and which listeners it dials",
"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, ISP 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/nodes/{id}/logs": {
"get": {
"tags": [
"admin-nodes"
],
"summary": "Recent runtime logs of a node: pulled from the node when it is online, otherwise what the backend kept",
"operationId": "node_runtime_logs",
"parameters": [
{
"name": "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/NodeRuntimeLogsDto"
}
}
}
},
"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}/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; 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/agents/{id}/dialers/{dialer_id}/disconnect": {
"post": {
"tags": [
"admin-agents"
],
"summary": "Make a listening node drop one dialer's session (the dialer reconnects unless it is disabled)",
"operationId": "agents_dialer_disconnect",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "dialer_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 node",
"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/releases": {
"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/nodes/{id}/update": {
"post": {
"tags": [
"admin-build"
],
"summary": "Ask an online node 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/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/release-key": {
"get": {
"tags": [
"admin-release-key"
],
"summary": "The release keys this panel trusts: the built-in official key and the optional own key",
"operationId": "release_key_get",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleaseKeysDto"
}
}
}
},
"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"
},
"put": {
"tags": [
"admin-release-key"
],
"summary": "Trust your own release public key (P-256 PEM; never the private key) in addition to the official one",
"operationId": "release_key_set",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetReleaseKeyRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleaseKeysDto"
}
}
}
},
"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": "update.confirm"
},
"delete": {
"tags": [
"admin-release-key"
],
"summary": "Stop trusting your own release key; manifests only it signed are dropped",
"operationId": "release_key_clear",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleaseKeysDto"
}
}
}
},
"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.confirm"
}
},
"/api/admin/links": {
"get": {
"tags": [
"admin-links"
],
"summary": "Every possible dialer/listener pair: whether it is linked, the manual override and whether it is connected; plus the nodes and which of them listen",
"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/reset": {
"post": {
"tags": [
"admin-links"
],
"summary": "Drop every manual link setting and turn automatic linking on: who dials whom follows the default rules again",
"operationId": "links_reset",
"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.write"
}
},
"/api/admin/links/{dialer_id}/{listener_id}": {
"put": {
"tags": [
"admin-links"
],
"summary": "Connect a node to a listening node (enabled: true), force the link off (false), or give it back to the automatic setting (null)",
"operationId": "links_set",
"parameters": [
{
"name": "dialer_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "listener_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"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
}
},
"x-moshiro-capability": "fleet.write"
}
},
"/api/admin/links/{dialer_id}/{listener_id}/retry": {
"post": {
"tags": [
"admin-links"
],
"summary": "Enable and immediately retry the dialer-to-listener connection",
"operationId": "links_retry",
"parameters": [
{
"name": "dialer_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "listener_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LinkRetryDto"
}
}
}
},
"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"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"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/openwrt.sh": {
"get": {
"tags": [
"ops"
],
"summary": "The static native OpenWrt installer and updater (Agent)",
"operationId": "install_openwrt",
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/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 an install code may fetch (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/compose/{file}": {
"get": {
"tags": [
"ops"
],
"summary": "The static compose file of the agent or the backend (agent.yaml, backend.yaml; same bytes for everyone)",
"operationId": "install_compose",
"parameters": [
{
"name": "file",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
}
}
}
},
"/install/quadlet/{file}": {
"get": {
"tags": [
"ops"
],
"summary": "The static Podman Quadlet unit of the agent (agent.container; same bytes for everyone)",
"operationId": "install_quadlet",
"parameters": [
{
"name": "file",
"in": "path",
"required": true,
"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",
"listens",
"dialer_connected",
"dialers",
"outgoing",
"host",
"public_host",
"tcp_port",
"quic_ports",
"labels",
"public_visible",
"kinds",
"agent_version",
"local_limits",
"task_version",
"applied_task_version",
"rejected",
"heartbeat",
"endpoint_changes",
"runtime_status",
"created_at",
"last_seen_at"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"online": {
"type": "boolean"
},
"listens": {
"type": "boolean"
},
"dialer_connected": {
"type": "boolean"
},
"dialers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConnectedDialerDto"
}
},
"outgoing": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OutgoingConnectionDto"
}
},
"host": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/HostDto"
}
]
},
"public_host": {
"type": "string"
},
"tcp_port": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int32"
},
"quic_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"
},
"runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"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"
]
},
"isp": {
"type": [
"null",
"string"
]
}
}
},
"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"
}
}
}
},
"ComposeInstallDto": {
"required": [
"env",
"url",
"sha256",
"linux",
"macos",
"windows"
],
"type": "object",
"properties": {
"env": {
"type": "string"
},
"url": {
"type": "string"
},
"sha256": {
"type": "string"
},
"linux": {
"type": "string"
},
"macos": {
"type": "string"
},
"windows": {
"type": "string"
}
}
},
"ConfirmBackendUpdateRequest": {
"required": [
"seq"
],
"type": "object",
"properties": {
"seq": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
}
}
},
"ConnectedDialerDto": {
"required": [
"dialer_id",
"version",
"remote",
"connected_since"
],
"type": "object",
"properties": {
"dialer_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",
"compose",
"quadlet"
],
"type": "object",
"properties": {
"token": {
"$ref": "#/components/schemas/JoinTokenDto"
},
"plaintext": {
"type": "string"
},
"install_commands": {
"$ref": "#/components/schemas/InstallCommandsDto"
},
"compose": {
"$ref": "#/components/schemas/ComposeInstallDto"
},
"quadlet": {
"$ref": "#/components/schemas/QuadletInstallDto"
}
}
},
"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": [
"id",
"name",
"online",
"stale",
"last_seen_at",
"host"
],
"type": "object",
"properties": {
"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": [
"id",
"from",
"to",
"step",
"t",
"values"
],
"type": "object",
"properties": {
"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"
},
"openwrt": {
"type": "string",
"default": ""
}
}
},
"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"
},
"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",
"dialer_id",
"dialer_name",
"name",
"labels",
"online",
"dialer_connected",
"data_since",
"kinds",
"last_test"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"agent_id": {
"type": "string"
},
"dialer_id": {
"type": "string"
},
"dialer_name": {
"type": "string"
},
"name": {
"type": "string"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"online": {
"type": "boolean"
},
"dialer_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
},
"quic_health": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/QuicLineHealthDto"
}
]
}
}
},
"LinkDto": {
"required": [
"dialer_id",
"dialer_name",
"listener_id",
"listener_name",
"linked",
"override",
"connected",
"dialer_runtime_status",
"listener_runtime_status"
],
"type": "object",
"properties": {
"dialer_id": {
"type": "string"
},
"dialer_name": {
"type": "string"
},
"listener_id": {
"type": "string"
},
"listener_name": {
"type": "string"
},
"linked": {
"type": "boolean"
},
"override": {
"type": [
"null",
"boolean"
]
},
"connected": {
"type": "boolean"
},
"dialer_runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"listener_runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"connection_state": {
"type": "string",
"default": "control_connecting"
},
"connection_reason": {
"type": [
"null",
"string"
]
},
"last_error": {
"type": [
"null",
"string"
]
},
"retry_attempt": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int32",
"default": 0
},
"retry_in_ms": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "int64"
}
}
},
"LinkMatrixDto": {
"required": [
"auto_link",
"nodes",
"items"
],
"type": "object",
"properties": {
"auto_link": {
"type": "boolean"
},
"nodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LinkNodeDto"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LinkDto"
}
}
}
},
"LinkNodeDto": {
"required": [
"id",
"name",
"listens",
"online",
"runtime_status"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"listens": {
"type": "boolean"
},
"online": {
"type": "boolean"
},
"runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
}
}
},
"LinkRetryDto": {
"required": [
"queued",
"link"
],
"type": "object",
"properties": {
"queued": {
"type": "boolean"
},
"link": {
"$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"
}
}
}
},
"NodeBuildDto": {
"required": [
"id",
"os",
"os_name",
"arch",
"version",
"tag",
"commit",
"built_at"
],
"type": "object",
"properties": {
"id": {
"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"
}
]
},
"owners": {
"type": [
"null",
"array"
],
"items": {
"$ref": "#/components/schemas/NodeOwnerDto"
}
}
}
},
"NodeInfoDto": {
"required": [
"id",
"os",
"os_name",
"arch",
"country",
"isp_key",
"isp_name"
],
"type": "object",
"properties": {
"id": {
"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"
]
},
"isp_manual": {
"type": "boolean",
"default": false
}
}
},
"NodeOwnerDto": {
"required": [
"credential_id",
"passkey",
"account"
],
"type": "object",
"properties": {
"credential_id": {
"type": "string"
},
"passkey": {
"type": [
"null",
"string"
]
},
"account": {
"type": [
"null",
"string"
]
}
}
},
"NodeRuntimeLogDto": {
"required": [
"id",
"at",
"level",
"message",
"fields"
],
"type": "object",
"properties": {
"id": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
},
"at": {
"format": "date-time"
},
"level": {
"type": "string"
},
"message": {
"type": "string"
},
"fields": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"NodeRuntimeLogsDto": {
"required": [
"items",
"dropped"
],
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NodeRuntimeLogDto"
}
},
"dropped": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
}
}
},
"NodeRuntimeStatus": {
"enum": [
"initializing",
"running",
"idle",
"maintenance",
"stopping",
"offline",
"updating"
]
},
"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"
}
}
},
"OutgoingConnectionDto": {
"required": [
"listener_id",
"listener_name",
"listener_online",
"version",
"remote",
"connected_since"
],
"type": "object",
"properties": {
"listener_id": {
"type": "string"
},
"listener_name": {
"type": "string"
},
"listener_online": {
"type": "boolean"
},
"version": {
"type": [
"null",
"string"
]
},
"remote": {
"type": [
"null",
"string"
]
},
"connected_since": {
"format": "date-time"
},
"ip_version": {
"type": "string",
"default": "ipv4"
}
}
},
"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",
"dialer_id",
"dialer_name",
"name",
"labels",
"online",
"dialer_connected",
"endpoint_changes",
"summary",
"last_test"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"agent_id": {
"type": "string"
},
"dialer_id": {
"type": "string"
},
"dialer_name": {
"type": "string"
},
"name": {
"type": "string"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"online": {
"type": "boolean"
},
"dialer_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"
},
"quic_health": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/QuicLineHealthDto"
}
]
}
}
},
"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"
]
}
}
},
"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"
}
}
}
},
"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"
}
}
}
},
"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"
]
}
}
},
"QuadletInstallDto": {
"required": [
"env",
"url",
"sha256",
"command"
],
"type": "object",
"properties": {
"env": {
"type": "string"
},
"url": {
"type": "string"
},
"sha256": {
"type": "string"
},
"command": {
"type": "string"
}
}
},
"QuicLineHealthDto": {
"required": [
"connected",
"handshake_attempts",
"handshake_successes",
"handshake_failures",
"handshake_timeouts",
"handshake_success_rate",
"handshake_failure_rate",
"handshake_timeout_rate",
"handshake_p95_ms",
"handshake_sample_count",
"transport_packet_loss_rate",
"transport_packets_sent",
"transport_congestion_events",
"transport_ecn_congestion_events",
"path_mtu",
"at"
],
"type": "object",
"properties": {
"connected": {
"type": "boolean"
},
"handshake_attempts": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
},
"handshake_successes": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
},
"handshake_failures": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
},
"handshake_timeouts": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
},
"handshake_success_rate": {
"pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
"type": [
"null",
"number",
"string"
],
"format": "double"
},
"handshake_failure_rate": {
"pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
"type": [
"null",
"number",
"string"
],
"format": "double"
},
"handshake_timeout_rate": {
"pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
"type": [
"null",
"number",
"string"
],
"format": "double"
},
"handshake_p95_ms": {
"pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
"type": [
"null",
"number",
"string"
],
"format": "double"
},
"handshake_sample_count": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int64"
},
"transport_packet_loss_rate": {
"pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
"type": [
"null",
"number",
"string"
],
"format": "double"
},
"transport_packets_sent": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "uint64"
},
"transport_congestion_events": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "uint32"
},
"transport_ecn_congestion_events": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "uint32"
},
"path_mtu": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "uint16"
},
"at": {
"format": "date-time"
},
"state": {
"type": "string",
"default": "connecting"
},
"retry_attempt": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int32",
"default": 0
},
"retry_in_ms": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "int64"
},
"control_state": {
"type": "string",
"default": "dialing"
},
"control_down_since": {}
}
},
"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"
}
}
},
"ReleaseKeyDto": {
"required": [
"fingerprint",
"public_key"
],
"type": "object",
"properties": {
"fingerprint": {
"type": "string"
},
"public_key": {
"type": "string"
}
}
},
"ReleaseKeysDto": {
"required": [
"official",
"custom"
],
"type": "object",
"properties": {
"official": {
"$ref": "#/components/schemas/ReleaseKeyDto"
},
"custom": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/ReleaseKeyDto"
}
]
}
}
},
"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",
"dialer_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"
},
"dialer_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"
]
}
}
},
"SetReleaseKeyRequest": {
"required": [
"public_key"
],
"type": "object",
"properties": {
"public_key": {
"type": [
"null",
"string"
]
}
}
},
"SettingDto": {
"required": [
"key",
"type",
"value",
"default",
"description"
],
"type": "object",
"properties": {
"key": {
"type": "string"
},
"type": {
"type": "string"
},
"value": {
"type": "string"
},
"default": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"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",
"dialer_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"
},
"dialer_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-agents"
},
{
"name": "admin-nodes"
},
{
"name": "admin-join-tokens"
},
{
"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-build"
},
{
"name": "admin-release-key"
},
{
"name": "admin-links"
},
{
"name": "ops"
},
{
"name": "release"
},
{
"name": "agent"
}
]
}