This commit is contained in:
Mateusz Gruszczyński committed 2026-10-04 22:53:33 +02:00
1 parent 174389e5b1
commit e6604e41fc
73 files changed
+1240 -201

No files matched your search

+164 -4
View File
@@ -2,7 +2,7 @@
"openapi": "3.0.3",
"info": {
"title": "RustProxy Administration API",
"version": "0.25.2",
"version": "0.25.3",
"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": [
@@ -300,6 +300,17 @@
],
"nullable": true
},
"acl_profile_id": {
"type": "string",
"nullable": true,
"description": "Optional reusable ACL profile; profile and inline location policies are cumulative."
},
"country_access": {
"$ref": "#/components/schemas/CountryAccess"
},
"method_policy": {
"$ref": "#/components/schemas/MethodPolicy"
},
"headers": {
"$ref": "#/components/schemas/HeaderRules"
},
@@ -420,6 +431,9 @@
],
"nullable": true
},
"method_policy": {
"$ref": "#/components/schemas/MethodPolicy"
},
"basic_auth": {
"type": "object",
"properties": {},
@@ -1230,6 +1244,56 @@
},
"additionalProperties": false
},
"MethodPolicy": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"off",
"allow",
"block"
],
"default": "off"
},
"methods": {
"type": "array",
"maxItems": 32,
"items": {
"type": "string",
"maxLength": 32
},
"default": []
}
},
"additionalProperties": false,
"description": "HTTP method policy. allow permits only listed methods; block rejects listed methods."
},
"CountryAccess": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"off",
"block",
"allow"
],
"default": "off"
},
"countries": {
"type": "array",
"maxItems": 128,
"items": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"default": []
}
},
"additionalProperties": false,
"description": "Country access policy evaluated against the verified effective client IP."
},
"AclProfile": {
"type": "object",
"properties": {
@@ -1248,9 +1312,7 @@
"nullable": true
},
"country_access": {
"type": "object",
"properties": {},
"additionalProperties": true
"$ref": "#/components/schemas/CountryAccess"
}
},
"additionalProperties": false,
@@ -9019,6 +9081,104 @@
}
}
}
},
"/api/config/history": {
"get": {
"summary": "Browse retained manual configuration revisions",
"description": "Returns up to 512 retained revision metadata entries, or one revision with its previous retained configuration for diff rendering.",
"tags": [
"Configuration"
],
"operationId": "get_api_config_history",
"parameters": [
{
"name": "revision",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"description": "Return one retained revision and its previous retained configuration."
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 512,
"default": 512
},
"description": "Maximum metadata entries when revision is omitted."
}
],
"responses": {
"200": {
"description": "Revision history or revision detail",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"401": {
"description": "Authentication required or revoked",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Host, origin or CSRF validation failed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Bounded worker/session/rate limit",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Control-plane storage/worker unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Requested revision is not retained",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
}
}