This commit is contained in:
Mateusz Gruszczyński committed 2026-10-16 13:02:53 +02:00
1 parent 162e986d37
commit 6b937aaf85
54 files changed
+3527 -1325

No files matched your search

+389 -9
View File
@@ -2,7 +2,7 @@
"openapi": "3.0.3",
"info": {
"title": "RustProxy Administration API",
"version": "0.33.4",
"version": "0.33.7",
"description": "Administration API for the active panel origin. Sign in through the panel; the same-origin HttpOnly cookie authenticates all private operations. Mutations also require the exact Origin, X-RustProxy-Request: 1 and a session-bound X-CSRF-Token. Loopback HTTP is the default; Settings can enable HTTPS before using a non-loopback administration bind. This document contains no live configuration or credentials. Object schemas marked extensible are summaries: full configuration validation is authoritative in Rust."
},
"servers": [
@@ -1241,15 +1241,37 @@
"type": "object",
"description": "Cached OS/process metrics for fast SSE/live charts only; full System details remain on /api/system-info",
"properties": {
"sampled_at_ms": { "type": "integer", "format": "int64" },
"cpu_percent": { "type": "number", "nullable": true },
"process_cpu_percent": { "type": "number", "nullable": true },
"process_rss_bytes": { "type": "integer", "format": "int64", "nullable": true },
"network_rx_bytes_per_second": { "type": "number", "nullable": true },
"network_tx_bytes_per_second": { "type": "number", "nullable": true },
"sampled_at_ms": {
"type": "integer",
"format": "int64"
},
"cpu_percent": {
"type": "number",
"nullable": true
},
"process_cpu_percent": {
"type": "number",
"nullable": true
},
"process_rss_bytes": {
"type": "integer",
"format": "int64",
"nullable": true
},
"network_rx_bytes_per_second": {
"type": "number",
"nullable": true
},
"network_tx_bytes_per_second": {
"type": "number",
"nullable": true
},
"network_interfaces": {
"type": "array",
"items": { "type": "object", "additionalProperties": true }
"items": {
"type": "object",
"additionalProperties": true
}
}
},
"additionalProperties": false
@@ -3570,7 +3592,13 @@
"maxProperties": 78,
"additionalProperties": {
"type": "integer",
"enum": [2, 3, 4, 6, 12]
"enum": [
2,
3,
4,
6,
12
]
},
"description": "Nullable account-scoped per-card widths (12-column grid). Null preserves the legacy grouped visual arrangement; an object, including an empty one, enables freely ordered cards. Key must be a registered Overview widget ID. Panels require width >= 4, charts >= 3 and backend table >= 6."
},
@@ -6631,6 +6659,82 @@
}
}
}
},
"DashboardPresetLayout": {
"type": "object",
"additionalProperties": false,
"description": "Validated Overview snapshot. Factory layout is separate from stored user presets.",
"properties": {
"dashboard_widgets": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Ordered registry widget identifiers"
},
"dashboard_hidden_widgets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Invisible registry widget IDs"
},
"dashboard_widget_sizes": {
"nullable": true,
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 2,
"maximum": 12
},
"description": "Width overrides in a 12-column grid; null selects legacy groups"
},
"dashboard_density": {
"type": "string",
"enum": [
"normal",
"compact",
"ultra"
]
},
"overview_samples": {
"type": "integer",
"enum": [
60,
120,
300,
600
]
}
},
"required": [
"dashboard_widgets",
"dashboard_hidden_widgets",
"dashboard_widget_sizes",
"dashboard_density",
"overview_samples"
]
},
"NamedDashboardPreset": {
"allOf": [
{
"$ref": "#/components/schemas/DashboardPresetLayout"
},
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"name"
]
}
]
}
}
},
@@ -11931,6 +12035,282 @@
}
}
}
},
"/api/dashboard-presets": {
"get": {
"tags": [
"Administration"
],
"summary": "List administrator dashboard presets",
"operationId": "get_dashboard_presets",
"responses": {
"200": {
"description": "Named layouts owned by the authenticated administrator",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NamedDashboardPreset"
}
}
}
}
},
"401": {
"description": "Administrator session required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Invalid Host, Origin, request marker or CSRF token",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Storage unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/dashboard-presets/{name}": {
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"description": "URL-encoded user-defined preset name (1-64 UTF-8 bytes)",
"schema": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
}
],
"put": {
"tags": [
"Administration"
],
"summary": "Save or overwrite an Overview dashboard preset",
"operationId": "put_dashboard_preset",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DashboardPresetLayout"
}
}
}
},
"responses": {
"204": {
"description": "Preset saved"
},
"409": {
"description": "Account already has 16 named presets",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"422": {
"description": "Invalid preset name or layout",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Administrator session required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Invalid Host, Origin, request marker or CSRF token",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Storage unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"patch": {
"tags": [
"Administration"
],
"summary": "Rename an Overview dashboard preset",
"operationId": "patch_dashboard_preset",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
}
}
}
}
},
"responses": {
"204": {
"description": "Preset renamed"
},
"409": {
"description": "Source name not found or target name already exists",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"422": {
"description": "Invalid preset name",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Administrator session required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Invalid Host, Origin, request marker or CSRF token",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Storage unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"delete": {
"tags": [
"Administration"
],
"summary": "Delete an Overview dashboard preset",
"operationId": "delete_dashboard_preset",
"responses": {
"204": {
"description": "Preset deleted"
},
"404": {
"description": "Preset not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Administrator session required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Invalid Host, Origin, request marker or CSRF token",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Storage unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
}
}