This commit is contained in:
Mateusz Gruszczyński committed 2026-10-10 00:18:06 +02:00
1 parent ad95bfb050
commit 1431dd47f0
62 files changed
+1360 -198

No files matched your search

+44 -1
View File
@@ -2,7 +2,7 @@
"openapi": "3.0.3",
"info": {
"title": "RustProxy Administration API",
"version": "0.29.6",
"version": "0.29.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": [
@@ -527,6 +527,30 @@
}
},
"description": "Dangerous per-vhost-only request-side forced-cache target prefixes. Response privacy exclusions remain authoritative."
},
"expose_only_hits": {
"type": "boolean",
"nullable": true,
"default": null,
"description": "If true, only emit cache diagnostic headers for actual HIT responses, never MISS/BYPASS. null inherits global expose_only_hits. Via is controlled independently."
}
},
"additionalProperties": true
},
"pages": {
"type": "object",
"description": "Vhost response/error pages and optional application HTTP-error interception. Interception replaces application response HTML with the configured vhost/global page, or a built-in RustProxy page, before cache admission. The application's HTTP status is always retained, regardless of standalone page status overrides. Internal location fallbacks take priority.",
"properties": {
"intercept_statuses": {
"type": "array",
"default": [],
"uniqueItems": true,
"maxItems": 11,
"description": "Off by default. For these origin response HTTP statuses, replace the application response with a RustProxy error page (no-store). Does not change RustProxy-generated routing/security errors.",
"items": {
"type": "integer",
"enum": [400, 401, 403, 404, 408, 413, 429, 500, 502, 503, 504]
}
}
},
"additionalProperties": true
@@ -1818,6 +1842,11 @@
"maximum": 95,
"default": 80,
"description": "HOT usage waterline targeted by automatic idle trimming."
},
"expose_only_hits": {
"type": "boolean",
"default": false,
"description": "Suppress RustProxy cache diagnostic headers on MISS/BYPASS. Cache HIT diagnostics remain governed by expose_* flags. The independently configured Via header is unaffected."
}
},
"additionalProperties": false
@@ -1904,6 +1933,20 @@
"type": "boolean",
"default": false,
"description": "Explicitly allow this backend to resolve to a local RustProxy listener, including a listener using port 9090. This can create a proxy loop or expose the administration plane. Loopback/private targets still require allow_private=true."
},
"health_check_enabled": {
"type": "boolean",
"default": true,
"description": "Enable both active and passive health monitoring for this backend. False still permits internal pinned-location traffic and does not change pool_eligible."
},
"health_check": {
"allOf": [
{
"$ref": "#/components/schemas/DockerHealthCheck"
}
],
"nullable": true,
"description": "Optional per-backend active health policy; null inherits the vhost policy, including its default Host."
}
},
"additionalProperties": true,