Files
godoxy/internal/api/v1/docs/swagger.json
yusing aaa3c9a8d8 fix(swagger): correct type names in swagger docs
Rename icon-related types in swagger docs:
- homepage.FetchResult → iconfetch.Result
- homepage.IconMetaSearch → iconlist.IconMetaSearch
- homepage.IconSource → icons.Source
- Shorten enum varnames (IconSourceAbsolute → SourceAbsolute, etc.)
- Add x-nullable: true to rules arrays
2026-01-10 15:57:56 +08:00

5718 lines
142 KiB
JSON

{
"swagger": "2.0",
"info": {
"description": "GoDoxy API",
"title": "GoDoxy API",
"termsOfService": "https://github.com/yusing/godoxy/blob/main/LICENSE",
"contact": {
"name": "Yusing",
"url": "https://github.com/yusing/godoxy/issues"
},
"license": {
"name": "MIT",
"url": "https://github.com/yusing/godoxy/blob/main/LICENSE"
},
"version": "1.0"
},
"basePath": "/api/v1",
"paths": {
"/agent/create": {
"post": {
"description": "Create a new agent and return the docker compose file, encrypted CA and client PEMs\nThe returned PEMs are encrypted with a random key and will be used for verification when adding a new agent",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Create a new agent",
"parameters": [
{
"description": "Request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/NewAgentRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/NewAgentResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"409": {
"description": "Conflict",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "create",
"operationId": "create"
}
},
"/agent/list": {
"get": {
"description": "List agents",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"agent",
"websocket"
],
"summary": "List agents",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Agent"
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "list",
"operationId": "list"
}
},
"/agent/verify": {
"post": {
"description": "Verify a new agent and return the number of routes added",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"agent"
],
"summary": "Verify a new agent",
"parameters": [
{
"description": "Request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/VerifyNewAgentRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "verify",
"operationId": "verify"
}
},
"/auth/callback": {
"post": {
"description": "Handles the callback from the provider after successful authentication",
"produces": [
"text/plain"
],
"tags": [
"auth"
],
"summary": "Auth Callback",
"parameters": [
{
"description": "Userpass only",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/auth.UserPassAuthCallbackRequest"
}
}
],
"responses": {
"200": {
"description": "Userpass: OK",
"schema": {
"type": "string"
}
},
"302": {
"description": "OIDC: Redirects to home page",
"schema": {
"type": "string"
}
},
"400": {
"description": "Userpass: invalid request / credentials",
"schema": {
"type": "string"
}
},
"500": {
"description": "Internal server error",
"schema": {
"type": "string"
}
}
},
"x-id": "callback",
"operationId": "callback"
}
},
"/auth/check": {
"head": {
"description": "Checks if the user is authenticated by validating their token",
"produces": [
"text/plain"
],
"tags": [
"auth"
],
"summary": "Check authentication status",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "string"
}
},
"302": {
"description": "Redirects to login page or IdP",
"schema": {
"type": "string"
}
}
},
"x-id": "check",
"operationId": "check"
}
},
"/auth/login": {
"post": {
"description": "Initiates the login process by redirecting the user to the provider's login page",
"produces": [
"text/plain"
],
"tags": [
"auth"
],
"summary": "Login",
"responses": {
"302": {
"description": "Redirects to login page or IdP",
"schema": {
"type": "string"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "string"
}
}
},
"x-id": "login",
"operationId": "login"
}
},
"/auth/logout": {
"get": {
"description": "Logs out the user by invalidating the token",
"produces": [
"text/plain"
],
"tags": [
"auth"
],
"summary": "Logout",
"responses": {
"302": {
"description": "Redirects to home page",
"schema": {
"type": "string"
}
}
},
"x-id": "logout",
"operationId": "logout"
},
"post": {
"description": "Logs out the user by invalidating the token",
"produces": [
"text/plain"
],
"tags": [
"auth"
],
"summary": "Logout",
"responses": {
"302": {
"description": "Redirects to home page",
"schema": {
"type": "string"
}
}
},
"x-id": "logout",
"operationId": "logout"
}
},
"/cert/info": {
"get": {
"description": "Get cert info",
"produces": [
"application/json"
],
"tags": [
"cert"
],
"summary": "Get cert info",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/CertInfo"
}
}
},
"403": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "No certificates found or autocert is not enabled",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "info",
"operationId": "info"
}
},
"/cert/renew": {
"get": {
"description": "Renew cert",
"produces": [
"text/plain"
],
"tags": [
"cert",
"websocket"
],
"summary": "Renew cert",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "renew",
"operationId": "renew"
}
},
"/docker/container/{id}": {
"get": {
"description": "Get container by container id",
"produces": [
"application/json"
],
"tags": [
"docker"
],
"summary": "Get container",
"parameters": [
{
"type": "string",
"description": "Container ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ContainerResponse"
}
},
"400": {
"description": "ID is required",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Container not found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "container",
"operationId": "container"
}
},
"/docker/containers": {
"get": {
"description": "Get containers",
"produces": [
"application/json"
],
"tags": [
"docker"
],
"summary": "Get containers",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/ContainerResponse"
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "containers",
"operationId": "containers"
}
},
"/docker/info": {
"get": {
"description": "Get docker info",
"produces": [
"application/json"
],
"tags": [
"docker"
],
"summary": "Get docker info",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ServerInfo"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "info",
"operationId": "info"
}
},
"/docker/logs/{id}": {
"get": {
"description": "Get docker container logs by container id",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"docker",
"websocket"
],
"summary": "Get docker container logs",
"parameters": [
{
"type": "string",
"description": "container id",
"name": "id",
"in": "path",
"required": true
},
{
"type": "boolean",
"description": "show stdout",
"name": "stdout",
"in": "query"
},
{
"type": "boolean",
"description": "show stderr",
"name": "stderr",
"in": "query"
},
{
"type": "string",
"description": "from timestamp",
"name": "from",
"in": "query"
},
{
"type": "string",
"description": "to timestamp",
"name": "to",
"in": "query"
},
{
"type": "string",
"description": "levels",
"name": "levels",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "server not found or container not found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "logs",
"operationId": "logs"
}
},
"/docker/restart": {
"post": {
"description": "Restart container by container id",
"produces": [
"application/json"
],
"tags": [
"docker"
],
"summary": "Restart container",
"parameters": [
{
"description": "Request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dockerapi.RestartRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Container not found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "restart",
"operationId": "restart"
}
},
"/docker/start": {
"post": {
"description": "Start container by container id",
"produces": [
"application/json"
],
"tags": [
"docker"
],
"summary": "Start container",
"parameters": [
{
"description": "Request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dockerapi.StartRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Container not found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "start",
"operationId": "start"
}
},
"/docker/stop": {
"post": {
"description": "Stop container by container id",
"produces": [
"application/json"
],
"tags": [
"docker"
],
"summary": "Stop container",
"parameters": [
{
"description": "Request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dockerapi.StopRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Container not found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "stop",
"operationId": "stop"
}
},
"/favicon": {
"get": {
"description": "Get favicon",
"consumes": [
"application/json"
],
"produces": [
"image/svg+xml",
"image/x-icon",
"image/png",
"image/webp"
],
"tags": [
"v1"
],
"summary": "Get favicon",
"parameters": [
{
"type": "string",
"description": "URL of the route",
"name": "url",
"in": "query"
},
{
"type": "string",
"description": "Alias of the route",
"name": "alias",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/iconfetch.Result"
}
}
},
"400": {
"description": "Bad Request: alias is empty or route is not HTTPRoute",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden: unauthorized",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Not Found: route or icon not found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error: internal error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "favicon",
"operationId": "favicon"
}
},
"/file/content": {
"get": {
"description": "Get file content",
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/godoxy+yaml"
],
"tags": [
"file"
],
"summary": "Get file content",
"parameters": [
{
"type": "string",
"format": "filename",
"name": "filename",
"in": "query",
"required": true
},
{
"enum": [
"config",
"provider",
"middleware"
],
"type": "string",
"x-enum-varnames": [
"FileTypeConfig",
"FileTypeProvider",
"FileTypeMiddleware"
],
"name": "type",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "string"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "get",
"operationId": "get"
},
"put": {
"description": "Set file content",
"consumes": [
"text/plain"
],
"produces": [
"application/json"
],
"tags": [
"file"
],
"summary": "Set file content",
"parameters": [
{
"enum": [
"config",
"provider",
"middleware"
],
"type": "string",
"description": "Type",
"name": "type",
"in": "query",
"required": true
},
{
"type": "string",
"description": "Filename",
"name": "filename",
"in": "query",
"required": true
},
{
"description": "File",
"name": "file",
"in": "body",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set",
"operationId": "set"
}
},
"/file/list": {
"get": {
"description": "List files",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"file"
],
"summary": "List files",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ListFilesResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "list",
"operationId": "list"
}
},
"/file/validate": {
"post": {
"description": "Validate file",
"consumes": [
"text/plain"
],
"produces": [
"application/json"
],
"tags": [
"file"
],
"summary": "Validate file",
"parameters": [
{
"enum": [
"config",
"provider",
"middleware"
],
"type": "string",
"description": "Type",
"name": "type",
"in": "query",
"required": true
},
{
"description": "File content",
"name": "file",
"in": "body",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "File validated",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"417": {
"description": "Validation failed",
"schema": {}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "validate",
"operationId": "validate"
}
},
"/health": {
"get": {
"description": "Get health info by route name",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"v1",
"websocket"
],
"summary": "Get routes health info",
"responses": {
"200": {
"description": "Health info by route name",
"schema": {
"$ref": "#/definitions/HealthMap"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "health",
"operationId": "health"
}
},
"/homepage/categories": {
"get": {
"description": "List homepage categories",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "List homepage categories",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "categories",
"operationId": "categories"
}
},
"/homepage/item_click": {
"post": {
"description": "Increment item click.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Increment item click",
"parameters": [
{
"type": "string",
"name": "which",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "item-click",
"operationId": "item-click"
}
},
"/homepage/items": {
"get": {
"description": "Homepage items",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage",
"websocket"
],
"summary": "Homepage items",
"parameters": [
{
"type": "string",
"description": "Category filter",
"name": "category",
"in": "query"
},
{
"type": "string",
"description": "Provider filter",
"name": "provider",
"in": "query"
},
{
"type": "string",
"description": "Search query",
"name": "search",
"in": "query"
},
{
"enum": [
"clicks",
"alphabetical",
"custom"
],
"type": "string",
"default": "alphabetical",
"description": "Sort method",
"name": "sort_method",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/HomepageCategory"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "items",
"operationId": "items"
}
},
"/homepage/set/category_order": {
"post": {
"description": "Set homepage category order.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Set homepage category order",
"parameters": [
{
"description": "Override category order",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideCategoryOrderParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-category-order",
"operationId": "set-category-order"
}
},
"/homepage/set/item": {
"post": {
"description": "Override single homepage item.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Override single homepage item",
"parameters": [
{
"description": "Override single item",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-item",
"operationId": "set-item"
}
},
"/homepage/set/item_all_sort_order": {
"post": {
"description": "Set homepage item all sort order.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Set homepage item all sort order",
"parameters": [
{
"description": "Set item all sort order",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemAllSortOrderParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-item-all-sort-order",
"operationId": "set-item-all-sort-order"
}
},
"/homepage/set/item_fav_sort_order": {
"post": {
"description": "Set homepage item fav sort order.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Set homepage item fav sort order",
"parameters": [
{
"description": "Set item fav sort order",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemFavSortOrderParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-item-fav-sort-order",
"operationId": "set-item-fav-sort-order"
}
},
"/homepage/set/item_favorite": {
"post": {
"description": "Set homepage item favorite.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Set homepage item favorite",
"parameters": [
{
"description": "Set item favorite",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemFavoriteParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-item-favorite",
"operationId": "set-item-favorite"
}
},
"/homepage/set/item_sort_order": {
"post": {
"description": "Set homepage item sort order.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Set homepage item sort order",
"parameters": [
{
"description": "Set item sort order",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemSortOrderParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-item-sort-order",
"operationId": "set-item-sort-order"
}
},
"/homepage/set/item_visible": {
"post": {
"description": "POST list of item ids and visibility value.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Set homepage item visibility",
"parameters": [
{
"description": "Set item visibility",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemVisibleParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-item-visible",
"operationId": "set-item-visible"
}
},
"/homepage/set/items_batch": {
"post": {
"description": "Override multiple homepage items.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"homepage"
],
"summary": "Override multiple homepage items",
"parameters": [
{
"description": "Override multiple items",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/HomepageOverrideItemsBatchParams"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "set-items-batch",
"operationId": "set-items-batch"
}
},
"/icons": {
"get": {
"description": "List icons",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"v1"
],
"summary": "List icons",
"parameters": [
{
"type": "integer",
"description": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "string",
"description": "Keyword",
"name": "keyword",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/iconlist.IconMetaSearch"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "icons",
"operationId": "icons"
}
},
"/metrics/all_system_info": {
"get": {
"description": "Get system info",
"produces": [
"application/json"
],
"tags": [
"metrics",
"websocket"
],
"summary": "Get system info",
"parameters": [
{
"enum": [
"cpu_average",
"memory_usage",
"memory_usage_percent",
"disks_read_speed",
"disks_write_speed",
"disks_iops",
"disk_usage",
"network_speed",
"network_transfer",
"sensor_temperature"
],
"type": "string",
"x-enum-varnames": [
"SystemInfoAggregateModeCPUAverage",
"SystemInfoAggregateModeMemoryUsage",
"SystemInfoAggregateModeMemoryUsagePercent",
"SystemInfoAggregateModeDisksReadSpeed",
"SystemInfoAggregateModeDisksWriteSpeed",
"SystemInfoAggregateModeDisksIOPS",
"SystemInfoAggregateModeDiskUsage",
"SystemInfoAggregateModeNetworkSpeed",
"SystemInfoAggregateModeNetworkTransfer",
"SystemInfoAggregateModeSensorTemperature"
],
"name": "aggregate",
"in": "query"
},
{
"type": "string",
"format": "duration",
"name": "interval",
"in": "query"
},
{
"enum": [
"5m",
"15m",
"1h",
"1d",
"1mo"
],
"type": "string",
"x-enum-varnames": [
"MetricsPeriod5m",
"MetricsPeriod15m",
"MetricsPeriod1h",
"MetricsPeriod1d",
"MetricsPeriod1mo"
],
"name": "period",
"in": "query"
}
],
"responses": {
"200": {
"description": "period specified, aggregated system info by agent name",
"schema": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/SystemInfoAggregate"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "all_system_info",
"operationId": "all_system_info"
}
},
"/metrics/system_info": {
"get": {
"description": "Get system info",
"produces": [
"application/json"
],
"tags": [
"metrics",
"websocket"
],
"summary": "Get system info",
"parameters": [
{
"type": "string",
"name": "agentAddr",
"in": "query"
},
{
"type": "string",
"name": "agentName",
"in": "query"
},
{
"enum": [
"cpu_average",
"memory_usage",
"memory_usage_percent",
"disks_read_speed",
"disks_write_speed",
"disks_iops",
"disk_usage",
"network_speed",
"network_transfer",
"sensor_temperature"
],
"type": "string",
"x-enum-varnames": [
"SystemInfoAggregateModeCPUAverage",
"SystemInfoAggregateModeMemoryUsage",
"SystemInfoAggregateModeMemoryUsagePercent",
"SystemInfoAggregateModeDisksReadSpeed",
"SystemInfoAggregateModeDisksWriteSpeed",
"SystemInfoAggregateModeDisksIOPS",
"SystemInfoAggregateModeDiskUsage",
"SystemInfoAggregateModeNetworkSpeed",
"SystemInfoAggregateModeNetworkTransfer",
"SystemInfoAggregateModeSensorTemperature"
],
"name": "aggregate",
"in": "query"
},
{
"enum": [
"5m",
"15m",
"1h",
"1d",
"1mo"
],
"type": "string",
"x-enum-varnames": [
"MetricsPeriod5m",
"MetricsPeriod15m",
"MetricsPeriod1h",
"MetricsPeriod1d",
"MetricsPeriod1mo"
],
"name": "period",
"in": "query"
}
],
"responses": {
"200": {
"description": "period specified",
"schema": {
"$ref": "#/definitions/SystemInfoAggregate"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "system_info",
"operationId": "system_info"
}
},
"/metrics/uptime": {
"get": {
"description": "Get uptime",
"produces": [
"application/json"
],
"tags": [
"metrics",
"websocket"
],
"summary": "Get uptime",
"parameters": [
{
"enum": [
"5m",
"15m",
"1h",
"1d",
"1mo"
],
"type": "string",
"example": "1m",
"x-enum-varnames": [
"MetricsPeriod5m",
"MetricsPeriod15m",
"MetricsPeriod1h",
"MetricsPeriod1d",
"MetricsPeriod1mo"
],
"name": "interval",
"in": "query"
},
{
"type": "string",
"example": "",
"name": "keyword",
"in": "query"
},
{
"type": "integer",
"default": 0,
"example": 10,
"name": "limit",
"in": "query"
},
{
"type": "integer",
"default": 0,
"example": 10,
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "period specified",
"schema": {
"$ref": "#/definitions/UptimeAggregate"
}
},
"204": {
"description": "No Content",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "uptime",
"operationId": "uptime"
}
},
"/reload": {
"post": {
"description": "Reload config",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"v1"
],
"summary": "Reload config",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/SuccessResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "reload",
"operationId": "reload"
}
},
"/route/by_provider": {
"get": {
"description": "List routes by provider",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"route"
],
"summary": "List routes by provider",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/routeApi.RoutesByProvider"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "byProvider",
"operationId": "byProvider"
}
},
"/route/list": {
"get": {
"description": "List routes",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"route",
"websocket"
],
"summary": "List routes",
"parameters": [
{
"type": "string",
"description": "Provider",
"name": "provider",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Route"
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "routes",
"operationId": "routes"
}
},
"/route/playground": {
"post": {
"description": "Test rules against mock request/response",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"route"
],
"summary": "Rule Playground",
"parameters": [
{
"description": "Playground request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PlaygroundRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/PlaygroundResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "playground",
"operationId": "playground"
}
},
"/route/providers": {
"get": {
"description": "List route providers",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"route",
"websocket"
],
"summary": "List route providers",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/RouteProvider"
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "providers",
"operationId": "providers"
}
},
"/route/{which}": {
"get": {
"description": "List route",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"route"
],
"summary": "List route",
"parameters": [
{
"type": "string",
"description": "Route name",
"name": "which",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Route"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "route",
"operationId": "route"
}
},
"/stats": {
"get": {
"description": "Get stats",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"v1",
"websocket"
],
"summary": "Get GoDoxy stats",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/StatsResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
},
"x-id": "stats",
"operationId": "stats"
}
},
"/version": {
"get": {
"description": "Get the version of the GoDoxy",
"consumes": [
"application/json"
],
"produces": [
"text/plain"
],
"tags": [
"v1"
],
"summary": "Get version",
"responses": {
"200": {
"description": "version",
"schema": {
"type": "string"
}
}
},
"x-id": "version",
"operationId": "version"
}
}
},
"definitions": {
"Agent": {
"type": "object",
"properties": {
"addr": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"runtime": {
"$ref": "#/definitions/agent.ContainerRuntime",
"x-nullable": false,
"x-omitempty": false
},
"supports_tcp_stream": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"supports_udp_stream": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"version": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"CIDR": {
"type": "object",
"properties": {
"ip": {
"description": "network number",
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"x-nullable": false,
"x-omitempty": false
},
"mask": {
"description": "network mask",
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"CertInfo": {
"type": "object",
"properties": {
"dns_names": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"email_addresses": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"issuer": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"not_after": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"not_before": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"subject": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"Container": {
"type": "object",
"properties": {
"agent": {
"$ref": "#/definitions/agentpool.Agent",
"x-nullable": false,
"x-omitempty": false
},
"aliases": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"container_id": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"container_name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"docker_cfg": {
"$ref": "#/definitions/DockerProviderConfig",
"x-nullable": false,
"x-omitempty": false
},
"errors": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"idlewatcher_config": {
"$ref": "#/definitions/IdlewatcherConfig",
"x-nullable": false,
"x-omitempty": false
},
"image": {
"$ref": "#/definitions/ContainerImage",
"x-nullable": false,
"x-omitempty": false
},
"is_excluded": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"is_explicit": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"is_host_network_mode": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"labels": {
"description": "for displaying in UI",
"type": "object",
"additionalProperties": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"mounts": {
"description": "source:destination",
"type": "object",
"additionalProperties": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"network": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"private_hostname": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"private_ports": {
"description": "privatePort:types.Port",
"allOf": [
{
"$ref": "#/definitions/types.PortMapping"
}
],
"x-nullable": false,
"x-omitempty": false
},
"public_hostname": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"public_ports": {
"description": "non-zero publicPort:types.Port",
"allOf": [
{
"$ref": "#/definitions/types.PortMapping"
}
],
"x-nullable": false,
"x-omitempty": false
},
"running": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"state": {
"$ref": "#/definitions/container.ContainerState",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ContainerImage": {
"type": "object",
"properties": {
"author": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"sha256": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"tag": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"version": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ContainerResponse": {
"type": "object",
"properties": {
"id": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"image": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"server": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"state": {
"allOf": [
{
"$ref": "#/definitions/ContainerState"
}
],
"x-nullable": true
}
},
"x-nullable": false,
"x-omitempty": false
},
"ContainerState": {
"type": "string",
"enum": [
"created",
"running",
"paused",
"restarting",
"removing",
"exited",
"dead"
],
"x-enum-comments": {
"StateCreated": "StateCreated indicates the container is created, but not (yet) started.",
"StateDead": "StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts.",
"StateExited": "StateExited indicates that the container exited.",
"StatePaused": "StatePaused indicates that the container's current state is paused.",
"StateRemoving": "StateRemoving indicates that the container is being removed.",
"StateRestarting": "StateRestarting indicates that the container is currently restarting.",
"StateRunning": "StateRunning indicates that the container is running."
},
"x-enum-descriptions": [
"StateCreated indicates the container is created, but not (yet) started.",
"StateRunning indicates that the container is running.",
"StatePaused indicates that the container's current state is paused.",
"StateRestarting indicates that the container is currently restarting.",
"StateRemoving indicates that the container is being removed.",
"StateExited indicates that the container exited.",
"StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts."
],
"x-enum-varnames": [
"StateCreated",
"StateRunning",
"StatePaused",
"StateRestarting",
"StateRemoving",
"StateExited",
"StateDead"
],
"x-nullable": false,
"x-omitempty": false
},
"ContainerStats": {
"type": "object",
"properties": {
"paused": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"running": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"stopped": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ContainerStopMethod": {
"type": "string",
"enum": [
"pause",
"stop",
"kill"
],
"x-enum-varnames": [
"ContainerStopMethodPause",
"ContainerStopMethodStop",
"ContainerStopMethodKill"
],
"x-nullable": false,
"x-omitempty": false
},
"DockerConfig": {
"type": "object",
"required": [
"container_id",
"container_name",
"docker_cfg"
],
"properties": {
"container_id": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"container_name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"docker_cfg": {
"$ref": "#/definitions/DockerProviderConfig",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"DockerProviderConfig": {
"type": "object",
"properties": {
"tls": {
"$ref": "#/definitions/DockerTLSConfig",
"x-nullable": false,
"x-omitempty": false
},
"url": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"DockerTLSConfig": {
"type": "object",
"required": [
"ca_file"
],
"properties": {
"ca_file": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"cert_file": {
"type": "string"
},
"key_file": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
},
"ErrorResponse": {
"type": "object",
"properties": {
"error": {
"type": "string",
"x-nullable": true
},
"message": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"FileType": {
"type": "string",
"enum": [
"config",
"provider",
"middleware"
],
"x-enum-varnames": [
"FileTypeConfig",
"FileTypeProvider",
"FileTypeMiddleware"
],
"x-nullable": false,
"x-omitempty": false
},
"FinalRequest": {
"type": "object",
"properties": {
"body": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
},
"host": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"method": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"path": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"query": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"FinalResponse": {
"type": "object",
"properties": {
"body": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
},
"statusCode": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HTTPHeader": {
"type": "object",
"properties": {
"key": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"value": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HealthCheckConfig": {
"type": "object",
"properties": {
"disable": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"interval": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"path": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"retries": {
"description": "<0: immediate, 0: default, >0: threshold",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"timeout": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"use_get": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HealthExtra": {
"type": "object",
"properties": {
"config": {
"$ref": "#/definitions/LoadBalancerConfig",
"x-nullable": false,
"x-omitempty": false
},
"pool": {
"type": "object",
"additionalProperties": {},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HealthInfoWithoutDetail": {
"type": "object",
"properties": {
"latency": {
"description": "latency in microseconds",
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"status": {
"type": "string",
"enum": [
"healthy",
"unhealthy",
"napping",
"starting",
"error",
"unknown"
],
"x-nullable": false,
"x-omitempty": false
},
"uptime": {
"description": "uptime in milliseconds",
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HealthJSON": {
"type": "object",
"properties": {
"config": {
"$ref": "#/definitions/HealthCheckConfig",
"x-nullable": false,
"x-omitempty": false
},
"detail": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"extra": {
"allOf": [
{
"$ref": "#/definitions/HealthExtra"
}
],
"x-nullable": true
},
"lastSeen": {
"description": "unix timestamp in seconds",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"latency": {
"description": "latency in milliseconds",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"started": {
"description": "unix timestamp in seconds",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"status": {
"$ref": "#/definitions/HealthStatusString",
"x-nullable": false,
"x-omitempty": false
},
"uptime": {
"description": "uptime in seconds",
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"url": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HealthMap": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/HealthStatusString"
},
"x-nullable": false,
"x-omitempty": false
},
"HealthStatusString": {
"type": "string",
"enum": [
"unknown",
"healthy",
"napping",
"starting",
"unhealthy",
"error"
],
"x-enum-varnames": [
"StatusUnknownStr",
"StatusHealthyStr",
"StatusNappingStr",
"StatusStartingStr",
"StatusUnhealthyStr",
"StatusErrorStr"
],
"x-nullable": false,
"x-omitempty": false
},
"HomepageCategory": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/HomepageItem"
},
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageItem": {
"type": "object",
"properties": {
"alias": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"all_sort_order": {
"description": "sort order in all",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"category": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"clicks": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"container_id": {
"type": "string",
"x-nullable": true
},
"description": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"fav_sort_order": {
"description": "sort order in favorite",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"favorite": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"icon": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"description": "display name",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"origin_url": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"provider": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"show": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"sort_order": {
"description": "sort order in category",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"url": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"widget_config": {
"allOf": [
{
"$ref": "#/definitions/widgets.Config"
}
],
"x-nullable": true
},
"widgets": {
"type": "array",
"items": {
"$ref": "#/definitions/HomepageItemWidget"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageItemConfig": {
"type": "object",
"properties": {
"category": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"description": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"favorite": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"icon": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"description": "display name",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"show": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"url": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"widget_config": {
"allOf": [
{
"$ref": "#/definitions/widgets.Config"
}
],
"x-nullable": true
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageItemWidget": {
"type": "object",
"properties": {
"label": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"value": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideCategoryOrderParams": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemAllSortOrderParams": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemFavSortOrderParams": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemFavoriteParams": {
"type": "object",
"properties": {
"value": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemParams": {
"type": "object",
"properties": {
"value": {
"$ref": "#/definitions/HomepageItemConfig",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemSortOrderParams": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemVisibleParams": {
"type": "object",
"properties": {
"value": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"which": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"HomepageOverrideItemsBatchParams": {
"type": "object",
"properties": {
"value": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/HomepageItemConfig"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"IdlewatcherConfig": {
"type": "object",
"properties": {
"depends_on": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"docker": {
"$ref": "#/definitions/DockerConfig",
"x-nullable": false,
"x-omitempty": false
},
"idle_timeout": {
"description": "0: no idle watcher.\nPositive: idle watcher with idle timeout.\nNegative: idle watcher as a dependency.\tIdleTimeout time.Duration `json:\"idle_timeout\" json_ext:\"duration\"`",
"allOf": [
{
"$ref": "#/definitions/time.Duration"
}
],
"x-nullable": false,
"x-omitempty": false
},
"no_loading_page": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"proxmox": {
"$ref": "#/definitions/ProxmoxConfig",
"x-nullable": false,
"x-omitempty": false
},
"start_endpoint": {
"description": "Optional path that must be hit to start container",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"stop_method": {
"$ref": "#/definitions/ContainerStopMethod",
"x-nullable": false,
"x-omitempty": false
},
"stop_signal": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"stop_timeout": {
"$ref": "#/definitions/time.Duration",
"x-nullable": false,
"x-omitempty": false
},
"wake_timeout": {
"$ref": "#/definitions/time.Duration",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ListFilesResponse": {
"type": "object",
"properties": {
"config": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"middleware": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"provider": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LoadBalancerConfig": {
"type": "object",
"properties": {
"link": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"mode": {
"$ref": "#/definitions/LoadBalancerMode",
"x-nullable": false,
"x-omitempty": false
},
"options": {
"type": "object",
"additionalProperties": {},
"x-nullable": false,
"x-omitempty": false
},
"sticky": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"sticky_max_age": {
"$ref": "#/definitions/time.Duration",
"x-nullable": false,
"x-omitempty": false
},
"weight": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LoadBalancerMode": {
"type": "string",
"enum": [
"",
"roundrobin",
"leastconn",
"iphash"
],
"x-enum-varnames": [
"LoadbalanceModeUnset",
"LoadbalanceModeRoundRobin",
"LoadbalanceModeLeastConn",
"LoadbalanceModeIPHash"
],
"x-nullable": false,
"x-omitempty": false
},
"LogFilter-CIDR": {
"type": "object",
"properties": {
"negative": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"values": {
"type": "array",
"items": {
"$ref": "#/definitions/CIDR"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LogFilter-HTTPHeader": {
"type": "object",
"properties": {
"negative": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"values": {
"type": "array",
"items": {
"$ref": "#/definitions/HTTPHeader"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LogFilter-HTTPMethod": {
"type": "object",
"properties": {
"negative": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"values": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LogFilter-Host": {
"type": "object",
"properties": {
"negative": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"values": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LogFilter-StatusCodeRange": {
"type": "object",
"properties": {
"negative": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"values": {
"type": "array",
"items": {
"$ref": "#/definitions/StatusCodeRange"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"LogRetention": {
"type": "object",
"properties": {
"days": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"keep_size": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"last": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"MetricsPeriod": {
"type": "string",
"enum": [
"5m",
"15m",
"1h",
"1d",
"1mo"
],
"x-enum-varnames": [
"MetricsPeriod5m",
"MetricsPeriod15m",
"MetricsPeriod1h",
"MetricsPeriod1d",
"MetricsPeriod1mo"
],
"x-nullable": false,
"x-omitempty": false
},
"MockCookie": {
"type": "object",
"properties": {
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"value": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"MockRequest": {
"type": "object",
"properties": {
"body": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"cookies": {
"type": "array",
"items": {
"$ref": "#/definitions/MockCookie"
},
"x-nullable": false,
"x-omitempty": false
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
},
"host": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"method": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"path": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"query": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
},
"remoteIP": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"MockResponse": {
"type": "object",
"properties": {
"body": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-nullable": false,
"x-omitempty": false
},
"statusCode": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"NewAgentRequest": {
"type": "object",
"required": [
"host",
"name",
"port",
"type"
],
"properties": {
"container_runtime": {
"default": "docker",
"enum": [
"docker",
"podman"
],
"allOf": [
{
"$ref": "#/definitions/agent.ContainerRuntime"
}
]
},
"host": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"nightly": {
"type": "boolean"
},
"port": {
"type": "integer",
"maximum": 65535,
"minimum": 1,
"x-nullable": false,
"x-omitempty": false
},
"type": {
"type": "string",
"enum": [
"docker",
"system"
],
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"NewAgentResponse": {
"type": "object",
"properties": {
"ca": {
"$ref": "#/definitions/PEMPairResponse",
"x-nullable": false,
"x-omitempty": false
},
"client": {
"$ref": "#/definitions/PEMPairResponse",
"x-nullable": false,
"x-omitempty": false
},
"compose": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"PEMPairResponse": {
"type": "object",
"properties": {
"cert": {
"type": "string",
"format": "base64",
"x-nullable": false,
"x-omitempty": false
},
"key": {
"type": "string",
"format": "base64",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ParsedRule": {
"type": "object",
"properties": {
"do": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"isResponseRule": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"on": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"validationError": {
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"PlaygroundRequest": {
"type": "object",
"required": [
"rules"
],
"properties": {
"mockRequest": {
"$ref": "#/definitions/MockRequest"
},
"mockResponse": {
"$ref": "#/definitions/MockResponse"
},
"rules": {
"type": "array",
"items": {
"$ref": "#/definitions/routeApi.RawRule"
},
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"PlaygroundResponse": {
"type": "object",
"properties": {
"executionError": {
"x-nullable": false,
"x-omitempty": false
},
"finalRequest": {
"$ref": "#/definitions/FinalRequest",
"x-nullable": false,
"x-omitempty": false
},
"finalResponse": {
"$ref": "#/definitions/FinalResponse",
"x-nullable": false,
"x-omitempty": false
},
"matchedRules": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"parsedRules": {
"type": "array",
"items": {
"$ref": "#/definitions/ParsedRule"
},
"x-nullable": false,
"x-omitempty": false
},
"upstreamCalled": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"Port": {
"type": "object",
"properties": {
"listening": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"proxy": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ProviderStats": {
"type": "object",
"properties": {
"reverse_proxies": {
"$ref": "#/definitions/RouteStats",
"x-nullable": false,
"x-omitempty": false
},
"streams": {
"$ref": "#/definitions/RouteStats",
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"type": {
"$ref": "#/definitions/ProviderType",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ProviderType": {
"type": "string",
"enum": [
"docker",
"file",
"agent"
],
"x-enum-varnames": [
"ProviderTypeDocker",
"ProviderTypeFile",
"ProviderTypeAgent"
],
"x-nullable": false,
"x-omitempty": false
},
"ProxmoxConfig": {
"type": "object",
"required": [
"node",
"vmid"
],
"properties": {
"node": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"vmid": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ProxyStats": {
"type": "object",
"properties": {
"providers": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/ProviderStats"
},
"x-nullable": false,
"x-omitempty": false
},
"reverse_proxies": {
"$ref": "#/definitions/RouteStats",
"x-nullable": false,
"x-omitempty": false
},
"streams": {
"$ref": "#/definitions/RouteStats",
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"RequestLoggerConfig": {
"type": "object",
"properties": {
"buffer_size": {
"description": "Deprecated: buffer size is adjusted dynamically",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"fields": {
"$ref": "#/definitions/accesslog.Fields",
"x-nullable": false,
"x-omitempty": false
},
"filters": {
"$ref": "#/definitions/accesslog.Filters",
"x-nullable": false,
"x-omitempty": false
},
"format": {
"type": "string",
"enum": [
"common",
"combined",
"json"
],
"x-nullable": false,
"x-omitempty": false
},
"path": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"retention": {
"$ref": "#/definitions/LogRetention",
"x-nullable": false,
"x-omitempty": false
},
"rotate_interval": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"stdout": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"Route": {
"type": "object",
"properties": {
"access_log": {
"allOf": [
{
"$ref": "#/definitions/RequestLoggerConfig"
}
],
"x-nullable": true
},
"agent": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"alias": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"bind": {
"description": "for TCP and UDP routes, bind address to listen on",
"type": "string",
"x-nullable": true
},
"container": {
"description": "Docker only",
"allOf": [
{
"$ref": "#/definitions/Container"
}
],
"x-nullable": true
},
"disable_compression": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"excluded": {
"type": "boolean",
"x-nullable": true
},
"excluded_reason": {
"type": "string",
"x-nullable": true
},
"health": {
"description": "for swagger",
"allOf": [
{
"$ref": "#/definitions/HealthJSON"
}
],
"x-nullable": false,
"x-omitempty": false
},
"healthcheck": {
"description": "null on load-balancer routes",
"allOf": [
{
"$ref": "#/definitions/HealthCheckConfig"
}
],
"x-nullable": true
},
"homepage": {
"$ref": "#/definitions/HomepageItemConfig",
"x-nullable": false,
"x-omitempty": false
},
"host": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"idlewatcher": {
"allOf": [
{
"$ref": "#/definitions/IdlewatcherConfig"
}
],
"x-nullable": true
},
"index": {
"description": "Index file to serve for single-page app mode",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"load_balance": {
"allOf": [
{
"$ref": "#/definitions/LoadBalancerConfig"
}
],
"x-nullable": true
},
"lurl": {
"description": "private fields",
"type": "string",
"x-nullable": true
},
"middlewares": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/types.LabelMap"
},
"x-nullable": true
},
"no_tls_verify": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"path_patterns": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": true
},
"port": {
"$ref": "#/definitions/Port",
"x-nullable": false,
"x-omitempty": false
},
"provider": {
"description": "for backward compatibility",
"type": "string",
"x-nullable": true
},
"purl": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"response_header_timeout": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"root": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"rule_file": {
"type": "string",
"x-nullable": true
},
"rules": {
"type": "array",
"items": {
"$ref": "#/definitions/rules.Rule"
},
"x-nullable": true
},
"scheme": {
"type": "string",
"enum": [
"http",
"https",
"h2c",
"tcp",
"udp",
"fileserver"
],
"x-nullable": false,
"x-omitempty": false
},
"spa": {
"description": "Single-page app mode: serves index for non-existent paths",
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"ssl_certificate": {
"description": "Path to client certificate",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"ssl_certificate_key": {
"description": "Path to client certificate key",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"ssl_protocols": {
"description": "Allowed TLS protocols",
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"ssl_server_name": {
"description": "SSL/TLS proxy options (nginx-like)",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"ssl_trusted_certificate": {
"description": "Path to trusted CA certificates",
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"RouteProvider": {
"type": "object",
"properties": {
"full_name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"short_name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"RouteStats": {
"type": "object",
"properties": {
"error": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"healthy": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"napping": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"unhealthy": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"unknown": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"RouteStatus": {
"type": "object",
"properties": {
"latency": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"status": {
"type": "string",
"enum": [
"healthy",
"unhealthy",
"unknown",
"napping",
"starting"
],
"x-nullable": false,
"x-omitempty": false
},
"timestamp": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"RouteStatusesByAlias": {
"type": "object",
"properties": {
"statuses": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/HealthInfoWithoutDetail"
},
"x-nullable": false,
"x-omitempty": false
},
"timestamp": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"RouteUptimeAggregate": {
"type": "object",
"properties": {
"alias": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"avg_latency": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"current_status": {
"type": "string",
"enum": [
"healthy",
"unhealthy",
"unknown",
"napping",
"starting"
],
"x-nullable": false,
"x-omitempty": false
},
"display_name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"downtime": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"idle": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"is_docker": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"is_excluded": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"statuses": {
"type": "array",
"items": {
"$ref": "#/definitions/RouteStatus"
},
"x-nullable": false,
"x-omitempty": false
},
"uptime": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"ServerInfo": {
"type": "object",
"properties": {
"containers": {
"$ref": "#/definitions/ContainerStats",
"x-nullable": false,
"x-omitempty": false
},
"images": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"memory": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"n_cpu": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"version": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"StatsResponse": {
"type": "object",
"properties": {
"proxies": {
"$ref": "#/definitions/ProxyStats",
"x-nullable": false,
"x-omitempty": false
},
"uptime": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"StatusCodeRange": {
"type": "object",
"properties": {
"end": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"start": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"SuccessResponse": {
"type": "object",
"properties": {
"details": {
"type": "object",
"additionalProperties": {},
"x-nullable": true
},
"message": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"SystemInfo": {
"type": "object",
"properties": {
"cpu_average": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"disks": {
"description": "disk usage by partition",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/disk.UsageStat"
},
"x-nullable": false,
"x-omitempty": false
},
"disks_io": {
"description": "disk IO by device",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/disk.IOCountersStat"
},
"x-nullable": false,
"x-omitempty": false
},
"memory": {
"$ref": "#/definitions/mem.VirtualMemoryStat",
"x-nullable": false,
"x-omitempty": false
},
"network": {
"$ref": "#/definitions/net.IOCountersStat",
"x-nullable": false,
"x-omitempty": false
},
"sensors": {
"description": "sensor temperature by key",
"type": "array",
"items": {
"$ref": "#/definitions/sensors.TemperatureStat"
},
"x-nullable": false,
"x-omitempty": false
},
"timestamp": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"SystemInfoAggregate": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"SystemInfoAggregateMode": {
"type": "string",
"enum": [
"cpu_average",
"memory_usage",
"memory_usage_percent",
"disks_read_speed",
"disks_write_speed",
"disks_iops",
"disk_usage",
"network_speed",
"network_transfer",
"sensor_temperature"
],
"x-enum-varnames": [
"SystemInfoAggregateModeCPUAverage",
"SystemInfoAggregateModeMemoryUsage",
"SystemInfoAggregateModeMemoryUsagePercent",
"SystemInfoAggregateModeDisksReadSpeed",
"SystemInfoAggregateModeDisksWriteSpeed",
"SystemInfoAggregateModeDisksIOPS",
"SystemInfoAggregateModeDiskUsage",
"SystemInfoAggregateModeNetworkSpeed",
"SystemInfoAggregateModeNetworkTransfer",
"SystemInfoAggregateModeSensorTemperature"
],
"x-nullable": false,
"x-omitempty": false
},
"UptimeAggregate": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/RouteUptimeAggregate"
},
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"VerifyNewAgentRequest": {
"type": "object",
"properties": {
"ca": {
"$ref": "#/definitions/PEMPairResponse",
"x-nullable": false,
"x-omitempty": false
},
"client": {
"$ref": "#/definitions/PEMPairResponse",
"x-nullable": false,
"x-omitempty": false
},
"container_runtime": {
"$ref": "#/definitions/agent.ContainerRuntime",
"x-nullable": false,
"x-omitempty": false
},
"host": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"accesslog.FieldConfig": {
"type": "object",
"properties": {
"config": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/accesslog.FieldMode"
},
"x-nullable": false,
"x-omitempty": false
},
"default": {
"enum": [
"keep",
"drop",
"redact"
],
"allOf": [
{
"$ref": "#/definitions/accesslog.FieldMode"
}
],
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"accesslog.FieldMode": {
"type": "string",
"enum": [
"keep",
"drop",
"redact"
],
"x-enum-varnames": [
"FieldModeKeep",
"FieldModeDrop",
"FieldModeRedact"
],
"x-nullable": false,
"x-omitempty": false
},
"accesslog.Fields": {
"type": "object",
"properties": {
"cookies": {
"$ref": "#/definitions/accesslog.FieldConfig",
"x-nullable": false,
"x-omitempty": false
},
"headers": {
"$ref": "#/definitions/accesslog.FieldConfig",
"x-nullable": false,
"x-omitempty": false
},
"query": {
"$ref": "#/definitions/accesslog.FieldConfig",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"accesslog.Filters": {
"type": "object",
"properties": {
"cidr": {
"$ref": "#/definitions/LogFilter-CIDR",
"x-nullable": false,
"x-omitempty": false
},
"headers": {
"description": "header exists or header == value",
"allOf": [
{
"$ref": "#/definitions/LogFilter-HTTPHeader"
}
],
"x-nullable": false,
"x-omitempty": false
},
"host": {
"$ref": "#/definitions/LogFilter-Host",
"x-nullable": false,
"x-omitempty": false
},
"method": {
"$ref": "#/definitions/LogFilter-HTTPMethod",
"x-nullable": false,
"x-omitempty": false
},
"status_codes": {
"$ref": "#/definitions/LogFilter-StatusCodeRange",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"agent.ContainerRuntime": {
"type": "string",
"enum": [
"docker",
"podman"
],
"x-enum-varnames": [
"ContainerRuntimeDocker",
"ContainerRuntimePodman"
],
"x-nullable": false,
"x-omitempty": false
},
"agentpool.Agent": {
"type": "object",
"properties": {
"addr": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"runtime": {
"$ref": "#/definitions/agent.ContainerRuntime",
"x-nullable": false,
"x-omitempty": false
},
"supports_tcp_stream": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"supports_udp_stream": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"version": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"auth.UserPassAuthCallbackRequest": {
"type": "object",
"properties": {
"password": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"username": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"container.ContainerState": {
"type": "string",
"enum": [
"created",
"running",
"paused",
"restarting",
"removing",
"exited",
"dead"
],
"x-enum-comments": {
"StateCreated": "StateCreated indicates the container is created, but not (yet) started.",
"StateDead": "StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts.",
"StateExited": "StateExited indicates that the container exited.",
"StatePaused": "StatePaused indicates that the container's current state is paused.",
"StateRemoving": "StateRemoving indicates that the container is being removed.",
"StateRestarting": "StateRestarting indicates that the container is currently restarting.",
"StateRunning": "StateRunning indicates that the container is running."
},
"x-enum-descriptions": [
"StateCreated indicates the container is created, but not (yet) started.",
"StateRunning indicates that the container is running.",
"StatePaused indicates that the container's current state is paused.",
"StateRestarting indicates that the container is currently restarting.",
"StateRemoving indicates that the container is being removed.",
"StateExited indicates that the container exited.",
"StateDead indicates that the container failed to be deleted. Containers in this state are attempted to be cleaned up when the daemon restarts."
],
"x-enum-varnames": [
"StateCreated",
"StateRunning",
"StatePaused",
"StateRestarting",
"StateRemoving",
"StateExited",
"StateDead"
],
"x-nullable": false,
"x-omitempty": false
},
"container.PortSummary": {
"type": "object",
"properties": {
"IP": {
"description": "Host IP address that the container's port is mapped to",
"allOf": [
{
"$ref": "#/definitions/netip.Addr"
}
],
"x-nullable": false,
"x-omitempty": false
},
"PrivatePort": {
"description": "Port on the container\nRequired: true",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"PublicPort": {
"description": "Port exposed on the host",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"Type": {
"description": "type\nRequired: true\nEnum: [\"tcp\",\"udp\",\"sctp\"]",
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"disk.IOCountersStat": {
"type": "object",
"properties": {
"iops": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"description": "ReadCount uint64 `json:\"readCount\"`\nMergedReadCount uint64 `json:\"mergedReadCount\"`\nWriteCount uint64 `json:\"writeCount\"`\nMergedWriteCount uint64 `json:\"mergedWriteCount\"`\nReadBytes uint64 `json:\"readBytes\"`\nWriteBytes uint64 `json:\"writeBytes\"`\nReadTime uint64 `json:\"readTime\"`\nWriteTime uint64 `json:\"writeTime\"`\nIopsInProgress uint64 `json:\"iopsInProgress\"`\nIoTime uint64 `json:\"ioTime\"`\nWeightedIO uint64 `json:\"weightedIO\"`",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"read_bytes": {
"description": "SerialNumber string `json:\"serialNumber\"`\nLabel string `json:\"label\"`",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"read_count": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"read_speed": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"write_bytes": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"write_count": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"write_speed": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"disk.UsageStat": {
"type": "object",
"properties": {
"free": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"fstype": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"path": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"total": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"used": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"used_percent": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"dockerapi.RestartRequest": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"signal": {
"description": "Signal (optional) is the signal to send to the container to (gracefully)\nstop it before forcibly terminating the container with SIGKILL after the\ntimeout expires. If no value is set, the default (SIGTERM) is used.",
"type": "string"
},
"timeout": {
"description": "Timeout (optional) is the timeout (in seconds) to wait for the container\nto stop gracefully before forcibly terminating it with SIGKILL.\n\n- Use nil to use the default timeout (10 seconds).\n- Use '-1' to wait indefinitely.\n- Use '0' to not wait for the container to exit gracefully, and\n immediately proceeds to forcibly terminating the container.\n- Other positive values are used as timeout (in seconds).",
"type": "integer"
}
},
"x-nullable": false,
"x-omitempty": false
},
"dockerapi.StartRequest": {
"type": "object",
"required": [
"id"
],
"properties": {
"checkpointDir": {
"type": "string"
},
"checkpointID": {
"type": "string"
},
"id": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"dockerapi.StopRequest": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"signal": {
"description": "Signal (optional) is the signal to send to the container to (gracefully)\nstop it before forcibly terminating the container with SIGKILL after the\ntimeout expires. If no value is set, the default (SIGTERM) is used.",
"type": "string"
},
"timeout": {
"description": "Timeout (optional) is the timeout (in seconds) to wait for the container\nto stop gracefully before forcibly terminating it with SIGKILL.\n\n- Use nil to use the default timeout (10 seconds).\n- Use '-1' to wait indefinitely.\n- Use '0' to not wait for the container to exit gracefully, and\n immediately proceeds to forcibly terminating the container.\n- Other positive values are used as timeout (in seconds).",
"type": "integer"
}
},
"x-nullable": false,
"x-omitempty": false
},
"iconfetch.Result": {
"type": "object",
"properties": {
"icon": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"x-nullable": false,
"x-omitempty": false
},
"statusCode": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"iconlist.IconMetaSearch": {
"type": "object",
"properties": {
"Dark": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"Light": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"PNG": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"Ref": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"SVG": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"Source": {
"$ref": "#/definitions/icons.Source",
"x-nullable": false,
"x-omitempty": false
},
"WebP": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"icons.Source": {
"type": "string",
"enum": [
"https://",
"@target",
"@walkxcode",
"@selfhst"
],
"x-enum-varnames": [
"SourceAbsolute",
"SourceRelative",
"SourceWalkXCode",
"SourceSelfhSt"
],
"x-nullable": false,
"x-omitempty": false
},
"mem.VirtualMemoryStat": {
"type": "object",
"properties": {
"available": {
"description": "RAM available for programs to allocate\n\nThis value is computed from the kernel specific values.",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"total": {
"description": "Total amount of RAM on this system",
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"used": {
"description": "RAM used by programs\n\nThis value is computed from the kernel specific values.",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"used_percent": {
"description": "Percentage of RAM used by programs\n\nThis value is computed from the kernel specific values.",
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"net.IOCountersStat": {
"type": "object",
"properties": {
"bytes_recv": {
"description": "number of bytes received",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"bytes_sent": {
"description": "Name string `json:\"name\"` // interface name",
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"download_speed": {
"description": "godoxy",
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"upload_speed": {
"description": "godoxy",
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"netip.Addr": {
"anyOf": [
{
"type": "string",
"format": "ipv4"
},
{
"type": "string",
"format": "ipv6"
}
],
"x-nullable": false,
"x-omitempty": false
},
"route.Route": {
"type": "object",
"properties": {
"access_log": {
"allOf": [
{
"$ref": "#/definitions/RequestLoggerConfig"
}
],
"x-nullable": true
},
"agent": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"alias": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"bind": {
"description": "for TCP and UDP routes, bind address to listen on",
"type": "string",
"x-nullable": true
},
"container": {
"description": "Docker only",
"allOf": [
{
"$ref": "#/definitions/Container"
}
],
"x-nullable": true
},
"disable_compression": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"excluded": {
"type": "boolean",
"x-nullable": true
},
"excluded_reason": {
"type": "string",
"x-nullable": true
},
"health": {
"description": "for swagger",
"allOf": [
{
"$ref": "#/definitions/HealthJSON"
}
],
"x-nullable": false,
"x-omitempty": false
},
"healthcheck": {
"description": "null on load-balancer routes",
"allOf": [
{
"$ref": "#/definitions/HealthCheckConfig"
}
],
"x-nullable": true
},
"homepage": {
"$ref": "#/definitions/HomepageItemConfig",
"x-nullable": false,
"x-omitempty": false
},
"host": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"idlewatcher": {
"allOf": [
{
"$ref": "#/definitions/IdlewatcherConfig"
}
],
"x-nullable": true
},
"index": {
"description": "Index file to serve for single-page app mode",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"load_balance": {
"allOf": [
{
"$ref": "#/definitions/LoadBalancerConfig"
}
],
"x-nullable": true
},
"lurl": {
"description": "private fields",
"type": "string",
"x-nullable": true
},
"middlewares": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/types.LabelMap"
},
"x-nullable": true
},
"no_tls_verify": {
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"path_patterns": {
"type": "array",
"items": {
"type": "string"
},
"x-nullable": true
},
"port": {
"$ref": "#/definitions/Port",
"x-nullable": false,
"x-omitempty": false
},
"provider": {
"description": "for backward compatibility",
"type": "string",
"x-nullable": true
},
"purl": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"response_header_timeout": {
"type": "integer",
"x-nullable": false,
"x-omitempty": false
},
"root": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"rule_file": {
"type": "string",
"x-nullable": true
},
"rules": {
"type": "array",
"items": {
"$ref": "#/definitions/rules.Rule"
},
"x-nullable": true
},
"scheme": {
"type": "string",
"enum": [
"http",
"https",
"h2c",
"tcp",
"udp",
"fileserver"
],
"x-nullable": false,
"x-omitempty": false
},
"spa": {
"description": "Single-page app mode: serves index for non-existent paths",
"type": "boolean",
"x-nullable": false,
"x-omitempty": false
},
"ssl_certificate": {
"description": "Path to client certificate",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"ssl_certificate_key": {
"description": "Path to client certificate key",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"ssl_protocols": {
"description": "Allowed TLS protocols",
"type": "array",
"items": {
"type": "string"
},
"x-nullable": false,
"x-omitempty": false
},
"ssl_server_name": {
"description": "SSL/TLS proxy options (nginx-like)",
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"ssl_trusted_certificate": {
"description": "Path to trusted CA certificates",
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"routeApi.RawRule": {
"type": "object",
"properties": {
"do": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"on": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"routeApi.RoutesByProvider": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/definitions/route.Route"
}
},
"x-nullable": false,
"x-omitempty": false
},
"rules.Rule": {
"type": "object",
"properties": {
"do": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"on": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"sensors.TemperatureStat": {
"type": "object",
"properties": {
"critical": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"high": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
},
"name": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
},
"temperature": {
"type": "number",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
},
"time.Duration": {
"type": "integer",
"format": "int64",
"enum": [
-9223372036854775808,
9223372036854775807,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000
],
"x-enum-varnames": [
"minDuration",
"maxDuration",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour"
],
"x-nullable": false,
"x-omitempty": false
},
"types.LabelMap": {
"type": "object",
"additionalProperties": {},
"x-nullable": false,
"x-omitempty": false
},
"types.PortMapping": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/container.PortSummary"
},
"x-nullable": false,
"x-omitempty": false
},
"widgets.Config": {
"type": "object",
"properties": {
"config": {
"x-nullable": false,
"x-omitempty": false
},
"provider": {
"type": "string",
"x-nullable": false,
"x-omitempty": false
}
},
"x-nullable": false,
"x-omitempty": false
}
},
"externalDocs": {
"description": "GoDoxy Docs",
"url": "https://docs.godoxy.dev"
}
}