{ "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": { "$ref": "#/definitions/CertInfo" } }, "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": "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/homepage.FetchResult" } } }, "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/homepage.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 }, "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/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 }, "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": false, "x-omitempty": false }, "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 }, "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 }, "homepage.FetchResult": { "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 }, "homepage.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/homepage.IconSource", "x-nullable": false, "x-omitempty": false }, "WebP": { "type": "boolean", "x-nullable": false, "x-omitempty": false } }, "x-nullable": false, "x-omitempty": false }, "homepage.IconSource": { "type": "string", "enum": [ "https://", "@target", "@walkxcode", "@selfhst" ], "x-enum-varnames": [ "IconSourceAbsolute", "IconSourceRelative", "IconSourceWalkXCode", "IconSourceSelfhSt" ], "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 }, "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": false, "x-omitempty": false }, "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" } }