{ "swagger": "2.0", "info": { "contact": {} }, "paths": { "/api/actions/forget-arbitration": { "post": { "description": "Deletes all heartbeat rows from the arbitrator for the configured secret.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Reset arbitration data", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/actions/set-active-status": { "get": { "description": "Flips this replication-manager between Active and Standby and propagates the new status to all its clusters (yield to peer / take over). Calm-period only: refused with 409 during split brain. Server-level counterpart of the per-cluster set-active-status endpoint.", "produces": [ "text/plain" ], "tags": [ "Monitor" ], "summary": "Toggle server active/standby (server-level, calm-period switchover)", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "Server set to Active|Standby", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "cannot toggle active status during split brain", "schema": { "type": "string" } } } } }, "/api/clusters": { "get": { "description": "Fetches the list of clusters that the user has access to based on ACL.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Fetch clusters", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of clusters", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthenticated resource", "schema": { "type": "string" } }, "500": { "description": "Internal server error", "schema": { "type": "string" } } } } }, "/api/clusters/actions/add/{clusterName}": { "post": { "description": "Adds a new cluster to the replication manager. If the cluster already exists, it returns an error.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Add a new cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Cluster Form", "name": "cluster", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.ClusterForm" } } ], "responses": { "200": { "description": "Cluster added successfully", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Error in request or Cluster already exists", "schema": { "type": "string" } }, "500": { "description": "User is not valid", "schema": { "type": "string" } } } } }, "/api/clusters/actions/delete/{clusterName}": { "delete": { "description": "Deletes a cluster identified by its name.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Delete a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Cluster deleted successfully", "schema": { "type": "string" } }, "500": { "description": "Invalid cluster name\" or \"No Valid ACL", "schema": { "type": "string" } } } } }, "/api/clusters/actions/fetch-dynamic-from-git": { "post": { "description": "Clones the main config git repo and starts any dynamic cluster found there that is not already known locally. Existing clusters are never overwritten. Always returns 200 with a partial-success result unless the whole action cannot start.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Import missing dynamic clusters from the main config git repo", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "Import result, possibly with per-cluster errors", "schema": { "$ref": "#/definitions/server.DynamicClusterImportResult" } }, "403": { "description": "administrator access required, or instance not eligible (requires a registered Cloud18 account on a paid plan)", "schema": { "type": "string" } }, "405": { "description": "method not allowed", "schema": { "type": "string" } }, "500": { "description": "action could not start", "schema": { "type": "string" } } } } }, "/api/clusters/actions/rename/{clusterName}/{newClusterName}": { "post": { "description": "Renames a cluster identified by its name.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Rename a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "New Cluster Name", "name": "newClusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Cluster renamed successfully", "schema": { "type": "string" } }, "500": { "description": "Invalid cluster name\" or \"Cluster name already exists\" or \"No Valid ACL", "schema": { "type": "string" } } } } }, "/api/clusters/for-sale": { "get": { "description": "This endpoint returns a list of peer clusters that are available for sale, excluding those that are booked by the requesting user.", "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Retrieve peer clusters for sale", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of peer clusters available for sale", "schema": { "type": "array", "items": { "$ref": "#/definitions/peer.PeerCluster" } } }, "401": { "description": "Unauthenticated resource", "schema": { "type": "string" } }, "500": { "description": "Failed to get token claims or Error Marshal", "schema": { "type": "string" } } } } }, "/api/clusters/peers": { "get": { "description": "This endpoint retrieves the peer clusters that a user has access to.", "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Retrieve peer clusters for a user", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of peer clusters", "schema": { "type": "array", "items": { "$ref": "#/definitions/peer.PeerCluster" } } }, "401": { "description": "Unauthenticated resource", "schema": { "type": "string" } }, "500": { "description": "Failed to get token claims or Error Marshal", "schema": { "type": "string" } } } } }, "/api/clusters/settings/actions/reload-clusters-plan-info": { "post": { "description": "This endpoint reloads the cluster plan information for all clusters without reapplying plans.", "tags": [ "ClusterActions" ], "summary": "Reload cluster plan information (all clusters)", "parameters": [ { "description": "Reload plan repository options", "name": "body", "in": "body", "schema": { "$ref": "#/definitions/server.ReloadPlanRequest" } } ], "responses": { "200": { "description": "Successfully reloaded plan information", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/settings/actions/reload-clusters-plans": { "post": { "description": "This endpoint reloads the cluster plans for all clusters.", "tags": [ "ClusterActions" ], "summary": "Reload cluster plans", "parameters": [ { "description": "Reload plan repository options", "name": "body", "in": "body", "schema": { "$ref": "#/definitions/server.ReloadPlanRequest" } } ], "responses": { "200": { "description": "Successfully reloaded plans", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/settings/actions/set/{settingName}/{settingValue}": { "post": { "description": "This endpoint sets the global settings for the server.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "GlobalSetting" ], "summary": "Set global settings for the server", "parameters": [ { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true }, { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "Setting Value", "name": "settingValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully set setting", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/settings/actions/switch/{settingName}": { "post": { "description": "This endpoint switches the global settings for the server.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "GlobalSetting" ], "summary": "Switch global settings for the server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully switched setting", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/settings/actions/switch/{settingName}/{state}": { "post": { "description": "This endpoint switches the global settings for the server.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "GlobalSetting" ], "summary": "Switch global settings for the server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true }, { "type": "string", "description": "Toggle state (on/off)", "name": "state", "in": "path" } ], "responses": { "200": { "description": "Successfully switched setting", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}": { "get": { "description": "This endpoint retrieves the details of a specified cluster and returns it in JSON format.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve details of a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Cluster runtime state (dynamic)", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/add/{clusterShardingName}": { "post": { "description": "This endpoint adds a sharding cluster to an existing cluster and triggers a rolling restart.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Add a sharding cluster to an existing cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Cluster Sharding Name", "name": "clusterShardingName", "in": "path", "required": true } ], "responses": { "200": { "description": "Sharding cluster added successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/addserver/{host}/{port}": { "post": { "description": "This endpoint adds a server to the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Add a server to a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Host", "name": "host", "in": "path", "required": true }, { "type": "string", "description": "Port", "name": "port", "in": "path", "required": true } ], "responses": { "200": { "description": "Monitor added", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "Error adding new monitor", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/addserver/{host}/{port}/{type}": { "post": { "description": "This endpoint adds a server to the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Add a server to a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Host", "name": "host", "in": "path", "required": true }, { "type": "string", "description": "Port", "name": "port", "in": "path", "required": true }, { "type": "string", "description": "Type", "name": "type", "in": "path" } ], "responses": { "200": { "description": "Monitor added", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "Error adding new monitor", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/addserver/{host}/{port}/{type}/{tag}": { "post": { "description": "This endpoint adds a server to the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Add a server to a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Host", "name": "host", "in": "path", "required": true }, { "type": "string", "description": "Port", "name": "port", "in": "path", "required": true }, { "type": "string", "description": "Type", "name": "type", "in": "path" }, { "type": "string", "description": "Tag", "name": "tag", "in": "path" } ], "responses": { "200": { "description": "Monitor added", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "Error adding new monitor", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/analyze-all-tables/{persistent}": { "post": { "description": "This endpoint triggers the analyze calculation for all tables in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Calculate analyze for all tables in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered analyze calculation for all tables", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/cancel-rolling-reprov": { "post": { "description": "This endpoint cancels the rolling reprovision for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterProvision" ], "summary": "Cancel rolling reprovision for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully cancelled rolling reprovision", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/cancel-rolling-restart": { "post": { "description": "This endpoint cancels the rolling restart for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMaintenance" ], "summary": "Cancel rolling restart for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully cancelled rolling restart", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/certificates-rotate": { "post": { "description": "Rotate the keys for the specified cluster", "tags": [ "ClusterCertificates" ], "summary": "Rotate keys for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Keys rotated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/checksum-all-tables": { "post": { "description": "This endpoint triggers the checksum calculation for all tables in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Calculate checksum for all tables in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered checksum calculation for all tables", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/checksum-repair-all-tables": { "post": { "description": "This endpoint triggers the checksum calculation for all tables in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Compute Repair for all tables in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered checksum calculation for all tables", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/dropserver/{host}/{port}": { "post": { "description": "This endpoint allows dropping a server monitor or proxy monitor from a specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Drop a server monitor from a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Host", "name": "host", "in": "path", "required": true }, { "type": "string", "description": "Port", "name": "port", "in": "path", "required": true } ], "responses": { "200": { "description": "Monitor dropped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/dropserver/{host}/{port}/{type}": { "post": { "description": "This endpoint allows dropping a server monitor or proxy monitor from a specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Drop a server monitor from a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Monitor Type (proxy or database)", "name": "type", "in": "path" }, { "type": "string", "description": "Host", "name": "host", "in": "path", "required": true }, { "type": "string", "description": "Port", "name": "port", "in": "path", "required": true } ], "responses": { "200": { "description": "Monitor dropped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/dropserver/{serverName}": { "post": { "description": "This endpoint allows dropping a server monitor or proxy monitor from a specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Drop a server monitor from a cluster by name", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Monitor Server ID", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Monitor dropped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/failover": { "post": { "description": "This endpoint triggers a master failover for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Handles the failover process for a given cluster.", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered failover", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/master-physical-backup": { "post": { "description": "This endpoint triggers a physical backup for the master of the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterBackup" ], "summary": "Perform a physical backup for the master of a specific cluster", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered physical backup", "schema": { "type": "string" } }, "400": { "description": "No cluster found", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/monitor-schemas": { "post": { "description": "This endpoint triggers the monitoring of schemas for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMonitor" ], "summary": "Monitor schemas for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered schema monitoring", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/optimize": { "post": { "description": "This endpoint triggers the optimization process for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Optimize a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered optimization", "schema": { "type": "string" } }, "400": { "description": "No cluster found", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/refresh-apps-template": { "get": { "description": "Retrieves the tree structure of the application template repository for a specific cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Refresh App Template from Repo", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Application template repository tree structure", "schema": { "$ref": "#/definitions/treehelper.FileTreeCache" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error getting repository tree\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/rejoin/{method}": { "post": { "description": "Explicitly (re-)arms the rejoin using the operator-chosen method. Safe methods use /actions/rejoin (needs cluster-failover); destructive methods (ignore-delta-force, bootstrap-repli-ftwrl, reset-master-reslave) use /actions/unsafe-rejoin (needs cluster-failover + cluster-rejoin-unsafe). The method must match its verb.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Rejoin the diverged master with a chosen recovery method", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "flashback", "logical-dump", "logical-backup", "physical-backup", "rejoin-script", "ignore-delta-force", "bootstrap-repli-ftwrl", "reset-master-reslave" ], "type": "string", "description": "Rejoin method. Safe (via /actions/rejoin): flashback, logical-dump (direct master dump), logical-backup, physical-backup, rejoin-script. Destructive (via /actions/unsafe-rejoin): ignore-delta-force, bootstrap-repli-ftwrl, reset-master-reslave", "name": "method", "in": "path", "required": true } ], "responses": { "200": { "description": "Rejoin armed", "schema": { "type": "string" } }, "400": { "description": "Invalid rejoin method / wrong verb", "schema": { "type": "string" } }, "403": { "description": "No valid ACL / method needs the unsafe verb", "schema": { "type": "string" } }, "404": { "description": "No crash history to rejoin", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/replication/bootstrap/{topology}": { "post": { "description": "This endpoint triggers the bootstrap replication process for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterReplication" ], "summary": "Bootstrap replication for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Topology", "name": "topology", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully bootstrapped replication", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/replication/cleanup": { "post": { "description": "This endpoint triggers the cleanup process for replication bootstrap for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterReplication" ], "summary": "Cleanup replication bootstrap for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully cleaned up replication bootstrap", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/reset-failover-control": { "post": { "description": "This endpoint resets the failover control for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Reset failover control for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully reset failover control", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/reset-sla": { "post": { "description": "Reset the SLA for the specified cluster", "tags": [ "ClusterActions" ], "summary": "Reset SLA for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "SLA reset successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/restic-mount-toggle": { "post": { "description": "Mounts or unmounts the restic repository for the cluster. Mount is persistent until explicitly unmounted. Supports filtering by host, tag, path and various mount options.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Restic" ], "summary": "Toggle restic mount on/off", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Mount toggle request with optional mount options", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.ResticMountToggleRequest" } } ], "responses": { "200": { "description": "Mount status after operation", "schema": { "$ref": "#/definitions/server.ResticMountStatusResponse" } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "Mount already active at different path", "schema": { "type": "string" } }, "500": { "description": "Operation failed", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/rolling/{action}": { "post": { "description": "Triggers one of: restart, reprov, upgrade, jobs-upgrade.\nreprov and upgrade are long-running and return 202 Accepted immediately; the operation runs in the background.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterMaintenance" ], "summary": "Trigger a rolling action on a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "restart", "reprov", "upgrade", "jobs-upgrade" ], "type": "string", "description": "Rolling action", "name": "action", "in": "path", "required": true } ], "responses": { "200": { "description": "Action triggered successfully", "schema": { "type": "string" } }, "202": { "description": "Long-running action started in background (reprov, upgrade)", "schema": { "type": "string" } }, "400": { "description": "Unknown rolling action", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/rotate-passwords": { "post": { "description": "This endpoint rotates the passwords for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Rotate passwords for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully rotated passwords", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/send-alert/{hooktype}": { "post": { "description": "Send a cloud18 alert for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Send Cloud18 Alert", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "cloud18", "slack" ], "type": "string", "description": "Hook Type", "name": "hooktype", "in": "path", "required": true }, { "description": "Alert Message", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.MeetAlertMessage" } } ], "responses": { "200": { "description": "Task queue reset", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/send-email": { "post": { "description": "Sends an email to the specified recipient.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "AlertMailer" ], "summary": "Send Email", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "description": "Email details", "name": "email", "in": "body", "required": true, "schema": { "$ref": "#/definitions/mailer.Email" } } ], "responses": { "200": { "description": "Email sent successfully", "schema": { "type": "string" } }, "400": { "description": "Error in request", "schema": { "type": "string" } }, "500": { "description": "Error sending email", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/set-active-status": { "get": { "description": "Flips this replication-manager between Active and Standby and propagates the new status to all its clusters (yield to peer / take over). Calm-period only: refused with 409 during split brain, when the arbitration is in control.", "produces": [ "text/plain" ], "tags": [ "ClusterActions" ], "summary": "Toggle server active/standby (calm-period switchover)", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server set to Active|Standby", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "cannot toggle active status during split brain", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/staging-refresh": { "post": { "description": "Refreshes the staging cluster specified by the cluster name in the URL.", "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Refresh Staging Cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Staging cluster refresh initiated", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/staging-reload-script": { "post": { "description": "Reloads the staging script specified by the cluster name in the URL.", "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Reload Staging Script", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Staging script reloaded", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/staging-reseed-from-parent": { "post": { "description": "Reseed the specified cluster from its parent cluster.", "produces": [ "application/json" ], "tags": [ "ClusterReplication" ], "summary": "Reseed from Parent Cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Reseed from parent queued", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/start-traffic": { "post": { "description": "This endpoint starts traffic for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTraffics" ], "summary": "Start traffic for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully started traffic", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/start-traffic-staging": { "post": { "description": "This endpoint starts traffic for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTraffics" ], "summary": "Start traffic for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully started traffic", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/stop-traffic": { "post": { "description": "This endpoint stops traffic for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTraffics" ], "summary": "Stop traffic for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully stopped traffic", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/stop-traffic-staging": { "post": { "description": "This endpoint stops traffic for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTraffics" ], "summary": "Stop traffic for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully stopped traffic", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/switchover": { "post": { "description": "This endpoint triggers a master switchover for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Handles the switchover process for a given cluster.", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Preferred Master", "name": "prefmaster", "in": "formData" } ], "responses": { "200": { "description": "Successfully triggered switchover", "schema": { "type": "string" } }, "400": { "description": "Master failed", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/sysbench": { "post": { "description": "This endpoint runs sysbench for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTest" ], "summary": "Run sysbench for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Number of threads", "name": "threads", "in": "query" } ], "responses": { "200": { "description": "Successfully triggered sysbench", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/unsafe-rejoin/{method}": { "post": { "description": "Explicitly (re-)arms the rejoin using the operator-chosen method. Safe methods use /actions/rejoin (needs cluster-failover); destructive methods (ignore-delta-force, bootstrap-repli-ftwrl, reset-master-reslave) use /actions/unsafe-rejoin (needs cluster-failover + cluster-rejoin-unsafe). The method must match its verb.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Rejoin the diverged master with a chosen recovery method", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "flashback", "logical-dump", "logical-backup", "physical-backup", "rejoin-script", "ignore-delta-force", "bootstrap-repli-ftwrl", "reset-master-reslave" ], "type": "string", "description": "Rejoin method. Safe (via /actions/rejoin): flashback, logical-dump (direct master dump), logical-backup, physical-backup, rejoin-script. Destructive (via /actions/unsafe-rejoin): ignore-delta-force, bootstrap-repli-ftwrl, reset-master-reslave", "name": "method", "in": "path", "required": true } ], "responses": { "200": { "description": "Rejoin armed", "schema": { "type": "string" } }, "400": { "description": "Invalid rejoin method / wrong verb", "schema": { "type": "string" } }, "403": { "description": "No valid ACL / method needs the unsafe verb", "schema": { "type": "string" } }, "404": { "description": "No crash history to rejoin", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/waitdatabases": { "post": { "description": "This endpoint waits for the databases to be ready for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Wait for databases to be ready for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Databases are ready", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appHost}/{appPort}/actions/drop": { "post": { "description": "Drops the monitoring configuration for a specific app in a cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Drop App Monitor", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true } ], "responses": { "200": { "description": "App monitor dropped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No app found with the provided app ID\" or \"Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appId}/git/{gitName}/actions/check": { "post": { "produces": [ "application/json" ], "tags": [ "GitRepository" ], "summary": "Check Git Repository by Name", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true }, { "type": "string", "description": "Git Clone Name", "name": "gitName", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "422": { "description": "Unprocessable Entity", "schema": { "type": "object", "additionalProperties": true } } } } }, "/api/clusters/{clusterName}/apps/{appId}/git/{gitName}/actions/get-repo-tree": { "get": { "description": "Retrieves the tree structure of a specified Git repository.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "GitRepository" ], "summary": "Get Git Repository Tree", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true }, { "type": "string", "description": "Git Name", "name": "gitName", "in": "path", "required": true } ], "responses": { "200": { "description": "Git repository tree structure", "schema": { "$ref": "#/definitions/treehelper.FileTreeCache" } }, "400": { "description": "Invalid Git repository URL", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error creating Git client\" or \"Error getting repository tree", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appId}/git/{gitName}/actions/get-repo-tree/{force}": { "get": { "description": "Retrieves the tree structure of a specified Git repository.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "GitRepository" ], "summary": "Get Git Repository Tree", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true }, { "type": "string", "description": "Git Name", "name": "gitName", "in": "path", "required": true }, { "type": "string", "description": "Force refresh of the repository tree", "name": "force", "in": "path" } ], "responses": { "200": { "description": "Git repository tree structure", "schema": { "$ref": "#/definitions/treehelper.FileTreeCache" } }, "400": { "description": "Invalid Git repository URL", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error creating Git client\" or \"Error getting repository tree", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appId}/settings/actions/clear/{setting}": { "post": { "description": "Clear a specific setting for a given app in a cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Clear App Setting", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true }, { "type": "string", "description": "Setting to clear", "name": "setting", "in": "path", "required": true } ], "responses": { "200": { "description": "Setting cleared successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Server Not Found\" \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appId}/settings/actions/set/{setting}/{value}": { "post": { "description": "Set a specific setting for a given app in a cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Set App Setting", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true }, { "type": "string", "description": "Setting to set", "name": "setting", "in": "path", "required": true }, { "type": "string", "description": "Value to set for the setting", "name": "value", "in": "path", "required": true } ], "responses": { "200": { "description": "Setting updated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Server Not Found\" \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appId}/settings/actions/switch/{setting}": { "post": { "description": "Switch a specific setting for a given app in a cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Switch App Setting", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App ID", "name": "appId", "in": "path", "required": true }, { "type": "string", "description": "Setting to switch", "name": "setting", "in": "path", "required": true } ], "responses": { "200": { "description": "Setting switched successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Server Not Found\" \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}": { "get": { "description": "Shows the apps for that specific named cluster", "tags": [ "Apps" ], "summary": "Shows the apps for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server details retrieved successfully", "schema": { "$ref": "#/definitions/cluster.App" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/need-reprov": { "get": { "description": "Check if the app service for a given cluster and app needs reprovisioning", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Check if App Needs Reprovision", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "Need reprov!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "No reprov needed!\" \"Not a Valid Server!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/need-restart": { "get": { "description": "Check if the app service for a given cluster and app needs a restart", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Check if App Needs Restart", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "Need restart!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "No restart needed!\" \"Not a Valid Server!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/provision": { "post": { "description": "Provision the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Provision App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App Service Provisioned", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/restart": { "post": { "description": "Restart the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Restart App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App Service Restarted", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/restart/{node}": { "post": { "description": "Restart the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Restart App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Node Name (optional, if not provided, will restart default node). Can use ALL or * to restart on all nodes.", "name": "node", "in": "path" } ], "responses": { "200": { "description": "App Service Restarted", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/start": { "post": { "description": "Start the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Start App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App Service Started", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/start/{node}": { "post": { "description": "Start the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Start App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Node Name (optional, if not provided, will start default node). Can use ALL or * to start on all nodes.", "name": "node", "in": "path" } ], "responses": { "200": { "description": "App Service Started", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/stop": { "post": { "description": "Stop the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Stop App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App Service Stopped", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/stop/{node}": { "post": { "description": "Stop the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Stop App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Node Name (optional, if not provided, will stop default node). Can use ALL or * to stop on all nodes.", "name": "node", "in": "path" } ], "responses": { "200": { "description": "App Service Stopped", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/unprovision": { "post": { "description": "Unprovision the app service for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Unprovision App Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App Service Unprovisioned", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/update-opensvc-config": { "post": { "description": "Upserts the latest OpenSVC app config and secret variable maps to the live OpenSVC objects", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Push OpenSVC config/secret maps for an app", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App config/secret maps updated", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "App Not Found", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/actions/update-routes": { "post": { "description": "Push route configuration to the OpenSVC gateway service for a given app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Update App Routes", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App Routes Updated", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "App Not Found", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/deployment": { "get": { "description": "Shows the deployments for that specific named app", "tags": [ "Apps" ], "summary": "Shows the deployments for that specific named app", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server details retrieved successfully", "schema": { "type": "array", "items": { "$ref": "#/definitions/config.Deployment" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/deployment/{field}/add": { "post": { "description": "Add a new row to a specific field in a deployment for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Add Deployment Field Row", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Field to add a row to (routes, gitClones, variables, path)", "name": "field", "in": "path", "required": true }, { "description": "Array of objects depending on field: - routes: []config.Route - gitClones: []config.GitClone - variables: []config.VariableMapping - path: []config.PathMapping", "name": "body", "in": "body", "required": true, "schema": {} } ], "responses": { "200": { "description": "Deployment field row added", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error decoding JSON\" \"Server Not Found\" \"Deployment not found\" \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/deployment/{field}/index/{index}/drop": { "post": { "description": "Drop a specific row from a field in a deployment for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Drop Deployment Field Row", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Field to drop a row from (routes, gitClones, variables, path)", "name": "field", "in": "path", "required": true }, { "type": "string", "description": "Index of the row to drop", "name": "index", "in": "path", "required": true } ], "responses": { "200": { "description": "Deployment field row removed", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error decoding JSON\" \"Server Not Found\" \"Deployment not found\" \"Index out of range\" \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/deployment/{field}/index/{index}/{key}/modify": { "post": { "description": "Modify a specific field in a deployment for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Modify Deployment Field", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Field to modify", "name": "field", "in": "path", "required": true }, { "type": "string", "description": "Index of the field to modify", "name": "index", "in": "path", "required": true }, { "type": "string", "description": "Key of the field to modify", "name": "key", "in": "path", "required": true }, { "description": "New value for the field", "name": "value", "in": "body", "required": true, "schema": { "type": "object", "properties": { "value": {} } } } ], "responses": { "200": { "description": "Deployment field modified", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error decoding JSON\" \"Server Not Found\" \"Deployment not found\" \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/git/actions/check": { "post": { "description": "Validates that a Git repository is reachable with the given credentials and that the branch exists.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "GitRepository" ], "summary": "Check Git Repository", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "Check result", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Internal error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/resolve-template": { "post": { "description": "Resolves the template variables for a specific app in a cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Resolve App Template Variable Values", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "description": "Data to resolve in the template", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.DecodedData" } } ], "responses": { "200": { "description": "Resolved template variables", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error parsing template\" or \"Server Not Found\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/service-opensvc": { "get": { "description": "Retrieves the OpenSVC service configuration for a specific app.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Get App Service Config", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "OpenSVC service configuration", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error creating OpenSVC config template\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/settings/actions/reset-from-template": { "post": { "description": "Reloads the app template configuration for a specific app in a cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Reset App from Template", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "App template reloaded successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Server Not Found\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/settings/actions/reset-from-template/preview": { "post": { "description": "Previews template-owned field changes that would be applied by reset-from-template.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Preview Reset App from Template Impact", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.appTemplateResetPreview" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Server Not Found\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/settings/actions/save-as-template/{templateName}": { "post": { "description": "Saves the app configuration to a template directory for a specific app in a cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Save App to Template", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Template Name", "name": "templateName", "in": "path", "required": true } ], "responses": { "200": { "description": "App template saved successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Server Not Found\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/storages/{field}/add": { "post": { "description": "Add a new storage to the deployment for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Add Storage to Deployment", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Field to add storage to (gitClones, localDirectories, sharedDirectories, s3Mounts)", "name": "field", "in": "path", "required": true }, { "description": "Array of objects depending on field: - git: []config.GitClone - local: []config.Volume - shared: []config.Volume - s3: []config.S3Mapping", "name": "body", "in": "body", "required": true, "schema": {} } ], "responses": { "200": { "description": "Storage added successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error decoding JSON\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/storages/{field}/index/{index}/drop": { "post": { "description": "Drop a specific row from a field in a storage for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Drop Storage Field Row", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Field to drop a row from (gitClones, localDirectories, sharedDirectories, s3Mounts)", "name": "field", "in": "path", "required": true }, { "type": "string", "description": "Index of the row to drop", "name": "index", "in": "path", "required": true } ], "responses": { "200": { "description": "Storage field row removed", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error decoding JSON\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/storages/{field}/index/{index}/{key}/modify": { "post": { "description": "Modify a specific field in a storage for a given cluster and app", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Modify Storage Field", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true }, { "type": "string", "description": "Field to modify (gitClones, localDirectories, sharedDirectories, s3Mounts)", "name": "field", "in": "path", "required": true }, { "type": "string", "description": "Index of the field to modify", "name": "index", "in": "path", "required": true }, { "type": "string", "description": "Key of the field to modify", "name": "key", "in": "path", "required": true }, { "description": "New value for the field", "name": "value", "in": "body", "required": true, "schema": { "type": "object", "properties": { "value": {} } } } ], "responses": { "200": { "description": "Storage field modified", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error decoding JSON\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/apps/{appName}/substitution": { "get": { "description": "Retrieves the substitution variables for a specific app in a cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Get App Substitution Variables", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "App Name", "name": "appName", "in": "path", "required": true } ], "responses": { "200": { "description": "Substitution variables for the app", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No substitution variables defined for this app\" or \"Not a valid app\" or \"No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/backups": { "get": { "description": "This endpoint retrieves the backups for the specified cluster.\nRequired grant: cluster-show-backups", "produces": [ "application/json" ], "tags": [ "ClusterBackups" ], "summary": "Retrieve backups for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of backups", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": { "$ref": "#/definitions/backupmgr.BackupMetadata" } } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/backups/reconcile": { "post": { "description": "This endpoint triggers a manual reconciliation check to detect drift between backup metadata files and restic snapshots.\nRequired grant: db-backup", "produces": [ "application/json" ], "tags": [ "ClusterBackup" ], "summary": "Reconcile backup metadata with restic snapshots", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Reconciliation report with orphaned and missing metadata", "schema": { "$ref": "#/definitions/cluster.ReconciliationReport" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Cluster not found", "schema": { "type": "string" } }, "500": { "description": "Reconciliation failed", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/backups/stats": { "get": { "description": "This endpoint retrieves the backup stats for the specified cluster.\nRequired grant: cluster-show-backups", "produces": [ "application/json" ], "tags": [ "ClusterBackups" ], "summary": "Retrieve backup stats for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of backups", "schema": { "type": "array", "items": { "$ref": "#/definitions/backupmgr.BackupStat" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/backups/{backupID}/delete": { "post": { "description": "Deletes a non-restic backup for the specified cluster.\nRequired grant: db-backup", "produces": [ "application/json" ], "tags": [ "ClusterBackups" ], "summary": "Delete a backup by ID", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Backup ID", "name": "backupID", "in": "path", "required": true } ], "responses": { "200": { "description": "Backup deleted", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "Backup running", "schema": { "type": "string" } }, "500": { "description": "Delete failed", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/certificates": { "get": { "description": "This endpoint retrieves the client certificates for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterCertificates" ], "summary": "Retrieve client certificates for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of client certificates", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/diffvariables": { "get": { "description": "This endpoint retrieves the variable differences for the specified cluster.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve variable differences for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of variable differences", "schema": { "type": "array", "items": { "$ref": "#/definitions/cluster.VariableDiff" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/docker/actions/registry-connect": { "post": { "description": "Logs in to a Docker registry using the provided credentials.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Docker" ], "summary": "Docker Registry Login", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Docker Registry Login Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.DockerRegistryLoginForm" } } ], "responses": { "200": { "description": "Docker registry login successful", "schema": { "type": "string" } }, "400": { "description": "Error decoding request body", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error creating request\" or \"Error making request to Docker registry\" or \"Docker registry login failed", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/docker/browse/{imageRef}": { "get": { "description": "Lists files in a specified directory of a Docker image.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Docker" ], "summary": "List Files in Docker Image Directory", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Docker Image Reference", "name": "imageRef", "in": "path", "required": true } ], "responses": { "200": { "description": "List of files in the directory", "schema": { "$ref": "#/definitions/treehelper.FileTreeCache" } }, "400": { "description": "Image reference or source directory not provided", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error listing files in image directory\" or \"Error encoding JSON", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/ext-role/accept": { "post": { "description": "This endpoint accepts external operations for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Accept external operations for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.CloudUserForm" } } ], "responses": { "200": { "description": "Email sent to sponsor!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error accepting subscription", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/ext-role/end": { "post": { "description": "This endpoint removes external operations for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Remove external operations for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.CloudUserForm" } } ], "responses": { "200": { "description": "Sponsor partnership removed!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error removing sponsor partnership", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/ext-role/quote": { "post": { "description": "This endpoint quotes external operations for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Quote external operations for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.CloudUserForm" } } ], "responses": { "200": { "description": "Email sent to sponsor!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error accepting external operations", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/ext-role/refuse": { "post": { "description": "This endpoint rejects external operations for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Reject external operations for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.CloudUserForm" } } ], "responses": { "200": { "description": "Subscription removed!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error removing subscription", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/ext-role/subscribe": { "post": { "description": "This endpoint subscribes external operations for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "subscribe external operations for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.CloudUserForm" } } ], "responses": { "200": { "description": "Email sent to sponsor!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error subscribing external operations", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/graphite-filterlist": { "get": { "description": "This endpoint retrieves the Graphite filter list for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterGraphite" ], "summary": "Retrieve Graphite filter list for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of Graphite filters", "schema": { "type": "array", "items": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/health": { "get": { "description": "Get the health status of the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterHealth" ], "summary": "Get Cluster Health", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Cluster health fetched", "schema": { "$ref": "#/definitions/peer.PeerHealth" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/is-in-errstate/{errstate}": { "get": { "description": "Checks if the specified cluster is in an error state.", "produces": [ "application/json" ], "tags": [ "ClusterHealth" ], "summary": "Check if Cluster is in Error State", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "State to check", "name": "state", "in": "path", "required": true } ], "responses": { "200": { "description": "true\" or \"false", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/jobs": { "get": { "description": "This endpoint retrieves the job entries for the specified cluster.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve job entries for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of job entries", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/jobs-log-level/{task}/{level}": { "get": { "description": "Checks if a specific log level is enabled for a given task in the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterLogging" ], "summary": "Check Cluster Log Level", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "mysqldump", "mydumper", "xtrabackup", "mariabackup", "errorlog", "slowquery", "sqlerrorlog", "auditlog", "zfssnapback", "optimize", "reseedxtrabackup", "reseedmariabackup", "reseedmysqldump", "flashbackxtrabackup", "flashbackmariadbackup", "flashbackmysqldump", "stop", "restart", "start", "printdefault-current", "printdefault-dummy", "jobs-check", "jobs-upgrade" ], "type": "string", "description": "Task Name", "name": "task", "in": "path", "required": true }, { "enum": [ "ERROR", "WARN", "INFO", "DEBUG" ], "type": "string", "description": "Log Level", "name": "level", "in": "path", "required": true } ], "responses": { "200": { "description": "true\" or \"false", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/need-rolling-reprov": { "get": { "description": "Checks if a specified cluster needs a rolling reprovision.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a cluster needs a rolling reprovision", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need rolling reprov!", "schema": { "type": "string" } }, "500": { "description": "503 -No rolling reprov needed!\" or \"500 -No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/need-rolling-restart": { "get": { "description": "Checks if a specified cluster needs a rolling restart.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a cluster needs a rolling restart", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need rolling restart!", "schema": { "type": "string" } }, "500": { "description": "503 -No rolling restart needed!\" or \"500 -No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/opensvc-gateway": { "get": { "description": "Retrieves the gateway nodes of the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterGateway" ], "summary": "Get Cluster Gateway Nodes", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of gateway nodes", "schema": { "type": "array", "items": { "type": "string" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"Error getting gateway nodes", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/opensvc-pools": { "get": { "description": "Retrieves the OpenSVC storage pool names of the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterGateway" ], "summary": "Get OpenSVC Pool List", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "OpenSVC pool list fetched", "schema": { "type": "array", "items": { "$ref": "#/definitions/server.PoolOption" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"Error getting OpenSVC pool list", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/opensvc-stats": { "get": { "description": "Retrieves the OpenSVC daemon status of the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterGateway" ], "summary": "Get OpenSVC Daemon Status", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "OpenSVC daemon status fetched", "schema": { "type": "array", "items": { "$ref": "#/definitions/opensvc.DaemonNodeStats" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"Error getting OpenSVC stats", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/plugins": { "get": { "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "List active log-tailer plugins for a cluster", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "type": "object" } } } } } }, "/api/clusters/{clusterName}/plugins/reload": { "post": { "tags": [ "ClusterSettings" ], "summary": "Reload external log plugins for a cluster", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "OK" } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}": { "get": { "description": "Shows the proxies for that specific named cluster", "tags": [ "Proxies" ], "summary": "Shows the proxies for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Proxy runtime state (dynamic)", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/need-reprov": { "get": { "description": "Check if the proxy service for a given cluster and proxy needs reprovisioning", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Check if Proxy Needs Reprovision", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true } ], "responses": { "200": { "description": "Need reprov!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "No reprov needed!\" \"Not a Valid Server!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/need-restart": { "get": { "description": "Check if the proxy service for a given cluster and proxy needs a restart", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Check if Proxy Needs Restart", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true } ], "responses": { "200": { "description": "Need restart!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "No restart needed!\" \"Not a Valid Server!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/provision": { "post": { "description": "Provision the proxy service for a given cluster and proxy", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Provision Proxy Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true } ], "responses": { "200": { "description": "Proxy Service Provisioned", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/staging/{isStaging}": { "post": { "description": "Set the proxy service for a given cluster and proxy to staging", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Set Staging", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true }, { "type": "string", "description": "Is Staging", "name": "isStaging", "in": "path", "required": true } ], "responses": { "200": { "description": "Proxy Service Set to Staging", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } }, "503": { "description": "Not a Valid Server!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/start": { "post": { "description": "Start the proxy service for a given cluster and proxy", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Start Proxy Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true } ], "responses": { "200": { "description": "Proxy Service Started", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/stop": { "post": { "description": "Stop the proxy service for a given cluster and proxy", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Stop Proxy Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true } ], "responses": { "200": { "description": "Proxy Service Stopped", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/proxies/{proxyName}/actions/unprovision": { "post": { "description": "Unprovision the proxy service for a given cluster and proxy", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Unprovision Proxy Service", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Proxy Name", "name": "proxyName", "in": "path", "required": true } ], "responses": { "200": { "description": "Proxy Service Unprovisioned", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/queryrules": { "get": { "description": "This endpoint retrieves the query rules for the specified cluster.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve query rules for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of query rules", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/check-config": { "post": { "description": "Validates the current restic repository configuration read-only. Returns ok, initialization_required, or error.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Check Restic Repository Config", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Repository check result", "schema": { "$ref": "#/definitions/backupmgr.ManualCheckResult" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/copy": { "post": { "description": "Copies snapshots from a source repository into the cluster's configured Restic repository.", "consumes": [ "application/json" ], "produces": [ "text/plain" ], "tags": [ "ClusterRestic" ], "summary": "Copy Restic Repository", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Copy options", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/backupmgr.ResticCopyOption" } } ], "responses": { "200": { "description": "Restic repository copy queued", "schema": { "type": "string" } }, "400": { "description": "Invalid payload or guardrail rejection", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/create-bucket": { "post": { "description": "Idempotently creates the S3 bucket for the cluster's saved Restic S3 configuration if missing. Returns created=false when the bucket already exists and is accessible.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Create Restic S3 Bucket", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Bucket created or already exists", "schema": { "$ref": "#/definitions/cluster.ResticEnsureBucketResult" } }, "400": { "description": "Invalid request or non-S3 configuration", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "No valid ACL or insufficient grant (db-backup required)", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/fetch": { "post": { "description": "Fetches the restic backup for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Fetch Restic Snapshots", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Restic snapshots fetch queued", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/init": { "post": { "description": "Inits the restic repository for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Init Restic Repository", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Init options", "name": "body", "in": "body", "schema": { "$ref": "#/definitions/backupmgr.ResticInitOption" } } ], "responses": { "200": { "description": "Restic repository initialized", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/init/{force}": { "post": { "description": "Inits the restic repository for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Init Restic Repository", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "force" ], "type": "string", "description": "Force init", "name": "force", "in": "path" }, { "description": "Init options", "name": "body", "in": "body", "schema": { "$ref": "#/definitions/backupmgr.ResticInitOption" } } ], "responses": { "200": { "description": "Restic repository initialized", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/mount-status": { "get": { "description": "Returns the current mount status including path, ref count, and active users", "produces": [ "application/json" ], "tags": [ "Restic" ], "summary": "Get restic mount status", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Current mount status", "schema": { "$ref": "#/definitions/server.ResticMountStatusResponse" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Cluster not found", "schema": { "type": "string" } }, "500": { "description": "Restic manager not available", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/purge/{snapshotID}": { "post": { "description": "Purges the restic backup for the specified cluster.\nRequired grant: db-backup", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Purge Restic Backup", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Snapshot ID", "name": "snapshotID", "in": "path", "required": true }, { "type": "boolean", "description": "Dry run restic purge", "name": "dry_run", "in": "query" } ], "responses": { "200": { "description": "Restic repository purged", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/restore-config/{force}": { "post": { "description": "Restores the restic config for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Restore Restic Config", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "default": "noforce", "description": "Force Restore", "name": "force", "in": "path", "required": true } ], "responses": { "200": { "description": "Restic config restore done", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/snapshots": { "get": { "description": "This endpoint retrieves the backups for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Retrieve backups for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "default", "legacy" ], "type": "string", "description": "Response format", "name": "format", "in": "query" } ], "responses": { "200": { "description": "Snapshots with repository context", "schema": { "$ref": "#/definitions/server.resticSnapshotsResponse" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/stats": { "get": { "description": "This endpoint retrieves the backup stats for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Retrieve backup stats for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of backups", "schema": { "type": "array", "items": { "$ref": "#/definitions/backupmgr.BackupStat" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-current": { "get": { "description": "Gets the current restic task state and queue for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Get Restic Current Task", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Current task and queue fetched. Progress fields are populated for backup tasks only.", "schema": { "$ref": "#/definitions/server.ResticCurrentTaskResponse" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-queue": { "get": { "description": "Gets the restic task queue for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Get Restic Task Queue", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Task queue fetched", "schema": { "type": "array", "items": { "$ref": "#/definitions/backupmgr.ResticTask" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-queue/cancel/{taskID}": { "post": { "description": "Cancel the specified restic task for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Cancel Restic Task", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Task ID", "name": "taskID", "in": "path", "required": true } ], "responses": { "200": { "description": "Task cancelled", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-queue/move/{moveType}/{taskID}": { "post": { "description": "Modify the restic task queue for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Modify Restic Task Queue", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "first", "after", "last" ], "type": "string", "description": "Move Type", "name": "moveType", "in": "path", "required": true }, { "type": "string", "description": "Task ID", "name": "taskID", "in": "path", "required": true } ], "responses": { "200": { "description": "Task queue modified", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-queue/move/{moveType}/{taskID}/{afterID}": { "post": { "description": "Modify the restic task queue for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Modify Restic Task Queue", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "enum": [ "first", "after", "last" ], "type": "string", "description": "Move Type", "name": "moveType", "in": "path", "required": true }, { "type": "string", "description": "Task ID", "name": "taskID", "in": "path", "required": true }, { "type": "string", "description": "After ID", "name": "afterID", "in": "path" } ], "responses": { "200": { "description": "Task queue modified", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-queue/pause": { "post": { "responses": {} } }, "/api/clusters/{clusterName}/restic/task-queue/reset": { "get": { "description": "Empty the restic task queue for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Reset Restic Task Queue", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Task queue reset", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/task-queue/resume": { "post": { "responses": {} } }, "/api/clusters/{clusterName}/restic/unlock": { "post": { "description": "Unlocks the restic repository for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Unlock Restic Repository", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Restic repository unlocked", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/restic/wipe": { "post": { "description": "Execute-only destructive repository wipe. Requires confirm=true and typed_target_confirm matching the server-computed repo_path. Use POST /restic/check-config to obtain the preview/target before calling this endpoint.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterRestic" ], "summary": "Wipe Restic Repository", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Wipe payload (confirm=true, typed_target_confirm, allow_empty_prefix)", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/backupmgr.ResticWipeOption" } } ], "responses": { "200": { "description": "Repository wiped successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Invalid payload, missing confirmation, or guardrail rejection", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "No valid ACL or insufficient grant (db-backup required)", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/sales/accept-subscription": { "post": { "description": "This endpoint accepts a subscription for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Accept a subscription for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "Email sent to sponsor!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error accepting subscription", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/sales/end-subscription": { "post": { "description": "This endpoint removes a sponsor from the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Remove a sponsor from a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "Sponsor subscription removed!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error removing sponsor subscription", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/sales/refuse-subscription": { "post": { "description": "This endpoint rejects a subscription for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Reject a subscription for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "Subscription removed!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error removing subscription", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema": { "get": { "description": "This endpoint retrieves the schema information for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Retrieve schema information for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Schema information", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/all/actions/analyze-schema/{persistent}": { "post": { "description": "This endpoint triggers the analyze calculation for all tables in a schema in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Calculate analyze for a specific schema in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered analyze calculation for the schema", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/all/actions/checksum-schema": { "post": { "description": "This endpoint triggers the checksum calculation for all tables in a schema in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Calculate checksum for a specific schema in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered checksum calculation for the schema", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/analyze-table/{persistent}": { "post": { "description": "This endpoint triggers the analyze calculation for a specific table in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Calculate analyze for a specific table in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered analyze calculation for the table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/checksum-repair-table": { "post": { "description": "This endpoint triggers the checksum calculation for a specific table in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Repair checksum error for a specific table in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered checksum calculation for the table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/checksum-table": { "post": { "description": "This endpoint triggers the checksum calculation for a specific table in the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Calculate checksum for a specific table in a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered checksum calculation for the table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/move-table/{clusterShard}": { "post": { "description": "This endpoint moves a table to a different shard cluster for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Move a table to a different shard cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true }, { "type": "string", "description": "Cluster Shard", "name": "clusterShard", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully moved table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/reshard-table": { "post": { "description": "This endpoint triggers the resharding of a table for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Reshard a table for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully triggered resharding of the table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/reshard-table/{clusterList}": { "post": { "description": "This endpoint triggers the resharding of a table for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Reshard a table for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true }, { "type": "string", "description": "Cluster List", "name": "clusterList", "in": "path" } ], "responses": { "200": { "description": "Successfully triggered resharding of the table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/schema/{schemaName}/{tableName}/actions/universal-table": { "post": { "description": "This endpoint sets a universal table for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Set a universal table for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Schema Name", "name": "schemaName", "in": "path", "required": true }, { "type": "string", "description": "Table Name", "name": "tableName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully set universal table", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/security/apply-fix": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSecurity" ], "summary": "Apply a tag-based security remediation fix", "parameters": [ { "type": "string", "description": "Bearer token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster name", "name": "clusterName", "in": "path", "required": true }, { "description": "{\\", "name": "body", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "Fix applied", "schema": { "type": "string" } }, "400": { "description": "Bad request", "schema": { "type": "string" } }, "404": { "description": "Cluster not found", "schema": { "type": "string" } }, "500": { "description": "Execution error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/security/fix-state/{errKey}": { "post": { "produces": [ "application/json" ], "tags": [ "ClusterSecurity" ], "summary": "Apply automated fix for a security finding", "parameters": [ { "type": "string", "description": "Bearer token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "SEC error key (e.g. SEC0102)", "name": "errKey", "in": "path", "required": true } ], "responses": { "200": { "description": "Fix applied", "schema": { "type": "string" } }, "400": { "description": "No automated fix for this code", "schema": { "type": "string" } }, "404": { "description": "Cluster not found", "schema": { "type": "string" } }, "500": { "description": "Execution error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/security/remediation-plan": { "get": { "produces": [ "application/json" ], "tags": [ "ClusterSecurity" ], "summary": "Get security remediation plan", "parameters": [ { "type": "string", "description": "Bearer token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/cluster.RemediationPlan" } }, "404": { "description": "Cluster not found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/send-vault-token": { "post": { "description": "This endpoint sends the Vault token to the specified cluster via email.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterVault" ], "summary": "Send Vault token to a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Vault token sent successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}": { "get": { "description": "Retrieves the details of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get server details", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server details retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "No cluster\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/backup-error-log": { "get": { "description": "Initiates a backup of the error log on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Perform a backup of the error log on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Backup initiated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/backup-logical": { "get": { "description": "Initiates a logical backup on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Perform a logical backup on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Backup initiated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/backup-physical": { "get": { "description": "Initiates a physical backup on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Perform a physical backup on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Backup initiated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/backup-slowquery-log": { "get": { "description": "Initiates a backup of the slow query log on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Perform a backup of the slow query log on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Backup initiated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/del-maintenance": { "get": { "description": "Deletes the maintenance mode on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseMaintenance" ], "summary": "Delete maintenance mode on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Maintenance mode deleted successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/flush-logs": { "get": { "description": "Flushes the logs on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Flush logs on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Logs flushed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/job-cancel/{task}": { "get": { "description": "Cancels a task identified by its name on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Cancel a task on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Task Name", "name": "task", "in": "path", "required": true } ], "responses": { "200": { "description": "Task canceled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error canceling task", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/jobs-upgrade": { "get": { "description": "Flags a specified server within a cluster to allow jobs upgrade by setting a cookie.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Allow jobs upgrade on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "Flagged for jobs upgrade", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/maintenance": { "get": { "description": "Toggles the maintenance mode on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseMaintenance" ], "summary": "Toggle maintenance mode on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Maintenance mode toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/optimize": { "get": { "description": "Optimizes a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Optimize a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server optimized successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/pitr": { "post": { "description": "Initiates a point-in-time recovery on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Perform a point-in-time recovery on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "PITR initiated successfully", "schema": { "$ref": "#/definitions/server.ApiResponse" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Decode error\" or \"PITR error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/provision": { "get": { "description": "Provisions a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseProvision" ], "summary": "Provision a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server provisioned successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/reseed-cancel": { "get": { "description": "Cancels a reseed task identified by its name on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Cancel a reseed task on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Task Name", "name": "task", "in": "path", "required": true } ], "responses": { "200": { "description": "Task canceled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error canceling task", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/reseed-restic": { "post": { "description": "Reseeds a specified server using the provided restic snapshot ID and method.\nMethod accepts logical or physical. Strategy accepts auto, restore, dump, or mount.\nThe dump strategy is supported for logical mysqldump and single-file physical backups.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Reseed a server from restic snapshot", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "description": "Reseed request", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.ResticReseedRequest" } } ], "responses": { "202": { "description": "Reseed queued successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Cluster or Server Not Found", "schema": { "type": "string" } }, "409": { "description": "Metadata not ready or reseed already queued", "schema": { "type": "string" } }, "500": { "description": "Reseed failed", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/reseed/{backupMethod}": { "get": { "description": "Reseeds a specified server within a cluster using the specified backup method.", "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Reseed a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Backup Method", "name": "backupMethod", "in": "path", "required": true } ], "responses": { "202": { "description": "Reseed queued successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error reseed logical backup\" or \"Error reseed physical backup", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/reset-master": { "get": { "description": "Resets the master on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseReplication" ], "summary": "Reset the master on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Master reset successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/reset-pfs-queries": { "get": { "description": "Resets PFS queries on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Reset PFS queries on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "PFS queries reset successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/reset-slave-all": { "get": { "description": "Resets all slaves on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseReplication" ], "summary": "Reset all slaves on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slaves reset successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/restart": { "post": { "description": "Restarts a specified server within a cluster (queues restart asynchronously), optionally on a specific node and/or specific resource ID. Only OpenSVC orchestrator is supported. Only 'container#jobs' is allowed for rid parameter.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Restart a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Node Agent (default: server's agent, use * for all nodes)", "name": "node", "in": "query" }, { "type": "string", "description": "Resource ID. Only 'container#jobs' is allowed. Empty restarts entire service.", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Restart queued successfully", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Invalid rid parameter", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Cluster Not Found or Server Not Found", "schema": { "type": "string" } }, "501": { "description": "Orchestrator not supported", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/run-jobs": { "get": { "description": "Runs jobs on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Run jobs on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Run jobs command issued", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/set-ignored": { "get": { "description": "Sets a specified server within a cluster as ignored.", "produces": [ "application/json" ], "tags": [ "DatabaseTopology" ], "summary": "Set a server as ignored", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server set as ignored successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/set-long-query-time/{queryTime}": { "get": { "description": "Sets the long query time on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Set long query time on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Time", "name": "queryTime", "in": "path", "required": true } ], "responses": { "200": { "description": "Long query time set successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/set-maintenance": { "get": { "description": "Sets a specified server within a cluster to maintenance mode.", "produces": [ "application/json" ], "tags": [ "DatabaseMaintenance" ], "summary": "Set a server to maintenance mode", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server set to maintenance mode successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/set-prefered": { "get": { "description": "Sets a specified server within a cluster as preferred.", "produces": [ "application/json" ], "tags": [ "DatabaseTopology" ], "summary": "Set a server as preferred", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server set as preferred successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/set-unrated": { "get": { "description": "Sets a specified server within a cluster as unrated.", "produces": [ "application/json" ], "tags": [ "DatabaseTopology" ], "summary": "Set a server as unrated", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server set as unrated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/skip-replication-event": { "get": { "description": "Skips a replication event on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseReplication" ], "summary": "Skip a replication event on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Replication event skipped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/start": { "get": { "description": "Starts a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Start a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server started successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/start-slave": { "get": { "description": "Starts the slave on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseReplication" ], "summary": "Start the slave on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slave started successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/start/{cfgAction}": { "get": { "description": "Starts a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Start a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Config Action (KEEP or FETCH). Empty string means default action from cluster config.", "name": "cfgAction", "in": "path" } ], "responses": { "200": { "description": "Server started successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/stop": { "get": { "description": "Stops a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Stop a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server stopped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/stop-slave": { "get": { "description": "Stops the slave on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseReplication" ], "summary": "Stop the slave on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slave stopped successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/switchover": { "get": { "description": "Initiates a switchover on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseTopology" ], "summary": "Perform a switchover on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Switchover initiated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Master failed, cannot initiate switchover", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-innodb-monitor": { "get": { "description": "Toggles the InnoDB monitor on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Toggle InnoDB monitor on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "InnoDB monitor toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-meta-data-locks": { "get": { "description": "Toggles the metadata locks on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Toggle metadata locks on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Metadata locks toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-pfs-slow-query": { "get": { "description": "Toggles the PFS slow query capture on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Toggle PFS slow query capture on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "PFS slow query capture toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-query-response-time": { "get": { "description": "Toggles the query response time on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Toggle query response time on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Query response time toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-read-only": { "get": { "description": "Toggles the read-only mode on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Toggle read-only mode on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Read-only mode toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-slow-query": { "get": { "description": "Toggles the slow query on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Toggle slow query on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slow query toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-slow-query-capture": { "get": { "description": "Toggles the slow query capture on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Toggle slow query capture on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slow query capture toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-slow-query-table": { "get": { "description": "Toggles the slow query table mode on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Toggle slow query table mode on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slow query table mode toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/toggle-sql-error-log": { "get": { "description": "Toggles the SQL error log on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Toggle SQL error log on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "SQL error log toggled successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/unprovision": { "get": { "description": "Unprovisions a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseProvision" ], "summary": "Unprovision a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server unprovisioned successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/update-opensvc-template": { "post": { "description": "Regenerates the OpenSVC service config template for the specified server and pushes it to OpenSVC. Does not reprovision or restart the service.", "produces": [ "application/json" ], "tags": [ "DatabaseProvision" ], "summary": "Update OpenSVC template for a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Template refreshed successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or error message", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/upgrade": { "post": { "tags": [ "DatabaseActions" ], "summary": "Upgrade a single database server", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "202": { "description": "Upgrade started", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/actions/wait-innodb-purge": { "get": { "description": "Waits for InnoDB purge on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseActions" ], "summary": "Wait for InnoDB purge on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "InnoDB purge completed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error waiting for InnoDB purge", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/all-slaves-status": { "get": { "description": "Retrieves the status of all slaves of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get status of all slaves of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Status of all slaves retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/attr/{attrName}": { "get": { "description": "Retrieves the details of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get server details", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Attribute Name (using json path notation split by dot)", "name": "attrName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server Attribute (partial based on attrName)", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "No cluster\" or \"Server Not Found\" or \"Attribute not found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/auditlog": { "get": { "description": "Retrieves the audit log of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Get audit log of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Audit log retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config": { "get": { "description": "Retrieves the configuration of a specified server port within a cluster.", "produces": [ "application/octet-stream" ], "tags": [ "Database" ], "summary": "Get server port configuration", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Configuration file", "schema": { "type": "file" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config-dummy-sender": { "post": { "description": "Generates dummy configuration and sends it to the specified receiver port on the client side.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Generate and send dummy config to client receiver port", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server ID \u003cdbxxx / pxxxx\u003e (Without Port) / Server Host (With Port)", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Client receiver port to send config to", "name": "receiverPort", "in": "query", "required": true }, { "type": "string", "description": "Client receiver host (default: use request remote address)", "name": "receiverHost", "in": "query" } ], "responses": { "200": { "description": "Status message", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Missing receiver port", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error generating/sending config", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config-files": { "get": { "tags": [ "Database" ], "summary": "Get config override files for a server", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Config file contents", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config-files-clear-delta": { "post": { "tags": [ "DatabaseConfig" ], "summary": "Clear delta config file for a server", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Delta cleared", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config-path-preserve/{preserve}": { "get": { "description": "Preserves or removes the configuration path for a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Preserve or remove configuration path for a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" }, { "type": "string", "description": "Preserve or remove configuration path (true/false)", "name": "preserve", "in": "path", "required": true } ], "responses": { "200": { "description": "Configuration path preserved or removed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Invalid value for preserve parameter", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config-receiver": { "get": { "description": "Opens receiver ports for configuration files on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Open receiver ports for configuration files on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server ID \u003cdbxxx / pxxxx\u003e (Without Port) / Server Host (With Port)", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "export \u003cenvironment variables\u003e; export \u003cenvironment variables\u003e; ...", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error opening receiver ports", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/config/{dummy}": { "get": { "description": "Retrieves the configuration of a specified server port within a cluster.", "produces": [ "application/octet-stream" ], "tags": [ "Database" ], "summary": "Get server port configuration", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Config is a dummy file", "name": "dummy", "in": "path" } ], "responses": { "200": { "description": "Configuration file", "schema": { "type": "file" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/digest-statements-pfs": { "get": { "description": "Retrieves the PFS statements of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Get PFS statements of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "PFS statements retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/digest-statements-slow": { "get": { "description": "Retrieves the PFS statements from the slow log of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Get PFS statements from the slow log of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "PFS statements from slow log retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/errorlog": { "get": { "description": "Retrieves the error log of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Get error log of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Error log retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-failed": { "get": { "description": "Checks if a specified server within a cluster is in a failed state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is failed", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Server is failed!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not Failed!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-master": { "get": { "description": "Checks if a specified server within a cluster is a master.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is a master", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Valid Master!", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "503 -Not a Valid Master!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-slave": { "get": { "description": "Checks if a specified server within a cluster is a slave.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is a slave", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Valid Slave!", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "503 -Not a Valid Slave!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-slave-error": { "get": { "description": "Checks if a specified server within a cluster is in a slave error state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is in slave error state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Server is in Slave Error state!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not in Slave Error state!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-slave-late": { "get": { "description": "Checks if the specified server within the cluster is in a \"Slave Late\" state.", "produces": [ "text/plain" ], "tags": [ "replication" ], "summary": "Check if server is in Slave Late state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Server is in Slave Late state!", "schema": { "type": "string" } }, "500": { "description": "500 -No valid server!\" \"500 -Server is not in Slave Late state!\" \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-slave-stopped": { "get": { "description": "Checks if a specified server within a cluster is in a slave Stop state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is in slave Stop state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Server is in Slave Stop state!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not in Slave Stop state!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/is-standalone": { "get": { "description": "Checks if a specified server within a cluster is in a standalone state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is in standalone state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Server is in Standalone state!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not in Standalone state!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/jobs": { "get": { "description": "Retrieves the job entries for a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Get job entries for a server", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "Job entries retrieved successfully", "schema": { "$ref": "#/definitions/config.ServerTaskList" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/lost-events": { "get": { "responses": {} } }, "/api/clusters/{clusterName}/servers/{serverName}/master-status": { "get": { "description": "Retrieves the master status of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get master status of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Master status retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/meta-data-locks": { "get": { "description": "Retrieves the metadata locks of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get metadata locks of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Metadata locks retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/pfs-join-weights": { "get": { "description": "Returns per-snapshot join-weight data computed from on-disk PFS JSONL files.", "produces": [ "application/json" ], "tags": [ "DatabaseSchema" ], "summary": "Historical PFS join weights", "parameters": [ { "type": "string", "description": "Bearer token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Start hour YYYYMMDD_HH", "name": "from", "in": "query" }, { "type": "string", "description": "End hour YYYYMMDD_HH", "name": "to", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/server.pfsSnapshotWeights" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "error message", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/processlist": { "get": { "description": "Retrieves the process list of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get process list of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Process list retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/explain-pfs-cached": { "get": { "description": "Returns every explain plan stored in the server's on-disk PFS explain cache.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "List all cached EXPLAIN plans for a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "All cached explain plans", "schema": { "type": "array", "items": { "$ref": "#/definitions/cluster.PFSExplainRecord" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/analyze-pfs": { "get": { "description": "Analyzes a query identified by its digest on a specified server within a cluster using PFS.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Analyze a query using PFS on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Query analyzed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/analyze-slowlog": { "get": { "description": "Analyzes a query identified by its digest on a specified server within a cluster using the slow log.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Analyze a query using the slow log on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Query analyzed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/explain-pfs": { "get": { "description": "Explains a query identified by its digest on a specified server within a cluster using PFS.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Explain a query using PFS on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Query explained successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/explain-pfs-cached": { "get": { "description": "Returns the explain plan that was captured at snapshot time for the given digest.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Get cached EXPLAIN plan for a PFS digest", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Cached explain plan", "schema": { "$ref": "#/definitions/cluster.PFSExplainRecord" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Digest not found in explain cache", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/explain-slowlog": { "get": { "description": "Explains a query identified by its digest on a specified server within a cluster using the slow log.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Explain a query using the slow log on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Query explained successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/kill-query": { "get": { "description": "Kills a query identified by its digest on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Kill a query on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Query killed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/queries/{queryDigest}/actions/kill-thread": { "get": { "description": "Kills a thread identified by its digest on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Kill a thread on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Query Digest", "name": "queryDigest", "in": "path", "required": true } ], "responses": { "200": { "description": "Query killed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/query-response-time": { "get": { "description": "Retrieves the query response time of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Get query response time of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Query response time retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/schemas": { "get": { "description": "Retrieves the schemas of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseSchema" ], "summary": "Get schemas of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Schemas retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/secret-login": { "post": { "description": "Handles secret login for a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Secret login", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "description": "Encoded data", "name": "data", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.DecodedData" } } ], "responses": { "200": { "description": "Token", "schema": { "type": "string" } }, "400": { "description": "Decode reading body\" or \"Decode body", "schema": { "type": "string" } }, "401": { "description": "Invalid secret", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server\" or \"Error decrypting data\" or \"Error signing token", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/service-opensvc": { "get": { "description": "Retrieves the database service configuration of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get database service configuration of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Database service configuration retrieved successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/slow-queries": { "get": { "description": "Retrieves the slow log of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseQueries" ], "summary": "Get slow log of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slow log retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/sqlerrorlog": { "get": { "description": "Retrieves the SQL error log of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseLogs" ], "summary": "Get SQL error log of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "SQL error log retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/status": { "get": { "description": "Retrieves the status of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get status of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Status retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/status-delta": { "get": { "description": "Retrieves the status delta of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get status delta of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Status delta retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/status-innodb": { "get": { "description": "Retrieves the InnoDB status of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get InnoDB status of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "InnoDB status retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/tables": { "get": { "description": "Retrieves the tables of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get tables of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Tables retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/variables": { "get": { "description": "Retrieves the variables of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get variables of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "default": "false", "description": "Show differences (true/false)", "name": "diff", "in": "query" } ], "responses": { "200": { "description": "Variables retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/variables-accept": { "post": { "description": "Marks a variable difference as \"accepted\" (use config value) on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseConfig" ], "summary": "Accept a variable difference on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Variable Name", "name": "variableName", "in": "query", "required": true } ], "responses": { "200": { "description": "Variable accepted successfully", "schema": { "type": "string" } }, "400": { "description": "Variable name required", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error accepting variable", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/variables-clear": { "post": { "description": "Removes preservation status from a variable on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseConfig" ], "summary": "Clear variable preservation status on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Variable Name", "name": "variableName", "in": "query", "required": true } ], "responses": { "200": { "description": "Variable preservation cleared successfully", "schema": { "type": "string" } }, "400": { "description": "Variable name required", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error clearing variable preservation", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/variables-preserve": { "post": { "description": "Marks a variable difference as \"preserved\" (keep deployed value) on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseConfig" ], "summary": "Preserve a variable difference on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Variable Name", "name": "variableName", "in": "query", "required": true } ], "responses": { "200": { "description": "Variable preserved successfully", "schema": { "type": "string" } }, "400": { "description": "Variable name required", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error preserving variable", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/variables-set-custom": { "post": { "description": "Sets a custom preserved value for a variable on a specified server within a cluster. This allows DBAs to manually override variable values like in my.cnf.", "produces": [ "application/json" ], "tags": [ "DatabaseConfig" ], "summary": "Set custom value for a variable on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Variable Name", "name": "variableName", "in": "query", "required": true }, { "type": "string", "description": "Custom Value", "name": "customValue", "in": "query", "required": true } ], "responses": { "200": { "description": "Variable custom value set successfully", "schema": { "type": "string" } }, "400": { "description": "Variable name or custom value required", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error setting custom variable value", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/vtables": { "get": { "description": "Retrieves the virtual tables of a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get virtual tables of a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Virtual tables retrieved successfully", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Encoding error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/actions/job-state/{taskname}/{jobstate}": { "post": { "tags": [ "DatabaseTasks" ], "summary": "Update job state from dbjobs script", "parameters": [ { "type": "string", "description": "Cluster name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server hostname", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server port", "name": "serverPort", "in": "path", "required": true }, { "type": "string", "description": "Task name", "name": "taskname", "in": "path", "required": true }, { "type": "string", "description": "Job state: processing, done, error", "name": "jobstate", "in": "path", "required": true } ], "responses": {} } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/actions/jobs-create-table": { "post": { "description": "Creates a jobs tasks table on a specified server within a cluster if it does not already exist.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Create jobs tasks table on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true } ], "responses": { "200": { "description": "Jobs tasks table created", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error checking jobs tasks table\" or \"Error creating jobs tasks table", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/actions/receive-jobs-check": { "get": { "description": "Checks jobs on a specified server within a cluster by initiating a receiver for the current.jobs.tmp file.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Check jobs on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "SST_RECEIVER_PORT=\u003cport\u003e", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error opening receiver ports", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/actions/receive-task/{taskname}": { "post": { "tags": [ "DatabaseTasks" ], "summary": "Open a TCP receiver for a remote task", "parameters": [ { "type": "string", "description": "Cluster name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server hostname", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server port", "name": "serverPort", "in": "path", "required": true }, { "type": "string", "description": "Task name (xtrabackup, mariabackup, errorlog, etc.)", "name": "taskname", "in": "path", "required": true } ], "responses": {} } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/actions/send-jobs-upgrade": { "get": { "description": "Upgrades jobs on a specified server within a cluster by sending the dbjobs_new file.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Upgrade jobs on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "Sending dbjobs_new file", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error sending dbjobs_new file", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/backup": { "get": { "description": "Initiates a physical backup on a specified server port within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseBackup" ], "summary": "Perform a physical backup on a server port", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "Backup initiated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config": { "get": { "description": "Retrieves the configuration of a specified server port within a cluster.", "produces": [ "application/octet-stream" ], "tags": [ "Database" ], "summary": "Get server port configuration", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "Configuration file", "schema": { "type": "file" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config-dummy-sender": { "post": { "description": "Generates dummy configuration and sends it to the specified receiver port on the client side.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Generate and send dummy config to client receiver port", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server ID \u003cdbxxx / pxxxx\u003e (Without Port) / Server Host (With Port)", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" }, { "type": "string", "description": "Client receiver port to send config to", "name": "receiverPort", "in": "query", "required": true }, { "type": "string", "description": "Client receiver host (default: use request remote address)", "name": "receiverHost", "in": "query" } ], "responses": { "200": { "description": "Status message", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Missing receiver port", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error generating/sending config", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config-gen": { "get": { "description": "Retrieves the configuration of a specified server port within a cluster.", "tags": [ "Database" ], "summary": "Get server port configuration", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "Configuration regenerated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config-path-preserve/{preserve}": { "get": { "description": "Preserves or removes the configuration path for a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Preserve or remove configuration path for a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" }, { "type": "string", "description": "Preserve or remove configuration path (true/false)", "name": "preserve", "in": "path", "required": true } ], "responses": { "200": { "description": "Configuration path preserved or removed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Invalid value for preserve parameter", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config-receiver": { "get": { "description": "Opens receiver ports for configuration files on a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Open receiver ports for configuration files on a server", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server ID \u003cdbxxx / pxxxx\u003e (Without Port) / Server Host (With Port)", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "export \u003cenvironment variables\u003e; export \u003cenvironment variables\u003e; ...", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error opening receiver ports", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/config/{dummy}": { "get": { "description": "Retrieves the configuration of a specified server port within a cluster.", "produces": [ "application/octet-stream" ], "tags": [ "Database" ], "summary": "Get server port configuration", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true }, { "type": "string", "description": "Dummy Config", "name": "dummy", "in": "path" } ], "responses": { "200": { "description": "Configuration file", "schema": { "type": "file" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-failed": { "get": { "description": "Checks if a specified server within a cluster is in a failed state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is failed", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "200 -Server is failed!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not Failed!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-in-errstate/{errstate}": { "get": { "description": "Checks if a specified server within a cluster is currently in a specific error state. Cluster wide error states will not be checked. Use cluster state API for that.", "produces": [ "application/json" ], "tags": [ "DatabaseReplication" ], "summary": "Check if a server is in a specific error state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true }, { "type": "string", "description": "State to check", "name": "state", "in": "path", "required": true } ], "responses": { "200": { "description": "true\" or \"false", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error checking server state", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-in-task/{taskname}": { "get": { "description": "Checks if a specified server within a cluster is currently involved in a specific task.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Check if a server is in a specific task", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true }, { "enum": [ "mysqldump", "mydumper", "xtrabackup", "mariabackup", "errorlog", "slowquery", "sqlerrorlog", "auditlog", "zfssnapback", "optimize", "reseedxtrabackup", "reseedmariabackup", "reseedmysqldump", "flashbackxtrabackup", "flashbackmariadbackup", "flashbackmysqldump", "stop", "restart", "start", "printdefault-current", "printdefault-dummy", "jobs-check", "jobs-upgrade" ], "type": "string", "description": "taskname", "name": "type", "in": "path", "required": true } ], "responses": { "200": { "description": "true\" or \"false", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error checking task status", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-master": { "get": { "description": "Checks if a specified server port within a cluster is a master.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server port is a master", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Valid Master!", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "503 -Not a Valid Master!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-slave": { "get": { "description": "Checks if a specified server port within a cluster is a slave.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server port is a slave", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Valid Slave!", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } }, "503": { "description": "503 -Not a Valid Slave!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-slave-error": { "get": { "description": "Checks if a specified server within a cluster is in a slave error state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is in slave error state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "200 -Server is in Slave Error state!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not in Slave Error state!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-slave-late": { "get": { "description": "Checks if the specified server within the cluster is in a \"Slave Late\" state.", "produces": [ "text/plain" ], "tags": [ "replication" ], "summary": "Check if server is in Slave Late state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "200 -Server is in Slave Late state!", "schema": { "type": "string" } }, "500": { "description": "500 -No valid server!\" \"500 -Server is not in Slave Late state!\" \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-slave-stopped": { "get": { "description": "Checks if a specified server within a cluster is in a slave Stop state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is in slave Stop state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "200 -Server is in Slave Stop state!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not in Slave Stop state!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/is-standalone": { "get": { "description": "Checks if a specified server within a cluster is in a standalone state.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server is in standalone state", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" } ], "responses": { "200": { "description": "200 -Server is in Standalone state!", "schema": { "type": "string" } }, "500": { "description": "500 -Server is not in Standalone state!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-config-fetch": { "get": { "description": "Checks if a specified server within a cluster needs a config fetch.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs a config fetch", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need config fetch!", "schema": { "type": "string" } }, "500": { "description": "500 -No config fetch needed!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-config-refresh": { "get": { "description": "Checks if a specified server within a cluster needs a config refresh.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs a config refresh", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need config refresh!", "schema": { "type": "string" } }, "500": { "description": "500 -No config refresh needed!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-prov": { "get": { "description": "Checks if a specified server within a cluster needs provisioning.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs provisioning", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need provisioning!", "schema": { "type": "string" } }, "500": { "description": "503 -Not a Valid Server!", "schema": { "type": "string" } }, "503": { "description": "503 -No provisioning needed!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-reprov": { "get": { "description": "Checks if a specified server within a cluster needs re-provisioning.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs re-provisioning", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need reprov!", "schema": { "type": "string" } }, "500": { "description": "503 -Not a Valid Server!", "schema": { "type": "string" } }, "503": { "description": "503 -No reprov needed!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-restart": { "get": { "description": "Checks if a specified server within a cluster needs a restart.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs a restart", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need restart!", "schema": { "type": "string" } }, "500": { "description": "503 -Not a Valid Server!", "schema": { "type": "string" } }, "503": { "description": "503 -No restart needed!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-start": { "get": { "description": "Checks if a specified server within a cluster needs to start.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs to start", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need start!", "schema": { "type": "string" } }, "500": { "description": "500 -No start needed!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-stop": { "get": { "description": "Checks if a specified server within a cluster needs to stop.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs to stop", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need stop!", "schema": { "type": "string" } }, "500": { "description": "500 -No stop needed!\" or \"500 -No valid server!\" or \"500 -No cluster!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/need-unprov": { "get": { "description": "Checks if a specified server within a cluster needs unprovisioning.", "produces": [ "text/plain" ], "tags": [ "Database" ], "summary": "Check if a server needs unprovisioning", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true } ], "responses": { "200": { "description": "200 -Need unprov!", "schema": { "type": "string" } }, "500": { "description": "503 -Not a Valid Server!", "schema": { "type": "string" } }, "503": { "description": "503 -No unprov needed!", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/needs/{taskname}": { "get": { "description": "Checks if a specified task needs to be performed on a server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Check if a task needs to be performed on a server", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true }, { "enum": [ "mysqldump", "mydumper", "xtrabackup", "mariabackup", "errorlog", "slowquery", "sqlerrorlog", "auditlog", "zfssnapback", "optimize", "reseedxtrabackup", "reseedmariabackup", "reseedmysqldump", "flashbackxtrabackup", "flashbackmariadbackup", "flashbackmysqldump", "stop", "restart", "start", "printdefault-current", "printdefault-dummy", "jobs-check", "jobs-upgrade" ], "type": "string", "description": "Type of check (e.g., 'config-refresh')", "name": "type", "in": "path", "required": true } ], "responses": { "200": { "description": "true\" or \"false", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found\" or \"Server Not Found\" or \"Error checking task necessity", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/secret-login": { "post": { "description": "Handles secret login for a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Secret login", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path" }, { "description": "Encoded data", "name": "data", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.DecodedData" } } ], "responses": { "200": { "description": "Token", "schema": { "type": "string" } }, "400": { "description": "Decode reading body\" or \"Decode body", "schema": { "type": "string" } }, "401": { "description": "Invalid secret", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server\" or \"Error decrypting data\" or \"Error signing token", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/servers/{serverName}/{serverPort}/write-log/{task}": { "post": { "description": "Writes logs for a specified server within a cluster.", "produces": [ "application/json" ], "tags": [ "DatabaseTasks" ], "summary": "Write logs for a server", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path", "required": true }, { "type": "string", "description": "Server Port", "name": "serverPort", "in": "path", "required": true }, { "type": "string", "description": "Task", "name": "task", "in": "path", "required": true }, { "description": "Log Data", "name": "data", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.DecodedData" } } ], "responses": { "200": { "description": "Message logged", "schema": { "$ref": "#/definitions/server.ApiResponse" } }, "400": { "description": "Bad request: Task is not registered\" or \"Decode reading body\" or \"Decode body", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server\" or \"Error decrypting data", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/services/actions/provision": { "post": { "description": "This endpoint provisions services for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterProvision" ], "summary": "Provision services for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully provisioned services", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/services/actions/unprovision": { "post": { "description": "This endpoint unprovisions services for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterProvision" ], "summary": "Unprovision services for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully unprovisioned services", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings": { "get": { "description": "This endpoint retrieves the settings for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Retrieve settings for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Cluster settings (dynamic)", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/add-db-tag/{tagValue}": { "post": { "description": "This endpoint adds a tag to the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTags" ], "summary": "Add a tag to a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Tag Value", "name": "tagValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Tag added successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/add-proxy-tag/{tagValue}": { "post": { "description": "This endpoint adds a proxy tag to the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTags" ], "summary": "Add a proxy tag to a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Tag Value", "name": "tagValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Tag added successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/apply-dynamic-config": { "post": { "description": "This endpoint applies dynamic configuration for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTags" ], "summary": "Apply dynamic configuration for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully applied dynamic configuration", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/certificates-reload": { "post": { "description": "This endpoint reloads the client certificates for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Reload client certificates for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully reloaded client certificates", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/discover": { "post": { "description": "This endpoint triggers the discovery of settings for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Discover settings for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully discovered settings", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/drop-db-tag/{tagValue}": { "post": { "description": "This endpoint removes a tag from the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTags" ], "summary": "Remove a tag from a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Tag Value", "name": "tagValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Tag removed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/drop-proxy-tag/{tagValue}": { "post": { "description": "This endpoint removes a proxy tag from the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTags" ], "summary": "Remove a proxy tag from a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Tag Value", "name": "tagValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Tag removed successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/generate-configs/{servertype}": { "get": { "description": "Retrieves the configuration of a specified server port within a cluster.", "tags": [ "Database" ], "summary": "Get server port configuration", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Configuration regenerated successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"No server", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/preserve-variable/{variableName}/{preserve}": { "get": { "description": "Preserves or unpreserves a variable for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Preserve or unpreserve a variable", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Variable Name", "name": "variableName", "in": "path", "required": true }, { "enum": [ "true", "false" ], "type": "string", "description": "Preserve or unpreserve", "name": "preserve", "in": "path", "required": true } ], "responses": { "200": { "description": "Variable preserved successfully", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/reload": { "post": { "description": "This endpoint reloads the settings for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Reload cluster settings", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully reloaded settings", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/reload-graphite-filterlist": { "post": { "description": "This endpoint reloads the Graphite filter list for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterGraphite" ], "summary": "Reload Graphite filter list for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully reloaded Graphite filter list", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/reload-plan-info": { "post": { "description": "This endpoint reloads the cluster plan information for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Reload cluster plan information", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully reloaded plan information", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/reset-graphite-filterlist/{template}": { "post": { "description": "This endpoint resets the Graphite filter list for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterGraphite" ], "summary": "Reset Graphite filter list for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Template", "name": "template", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully reset Graphite filter list", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/save-preserved-variables-cnf": { "post": { "description": "This endpoint saves the updated content to the preserved_variables.cnf file in the cluster's working directory", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Save preserved variables CNF content", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "CNF file content", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.PreservedVarsCnfRequest" } } ], "responses": { "200": { "description": "Successfully saved preserved variables CNF", "schema": { "type": "string" } }, "400": { "description": "Invalid request body", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error saving file", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/set-cron/{settingName}/{settingValue}": { "post": { "description": "This endpoint sets the cron jobs for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Set cron jobs for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true }, { "type": "string", "description": "Setting Value", "name": "settingValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully set cron job", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/set-graphite-filterlist/{filterType}": { "post": { "description": "This endpoint sets the Graphite filter list for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterGraphite" ], "summary": "Set Graphite filter list for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Filter Type", "name": "filterType", "in": "path", "required": true }, { "description": "Graphite Filter List", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.GraphiteFilterList" } } ], "responses": { "200": { "description": "Filterlist updated", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/set/{settingName}/{settingValue}": { "post": { "description": "This endpoint sets the settings for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Set settings for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true }, { "type": "string", "description": "Setting Value", "name": "settingValue", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully set setting", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/switch/{settingName}": { "post": { "description": "This endpoint switches the settings for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Switch settings for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully switched setting", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/switch/{settingName}/{state}": { "post": { "description": "This endpoint switches the settings for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Switch settings for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Setting Name", "name": "settingName", "in": "path", "required": true }, { "type": "string", "description": "Toggle state (on/off)", "name": "state", "in": "path" } ], "responses": { "200": { "description": "Successfully switched setting", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/preserved-variables-cnf": { "get": { "description": "This endpoint retrieves the content of the preserved_variables.cnf file from the cluster's working directory", "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Get preserved variables CNF content", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "CNF file content in JSON format with 'content' key", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } }, "500": { "description": "Error reading file", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/shardclusters": { "get": { "description": "This endpoint retrieves the shard clusters for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve shard clusters for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of shard clusters", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/sphinx-indexes": { "get": { "description": "Get the Sphinx indexes for a given cluster", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Proxies" ], "summary": "Get Sphinx Indexes", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Sphinx Indexes", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Something went wrong", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/status": { "get": { "description": "This endpoint retrieves the status of a specified cluster and returns it in JSON format.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve status of a cluster", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Cluster status", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "No cluster found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/subscribe": { "post": { "description": "This endpoint allows a user to subscribe to a specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Subscribe a user to a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "userform", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "Email sent to admin!", "schema": { "type": "string" } }, "400": { "description": "Error in request", "schema": { "type": "string" } }, "401": { "description": "Error logging in to gitlab: Token credentials is not valid", "schema": { "type": "string" } }, "403": { "description": "Error parsing JWT\" / \"Current user is not logged in via Gitlab!", "schema": { "type": "string" } }, "409": { "description": "User already subscribed on peer cluster!\" / \"Another user already subscribed on peer cluster!", "schema": { "type": "string" } }, "500": { "description": "No valid cluster\" / \"Peer does not have cloud18 setup!\" / \"Error sending email", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/tags": { "get": { "description": "This endpoint retrieves the tags for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTags" ], "summary": "Retrieve tags for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of tags", "schema": { "type": "array", "items": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/templates/apps": { "get": { "description": "Returns unified app template inventory with source/local metadata.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "List App Templates with Metadata", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "boolean", "description": "Force refresh of pull-only repo cache before listing", "name": "forceRefresh", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/server.appTemplateSummary" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/templates/apps/structure-guide": { "get": { "description": "Returns TEMPLATE_STRUCTURE.md content for in-app guidance.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Get App Template Structure Guide", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.appTemplateStructureGuideResponse" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Template structure guide not found", "schema": { "type": "string" } }, "500": { "description": "No cluster\" or \"Error reading template structure guide", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/templates/apps/{templateName}/content": { "get": { "description": "Returns canonical app template content for preview, optionally forcing source refresh.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Preview App Template Content", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Template Name", "name": "templateName", "in": "path", "required": true }, { "type": "boolean", "description": "Bypass local cache and refresh from source", "name": "forceRefresh", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.appTemplateContentResponse" } }, "400": { "description": "Template name must be provided", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/templates/apps/{templateName}/content/actions/create-local-copy": { "post": { "description": "Creates an editable local template copy from an existing template source/content.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Create Local Copy of App Template Content", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Template Name", "name": "templateName", "in": "path", "required": true }, { "description": "Create local copy payload", "name": "body", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "Template local copy created successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/templates/apps/{templateName}/content/actions/delete": { "post": { "description": "Deletes editable local template content.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Delete Local App Template Content", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Template Name", "name": "templateName", "in": "path", "required": true } ], "responses": { "200": { "description": "Template deleted successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "Template not found", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/templates/apps/{templateName}/content/actions/save": { "post": { "description": "Saves editable local template content after canonicalization and strict validation.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Save Local App Template Content", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Template Name", "name": "templateName", "in": "path", "required": true }, { "description": "Template content payload", "name": "body", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "Template saved successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/tests/actions/run/all": { "post": { "description": "This endpoint runs all tests for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTest" ], "summary": "Run all tests for a given cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of test results", "schema": { "type": "array", "items": { "$ref": "#/definitions/cluster.Test" } } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/tests/actions/run/{testName}": { "post": { "description": "This endpoint runs a specific test for the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterTest" ], "summary": "Run a specific test for a given cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Test Name", "name": "testName", "in": "path", "required": true }, { "type": "string", "description": "Provision the cluster before running the test", "name": "provision", "in": "formData" }, { "type": "string", "description": "Unprovision the cluster after running the test", "name": "unprovision", "in": "formData" } ], "responses": { "200": { "description": "Test result", "schema": { "$ref": "#/definitions/cluster.Test" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/top": { "get": { "description": "This endpoint retrieves the top metrics for the specified cluster.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve top metrics for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "query" } ], "responses": { "200": { "description": "Top metrics", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/alerts": { "get": { "description": "Shows the alerts for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Shows the alerts for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "A list of alerts", "schema": { "$ref": "#/definitions/cluster.Alerts" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/crashes": { "get": { "description": "This endpoint retrieves the crashes for the specified cluster.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Retrieve crashes for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of crashes", "schema": { "type": "array", "items": { "type": "string" } } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/http-logs": { "get": { "description": "Returns cluster logs for the specified type. Available types: general, task, security, workload, ddl, variable-change, sysbench. Without logType returns all logs.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve cluster logs by type", "deprecated": true, "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Log data", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/http-logs/{logType}": { "get": { "description": "Returns cluster logs for the specified type. Available types: general, task, security, workload, ddl, variable-change, sysbench. Without logType returns all logs.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve cluster logs by type", "deprecated": true, "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Log type: general, task, security, workload, ddl, variable-change, sysbench", "name": "logType", "in": "path" } ], "responses": { "200": { "description": "Log data", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/logs": { "get": { "description": "This endpoint retrieves the logs for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve logs for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of logs", "schema": { "type": "array", "items": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/logs/{logType}": { "get": { "description": "Returns cluster logs for the specified type. Available types: general, task, security, workload, ddl, variable-change, sysbench. Without logType returns all logs.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve cluster logs by type", "deprecated": true, "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Log type: general, task, security, workload, ddl, variable-change, sysbench", "name": "logType", "in": "path" } ], "responses": { "200": { "description": "Log data", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Cluster Not Found", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/master": { "get": { "description": "This endpoint retrieves the master of a specified cluster and returns it in JSON format.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve master of a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Master server", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/proxies": { "get": { "description": "Shows the proxies for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Shows the proxies for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "A list of proxies", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/servers": { "get": { "description": "This endpoint retrieves the servers for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve servers for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "List of servers", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/servers/count": { "get": { "description": "Return number of servers for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Return number of servers for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Number of servers", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/slaves": { "get": { "description": "Shows the slaves for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Shows the slaves for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "A list of slaves", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/slaves/count": { "get": { "description": "Return number of slaves for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Return number of slaves for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Number of slaves", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/slaves/index/{slaveIndex}": { "get": { "description": "Shows the slaves for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Shows the slaves for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Slave Index (start from 0)", "name": "slaveIndex", "in": "path", "required": true } ], "responses": { "200": { "description": "Slave Data", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/slaves/index/{slaveIndex}/attr/{attrName}": { "get": { "description": "Shows the slaves for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Shows the slaves for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Slave Index (start from 0)", "name": "slaveIndex", "in": "path", "required": true }, { "type": "string", "description": "Attribute Name (using json path notation split by dot)", "name": "attrName", "in": "path", "required": true } ], "responses": { "200": { "description": "Slave Attribute (partial based on attrName)", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/state/{state}": { "get": { "description": "This endpoint retrieves the servers for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve all servers by state for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server State", "name": "state", "in": "path", "required": true } ], "responses": { "200": { "description": "server by state", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/state/{state}/count": { "get": { "description": "Return number of servers for that specific named cluster", "tags": [ "ClusterTopology" ], "summary": "Return number of servers for that specific named cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server State", "name": "state", "in": "path", "required": true } ], "responses": { "200": { "description": "Number of servers", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/state/{state}/index/{index}": { "get": { "description": "This endpoint retrieves the server for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve server by state and index for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server State", "name": "state", "in": "path", "required": true }, { "type": "string", "description": "Index", "name": "index", "in": "path", "required": true } ], "responses": { "200": { "description": "server by state", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/topology/state/{state}/index/{index}/attr/{attrName}": { "get": { "description": "This endpoint retrieves the servers for the specified cluster.", "produces": [ "application/json" ], "tags": [ "ClusterTopology" ], "summary": "Retrieve server attributes by state and index for a specific cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "type": "string", "description": "Server State", "name": "state", "in": "path", "required": true }, { "type": "string", "description": "Index", "name": "index", "in": "path", "required": true }, { "type": "string", "description": "Attribute Name with dot notation", "name": "attrName", "in": "path", "required": true } ], "responses": { "200": { "description": "Server (partial based on attrName)", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/users/add": { "post": { "description": "Adds a new user to the specified cluster if the request is valid and the user has the necessary permissions.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Add a new user to a cluster", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "userform", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "User added successfully", "schema": { "type": "string" } }, "400": { "description": "Error in request", "schema": { "type": "string" } }, "403": { "description": "No Valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error adding new user\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/users/drop": { "post": { "description": "Drops a user from the specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Drop a cluster user", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "userform", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "User dropped successfully", "schema": { "type": "string" } }, "400": { "description": "Error in request", "schema": { "type": "string" } }, "403": { "description": "No Valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error dropping user\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/users/send-credentials": { "post": { "description": "This endpoint sends the credentials to the specified user via email.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Send credentials to a specific user", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "Credential Mail Form", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.CredentialMailForm" } } ], "responses": { "200": { "description": "Credentials sent to user!", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error sending email", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/users/update": { "post": { "description": "Updates the user information for a specified cluster.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Update a cluster user", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true }, { "description": "User Form", "name": "userform", "in": "body", "required": true, "schema": { "$ref": "#/definitions/cluster.UserForm" } } ], "responses": { "200": { "description": "User updated successfully", "schema": { "type": "string" } }, "400": { "description": "Error in request", "schema": { "type": "string" } }, "403": { "description": "No Valid ACL", "schema": { "type": "string" } }, "500": { "description": "Error updating user\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/configs/grafana": { "get": { "description": "Returns a list of Grafana files from the specified directory.", "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "List Grafana files", "responses": { "200": { "description": "List of Grafana files", "schema": { "type": "array", "items": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/email/send": { "post": { "description": "Sends an email to the specified recipient.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "AlertMailer" ], "summary": "Send Email", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "description": "Email details", "name": "email", "in": "body", "required": true, "schema": { "$ref": "#/definitions/mailer.Email" } } ], "responses": { "200": { "description": "Email sent successfully", "schema": { "type": "string" } }, "400": { "description": "Error in request", "schema": { "type": "string" } }, "500": { "description": "Error sending email", "schema": { "type": "string" } } } } }, "/api/global/alerts": { "get": { "description": "Returns server-level errors and warnings from the ReplicationManager state machine.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Get global alerts", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.globalAlertsResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "string" } } } } }, "/api/global/http-logs": { "get": { "description": "Returns server-level log entries from the ReplicationManager in-memory ring buffer.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Get global logs", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.globalLogsResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "string" } } } } }, "/api/global/metrics": { "get": { "description": "Returns host CPU/memory/disk and repman process metrics.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Get global metrics", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.globalMetricsResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "string" } } } } }, "/api/health": { "get": { "description": "Returns the health status of all privileged clusters.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Get Cluster Health", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of cluster health statuses", "schema": { "type": "object", "additionalProperties": { "$ref": "#/definitions/peer.PeerHealth" } } }, "500": { "description": "Error getting JWT claims", "schema": { "type": "string" } } } } }, "/api/heartbeat": { "get": { "description": "Returns the heartbeat status of the replication manager.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "Monitor Heartbeat", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.Heartbeat" } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/login": { "post": { "description": "Authenticates a user and returns a JWT token upon successful login.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "User login", "parameters": [ { "description": "User credentials", "name": "userCredentials", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.userCredentials" } } ], "responses": { "200": { "description": "JWT token (upgrade_id present when async SSO upgrade started)", "schema": { "$ref": "#/definitions/server.AuthTokenWithUpgrade" } }, "401": { "description": "Invalid credentials", "schema": { "type": "string" } }, "403": { "description": "Error in request", "schema": { "type": "string" } }, "429": { "description": "Too many requests", "schema": { "type": "string" } }, "500": { "description": "Error signing token", "schema": { "type": "string" } } } } }, "/api/monitor": { "get": { "description": "This endpoint processes the replication manager requests, validates cluster ACLs, and returns the cluster list in JSON format.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "Handles replication manager requests", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header" } ], "responses": { "200": { "description": "Replication manager runtime state (dynamic)", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/peers": { "get": { "description": "This endpoint retrieves the status of all peer nodes.", "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Retrieve peer nodes status", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of peer nodes", "schema": { "type": "array", "items": { "$ref": "#/definitions/peer.PeerNodeStatus" } } }, "401": { "description": "Unauthenticated resource", "schema": { "type": "string" } }, "500": { "description": "Failed to get token claims or Error Marshal", "schema": { "type": "string" } } } } }, "/api/prometheus": { "get": { "description": "Fetches Prometheus metrics for all servers in all clusters managed by the replication manager.", "produces": [ "text/plain" ], "tags": [ "Public" ], "summary": "Fetch Prometheus metrics", "responses": { "200": { "description": "Prometheus metrics", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/repocomp/current": { "get": { "description": "Reads the current repository component from the specified directory and returns its content.", "produces": [ "text/plain" ], "tags": [ "Public" ], "summary": "Retrieve current repository component", "responses": { "200": { "description": "Current repository component content", "schema": { "type": "string" } }, "404": { "description": "404 Something went wrong - Not Found", "schema": { "type": "string" } } } } }, "/api/status": { "get": { "description": "Returns the status of the replication manager indicating whether it is running or starting.", "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "Get Replication Manager Status", "responses": { "200": { "description": "{\"alive\": \"running\"} or {\"alive\": \"starting\"}", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/terminal/connect": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/connect/clusters/{clusterName}/apps/{appName}": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/connect/clusters/{clusterName}/apps/{appName}/{command}": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/connect/clusters/{clusterName}/proxies/{serverName}": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path" }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/connect/clusters/{clusterName}/proxies/{serverName}/{command}": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path" }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/connect/clusters/{clusterName}/servers/{serverName}": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path" }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/connect/clusters/{clusterName}/servers/{serverName}/{command}": { "get": { "description": "Establishes a WebSocket connection for a terminal session.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Terminal", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" }, { "type": "string", "description": "Server Name", "name": "serverName", "in": "path" }, { "type": "string", "description": "OpenSVC bash terminal container RID (server allowed: container#db, container#jobs; app allowed: container#app)", "name": "rid", "in": "query" } ], "responses": { "200": { "description": "Connected successfully", "schema": { "type": "string" } }, "400": { "description": "No user provided", "schema": { "type": "string" } }, "500": { "description": "No valid terminal target\" or \"No valid cluster", "schema": { "type": "string" } } } } }, "/api/terminal/list": { "get": { "description": "Returns a list of terminal sessions for a user.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Get Terminal Session List", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of terminal sessions", "schema": { "type": "array", "items": { "type": "string" } } }, "403": { "description": "Terminal session is disabled", "schema": { "type": "string" } }, "500": { "description": "Error getting JWT claims\" or \"Error encoding JSON", "schema": { "type": "string" } } } } }, "/api/terminal/list/clusters/{clusterName}": { "get": { "description": "Returns a list of terminal sessions for a user.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Terminal" ], "summary": "Get Terminal Session List", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path" } ], "responses": { "200": { "description": "List of terminal sessions", "schema": { "type": "array", "items": { "type": "string" } } }, "403": { "description": "Terminal session is disabled", "schema": { "type": "string" } }, "500": { "description": "Error getting JWT claims\" or \"Error encoding JSON", "schema": { "type": "string" } } } } }, "/api/terms": { "get": { "description": "This endpoint returns the terms managed by the replication manager.", "produces": [ "text/plain" ], "tags": [ "Cloud18" ], "summary": "Retrieves terms", "responses": { "200": { "description": "Terms", "schema": { "type": "string" } } } } }, "/api/timeout": { "get": { "description": "This endpoint is used to check if the replication manager is running. It will respond with a JSON object after a delay of 1200 seconds.", "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "Check if the replication manager is running", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/version": { "get": { "description": "This endpoint processes the replication manager version requests and returns the version in JSON format.", "produces": [ "text/plain" ], "tags": [ "Public" ], "summary": "Handles replication manager version requests", "responses": { "200": { "description": "Version", "schema": { "type": "string" } } } } }, "/api/whoami": { "get": { "description": "Returns information about the user making the request based on the provided JWT token.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Identify the user", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "User information", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Error retrieving user info from token\" or \"Error Marshal", "schema": { "type": "string" } } } } }, "/meet/add/{channelId}/{userId}": { "get": { "description": "Adds a user to a specific channel", "tags": [ "Meet" ], "summary": "Add user to channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "ID of the channel", "name": "channelId", "in": "path", "required": true }, { "type": "string", "description": "ID of the user to add", "name": "userId", "in": "path", "required": true } ], "responses": { "200": { "description": "User added to the channel successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/create/direct/{userId}": { "get": { "description": "Creates a direct channel with a specific user", "tags": [ "Meet" ], "summary": "Create direct channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "ID of the user", "name": "userId", "in": "path", "required": true } ], "responses": { "200": { "description": "Direct channel created successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/create/private/{channelName}": { "get": { "description": "Creates a private channel with a specific name", "tags": [ "Meet" ], "summary": "Create private channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Name of the new channel", "name": "channelName", "in": "path", "required": true } ], "responses": { "200": { "description": "Private channel created successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/create/public/{channelName}": { "get": { "description": "Creates a public channel with a specific name", "tags": [ "Meet" ], "summary": "Create public channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Name of the new channel", "name": "channelName", "in": "path", "required": true } ], "responses": { "200": { "description": "Public channel created successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/delete/{channelId}": { "get": { "description": "Deletes a specific channel", "tags": [ "Meet" ], "summary": "Delete channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "ID of the channel to delete", "name": "channelId", "in": "path", "required": true } ], "responses": { "200": { "description": "Channel deleted successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/download/{fileId}": { "get": { "description": "Downloads a file from a specific channel", "tags": [ "Meet" ], "summary": "Download file from channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "File ID", "name": "fileId", "in": "path", "required": true } ], "responses": { "200": { "description": "File downloaded successfully", "schema": { "type": "file" } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/info": { "get": { "description": "Fetch user-related information, including available channels and unread messages.", "tags": [ "Meet" ], "summary": "Retrieve Meet user information.", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true } ], "responses": { "200": { "description": "User information retrieved successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/join/{channelId}": { "get": { "description": "Joins a specific channel", "tags": [ "Meet" ], "summary": "Join channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "ID of the channel to join", "name": "channelId", "in": "path", "required": true } ], "responses": { "200": { "description": "Channel joined successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/leave/{channelId}": { "get": { "description": "Leaves a specific channel", "tags": [ "Meet" ], "summary": "Leave channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "ID of the channel to leave", "name": "channelId", "in": "path", "required": true } ], "responses": { "200": { "description": "Channel left successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/logout": { "get": { "description": "Logs out the user and sets their status to offline", "tags": [ "Meet" ], "summary": "Logout meet user", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true } ], "responses": { "200": { "description": "User logged out successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/post/jitsi/{channelId}/{meetingId}": { "post": { "description": "Posts a Jitsi meeting link to a specific channel.", "tags": [ "Meet" ], "summary": "Post Jitsi meeting link", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Channel ID", "name": "channelId", "in": "path", "required": true }, { "type": "string", "description": "ID of the Jitsi meeting", "name": "meetingId", "in": "path", "required": true } ], "responses": { "200": { "description": "Jitsi meeting link posted successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/post/{channelId}": { "post": { "description": "Post a message to a specified channel.", "tags": [ "Meet" ], "summary": "Post a message to a channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Channel ID", "name": "channelId", "in": "path", "required": true }, { "description": "Message content", "name": "body", "in": "body", "required": true, "schema": { "type": "object", "additionalProperties": { "type": "string" } } } ], "responses": { "200": { "description": "Message sent successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/read/{channelId}/{page}": { "get": { "description": "Fetch the messages from a specific channel.", "tags": [ "Meet" ], "summary": "Retrieve messages from a channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Channel ID to fetch messages from", "name": "channelId", "in": "path", "required": true }, { "type": "integer", "description": "page number fetch messages from", "name": "page", "in": "path", "required": true } ], "responses": { "200": { "description": "Messages retrieved successfully", "schema": { "$ref": "#/definitions/meethelper.MeetChannelMessages" } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/upload/{channelId}": { "post": { "description": "Uploads a file to a specific channel", "tags": [ "Meet" ], "summary": "Upload file to channel", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Channel ID", "name": "channelId", "in": "path", "required": true }, { "type": "file", "description": "File to upload", "name": "file", "in": "formData", "required": true }, { "type": "string", "description": "Message to accompany the file", "name": "message", "in": "formData" } ], "responses": { "200": { "description": "File uploaded successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/meet/view/{channelId}": { "get": { "description": "Views messages in a specific channel", "tags": [ "Meet" ], "summary": "View meet messages", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "User ID for authentication", "name": "X-User-ID", "in": "header", "required": true }, { "type": "string", "description": "Channel ID to fetch messages from", "name": "channelId", "in": "path", "required": true } ], "responses": { "200": { "description": "Messages viewed successfully", "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "401": { "description": "Unauthorized user", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } } }, "definitions": { "backupmgr.BackupMetadata": { "type": "object", "properties": { "backupLine": { "type": "string" }, "backupMethod": { "type": "integer" }, "backupSessionID": { "type": "string" }, "backupStrategy": { "type": "integer" }, "backupTool": { "type": "string" }, "backupToolVersion": { "type": "string" }, "binLogFileName": { "type": "string" }, "binLogFilePos": { "type": "integer" }, "binLogUuid": { "type": "string" }, "checksum": { "type": "string" }, "completed": { "type": "boolean" }, "compressed": { "type": "boolean" }, "dest": { "description": "backup destination path", "type": "string" }, "encrypted": { "type": "boolean" }, "encryptionAlgo": { "type": "string" }, "encryptionKey": { "type": "string" }, "endTime": { "type": "string" }, "fileCount": { "type": "integer" }, "id": { "type": "integer" }, "metaFile": { "type": "string" }, "previous": { "type": "integer" }, "resticEnabled": { "type": "boolean" }, "resticFilePath": { "type": "string" }, "resticSnapshotID": { "type": "string" }, "retentionDays": { "type": "integer" }, "retentionDuration": { "type": "string" }, "size": { "description": "in bytes", "type": "integer" }, "source": { "description": "server URL", "type": "string" }, "splitDump": { "type": "boolean" }, "splitUser": { "type": "boolean" }, "startTime": { "type": "string" } } }, "backupmgr.BackupStat": { "type": "object", "properties": { "total_blob_count": { "type": "integer" }, "total_file_count": { "type": "integer" }, "total_size": { "type": "integer" } } }, "backupmgr.ManualCheckResult": { "type": "object", "properties": { "backend": { "description": "Wipe preview fields populated by ResticCheckConfigManual", "type": "string" }, "can_init": { "type": "boolean" }, "can_wipe": { "type": "boolean" }, "fetch_queued": { "type": "boolean" }, "is_s3_empty_prefix": { "type": "boolean" }, "message": { "type": "string" }, "repo_path": { "type": "string" }, "status": { "$ref": "#/definitions/backupmgr.ManualCheckStatus" }, "wipe_message": { "type": "string" } } }, "backupmgr.ManualCheckStatus": { "type": "string", "enum": [ "ok", "initialization_required", "error" ], "x-enum-varnames": [ "ManualCheckStatusOK", "ManualCheckStatusInitRequired", "ManualCheckStatusError" ] }, "backupmgr.ResticBackupOption": { "type": "object", "properties": { "dir_path": { "type": "string" }, "dry_run": { "description": "Don't upload, just show what would be done", "type": "boolean" }, "exclude": { "description": "Exclude patterns", "type": "array", "items": { "type": "string" } }, "exclude_caches": { "description": "Exclude cache directories", "type": "boolean" }, "exclude_file": { "description": "Files containing exclude patterns", "type": "array", "items": { "type": "string" } }, "exclude_if_present": { "description": "Exclude dirs containing these files", "type": "array", "items": { "type": "string" } }, "exclude_larger_than": { "description": "Max file size (e.g., \"100M\")", "type": "string" }, "files_from": { "description": "Read files to backup from file", "type": "array", "items": { "type": "string" } }, "host": { "description": "Override hostname", "type": "string" }, "ignore_ctime": { "description": "Ignore ctime changes", "type": "boolean" }, "ignore_inode": { "description": "Ignore inode changes", "type": "boolean" }, "one_file_system": { "description": "Don't cross filesystem boundaries", "type": "boolean" }, "parent": { "description": "Parent snapshot for incremental", "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "time": { "description": "Backup timestamp (e.g., '2012-11-01 22:08:41')", "type": "string" } } }, "backupmgr.ResticChangePassOption": { "type": "object" }, "backupmgr.ResticCheckOption": { "type": "object", "properties": { "check_unused": { "description": "Check for unused blobs (removed in newer versions)", "type": "boolean" }, "read_data": { "description": "Read all data blobs (slow, comprehensive)", "type": "boolean" }, "read_data_subset": { "description": "Read subset of data (e.g., \"10%\", \"5G\", \"1/5\")", "type": "string" }, "with_cache": { "description": "Use cache (default: false for check)", "type": "boolean" } } }, "backupmgr.ResticCopyOption": { "type": "object", "properties": { "copy_chunker_params": { "type": "boolean" }, "host": { "type": "array", "items": { "type": "string" } }, "init_destination": { "type": "boolean" }, "path": { "type": "array", "items": { "type": "string" } }, "snapshot_ids": { "type": "array", "items": { "type": "string" } }, "source": { "$ref": "#/definitions/backupmgr.ResticCopySourceOption" }, "tag": { "type": "array", "items": { "type": "string" } } } }, "backupmgr.ResticCopySourceAWSOption": { "type": "object", "properties": { "access_key_id": { "type": "string" }, "access_secret": { "type": "string" }, "bucket": { "type": "string" }, "endpoint": { "type": "string" }, "prefix": { "type": "string" }, "region": { "type": "string" } } }, "backupmgr.ResticCopySourceOption": { "type": "object", "properties": { "aws": { "$ref": "#/definitions/backupmgr.ResticCopySourceAWSOption" }, "key_hint": { "type": "string" }, "mode": { "type": "string" }, "password": { "type": "string" }, "repository": { "type": "string" }, "use_saved_config": { "type": "boolean" } } }, "backupmgr.ResticFetchOption": { "type": "object", "properties": { "skip_stats": { "type": "boolean" } } }, "backupmgr.ResticGlobalOption": { "type": "object", "properties": { "ca_cert": { "type": "string" }, "cache_dir": { "type": "string" }, "cleanup_cache": { "type": "boolean" }, "compression": { "type": "string" }, "insecure_tls": { "type": "boolean" }, "json": { "type": "boolean" }, "key_hint": { "type": "string" }, "limit_download": { "type": "integer" }, "limit_upload": { "type": "integer" }, "no_cache": { "type": "boolean" }, "no_lock": { "type": "boolean" }, "option": { "type": "array", "items": { "type": "string" } }, "pack_size": { "type": "integer" }, "password_command": { "type": "string" }, "password_file": { "type": "string" }, "quiet": { "type": "boolean" }, "repo": { "type": "string" }, "repository_file": { "type": "string" }, "tls_client_cert": { "type": "string" }, "verbose": { "type": "integer" } } }, "backupmgr.ResticInitOption": { "type": "object", "properties": { "allow_empty_prefix": { "type": "boolean" }, "copy_chunker_params": { "type": "boolean" }, "force": { "type": "boolean" }, "from_repo": { "type": "string" }, "repository_version": { "description": "e.g., \"stable\", \"latest\", \"1\", \"2\"", "type": "string" } } }, "backupmgr.ResticMountOption": { "type": "object", "properties": { "allow_other": { "description": "Permission Options", "type": "boolean" }, "host": { "description": "Snapshot Filters", "type": "array", "items": { "type": "string" } }, "no_default_permissions": { "description": "Ignore Unix permissions (--no-default-permissions)", "type": "boolean" }, "no_lock": { "description": "Repository Options", "type": "boolean" }, "owner_root": { "description": "Use root as owner (--owner-root)", "type": "boolean" }, "path": { "description": "Filter by path(s) (--path)", "type": "array", "items": { "type": "string" } }, "path_template": { "description": "Path/Time Templates", "type": "array", "items": { "type": "string" } }, "quiet": { "description": "Quiet mode (-q, --quiet)", "type": "boolean" }, "tag": { "description": "Filter by tag(s) (--tag)", "type": "array", "items": { "type": "string" } }, "target_dir": { "description": "Required", "type": "string" }, "time_template": { "description": "Template for times (--time-template, default: \"2006-01-02T15:04:05Z07:00\")", "type": "string" }, "verbose": { "description": "Verbosity level (-v, --verbose, 0-3)", "type": "integer" } } }, "backupmgr.ResticPruneOption": { "type": "object", "properties": { "max_repack_size": { "description": "e.g., \"500M\", \"5G\". Empty means omit.", "type": "string" }, "max_unused": { "description": "e.g., \"500M\", \"5G\". Empty means omit.", "type": "string" }, "repack_cacheable_only": { "description": "Only repack cacheable blobs", "type": "boolean" }, "repack_small": { "description": "Repack small blobs", "type": "boolean" }, "repack_uncompressed": { "description": "Repack uncompressed blobs", "type": "boolean" } } }, "backupmgr.ResticPurgeOption": { "type": "object", "properties": { "compact": { "description": "Enable compact output during forget", "type": "boolean" }, "dry_run": { "type": "boolean" }, "group_by": { "type": "string" }, "host": { "type": "array", "items": { "type": "string" } }, "keep_daily": { "type": "integer" }, "keep_hourly": { "type": "integer" }, "keep_last": { "type": "integer" }, "keep_monthly": { "type": "integer" }, "keep_tag": { "type": "array", "items": { "type": "string" } }, "keep_weekly": { "type": "integer" }, "keep_within": { "type": "string" }, "keep_within_daily": { "type": "string" }, "keep_within_hourly": { "type": "string" }, "keep_within_monthly": { "type": "string" }, "keep_within_weekly": { "type": "string" }, "keep_within_yearly": { "type": "string" }, "keep_yearly": { "type": "integer" }, "path": { "type": "array", "items": { "type": "string" } }, "prune": { "description": "When true, runs prune after forget to reclaim space (defaults to true via NewResticPurgeOption)", "type": "boolean" }, "prune_option": { "$ref": "#/definitions/backupmgr.ResticPruneOption" }, "snapshot_id": { "type": "string" }, "tag": { "type": "array", "items": { "type": "string" } } } }, "backupmgr.ResticRestoreOption": { "type": "object", "properties": { "exclude": { "description": "Exclude patterns", "type": "array", "items": { "type": "string" } }, "global_opt": { "description": "Global restic flags", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticGlobalOption" } ] }, "host": { "description": "Filter by host for \"latest\" snapshot", "type": "array", "items": { "type": "string" } }, "iexclude": { "description": "Case-insensitive exclude patterns", "type": "array", "items": { "type": "string" } }, "iinclude": { "description": "Case-insensitive include patterns", "type": "array", "items": { "type": "string" } }, "include": { "description": "Include patterns", "type": "array", "items": { "type": "string" } }, "overwrite": { "description": "Overwrite policy (non-standard, custom implementation)", "type": "string" }, "path": { "description": "Filter by path for \"latest\" snapshot", "type": "array", "items": { "type": "string" } }, "snapshot_id": { "type": "string" }, "tag": { "description": "Filter by tag for \"latest\" snapshot", "type": "array", "items": { "type": "string" } }, "target_dir": { "description": "Target directory for restore", "type": "string" }, "verify": { "description": "Verify restored files content", "type": "boolean" } } }, "backupmgr.ResticTask": { "type": "object", "properties": { "backup_opt": { "description": "Options for BackupTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticBackupOption" } ] }, "changepass_opt": { "description": "Options for ChangePassTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticChangePassOption" } ] }, "check_opt": { "description": "Options for CheckTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticCheckOption" } ] }, "fetch_opt": { "description": "Options for FetchTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticFetchOption" } ] }, "init_opt": { "description": "Options for InitTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticInitOption" } ] }, "purge_opt": { "description": "Options for PurgeTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticPurgeOption" } ] }, "restore_opt": { "description": "Options for RestoreTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticRestoreOption" } ] }, "task_id": { "type": "integer" }, "task_type": { "$ref": "#/definitions/backupmgr.TaskType" }, "unlock_opt": { "description": "Options for UnlockTask", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticUnlockOption" } ] } } }, "backupmgr.ResticTaskState": { "type": "object", "properties": { "bytes_done": { "type": "integer" }, "completed_at": { "type": "string" }, "completed_snapshots": { "description": "snapshots completed during copy", "type": "integer" }, "data_added": { "type": "integer" }, "data_blobs": { "type": "integer" }, "dirs_changed": { "type": "integer" }, "dirs_new": { "type": "integer" }, "dirs_unmodified": { "type": "integer" }, "error": { "type": "string" }, "files_changed": { "type": "integer" }, "files_done": { "type": "integer" }, "files_new": { "type": "integer" }, "files_unmodified": { "type": "integer" }, "last_update": { "type": "string" }, "packs_done": { "description": "packs copied (copy task only)", "type": "integer" }, "percent_done": { "type": "number" }, "phase": { "description": "init_destination or copy", "type": "string" }, "seconds_elapsed": { "type": "integer" }, "snapshot_id": { "type": "string" }, "started_at": { "type": "string" }, "status": { "description": "running, completed, failed", "type": "string" }, "task_id": { "type": "integer" }, "task_type": { "$ref": "#/definitions/backupmgr.TaskType" }, "total_bytes": { "type": "integer" }, "total_bytes_processed": { "type": "integer" }, "total_duration": { "type": "number" }, "total_files": { "type": "integer" }, "total_files_processed": { "type": "integer" }, "total_packs": { "description": "total packs to copy (copy task only)", "type": "integer" }, "total_snapshots": { "description": "total snapshots to copy", "type": "integer" }, "tree_blobs": { "type": "integer" } } }, "backupmgr.ResticUnlockOption": { "type": "object", "properties": { "remove_all": { "description": "Remove all locks, including from other hosts", "type": "boolean" } } }, "backupmgr.ResticWipeOption": { "type": "object", "properties": { "allow_empty_prefix": { "type": "boolean" }, "confirm": { "type": "boolean" }, "typed_target_confirm": { "type": "string" } } }, "backupmgr.TaskType": { "type": "integer", "enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ], "x-enum-varnames": [ "InitTask", "FetchTask", "BackupTask", "PurgeTask", "UnlockTask", "ChangePassTask", "RestoreTask", "CheckTask", "CopyTask" ] }, "cluster.Alerts": { "type": "object", "properties": { "errors": { "type": "array", "items": { "$ref": "#/definitions/state.StateHttp" } }, "infos": { "type": "array", "items": { "$ref": "#/definitions/state.StateHttp" } }, "warnings": { "type": "array", "items": { "$ref": "#/definitions/state.StateHttp" } } } }, "cluster.App": { "type": "object", "properties": { "agent": { "type": "string" }, "appClusterSubstitute": { "type": "string" }, "config": { "$ref": "#/definitions/config.AppConfig" }, "datadir": { "type": "string" }, "failCount": { "type": "integer" }, "host": { "type": "string" }, "hostIPV6": { "type": "string" }, "id": { "type": "string" }, "isHashingTemplate": { "type": "boolean" }, "name": { "type": "string" }, "port": { "type": "string" }, "prevState": { "type": "string" }, "routeStatus": { "type": "array", "items": { "$ref": "#/definitions/config.RouteStatus" } }, "serviceName": { "type": "string" }, "slaposDatadir": { "type": "string" }, "state": { "type": "string" }, "templateMD5": { "type": "string" }, "templateMD5Prov": { "type": "string" }, "type": { "type": "string" }, "version": { "type": "string" }, "weight": { "type": "string" } } }, "cluster.ClusterForm": { "type": "object", "properties": { "clusterName": { "type": "string" }, "orchestrator": { "type": "string" }, "plan": { "type": "string" } } }, "cluster.Diff": { "type": "object", "properties": { "role": { "type": "string" }, "serverName": { "type": "string" }, "variableValue": { "type": "string" } } }, "cluster.GraphiteFilterList": { "type": "object", "properties": { "blacklist": { "type": "string" }, "whitelist": { "type": "string" } } }, "cluster.PFSExplainRecord": { "type": "object", "properties": { "capturedAt": { "description": "RFC3339 timestamp of first EXPLAIN", "type": "string" }, "digest": { "description": "PFS digest hash", "type": "string" }, "digestText": { "description": "normalised template e.g. SELECT * FROM t WHERE id = ?", "type": "string" }, "sampleQuery": { "description": "concrete SQL instance used for EXPLAIN", "type": "string" }, "schemaName": { "type": "string" } } }, "cluster.ReconciliationReport": { "type": "object", "properties": { "cleanedUp": { "type": "boolean" }, "missingMetadata": { "description": "Snapshots without metadata files", "type": "array", "items": { "type": "string" } }, "orphanedMetadata": { "description": "Metadata files referencing deleted snapshots", "type": "array", "items": { "type": "string" } }, "timestamp": { "type": "string" } } }, "cluster.RemediationEntry": { "type": "object", "properties": { "auto_fixable": { "description": "true when POST /security/fix-state/{err_key} is supported", "type": "boolean" }, "description": { "type": "string" }, "err_key": { "type": "string" }, "fixes": { "type": "array", "items": { "$ref": "#/definitions/cluster.RemediationFix" } }, "server": { "type": "string" } } }, "cluster.RemediationFix": { "type": "object", "properties": { "description": { "type": "string" }, "file_name": { "description": "cnf_template", "type": "string" }, "my_cnf": { "description": "suggested file content", "type": "string" }, "risk": { "description": "\"safe\", \"moderate\", \"disruptive\"", "type": "string" }, "tag": { "description": "add_tag / drop_tag", "type": "string" }, "type": { "type": "string" }, "url": { "description": "settings_switch", "type": "string" } } }, "cluster.RemediationPlan": { "type": "object", "properties": { "cluster": { "type": "string" }, "generated_at": { "type": "string" }, "open_findings": { "type": "integer" }, "remediations": { "type": "array", "items": { "$ref": "#/definitions/cluster.RemediationEntry" } } } }, "cluster.ResticEnsureBucketResult": { "type": "object", "properties": { "bucket": { "type": "string" }, "created": { "type": "boolean" }, "endpoint": { "type": "string" }, "message": { "type": "string" } } }, "cluster.SnapshotMetadataSummary": { "type": "object", "properties": { "backupLine": { "type": "string" }, "backupMethod": { "type": "string" }, "backupSessionID": { "type": "string" }, "backupTool": { "type": "string" }, "compressed": { "type": "boolean" }, "dest": { "type": "string" }, "endTime": { "type": "string" }, "resticBasePath": { "type": "string" }, "resticSnapshotID": { "type": "string" }, "startTime": { "type": "string" } } }, "cluster.Test": { "type": "object", "properties": { "config-file": { "type": "string" }, "config-init": { "$ref": "#/definitions/config.Config" }, "config-test": { "$ref": "#/definitions/config.Config" }, "name": { "type": "string" }, "result": { "type": "string" } } }, "cluster.UserForm": { "type": "object", "properties": { "grants": { "type": "string" }, "password": { "type": "string" }, "roles": { "type": "string" }, "username": { "type": "string" } } }, "cluster.VariableDiff": { "type": "object", "properties": { "diffValues": { "type": "array", "items": { "$ref": "#/definitions/cluster.Diff" } }, "variableName": { "type": "string" } } }, "config.AgentVariable": { "type": "object", "properties": { "agent": { "type": "string" }, "value": { "type": "string" } } }, "config.AppConfig": { "type": "object", "properties": { "appConfigVersion": { "description": "AppConfigVersion is the explicit persisted migration marker stamped by\ncluster.CanonicalizeAppContent. 0/missing means unflagged legacy (V1)\ncontent; AppConfigVersionV2 means content already matches the V1 -\u003e V2\nmigration baseline and does not need re-canonicalizing for shape alone.", "type": "integer" }, "appDbPass": { "type": "string" }, "appDbSchema": { "type": "string" }, "appDbUser": { "type": "string" }, "appHost": { "type": "string" }, "appHostsIpv6": { "type": "string" }, "appPort": { "type": "string" }, "appS3Provider": { "type": "boolean" }, "deployment": { "$ref": "#/definitions/config.Deployment" }, "provAppAgents": { "type": "string" }, "provAppAgentsFailover": { "type": "string" }, "provAppCpuCores": { "type": "string" }, "provAppCreditPlanned": { "type": "integer" }, "provAppCreditUsed": { "type": "integer" }, "provAppDiskIops": { "type": "string" }, "provAppDiskSize": { "type": "string" }, "provAppDiskType": { "type": "string" }, "provAppDockerCmd": { "type": "string" }, "provAppDockerImg": { "type": "string" }, "provAppHaTopology": { "type": "string" }, "provAppMemory": { "type": "string" }, "provAppRouteAddr": { "type": "string" }, "provAppRouteMask": { "type": "string" }, "provAppRoutePort": { "type": "string" }, "provAppServiceType": { "type": "string" }, "provAppSizingMode": { "type": "string" }, "provAppTemplate": { "type": "string" } } }, "config.Config": { "type": "object", "properties": { "ExternalScript": { "type": "boolean" }, "alertPushoverAppToken": { "type": "string" }, "alertPushoverUserToken": { "type": "string" }, "alertScript": { "type": "string" }, "alertSlackChannel": { "type": "string" }, "alertSlackUrl": { "type": "string" }, "alertSlackUser": { "type": "string" }, "alertTeamsProxyUrl": { "type": "string" }, "alertTeamsState": { "type": "string" }, "alertTeamsUrl": { "type": "string" }, "analyzeUsePersistent": { "type": "boolean" }, "analyzeUseSql": { "type": "boolean" }, "apiAutologin": { "type": "boolean" }, "apiAutologinUser": { "type": "string" }, "apiBind": { "type": "string" }, "apiCredentials": { "type": "string" }, "apiCredentialsACLAllow": { "type": "string" }, "apiCredentialsACLAllowExternal": { "type": "string" }, "apiCredentialsACLDiscard": { "type": "string" }, "apiCredentialsACLDiscardExternal": { "type": "string" }, "apiCredentialsExternal": { "type": "string" }, "apiCredentialsSecureConfig": { "type": "boolean" }, "apiDashboardUser": { "type": "string" }, "apiErrorDisregardPort": { "type": "boolean" }, "apiErrorLimit": { "type": "integer" }, "apiErrorLimitDuration": { "type": "integer" }, "apiErrorSuppress": { "type": "boolean" }, "apiHttpsBind": { "type": "boolean" }, "apiOAuthClientID": { "type": "string" }, "apiOAuthClientSecret": { "type": "string" }, "apiOAuthProvider": { "type": "string" }, "apiPort": { "type": "string" }, "apiPublicUrl": { "type": "string" }, "apiServer": { "type": "boolean" }, "apiSwaggerEnabled": { "type": "boolean" }, "apiTokenTimeout": { "type": "integer" }, "app": { "type": "boolean" }, "appErrorDebounceThreshold": { "type": "integer" }, "appHosts": { "type": "string" }, "appHostsIpv6": { "type": "string" }, "appRefreshConcurrency": { "type": "integer" }, "apps": { "type": "array", "items": { "$ref": "#/definitions/config.AppConfig" } }, "arbitrationExternal": { "type": "boolean" }, "arbitrationExternalHosts": { "type": "string" }, "arbitrationExternalSecret": { "type": "string" }, "arbitrationExternalUniqueId": { "type": "integer" }, "arbitrationFailedMasterScript": { "type": "string" }, "arbitrationMinorityFreeze": { "type": "boolean" }, "arbitrationPeerHosts": { "type": "string" }, "arbitrationReadTimout": { "type": "integer" }, "arbitratorBindAddress": { "type": "string" }, "arbitratorDriver": { "type": "string" }, "arbitratorUriCheck": { "type": "boolean" }, "arbitratorUriCheckUrl": { "type": "string" }, "autorejoin": { "type": "boolean" }, "autorejoinBackupBinlog": { "type": "boolean" }, "autorejoinBackupSelectorLogical": { "type": "string" }, "autorejoinBackupSelectorPhysical": { "type": "string" }, "autorejoinFlashback": { "type": "boolean" }, "autorejoinFlashbackOnSync": { "type": "boolean" }, "autorejoinFlashbackOnUnsync": { "type": "boolean" }, "autorejoinForceRestore": { "type": "boolean" }, "autorejoinLogicalBackup": { "type": "boolean" }, "autorejoinMysqldump": { "type": "boolean" }, "autorejoinPhysicalBackup": { "type": "boolean" }, "autorejoinScript": { "type": "string" }, "autorejoinSlavePositionalHeartbeat": { "type": "boolean" }, "autorejoinZfsFlashback": { "type": "boolean" }, "autoseed": { "type": "boolean" }, "backup": { "type": "boolean" }, "backupArchiveMode": { "type": "string" }, "backupBinlogs": { "type": "boolean" }, "backupBinlogsKeep": { "type": "integer" }, "backupCheckFreeSpace": { "type": "boolean" }, "backupConcurrentSlots": { "type": "integer" }, "backupDiskTresholdCrit": { "type": "integer" }, "backupDiskTresholdWarn": { "type": "integer" }, "backupEstimateSize": { "type": "boolean" }, "backupEstimateSizePercentage": { "type": "integer" }, "backupGottyClientPath": { "type": "string" }, "backupGrowthPercentage": { "type": "integer" }, "backupKeepDaily": { "type": "integer" }, "backupKeepHourly": { "type": "integer" }, "backupKeepLast": { "type": "integer" }, "backupKeepMonthly": { "type": "integer" }, "backupKeepUntilValid": { "type": "boolean" }, "backupKeepWeekly": { "type": "integer" }, "backupKeepWithin": { "type": "string" }, "backupKeepWithinDaily": { "type": "string" }, "backupKeepWithinHourly": { "type": "string" }, "backupKeepWithinMonthly": { "type": "string" }, "backupKeepWithinWeekly": { "type": "string" }, "backupKeepWithinYearly": { "type": "string" }, "backupKeepYearly": { "type": "integer" }, "backupLoadScript": { "type": "string" }, "backupLockDDL": { "type": "boolean" }, "backupLogicalDumpSystemTables": { "type": "boolean" }, "backupLogicalDumpThreads": { "type": "integer" }, "backupLogicalLoadThreads": { "type": "integer" }, "backupLogicalPostScript": { "type": "string" }, "backupLogicalType": { "type": "string" }, "backupMyDumperOptions": { "type": "string" }, "backupMyDumperRegex": { "type": "string" }, "backupMyDumperStream": { "type": "boolean" }, "backupMyDumperStreamFile": { "type": "string" }, "backupMyDumperStreamFormat": { "type": "string" }, "backupMyLoaderOptions": { "type": "string" }, "backupMydumperPath": { "type": "string" }, "backupMyloaderPath": { "type": "string" }, "backupMysqlbinlogPath": { "type": "string" }, "backupMysqlclientOptions": { "type": "string" }, "backupMysqlclientPath": { "type": "string" }, "backupMysqldumpOptions": { "type": "string" }, "backupMysqldumpPath": { "type": "string" }, "backupMysqldumpSplitDump": { "type": "boolean" }, "backupMytopPath": { "type": "string" }, "backupPhysicalPostScript": { "type": "string" }, "backupPhysicalType": { "type": "string" }, "backupReconcileAutoCleanup": { "type": "boolean" }, "backupReconcileInterval": { "type": "integer" }, "backupReseedRemoteDecompress": { "type": "boolean" }, "backupRestic": { "type": "boolean" }, "backupResticAdditionalEnv": { "type": "string" }, "backupResticAllowUnsafeMount": { "type": "boolean" }, "backupResticAutoInit": { "type": "boolean" }, "backupResticAws": { "type": "boolean" }, "backupResticAwsAccessKeyId": { "type": "string" }, "backupResticAwsBucket": { "type": "string" }, "backupResticAwsEndpoint": { "type": "string" }, "backupResticAwsPrefix": { "type": "string" }, "backupResticAwsRegion": { "type": "string" }, "backupResticBinaryPath": { "type": "string" }, "backupResticDirMode": { "type": "integer" }, "backupResticDumpTimeout": { "type": "integer" }, "backupResticFileMode": { "type": "integer" }, "backupResticHost": { "type": "string" }, "backupResticLocalRepository": { "type": "string" }, "backupResticMetadataExtractorConcurrency": { "type": "integer" }, "backupResticMountAllowOther": { "type": "boolean" }, "backupResticMountDir": { "description": "BackupResticMountDir defines the base directory for restic FUSE mounts.\nDefault base is \u003cworking-dir\u003e/\u003ccluster\u003e/mount. Relative paths resolve under that base.", "type": "string" }, "backupResticMountHost": { "type": "string" }, "backupResticMountNoDefaultPermissions": { "type": "boolean" }, "backupResticMountNoLock": { "type": "boolean" }, "backupResticMountOwnerRoot": { "type": "boolean" }, "backupResticMountPath": { "type": "string" }, "backupResticMountPathTemplate": { "type": "string" }, "backupResticMountQuiet": { "type": "boolean" }, "backupResticMountRecoveryEnabled": { "description": "BackupResticMountRecoveryEnabled controls cleanup of stale restic mounts on startup.", "type": "boolean" }, "backupResticMountTag": { "type": "string" }, "backupResticMountTargetDir": { "description": "Restic mount settings (used for manual mount operations).", "type": "string" }, "backupResticMountTimeTemplate": { "type": "string" }, "backupResticMountVerbose": { "type": "integer" }, "backupResticPurgeGroupBy": { "type": "string" }, "backupResticPurgeHost": { "type": "string" }, "backupResticPurgeKeepTag": { "type": "string" }, "backupResticPurgeOldestOnDiskSpace": { "type": "boolean" }, "backupResticPurgeOldestOnDiskTreshold": { "type": "integer" }, "backupResticPurgePath": { "type": "string" }, "backupResticPurgePrune": { "type": "boolean" }, "backupResticPurgePruneCompact": { "type": "boolean" }, "backupResticPurgePruneMaxRepackSize": { "type": "string" }, "backupResticPurgePruneMaxUnused": { "type": "string" }, "backupResticPurgePruneRepackCacheableOnly": { "type": "boolean" }, "backupResticPurgePruneRepackSmall": { "type": "boolean" }, "backupResticPurgePruneRepackUncompressed": { "type": "boolean" }, "backupResticPurgeTag": { "type": "string" }, "backupResticRepoAppendCluster": { "type": "boolean" }, "backupResticRepository": { "type": "string" }, "backupResticReseedCleanup": { "type": "boolean" }, "backupResticReseedStrategy": { "type": "string" }, "backupResticReseedTempDir": { "type": "string" }, "backupResticReseedTimeout": { "type": "integer" }, "backupResticS3Mode": { "type": "string" }, "backupResticTags": { "type": "string" }, "backupResticTimeout": { "type": "integer" }, "backupRestoreDefinerStrict": { "type": "boolean" }, "backupRestoreMysqlUser": { "type": "boolean" }, "backupRestoreVersionStrict": { "type": "boolean" }, "backupSaveScript": { "type": "string" }, "backupSplitMysqlUser": { "type": "boolean" }, "backupSplitdumpCreateDatabases": { "type": "boolean" }, "backupSplitdumpFileSize": { "type": "string" }, "backupStreaming": { "type": "boolean" }, "backupStreamingBucket": { "type": "string" }, "backupStreamingDebug": { "type": "boolean" }, "backupStreamingEndpoint": { "type": "string" }, "backupStreamingRegion": { "type": "string" }, "binlogCopyMode": { "type": "string" }, "binlogCopyScript": { "type": "string" }, "binlogParseMode": { "type": "string" }, "binlogRotationScript": { "type": "string" }, "checkBinlogFilters": { "type": "boolean" }, "checkBinlogServerId": { "type": "integer" }, "checkGrants": { "type": "boolean" }, "checkReplicationErrantTrx": { "type": "boolean" }, "checkReplicationFilters": { "type": "boolean" }, "checkReplicationState": { "type": "boolean" }, "checkType": { "type": "string" }, "cloud18": { "type": "boolean" }, "cloud18Alert": { "type": "boolean" }, "cloud18AlertSlackChannel": { "type": "string" }, "cloud18AlertSlackUrl": { "type": "string" }, "cloud18AlertSlackUser": { "type": "string" }, "cloud18ApplicationCredits": { "type": "integer" }, "cloud18ApplicationCreditsPlanned": { "type": "integer" }, "cloud18ApplicationCreditsPrice": { "type": "integer" }, "cloud18ApplicationCreditsUsed": { "type": "integer" }, "cloud18CostCurrency": { "type": "string" }, "cloud18CrmApiUrl": { "type": "string" }, "cloud18DatabaseReadSrvRecord": { "type": "string" }, "cloud18DatabaseReadWriteSplitSrvRecord": { "type": "string" }, "cloud18DatabaseReadWriteSrvRecord": { "type": "string" }, "cloud18DbOps": { "type": "string" }, "cloud18DbaUserCredential": { "type": "string" }, "cloud18DisableForSale": { "type": "boolean" }, "cloud18DisablePeers": { "type": "boolean" }, "cloud18Domain": { "type": "string" }, "cloud18DomainAddScript": { "type": "string" }, "cloud18DomainDropScript": { "type": "string" }, "cloud18DomainSecret": { "type": "string" }, "cloud18DomainUser": { "type": "string" }, "cloud18ExternalDbOps": { "type": "string" }, "cloud18ExternalDbOpsStatus": { "type": "string" }, "cloud18ExternalSysOps": { "type": "string" }, "cloud18ExternalSysOpsStatus": { "type": "string" }, "cloud18GatewayDomainName": { "type": "string" }, "cloud18GatewayService": { "type": "string" }, "cloud18GitUser": { "type": "string" }, "cloud18HealthRefreshInterval": { "type": "integer" }, "cloud18InfraCertifications": { "type": "string" }, "cloud18InfraCpuFreq": { "type": "string" }, "cloud18InfraCpuModel": { "type": "string" }, "cloud18InfraDataCenters": { "type": "string" }, "cloud18InfraDescription": { "type": "string" }, "cloud18InfraGeoLocalizations": { "type": "string" }, "cloud18InfraPublicBandwidth": { "type": "number" }, "cloud18MonthlyDbopsCost": { "type": "number" }, "cloud18MonthlyExternalDbopsCost": { "type": "number" }, "cloud18MonthlyExternalSysopsCost": { "type": "number" }, "cloud18MonthlyInfraCost": { "type": "number" }, "cloud18MonthlyLicenseCost": { "type": "number" }, "cloud18MonthlySysopsCost": { "type": "number" }, "cloud18OpenDbops": { "type": "boolean" }, "cloud18OpenSysops": { "type": "boolean" }, "cloud18PeerHealthMode": { "type": "string" }, "cloud18PlatformDescription": { "type": "string" }, "cloud18PromotionPct": { "type": "number" }, "cloud18SalesExternalOpsStopScript": { "type": "string" }, "cloud18SalesExternalOpsValidateScript": { "type": "string" }, "cloud18SalesSubscriptionScript": { "type": "string" }, "cloud18SalesSubscriptionValidateScript": { "type": "string" }, "cloud18SalesUnsubscribeScript": { "type": "string" }, "cloud18Shared": { "type": "boolean" }, "cloud18SlaProvisionTime": { "type": "number" }, "cloud18SlaRepairTime": { "type": "number" }, "cloud18SlaResponseTime": { "type": "number" }, "cloud18SponsorUserCredential": { "type": "string" }, "cloud18SubDomain": { "type": "string" }, "cloud18SubDomainZone": { "type": "string" }, "cloud18SubscribedDbops": { "type": "boolean" }, "cloud18SubscriptionPlan": { "type": "string" }, "clusterHead": { "type": "string" }, "compressBackups": { "type": "boolean" }, "compressBackupsCompressionLevel": { "type": "integer" }, "compressBackupsDecompressBufferSize": { "type": "integer" }, "compressBackupsLogical": { "type": "string" }, "compressBackupsParallelBlocks": { "type": "integer" }, "compressBackupsPhysical": { "type": "string" }, "dbServersBackupHosts": { "type": "string" }, "dbServersBindAddress": { "type": "string" }, "dbServersConnectTimeout": { "type": "integer" }, "dbServersCredential": { "type": "string" }, "dbServersExecTimeout": { "type": "integer" }, "dbServersHosts": { "type": "string" }, "dbServersIgnoredHosts": { "type": "string" }, "dbServersIgnoredReadonly": { "type": "string" }, "dbServersLocality": { "type": "string" }, "dbServersPreferedMaster": { "type": "string" }, "dbServersReadTimeout": { "type": "integer" }, "dbServersStateChangeScript": { "type": "string" }, "dbServersTlsCaCert": { "type": "string" }, "dbServersTlsClientCert": { "type": "string" }, "dbServersTlsClientKey": { "type": "string" }, "dbServersTlsServerCert": { "type": "string" }, "dbServersTlsServerKey": { "type": "string" }, "dbServersTlsSslMode": { "type": "string" }, "dbServersUseGeneratedCert": { "type": "boolean" }, "delayStatCapture": { "type": "boolean" }, "delayStatRotate": { "type": "integer" }, "eeplicationRestartOnSqlLErrorMatch": { "type": "string" }, "enterprise": { "description": "used to talk to opensvc collector", "type": "boolean" }, "extproxy": { "type": "boolean" }, "extproxyAddress": { "type": "string" }, "failoverAtSync": { "type": "boolean" }, "failoverCheckDelayStat": { "type": "boolean" }, "failoverDivergentData": { "type": "boolean" }, "failoverEventScheduler": { "type": "boolean" }, "failoverEventStatus": { "type": "boolean" }, "failoverFalsePositiveExternal": { "type": "boolean" }, "failoverFalsePositiveExternalPort": { "type": "integer" }, "failoverFalsePositiveHeartbeat": { "type": "boolean" }, "failoverFalsePositiveHeartbeatTimeout": { "type": "integer" }, "failoverFalsePositiveMaxscale": { "type": "boolean" }, "failoverFalsePositiveMaxscaleTimeout": { "type": "integer" }, "failoverFalsePositivePingCounter": { "type": "integer" }, "failoverLimit": { "type": "integer" }, "failoverLogFileKeep": { "type": "integer" }, "failoverMaxSlaveDelay": { "type": "integer" }, "failoverMdevCheck": { "type": "boolean" }, "failoverMdevLevel": { "type": "string" }, "failoverMode": { "type": "string" }, "failoverPostScript": { "type": "string" }, "failoverPreScript": { "type": "string" }, "failoverReadOnlyState": { "type": "boolean" }, "failoverResetTime": { "type": "integer" }, "failoverRestartUnsafe": { "type": "boolean" }, "failoverSemisyncState": { "type": "boolean" }, "failoverSuperReadOnlyState": { "type": "boolean" }, "failoverSwithToPrefered": { "type": "boolean" }, "failoverTimeLimit": { "type": "integer" }, "forceBinlogAnnotate": { "type": "boolean" }, "forceBinlogChecksum": { "type": "boolean" }, "forceBinlogCompress": { "type": "boolean" }, "forceBinlogPurge": { "type": "boolean" }, "forceBinlogPurgeMinReplica": { "type": "integer" }, "forceBinlogPurgeOnRestore": { "type": "boolean" }, "forceBinlogPurgeReplicas": { "type": "boolean" }, "forceBinlogPurgeTotalSize": { "type": "integer" }, "forceBinlogRow": { "type": "boolean" }, "forceBinlogSlowqueries": { "type": "boolean" }, "forceDiskRelaylogSizeLimit": { "type": "boolean" }, "forceDiskRelaylogSizeLimitSize": { "type": "integer" }, "forceInmemoryBinlogCacheSize": { "type": "boolean" }, "forceNoslaveBehind": { "type": "boolean" }, "forceSlaveGtidMode": { "type": "boolean" }, "forceSlaveGtidModeStrict": { "type": "boolean" }, "forceSlaveHeartbeat": { "type": "boolean" }, "forceSlaveHeartbeatRetry": { "type": "integer" }, "forceSlaveHeartbeatTime": { "type": "integer" }, "forceSlaveIdempotent": { "type": "boolean" }, "forceSlaveNoGtidMode": { "type": "boolean" }, "forceSlaveParallelMode": { "type": "string" }, "forceSlaveReadonly": { "type": "boolean" }, "forceSlaveSemisync": { "type": "boolean" }, "forceSlaveStrict": { "type": "boolean" }, "forceSyncBinlog": { "type": "boolean" }, "forceSyncInnodb": { "type": "boolean" }, "fullVersion": { "type": "string" }, "gitConfigSyncStandby": { "type": "boolean" }, "gitMonitoringTicker": { "type": "integer" }, "gitUrl": { "type": "string" }, "gitUrlPull": { "type": "string" }, "gitUsername": { "type": "string" }, "goArch": { "type": "string" }, "goOS": { "type": "string" }, "graphiteBlacklist": { "type": "boolean" }, "graphiteCarbonApiPort": { "type": "integer" }, "graphiteCarbonHost": { "type": "string" }, "graphiteCarbonLinkPort": { "type": "integer" }, "graphiteCarbonPicklePort": { "type": "integer" }, "graphiteCarbonPort": { "type": "integer" }, "graphiteCarbonPprofPort": { "type": "integer" }, "graphiteCarbonServerPort": { "type": "integer" }, "graphiteEmbedded": { "type": "boolean" }, "graphiteMetrics": { "type": "boolean" }, "graphiteWhitelist": { "type": "boolean" }, "graphiteWhitelistTemplate": { "type": "string" }, "haproxy": { "type": "boolean" }, "haproxyAPIPort": { "type": "integer" }, "haproxyAPIReadBackend": { "type": "string" }, "haproxyAPIWriteBackend": { "type": "string" }, "haproxyBinaryPath": { "type": "string" }, "haproxyDebug": { "type": "boolean" }, "haproxyIpReadBind": { "type": "string" }, "haproxyIpWriteBind": { "type": "string" }, "haproxyJanitorWeights": { "type": "string" }, "haproxyLogLevel": { "type": "integer" }, "haproxyMode": { "type": "string" }, "haproxyPassword": { "type": "string" }, "haproxyReadPort": { "type": "integer" }, "haproxyServers": { "type": "string" }, "haproxyServers-ipv6": { "type": "string" }, "haproxyStagingBackend": { "type": "string" }, "haproxyStagingBind": { "type": "string" }, "haproxyStagingPort": { "type": "string" }, "haproxyStatPort": { "type": "integer" }, "haproxyWritePort": { "type": "integer" }, "haproxylUser": { "type": "string" }, "heartbeatTable": { "type": "boolean" }, "http-use-react": { "type": "boolean" }, "httpAuth": { "type": "boolean" }, "httpBindAdress": { "type": "string" }, "httpBootstrapButton": { "type": "boolean" }, "httpPort": { "type": "string" }, "httpRefreshInterval": { "type": "integer" }, "httpRoot": { "type": "string" }, "httpServer": { "type": "boolean" }, "httpSessionLifetime": { "type": "integer" }, "injectTrafficMode": { "type": "string" }, "interactive": { "type": "boolean" }, "jobLogBatchSize": { "type": "integer" }, "kubeConfig": { "type": "string" }, "logAppLevel": { "type": "integer" }, "logArbitration": { "type": "boolean" }, "logArbitrationLevel": { "type": "integer" }, "logBackupStream": { "type": "boolean" }, "logBackupStreamLevel": { "type": "integer" }, "logBinlogPurge": { "type": "boolean" }, "logBinlogPurgeLevel": { "type": "integer" }, "logConfigLoad": { "type": "boolean" }, "logConfigLoadLevel": { "type": "integer" }, "logExternalScriptLevel": { "type": "integer" }, "logFile": { "type": "string" }, "logFileLevel": { "type": "integer" }, "logGit": { "type": "boolean" }, "logGitLevel": { "type": "integer" }, "logGraphite": { "type": "boolean" }, "logGraphiteLevel": { "type": "integer" }, "logHeartbeat": { "type": "boolean" }, "logHeartbeatLevel": { "type": "integer" }, "logLevel": { "type": "integer" }, "logLevelDatabaseAudit": { "type": "integer" }, "logLevelDatabaseErrors": { "type": "integer" }, "logLevelDatabaseOptimize": { "type": "integer" }, "logLevelDatabaseSlowquery": { "type": "integer" }, "logLevelDatabaseSqlErrors": { "type": "integer" }, "logMailerLevel": { "type": "integer" }, "logOrchestrator": { "type": "boolean" }, "logOrchestratorLevel": { "type": "integer" }, "logPlugin": { "type": "boolean" }, "logPluginLevel": { "type": "integer" }, "logProxy": { "type": "boolean" }, "logProxyLevel": { "type": "integer" }, "logResticLevel": { "type": "integer" }, "logRotateMaxAge": { "type": "integer" }, "logRotateMaxBackup": { "type": "integer" }, "logRotateMaxSize": { "type": "integer" }, "logSqlInMonitoring": { "type": "boolean" }, "logSqlLevel": { "type": "integer" }, "logSst": { "description": "internal replication-manager sst", "type": "boolean" }, "logSstLevel": { "description": "internal replication-manager sst", "type": "integer" }, "logStatsLevel": { "type": "integer" }, "logSupport": { "type": "boolean" }, "logSupportLevel": { "type": "integer" }, "logSyslog": { "type": "boolean" }, "logTask": { "type": "boolean" }, "logTaskLevel": { "type": "integer" }, "logTopology": { "type": "boolean" }, "logTopologyLevel": { "type": "integer" }, "logVault": { "type": "boolean" }, "logVaultLevel": { "type": "integer" }, "logWriterElection": { "type": "boolean" }, "logWriterElectionLevel": { "type": "integer" }, "mailFrom": { "type": "string" }, "mailMaxPool": { "type": "integer" }, "mailSmtpAddr": { "type": "string" }, "mailSmtpPassword": { "type": "string" }, "mailSmtpTlsSkipVerify": { "type": "boolean" }, "mailSmtpUser": { "type": "string" }, "mailTimeout": { "type": "integer" }, "mailTo": { "type": "string" }, "maxscale": { "type": "boolean" }, "maxscaleBinlog": { "type": "boolean" }, "maxscaleBinlogPort": { "type": "integer" }, "maxscaleDebug": { "type": "boolean" }, "maxscaleDisableMonitor": { "type": "boolean" }, "maxscaleGetInfoMethod": { "type": "string" }, "maxscaleJanitorWeights": { "type": "string" }, "maxscaleLogLevel": { "type": "integer" }, "maxscaleMaxinfoPort": { "type": "integer" }, "maxscalePass": { "type": "string" }, "maxscalePort": { "type": "string" }, "maxscaleReadPort": { "type": "integer" }, "maxscaleReadWritePort": { "type": "integer" }, "maxscaleServerMatchPort": { "type": "boolean" }, "maxscaleServers": { "type": "string" }, "maxscaleServers-ipv6": { "type": "string" }, "maxscaleUser": { "type": "string" }, "maxscaleWritePort": { "type": "integer" }, "maxscalemBinaryPath": { "type": "string" }, "measurement": { "type": "boolean" }, "measurementAutoClampLimit": { "type": "boolean" }, "monitoringAddress": { "type": "string" }, "monitoringAlertTrigger": { "type": "string" }, "monitoringAuditLogLength": { "type": "integer" }, "monitoringBasedir": { "type": "string" }, "monitoringBinlogEventLogLength": { "type": "integer" }, "monitoringBinlogEvents": { "type": "boolean" }, "monitoringCapture": { "type": "boolean" }, "monitoringCaptureFileKeep": { "type": "integer" }, "monitoringCaptureTrigger": { "type": "string" }, "monitoringCheckGrants": { "type": "boolean" }, "monitoringChecksumIngoreTables": { "type": "string" }, "monitoringChecksumScheduler": { "type": "boolean" }, "monitoringChecksumSchedulerCron": { "type": "string" }, "monitoringCloseStateScript": { "type": "string" }, "monitoringConfdir": { "type": "string" }, "monitoringConfdirBackup": { "type": "string" }, "monitoringConfdirExtra": { "type": "string" }, "monitoringDatadir": { "type": "string" }, "monitoringDiskUsage": { "type": "boolean" }, "monitoringDiskUsagePct": { "type": "integer" }, "monitoringErrorLogLength": { "type": "integer" }, "monitoringGlobalHeartbeatStallThreshold": { "type": "integer" }, "monitoringGlobalHeartbeatSupervision": { "type": "boolean" }, "monitoringIgnoreErrors": { "type": "string" }, "monitoringInnoDBStatus": { "type": "boolean" }, "monitoringKeyPath": { "type": "string" }, "monitoringKeyPathGitOverwrite": { "type": "boolean" }, "monitoringLogApiLogin": { "type": "boolean" }, "monitoringLogApiLoginSilentUsers": { "type": "string" }, "monitoringLongQueryLogLength": { "type": "integer" }, "monitoringLongQueryScript": { "type": "string" }, "monitoringLongQueryTime": { "type": "integer" }, "monitoringLongQueryWithProcess": { "type": "boolean" }, "monitoringLongQueryWithTable": { "type": "boolean" }, "monitoringMergeConfigOnStart": { "type": "boolean" }, "monitoringOpenStateScript": { "type": "string" }, "monitoringPause": { "type": "boolean" }, "monitoringPerformanceSchema": { "type": "boolean" }, "monitoringPerformanceSchemaInstruments": { "type": "boolean" }, "monitoringPerformanceSchemaLatch": { "type": "boolean" }, "monitoringPerformanceSchemaMemory": { "type": "boolean" }, "monitoringPerformanceSchemaMutex": { "type": "boolean" }, "monitoringPerformanceSchemaQueries": { "type": "boolean" }, "monitoringPerformanceSchemaQueriesExplain": { "type": "boolean" }, "monitoringPerformanceSchemaQueriesExplainDelay": { "type": "integer" }, "monitoringPerformanceSchemaQueriesExplainPurgePeriod": { "type": "integer" }, "monitoringPerformanceSchemaQueriesPeriod": { "type": "integer" }, "monitoringPlugins": { "type": "boolean" }, "monitoringProcesslist": { "type": "boolean" }, "monitoringProcesslistInactive": { "type": "boolean" }, "monitoringProcesslistInformationSchema": { "type": "boolean" }, "monitoringProcesslistLimit": { "type": "string" }, "monitoringProcesslistQueryLength": { "type": "integer" }, "monitoringProcesslistTransactions": { "type": "boolean" }, "monitoringQueries": { "type": "boolean" }, "monitoringQueryRules": { "type": "boolean" }, "monitoringQueryTimeout": { "type": "integer" }, "monitoringRestoreConfigOnStart": { "type": "boolean" }, "monitoringSSLCert": { "type": "string" }, "monitoringSSLKey": { "type": "string" }, "monitoringSaveConfig": { "type": "boolean" }, "monitoringScheduler": { "type": "boolean" }, "monitoringSchemaChange": { "type": "boolean" }, "monitoringSchemaChangeScript": { "type": "string" }, "monitoringSchemaColumns": { "type": "boolean" }, "monitoringSchemaIgnoreTables": { "type": "string" }, "monitoringSchemaIndexes": { "type": "boolean" }, "monitoringSchemaOnReplicas": { "type": "boolean" }, "monitoringSchemaScanTimeout": { "type": "integer" }, "monitoringSchemaScheduler": { "type": "boolean" }, "monitoringSchemaSchedulerCron": { "type": "string" }, "monitoringSecretVersioning": { "type": "boolean" }, "monitoringSecretVersioningAutoPrune": { "type": "boolean" }, "monitoringSecretVersioningKeepLast": { "type": "integer" }, "monitoringSharedir": { "type": "string" }, "monitoringSocket": { "type": "string" }, "monitoringSqlErrorLogLength": { "type": "integer" }, "monitoringTenant": { "type": "string" }, "monitoringTicker": { "type": "integer" }, "monitoringTunnelCredential": { "type": "string" }, "monitoringTunnelHost": { "type": "string" }, "monitoringTunnelKeyPath": { "type": "string" }, "monitoringVariableChange": { "type": "boolean" }, "monitoringVariableChangeIgnore": { "type": "string" }, "monitoringVariableChangeScript": { "type": "string" }, "monitoringVariableDiff": { "type": "boolean" }, "monitoringWaitRetry": { "type": "integer" }, "monitoringWriteHeartbeat": { "type": "boolean" }, "monitoringWriteHeartbeatCredential": { "type": "string" }, "myproxy": { "type": "boolean" }, "myproxyDebug": { "type": "boolean" }, "myproxyLogLevel": { "type": "integer" }, "myproxyPassword": { "type": "string" }, "myproxyPort": { "type": "integer" }, "myproxyUser": { "type": "string" }, "mysqlrouter": { "type": "boolean" }, "mysqlrouterDebug": { "type": "boolean" }, "mysqlrouterJanitorWeights": { "type": "string" }, "mysqlrouterLogLevel": { "type": "integer" }, "mysqlrouterPass": { "type": "string" }, "mysqlrouterPort": { "type": "string" }, "mysqlrouterReadPort": { "type": "integer" }, "mysqlrouterReadWritePort": { "type": "integer" }, "mysqlrouterServers": { "type": "string" }, "mysqlrouterUser": { "type": "string" }, "mysqlrouterWritePort": { "type": "integer" }, "onpremiseSsh": { "type": "boolean" }, "onpremiseSshCredential": { "type": "string" }, "onpremiseSshDbJobScript": { "type": "string" }, "onpremiseSshPort": { "type": "integer" }, "onpremiseSshPrivateKey": { "type": "string" }, "onpremiseSshStartDbScript": { "type": "string" }, "onpremiseSshStartProxyScript": { "type": "string" }, "onpremiseSshStopProxyScript": { "type": "string" }, "onpremiseSshUpgradeDbScript": { "type": "string" }, "opensvcAdminUser": { "type": "string" }, "opensvcCodeapp": { "type": "string" }, "opensvcCollectorAccount": { "type": "string" }, "opensvcHost": { "type": "string" }, "opensvcImageForcePull": { "type": "boolean" }, "opensvcP12Certificate": { "type": "string" }, "opensvcP12Secret": { "type": "string" }, "opensvcRegister": { "type": "boolean" }, "opensvcUseCollectorApi": { "type": "boolean" }, "opensvcUseOrchestratedStart": { "type": "boolean" }, "opensvcUser": { "type": "string" }, "opensvcV3ProvisionDelay": { "type": "integer" }, "optimizeUseSql": { "type": "boolean" }, "pluginConfig": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } } }, "pluginSigningPublicKey": { "type": "string" }, "printDelayStat": { "type": "boolean" }, "printDelayStatHistory": { "type": "boolean" }, "printDelayStatInterval": { "type": "integer" }, "provAppAgents": { "type": "string" }, "provAppCpuCores": { "type": "string" }, "provAppDiskSize": { "type": "string" }, "provAppHaTopology": { "type": "string" }, "provAppMemory": { "type": "string" }, "provAppSizingMode": { "type": "string" }, "provAppTemplateRepo": { "type": "string" }, "provAppTemplateRepoAllowOverride": { "type": "boolean" }, "provAppTemplateRepoBranch": { "type": "string" }, "provAppTemplateRepoPassword": { "type": "string" }, "provAppTemplateRepoTimeout": { "type": "integer" }, "provAppTemplateRepoUser": { "type": "string" }, "provAutoUpdateCompliance": { "type": "boolean" }, "provDBApplyDynamicConfig": { "type": "boolean" }, "provDBCompliance": { "type": "string" }, "provDBForceWriteConfig": { "type": "boolean" }, "provDbAgents": { "type": "string" }, "provDbBinaryBasedir": { "type": "string" }, "provDbBinaryInTarball": { "type": "boolean" }, "provDbBinaryLogName": { "type": "string" }, "provDbBinaryTarballName": { "type": "string" }, "provDbBootstrapScript": { "type": "string" }, "provDbCleanupScript": { "type": "string" }, "provDbClientBasedir": { "type": "string" }, "provDbConfig": { "type": "boolean" }, "provDbConfigPreserve": { "type": "boolean" }, "provDbConfigPreserveVars": { "type": "string" }, "provDbCpuCores": { "type": "string" }, "provDbDatadirVersion": { "type": "string" }, "provDbDiskDevice": { "type": "string" }, "provDbDiskDockerSize": { "type": "string" }, "provDbDiskFs": { "type": "string" }, "provDbDiskFsCompress": { "type": "string" }, "provDbDiskIops": { "type": "string" }, "provDbDiskIopsLatency": { "type": "string" }, "provDbDiskPool": { "type": "string" }, "provDbDiskSize": { "type": "string" }, "provDbDiskSnapshotKeep": { "type": "integer" }, "provDbDiskSnapshotPreferedMaster": { "type": "boolean" }, "provDbDiskSystemSize": { "type": "string" }, "provDbDiskTempSize": { "type": "string" }, "provDbDiskType": { "type": "string" }, "provDbDockerImg": { "type": "string" }, "provDbDockerRunArgs": { "type": "string" }, "provDbDockerRunArgsLimit": { "type": "boolean" }, "provDbDockerTmpfsSize": { "type": "string" }, "provDbDomain": { "type": "string" }, "provDbExpireLogDays": { "type": "integer" }, "provDbJobsDockerRunArgs": { "type": "string" }, "provDbLoadCsv": { "type": "string" }, "provDbLoadSql": { "type": "string" }, "provDbMaxConnections": { "type": "integer" }, "provDbMemory": { "type": "string" }, "provDbMemorySharedPct": { "type": "string" }, "provDbMemoryThreadedPct": { "type": "string" }, "provDbNetGateway": { "type": "string" }, "provDbNetIface": { "type": "string" }, "provDbNetMask": { "type": "string" }, "provDbServiceType": { "type": "string" }, "provDbStartFetchConfig": { "type": "boolean" }, "provDbStartScript": { "type": "string" }, "provDbStopScript": { "type": "string" }, "provDbTags": { "type": "string" }, "provDbVolumeData": { "type": "string" }, "provDbVolumeDocker": { "type": "string" }, "provDockerDaemonPrivate": { "type": "boolean" }, "provDockerRegistryCredentials": { "type": "string" }, "provEventTimeout": { "type": "integer" }, "provNetCni": { "type": "boolean" }, "provNetCniCluster": { "type": "string" }, "provNetDockerRunArgs": { "type": "string" }, "provObjectAllowOverwrite": { "type": "boolean" }, "provOrchestrator": { "type": "string" }, "provOrchestratorCluster": { "type": "string" }, "provOrchestratorEnable": { "type": "string" }, "provProxyAgents": { "type": "string" }, "provProxyAgentsFailover": { "type": "string" }, "provProxyBootstrapScript": { "type": "string" }, "provProxyCleanupScript": { "type": "string" }, "provProxyCompliance": { "type": "string" }, "provProxyCpuCores": { "type": "string" }, "provProxyDiskDevice": { "type": "string" }, "provProxyDiskFs": { "type": "string" }, "provProxyDiskPool": { "type": "string" }, "provProxyDiskSize": { "type": "string" }, "provProxyDiskType": { "type": "string" }, "provProxyDockerHaproxyImg": { "type": "string" }, "provProxyDockerMaxscaleImg": { "type": "string" }, "provProxyDockerMysqlrouterImg": { "type": "string" }, "provProxyDockerProxysqlImg": { "type": "string" }, "provProxyDockerRunArgs": { "type": "string" }, "provProxyDockerShardproxyImg": { "type": "string" }, "provProxyMemory": { "type": "string" }, "provProxyNetGateway": { "type": "string" }, "provProxyNetIface": { "type": "string" }, "provProxyNetMask": { "type": "string" }, "provProxyRouteAddr": { "type": "string" }, "provProxyRouteMask": { "type": "string" }, "provProxyRoutePolicy": { "type": "string" }, "provProxyRoutePort": { "type": "string" }, "provProxyServiceType": { "type": "string" }, "provProxyStartFetchConfig": { "type": "boolean" }, "provProxyStartScript": { "type": "string" }, "provProxyStopScript": { "type": "string" }, "provProxyTags": { "type": "string" }, "provProxyVolumeData": { "type": "string" }, "provSerialized": { "type": "boolean" }, "provServicePlan": { "type": "string" }, "provServicePlanRegistry": { "type": "string" }, "provSphinxAgents": { "type": "string" }, "provSphinxCpuCores": { "type": "string" }, "provSphinxDiskDevice": { "type": "string" }, "provSphinxDiskFs": { "type": "string" }, "provSphinxDiskPool": { "type": "string" }, "provSphinxDiskSize": { "type": "string" }, "provSphinxDiskType": { "type": "string" }, "provSphinxDockerImg": { "type": "string" }, "provSphinxMaxChildrens": { "type": "string" }, "provSphinxMemory": { "type": "string" }, "provSphinxReindexSchedule": { "type": "string" }, "provSphinxServiceType": { "type": "string" }, "provSphinxTags": { "type": "string" }, "provTlsServerCa": { "type": "string" }, "provTlsServerCert": { "type": "string" }, "provTlsServerKey": { "type": "string" }, "provUseIpv6": { "type": "boolean" }, "proxyServersBackendCompression": { "type": "boolean" }, "proxyServersBackendMaxConnections": { "type": "integer" }, "proxyServersBackendMaxReplicationLag": { "type": "integer" }, "proxyServersChangeStateScript": { "type": "string" }, "proxyServersReadOnMaster": { "type": "boolean" }, "proxyServersReadOnMasterNoSlave": { "type": "boolean" }, "proxyjanitorAdminPort": { "type": "string" }, "proxyjanitorBinaryPath": { "type": "string" }, "proxyjanitorDebug": { "type": "boolean" }, "proxyjanitorLogLevel": { "type": "integer" }, "proxyjanitorPassword": { "type": "string" }, "proxyjanitorPort": { "type": "string" }, "proxyjanitorServers": { "type": "string" }, "proxyjanitorServers-ipv6": { "type": "string" }, "proxyjanitorUser": { "type": "string" }, "proxysql": { "type": "boolean" }, "proxysqlAdminPort": { "type": "string" }, "proxysqlBinaryPath": { "type": "string" }, "proxysqlBootstrap": { "type": "boolean" }, "proxysqlBootstrapHostgroups": { "type": "boolean" }, "proxysqlBootstrapQueryRules": { "type": "boolean" }, "proxysqlBootstrapUsers": { "type": "boolean" }, "proxysqlBootstrapVariables": { "type": "boolean" }, "proxysqlDebug": { "type": "boolean" }, "proxysqlJanitorWeights": { "type": "string" }, "proxysqlLogLevel": { "type": "integer" }, "proxysqlMultiplexing": { "type": "boolean" }, "proxysqlPassword": { "type": "string" }, "proxysqlPort": { "type": "string" }, "proxysqlReadTrackState": { "type": "string" }, "proxysqlReaderHostgroup": { "type": "string" }, "proxysqlSaveToDisk": { "type": "boolean" }, "proxysqlServers": { "type": "string" }, "proxysqlServersIpv6": { "type": "string" }, "proxysqlUser": { "type": "string" }, "proxysqlWriteTrackState": { "type": "string" }, "proxysqlWriterHostgroup": { "type": "string" }, "registryConsul": { "type": "boolean" }, "registryConsulCredential": { "type": "string" }, "registryConsulDebug": { "type": "boolean" }, "registryConsulLogLevel": { "type": "integer" }, "registryConsulToken": { "type": "string" }, "registryJanitorWeights": { "type": "string" }, "registryServers": { "type": "string" }, "replicationActivePassive": { "type": "boolean" }, "replicationCredential": { "type": "string" }, "replicationDelayedHosts": { "type": "string" }, "replicationDelayedTime": { "type": "integer" }, "replicationDynamicTopology": { "type": "boolean" }, "replicationErrorScript": { "type": "string" }, "replicationManagerCliPath": { "type": "string" }, "replicationMasterConnectRetry": { "type": "integer" }, "replicationMasterRetryCount": { "type": "integer" }, "replicationMasterSlaveNeverRelay": { "type": "boolean" }, "replicationMasterSlavePgLogical": { "type": "boolean" }, "replicationMasterSlavePgStream": { "type": "boolean" }, "replicationMultiMaster": { "type": "boolean" }, "replicationMultiMasterConcurrentWrite": { "type": "boolean" }, "replicationMultiMasterGrouprep": { "type": "boolean" }, "replicationMultiMasterGrouprepPort": { "type": "integer" }, "replicationMultiMasterRing": { "type": "boolean" }, "replicationMultiMasterRingUnsafe": { "type": "boolean" }, "replicationMultiMasterWsrep": { "type": "boolean" }, "replicationMultiMasterWsrepPort": { "type": "integer" }, "replicationMultiMasterWsrepSSTMethod": { "type": "string" }, "replicationMultiTierSlave": { "type": "boolean" }, "replicationMultisourceHeadClusters": { "type": "string" }, "replicationSourceName": { "type": "string" }, "replicationUseSsl": { "type": "boolean" }, "schedulerAlertDisable": { "type": "boolean" }, "schedulerAlertDisableCron": { "type": "string" }, "schedulerAlertDisableTime": { "type": "integer" }, "schedulerDatabaseLogsTableKeep": { "type": "integer" }, "schedulerDbServersAnalyze": { "type": "boolean" }, "schedulerDbServersAnalyzeCron": { "type": "string" }, "schedulerDbServersLogicalBackup": { "type": "boolean" }, "schedulerDbServersLogicalBackupCron": { "type": "string" }, "schedulerDbServersLogs": { "type": "boolean" }, "schedulerDbServersLogsCron": { "type": "string" }, "schedulerDbServersLogsTableRotate": { "type": "boolean" }, "schedulerDbServersLogsTableRotateCron": { "type": "string" }, "schedulerDbServersOptimize": { "type": "boolean" }, "schedulerDbServersOptimizeCron": { "type": "string" }, "schedulerDbServersPhysicalBackup": { "type": "boolean" }, "schedulerDbServersPhysicalBackupCron": { "type": "string" }, "schedulerDbServersReceiverPorts": { "type": "string" }, "schedulerDbServersReceiverUseSSL": { "type": "boolean" }, "schedulerDbServersSenderPorts": { "type": "string" }, "schedulerJobsExecRemote": { "type": "string" }, "schedulerJobsMode": { "type": "string" }, "schedulerJobsSsh": { "type": "boolean" }, "schedulerJobsSshCron": { "type": "string" }, "schedulerRollingReprov": { "type": "boolean" }, "schedulerRollingReprovCron": { "type": "string" }, "schedulerRollingRestart": { "type": "boolean" }, "schedulerRollingRestartCron": { "type": "string" }, "schedulerSlaRotateCron": { "type": "string" }, "shardproxy": { "type": "boolean" }, "shardproxyCopyGrants": { "type": "boolean" }, "shardproxyCredential": { "type": "string" }, "shardproxyDebug": { "type": "boolean" }, "shardproxyIgnoreTables": { "type": "string" }, "shardproxyJanitorWeights": { "type": "string" }, "shardproxyLoadSystem": { "type": "boolean" }, "shardproxyLogLevel": { "type": "integer" }, "shardproxyServers": { "type": "string" }, "shardproxyServers-ipv6": { "type": "string" }, "shardproxyUniversalTables": { "type": "string" }, "slaposAppPartitions": { "type": "string" }, "slaposConfig": { "type": "string" }, "slaposDbPartitions": { "type": "string" }, "slaposHaproxyPartitions": { "type": "string" }, "slaposMaxscalePartitions": { "type": "string" }, "slaposProxysqlPartitions": { "type": "string" }, "slaposShardproxyPartitions": { "type": "string" }, "slaposSphinxPartitions": { "type": "string" }, "sphinx": { "type": "boolean" }, "sphinxConfig": { "type": "string" }, "sphinxDebug": { "type": "boolean" }, "sphinxJanitorWeights": { "type": "string" }, "sphinxLogLevel": { "type": "integer" }, "sphinxPort": { "type": "string" }, "sphinxServers": { "type": "string" }, "sphinxServers-ipv6": { "type": "string" }, "sphinxSqlPort": { "type": "string" }, "sstSendBuffer": { "type": "integer" }, "sstWaitMaxLoop": { "type": "integer" }, "sstWaitRetryDelay": { "type": "integer" }, "stagingProxyHosts": { "type": "string" }, "stagingServerHost": { "type": "string" }, "switchoverAtEqualGtid": { "type": "boolean" }, "switchoverAtSync": { "type": "boolean" }, "switchoverDecreaseMaxConn": { "type": "boolean" }, "switchoverDecreaseMaxConnValue": { "type": "integer" }, "switchoverLockUserOnFreeze": { "type": "boolean" }, "switchoverLowerRelease": { "type": "boolean" }, "switchoverMaxSlaveDelay": { "type": "integer" }, "switchoverRedirectOnFreeze": { "type": "boolean" }, "switchoverSlaveWaitCatch": { "type": "boolean" }, "switchoverWaitKill": { "type": "integer" }, "switchoverWaitRouteChange": { "type": "integer" }, "switchoverWaitTrx": { "type": "integer" }, "switchoverWaitWriteQuery": { "type": "integer" }, "sysbenchBinaryPath": { "type": "string" }, "sysbenchBinaryTest": { "type": "string" }, "sysbenchForcePk": { "type": "boolean" }, "sysbenchScale": { "type": "integer" }, "sysbenchTables": { "type": "integer" }, "sysbenchThreads": { "type": "integer" }, "sysbenchTime": { "type": "integer" }, "sysbenchV1": { "description": "deprecated, version is now detected by binary", "type": "boolean" }, "templateStrict": { "type": "boolean" }, "templateVarMaxDepth": { "type": "integer" }, "terminalSessionEnabled": { "type": "boolean" }, "terminalSessionManager": { "type": "string" }, "terminalSessionResume": { "type": "boolean" }, "test": { "type": "boolean" }, "testInjectTraffic": { "type": "boolean" }, "testInjectTrafficStaging": { "type": "boolean" }, "topologyStaging": { "type": "boolean" }, "topologyStagingPostDetachScript": { "type": "string" }, "topologyStagingRefreshScript": { "type": "string" }, "topologyTarget": { "type": "string" }, "ttyShareBinaryPath": { "type": "string" }, "vaultAuth": { "type": "string" }, "vaultMode": { "type": "string" }, "vaultMount": { "type": "string" }, "vaultRoleId": { "type": "string" }, "vaultSecretId": { "type": "string" }, "vaultServerAddr": { "type": "string" }, "vaultToken": { "type": "string" }, "verbose": { "type": "boolean" }, "version": { "type": "string" }, "withEmbed": { "type": "string" }, "withTarball": { "type": "string" } } }, "config.Deployment": { "type": "object", "properties": { "paths": { "type": "array", "items": { "$ref": "#/definitions/config.PathMapping" } }, "primaryRoute": { "$ref": "#/definitions/config.Route" }, "routes": { "type": "array", "items": { "$ref": "#/definitions/config.Route" } }, "storages": { "$ref": "#/definitions/config.StorageMapping" }, "variables": { "type": "array", "items": { "$ref": "#/definitions/config.VariableMapping" } } } }, "config.GitClone": { "type": "object", "properties": { "branch": { "type": "string" }, "name": { "type": "string" }, "pass": { "type": "string" }, "repo": { "type": "string" }, "timeout": { "type": "integer" }, "user": { "type": "string" }, "volumedir": { "type": "string" }, "volumename": { "type": "string" } } }, "config.PathMapping": { "type": "object", "properties": { "dockerpath": { "type": "string" }, "level": { "type": "integer" }, "name": { "type": "string" }, "parentname": { "type": "string" }, "srcname": { "type": "string" }, "srcpath": { "type": "string" }, "srctype": { "$ref": "#/definitions/config.SourceType" }, "volumename": { "type": "string" } } }, "config.Route": { "type": "object", "properties": { "cname": { "description": "Existing host-route fields kept for backward compatibility.", "type": "string" }, "destPort": { "type": "string" }, "mode": { "description": "Explicit source/destination fields.", "type": "string" }, "monitor": { "description": "Optional per-route monitoring customization. Nil means no monitor block\nwas configured; legacy routes keep nil so no defaults are injected.", "allOf": [ { "$ref": "#/definitions/config.RouteMonitor" } ] }, "name": { "type": "string" }, "port": { "type": "string" }, "primary": { "type": "boolean" }, "protocol": { "type": "string" }, "sourcePort": { "type": "string" } } }, "config.RouteMonitor": { "type": "object", "properties": { "authSecretVar": { "type": "string" }, "authType": { "type": "string" }, "authUser": { "type": "string" }, "expectStatus": { "type": "string" }, "path": { "type": "string" } } }, "config.RouteStatus": { "type": "object", "properties": { "cname": { "description": "Existing host-route fields kept for backward compatibility.", "type": "string" }, "destPort": { "type": "string" }, "mode": { "description": "Explicit source/destination fields.", "type": "string" }, "monitor": { "description": "Optional per-route monitoring customization. Nil means no monitor block\nwas configured; legacy routes keep nil so no defaults are injected.", "allOf": [ { "$ref": "#/definitions/config.RouteMonitor" } ] }, "name": { "type": "string" }, "port": { "type": "string" }, "primary": { "type": "boolean" }, "protocol": { "type": "string" }, "sourcePort": { "type": "string" }, "status": { "type": "string" } } }, "config.S3Mount": { "type": "object", "properties": { "accesskey": { "type": "string" }, "bucket": { "type": "string" }, "endpoint": { "type": "string" }, "mountdir": { "type": "string" }, "name": { "type": "string" }, "providerName": { "type": "string" }, "region": { "type": "string" }, "secretkey": { "type": "string" }, "volumedir": { "type": "string" }, "volumename": { "type": "string" } } }, "config.ServerTaskList": { "type": "object", "properties": { "serverUrl": { "type": "string" }, "tasks": { "type": "array", "items": { "$ref": "#/definitions/config.Task" } } } }, "config.SourceType": { "type": "string", "enum": [ "volume", "git", "s3" ], "x-enum-varnames": [ "SourceVolume", "SourceGit", "SourceS3" ] }, "config.StorageMapping": { "type": "object", "properties": { "gitClones": { "type": "array", "items": { "$ref": "#/definitions/config.GitClone" } }, "s3Mounts": { "type": "array", "items": { "$ref": "#/definitions/config.S3Mount" } }, "volumes": { "type": "array", "items": { "$ref": "#/definitions/config.Volume" } } } }, "config.Task": { "type": "object", "properties": { "done": { "type": "integer" }, "end": { "type": "integer" }, "id": { "type": "integer" }, "payload": { "type": "string" }, "port": { "type": "integer" }, "result": { "type": "string" }, "server": { "type": "string" }, "start": { "type": "integer" }, "state": { "type": "integer" }, "task": { "type": "string" } } }, "config.VariableMapping": { "type": "object", "properties": { "conditional": { "description": "This is used to set the variable value only if the agent matches", "type": "array", "items": { "$ref": "#/definitions/config.AgentVariable" } }, "locked": { "type": "boolean" }, "name": { "type": "string" }, "type": { "type": "string" }, "value": { "type": "string" } } }, "config.Volume": { "type": "object", "properties": { "name": { "type": "string" }, "poolname": { "type": "string" }, "size": { "type": "string" }, "volumedir": { "type": "string" } } }, "mailer.Email": { "type": "object", "properties": { "attachments": { "type": "array", "items": { "type": "string" } }, "is_html": { "type": "boolean" }, "message": { "type": "string" }, "subject": { "type": "string" }, "to": { "type": "string" } } }, "meethelper.MeetAlert": { "type": "object", "properties": { "color": { "type": "string" }, "fields": { "type": "array", "items": { "$ref": "#/definitions/meethelper.MeetAlertField" } }, "id": { "type": "string" }, "text": { "type": "string" }, "userName": { "type": "string" } } }, "meethelper.MeetAlertField": { "type": "object", "properties": { "title": { "type": "string" }, "value": { "type": "string" } } }, "meethelper.MeetChannelMessages": { "type": "object", "properties": { "channelId": { "type": "string" }, "channelType": { "description": "O:Open, P:Private, D:Direct", "type": "string" }, "messages": { "type": "array", "items": { "$ref": "#/definitions/meethelper.MeetMessage" } }, "unReadMessages": { "type": "integer" } } }, "meethelper.MeetFile": { "type": "object", "properties": { "channelID": { "type": "string" }, "createAt": { "type": "integer", "format": "int64" }, "extension": { "type": "string" }, "id": { "type": "string" }, "mimeType": { "type": "string" }, "name": { "type": "string" }, "size": { "type": "integer" }, "userId": { "type": "string" } } }, "meethelper.MeetMessage": { "type": "object", "properties": { "alertMetadata": { "type": "array", "items": { "$ref": "#/definitions/meethelper.MeetAlert" } }, "channelID": { "type": "string" }, "createAt": { "type": "integer", "format": "int64" }, "fileIds": { "type": "array", "items": { "type": "string" } }, "fileMetadata": { "type": "array", "items": { "$ref": "#/definitions/meethelper.MeetFile" } }, "id": { "type": "string" }, "meetingMetadata": { "type": "array", "items": { "$ref": "#/definitions/meethelper.MeetingData" } }, "message": { "type": "string" }, "overriveUserName": { "type": "string" }, "userId": { "type": "string" } } }, "meethelper.MeetingData": { "type": "object", "properties": { "id": { "type": "string" }, "meetLink": { "type": "string" }, "meetName": { "type": "string" }, "text": { "type": "string" } } }, "opensvc.DaemonNodeStats": { "type": "object", "properties": { "cores": { "type": "integer" }, "min_avail_mem": { "type": "integer" }, "min_avail_swap": { "type": "integer" }, "node": { "type": "string" }, "stats": { "$ref": "#/definitions/opensvc.NodeStats" } } }, "opensvc.NodeStats": { "type": "object", "properties": { "load_15m": { "type": "number" }, "mem_avail": { "type": "integer" }, "mem_total": { "type": "integer" }, "score": { "type": "integer" }, "swap_avail": { "type": "integer" }, "swap_total": { "type": "integer" } } }, "peer.PeerCluster": { "type": "object", "properties": { "api-credentials-acl-allow": { "type": "string" }, "api-credentials-acl-allow-external": { "type": "string" }, "api-public-url": { "type": "string" }, "cloud18-cost-currency": { "type": "string" }, "cloud18-database-read-srv-record": { "type": "string" }, "cloud18-database-read-write-split-srv-record": { "type": "string" }, "cloud18-database-read-write-srv-record": { "type": "string" }, "cloud18-domain": { "type": "string" }, "cloud18-external-dbops": { "type": "string" }, "cloud18-external-sysops": { "type": "string" }, "cloud18-infra-certifications": { "type": "string" }, "cloud18-infra-cpu-freq": { "type": "string" }, "cloud18-infra-cpu-model": { "type": "string" }, "cloud18-infra-data-centers": { "type": "string" }, "cloud18-infra-geo-localizations": { "type": "string" }, "cloud18-infra-public-bandwidth": { "type": "string", "example": "0" }, "cloud18-monthly-dbops-cost": { "type": "string", "example": "0" }, "cloud18-monthly-infra-cost": { "type": "string", "example": "0" }, "cloud18-monthly-license-cost": { "type": "string", "example": "0" }, "cloud18-monthly-sysops-cost": { "type": "string", "example": "0" }, "cloud18-open-dbops": { "type": "string", "example": "false" }, "cloud18-open-sysops": { "type": "string", "example": "false" }, "cloud18-peer": { "type": "string", "example": "false" }, "cloud18-platform-description": { "type": "string" }, "cloud18-promotion-pct": { "type": "string", "example": "0" }, "cloud18-shared": { "type": "string", "example": "false" }, "cloud18-sla-provision-time": { "type": "string", "example": "0" }, "cloud18-sla-repair-time": { "type": "string", "example": "0" }, "cloud18-sla-response-time": { "type": "string", "example": "0" }, "cloud18-sub-domain": { "type": "string" }, "cloud18-sub-domain-zone": { "type": "string" }, "cloud18-subscribed-dbops": { "type": "string", "example": "false" }, "cluster-name": { "type": "string" }, "isDown": { "type": "boolean" }, "isFailable": { "type": "boolean" }, "isMasterDown": { "type": "boolean" }, "isProvisioned": { "type": "boolean" }, "lastUpdate": { "type": "string" }, "prov-db-cpu-cores": { "type": "string", "example": "0" }, "prov-db-disk-iops": { "type": "string", "example": "0" }, "prov-db-disk-size": { "type": "string", "example": "0" }, "prov-db-memory": { "type": "string", "example": "0" }, "prov-orchestrator": { "type": "string" }, "prov-service-plan": { "type": "string" }, "repmgrVersion": { "type": "string" } } }, "peer.PeerHealth": { "type": "object", "properties": { "isDown": { "type": "boolean" }, "isFailable": { "type": "boolean" }, "isMasterDown": { "type": "boolean" }, "isProvisioned": { "type": "boolean" }, "lastUpdate": { "type": "string" } } }, "peer.PeerNodeStatus": { "type": "object", "properties": { "error": { "type": "string" }, "lastUpdate": { "type": "string" } } }, "s18log.HttpMessage": { "type": "object", "properties": { "group": { "type": "string" }, "level": { "type": "string" }, "module": { "type": "integer" }, "text": { "type": "string" }, "timestamp": { "type": "string" } } }, "server.ApiResponse": { "type": "object", "properties": { "data": { "type": "string" }, "success": { "type": "boolean" } } }, "server.AuthTokenWithUpgrade": { "type": "object", "properties": { "token": { "type": "string" }, "upgrade_id": { "type": "string" } } }, "server.CloudUserForm": { "type": "object", "properties": { "cost": { "type": "number" }, "grants": { "type": "string" }, "password": { "type": "string" }, "reason": { "type": "string" }, "roles": { "type": "string" }, "username": { "type": "string" } } }, "server.CredentialMailForm": { "type": "object", "properties": { "type": { "type": "string" }, "username": { "type": "string" } } }, "server.DecodedData": { "type": "object", "properties": { "data": { "type": "string" } } }, "server.DockerRegistryLoginForm": { "type": "object", "properties": { "authType": { "description": "\"password\" or \"token\"", "type": "string" }, "password": { "type": "string" }, "private": { "description": "true if private registry, false if public", "type": "boolean" }, "template": { "description": "Optional template for the registry, e.g., \"docker.io\" or \"quay.io\"", "type": "string" }, "update": { "description": "true if updating existing credentials, false if new credentials", "type": "boolean" }, "url": { "type": "string" }, "username": { "type": "string" } } }, "server.DynamicClusterImportResult": { "type": "object", "properties": { "errors": { "type": "object", "additionalProperties": { "type": "string" } }, "imported": { "type": "array", "items": { "type": "string" } }, "invalid": { "type": "array", "items": { "type": "string" } }, "skipped_existing": { "type": "array", "items": { "type": "string" } } } }, "server.Heartbeat": { "type": "object", "properties": { "cluster": { "type": "string" }, "failed": { "type": "integer" }, "hosts": { "type": "integer" }, "id": { "type": "integer" }, "master": { "type": "string" }, "secret": { "type": "string" }, "startTime": { "type": "string" }, "status": { "type": "string" }, "uuid": { "type": "string" } } }, "server.MeetAlertMessage": { "type": "object", "properties": { "message": { "type": "string" } } }, "server.PoolOption": { "type": "object", "properties": { "name": { "type": "string" }, "shared": { "type": "boolean" }, "value": { "type": "string" } } }, "server.PreservedVarsCnfRequest": { "type": "object", "properties": { "content": { "type": "string" } } }, "server.ReloadPlanRequest": { "type": "object", "properties": { "download": { "type": "boolean" } } }, "server.ResticCurrentTaskResponse": { "type": "object", "properties": { "current_task": { "$ref": "#/definitions/backupmgr.ResticTaskState" }, "queue": { "type": "array", "items": { "$ref": "#/definitions/backupmgr.ResticTask" } } } }, "server.ResticMountStatusResponse": { "type": "object", "properties": { "active_users": { "type": "array", "items": { "type": "string" } }, "is_mounted": { "type": "boolean" }, "mount_path": { "type": "string" }, "ref_count": { "type": "integer" } } }, "server.ResticMountToggleRequest": { "type": "object", "properties": { "action": { "description": "\"mount\" or \"unmount\"", "type": "string" }, "options": { "description": "Mount options (only for \"mount\" action)", "allOf": [ { "$ref": "#/definitions/backupmgr.ResticMountOption" } ] } } }, "server.ResticReseedRequest": { "type": "object", "properties": { "cleanup": { "type": "boolean" }, "method": { "type": "string" }, "overwrite": { "type": "string" }, "snapshotId": { "type": "string" }, "strategy": { "type": "string" }, "tempDir": { "type": "string" }, "useTempDir": { "type": "boolean" } } }, "server.appTemplateContentResponse": { "type": "object", "properties": { "content": { "type": "string" }, "hasLocalCopy": { "type": "boolean" }, "name": { "type": "string" }, "origin": { "type": "string" }, "refreshed": { "type": "boolean" } } }, "server.appTemplateFieldChange": { "type": "object", "properties": { "field": { "type": "string" }, "new": { "type": "string" }, "old": { "type": "string" } } }, "server.appTemplateResetPreview": { "type": "object", "properties": { "changeCount": { "type": "integer" }, "changes": { "type": "array", "items": { "$ref": "#/definitions/server.appTemplateFieldChange" } }, "forceRefresh": { "type": "boolean" }, "templateName": { "type": "string" } } }, "server.appTemplateStructureGuideResponse": { "type": "object", "properties": { "content": { "type": "string" } } }, "server.appTemplateSummary": { "type": "object", "properties": { "editable": { "type": "boolean" }, "hasLocalCopy": { "type": "boolean" }, "name": { "type": "string" }, "origin": { "type": "string" }, "refreshable": { "type": "boolean" }, "scope": { "description": "\"cluster\" | \"global\"", "type": "string" } } }, "server.globalAlertsResponse": { "type": "object", "properties": { "errors": { "type": "array", "items": { "$ref": "#/definitions/state.StateHttp" } }, "infos": { "type": "array", "items": { "$ref": "#/definitions/state.StateHttp" } }, "warnings": { "type": "array", "items": { "$ref": "#/definitions/state.StateHttp" } } } }, "server.globalLogsResponse": { "type": "object", "properties": { "general": { "$ref": "#/definitions/server.globalLogsSnapshot" } } }, "server.globalLogsSnapshot": { "type": "object", "properties": { "buffer": { "type": "array", "items": { "$ref": "#/definitions/s18log.HttpMessage" } }, "len": { "type": "integer" }, "line": { "type": "integer" } } }, "server.globalMetricsHostInfo": { "type": "object", "properties": { "cpuCores": { "type": "integer" }, "cpuPercent": { "type": "number" }, "diskError": { "type": "string" }, "diskPath": { "type": "string" }, "diskTotalBytes": { "type": "integer" }, "diskUsedBytes": { "type": "integer" }, "diskUsedPercent": { "type": "number" }, "hostname": { "type": "string" }, "memoryTotalBytes": { "type": "integer" }, "memoryUsedBytes": { "type": "integer" }, "memoryUsedPercent": { "type": "number" } } }, "server.globalMetricsProcessInfo": { "type": "object", "properties": { "goroutines": { "type": "integer" }, "heapAllocBytes": { "type": "integer" }, "heapSysBytes": { "type": "integer" }, "pid": { "type": "integer" }, "rssBytes": { "type": "integer" }, "uptimeSeconds": { "type": "integer" } } }, "server.globalMetricsResponse": { "type": "object", "properties": { "host": { "$ref": "#/definitions/server.globalMetricsHostInfo" }, "process": { "$ref": "#/definitions/server.globalMetricsProcessInfo" } } }, "server.pfsJoinLink": { "type": "object", "properties": { "joinWeightPct": { "description": "0–100", "type": "number" }, "tableA": { "description": "\"schema.table\"", "type": "string" }, "tableB": { "description": "\"schema.table\"", "type": "string" } } }, "server.pfsSnapshotWeights": { "type": "object", "properties": { "links": { "description": "computed join weights for this period", "type": "array", "items": { "$ref": "#/definitions/server.pfsJoinLink" } }, "snapshotFile": { "description": "basename of the .jsonl file", "type": "string" }, "timestamp": { "description": "RFC3339 of the snapshot hour", "type": "string" } } }, "server.resticSnapshotResponse": { "type": "object", "properties": { "gid": { "type": "integer" }, "hostname": { "type": "string" }, "id": { "type": "string" }, "metadata": { "type": "array", "items": { "$ref": "#/definitions/cluster.SnapshotMetadataSummary" } }, "metadataError": { "type": "string" }, "metadataReady": { "type": "boolean" }, "metadataStatus": { "type": "string" }, "paths": { "type": "array", "items": { "type": "string" } }, "short_id": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "time": { "type": "string" }, "tree": { "type": "string" }, "uid": { "type": "integer" }, "username": { "type": "string" } } }, "server.resticSnapshotsResponse": { "type": "object", "properties": { "repo_path": { "type": "string" }, "snapshots": { "type": "array", "items": { "$ref": "#/definitions/server.resticSnapshotResponse" } }, "stats": { "$ref": "#/definitions/backupmgr.BackupStat" } } }, "server.userCredentials": { "type": "object", "properties": { "password": { "type": "string" }, "username": { "type": "string" } } }, "state.StateHttp": { "type": "object", "properties": { "desc": { "type": "string" }, "from": { "type": "string" }, "number": { "type": "string" } } }, "treehelper.FileEntry": { "type": "object", "properties": { "children": { "type": "array", "items": { "$ref": "#/definitions/treehelper.FileEntry" } }, "id": { "description": "Unique identifier for the file entry", "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "type": { "description": "\"file\" or \"symlink\" or \"directory\"", "type": "string" } } }, "treehelper.FileTreeCache": { "type": "object", "properties": { "isCached": { "type": "boolean" }, "lastUpdate": { "type": "string" }, "layers": { "type": "array", "items": { "type": "string" } }, "reference": { "type": "string" }, "tree": { "$ref": "#/definitions/treehelper.FileEntry" }, "truncated": { "description": "true when file count exceeded the limit", "type": "boolean" } } } } }