{ "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/cloud18/self-service": { "get": { "description": "Whether this instance accepts self-service cluster creation from Cloud18 users, the per-user limit, and how many clusters the caller already sponsors here.", "produces": [ "application/json" ], "tags": [ "Cloud18" ], "summary": "Self-service cluster status for the caller", "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.SelfServiceStatus" } } } } }, "/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/calibrate-iops": { "post": { "description": "Runs the embedded sysbench fileio (2G of files, 16 KiB random read/write, direct IO, 16 threads, 20 s) in the working directory at the lowest CPU priority, then removes the files. Answers the host IOPS and that figure times the agents and, with apply=true, writes the latter to resource-manager-infra-iops. Representative when every node has the same storage.", "produces": [ "application/json" ], "tags": [ "GlobalSetting" ], "summary": "Measure the random IOPS of the replication-manager host's storage with sysbench", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "boolean", "description": "write resource-manager-infra-iops (default false)", "name": "apply", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.IOPSCalibration" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "An IOPS calibration is already running", "schema": { "type": "string" } } } } }, "/api/clusters/settings/actions/calibrate-smt-gain": { "post": { "description": "Runs the embedded sysbench (cpu and random memory access, one thread per physical core then every thread, 15 s each) on the host replication-manager runs on, computes the gain and, unless apply=false, writes it to resource-manager-smt-gain. Representative when the infrastructure's nodes share the same hardware. A host without SMT is not an error: the answer says so and nothing is written.", "produces": [ "application/json" ], "tags": [ "GlobalSetting" ], "summary": "Measure the SMT (hyperthreading) gain of the replication-manager host with sysbench", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "boolean", "description": "write the measured gain (default true)", "name": "apply", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.SMTCalibration" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "A calibration is already running", "schema": { "type": "string" } }, "500": { "description": "Measure failed", "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/alter-engine": { "post": { "description": "Plans (confirm false) or runs (confirm true) ALTER TABLE ... ENGINE=engineTo on the master for every user table on engineFrom, optionally of one schema; binlog on, the replicas follow. Tables of any other engine (Aria, MEMORY, MyISAM...) are not touched; a table engineTo cannot hold (a foreign key, only InnoDB enforces them) is skipped with its reason. engineTo must be available on the master. Runs in the background, one table at a time, stopping at the first error: progress CINF0015, stop WARN0240. Needs db-optimize.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Switch the tables of one storage engine to another", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "engineFrom, engineTo, schema, confirm", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/server.EngineSwitchRequest" } } ], "responses": { "200": { "description": "The plan (confirm false)", "schema": { "$ref": "#/definitions/cluster.EngineSwitchPlan" } }, "202": { "description": "Switch started (confirm true)", "schema": { "$ref": "#/definitions/cluster.EngineSwitchPlan" } }, "400": { "description": "Refused: the reason (engine not available, a switch running, nothing to alter...)", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "No cluster", "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/create-child": { "post": { "description": "Plans (confirm false) or creates (confirm true) a child cluster of {clusterName}, named \u003cclusterName\u003e-child unless a name is given, to test a migration under this cluster's writes: same orchestrator, database image unless dbImage is given (a newer release to test), DBU per node, accounts and proxy type, dbCount databases (default 2), GTID domain this cluster's + 1, this cluster as head cluster; provisioned, then seeded from this cluster's logical backup, data only, its master replicating from this cluster's master through the parent's replication-source-name and its replicas following it through the child's own (child). Needs cluster-replication on this cluster and the right to create a cluster. The progress is the state CINF0014 on the new cluster, WARN0239 where it stopped.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Create a child cluster of this 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": "Parent cluster name", "name": "clusterName", "in": "path", "required": true }, { "description": "name, dbImage, dbCount, confirm", "name": "request", "in": "body", "schema": { "$ref": "#/definitions/server.ChildRequest" } } ], "responses": { "200": { "description": "The plan (confirm false)", "schema": { "$ref": "#/definitions/server.ChildPlan" } }, "202": { "description": "Creation started (confirm true)", "schema": { "$ref": "#/definitions/server.ChildPlan" } }, "400": { "description": "Refused: the reason (no logical backup on the parent, orchestrator, name taken...)", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "No cluster", "schema": { "type": "string" } }, "500": { "description": "Created and kept, then stopped: the cluster name, the step and the reason (WARN0239)", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/actions/create-staging": { "post": { "description": "Plans (confirm false) or creates (confirm true) a staging cluster of {clusterName}, named \u003cclusterName\u003e-staging unless a name is given: same orchestrator, database image unless dbImage is given, DBU per node and proxy type, dbCount databases (default 3), topology-staging on, this cluster as head cluster; provisioned, then seeded from this cluster's logical backup, data only (the staging cluster keeps its own accounts). Needs cluster-staging on this cluster and the right to create a cluster. The progress is the state CINF0014 on the new cluster, WARN0239 where it stopped.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Create a staging cluster of this 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": "Parent cluster name", "name": "clusterName", "in": "path", "required": true }, { "description": "name, dbImage, dbCount, confirm", "name": "request", "in": "body", "schema": { "$ref": "#/definitions/server.ChildRequest" } } ], "responses": { "200": { "description": "The plan (confirm false)", "schema": { "$ref": "#/definitions/server.ChildPlan" } }, "202": { "description": "Creation started (confirm true)", "schema": { "$ref": "#/definitions/server.ChildPlan" } }, "400": { "description": "Refused: the reason (no logical backup on the parent, orchestrator, name taken...)", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "No cluster", "schema": { "type": "string" } }, "500": { "description": "Created and kept, then stopped: the cluster name, the step and the reason (WARN0239)", "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" } }, "409": { "description": "Master is still up; use switchover for a planned role change", "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/upgrade/plan": { "get": { "description": "Resolves the target with the image list of the configurator (patch, next-minor, next-lts, next-major, last-lts, version) from the line the nodes run and describes the steps, the target release, what prov-db-image declares afterwards and the warnings. Nothing is changed.", "produces": [ "application/json" ], "tags": [ "ClusterMaintenance" ], "summary": "Plan a rolling upgrade", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": [ "patch", "next-minor", "next-lts", "next-major", "last-lts", "previous-minor", "previous-major", "version" ], "type": "string", "description": "patch (default), next-minor, next-lts, next-major, last-lts, previous-minor, previous-major, version", "name": "target", "in": "query" }, { "type": "string", "description": "with target=version: the release or line to move to", "name": "version", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/cluster.RollingUpgradePlan" } }, "400": { "description": "Target not resolvable", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "No cluster", "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 }, { "enum": [ "patch", "next-minor", "next-lts", "next-major", "last-lts", "previous-minor", "previous-major", "version" ], "type": "string", "description": "upgrade only: the release to move to, a method of the image list: patch (default: the declared prov-db-image resolved by the list), next-minor, next-lts, next-major, last-lts, previous-minor, previous-major (downgrades), version", "name": "target", "in": "query" }, { "type": "string", "description": "upgrade with target=version: the release or line to move to", "name": "version", "in": "query" } ], "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 or preferred master not found", "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" } }, "409": { "description": "No proxy configured", "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-opensvc-template": { "post": { "description": "Re-renders the app's service definition from its template and settings (timeouts, priority, volumes, routes) and pushes it to the live OpenSVC object without restarting it; the next start uses it. The database counterpart is servers/{serverName}/actions/update-opensvc-template.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Apps" ], "summary": "Refresh the OpenSVC service definition of 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 service definition 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}/apu/{kind}/{name}": { "post": { "description": "The compute sensor (app/proxy jobs sidecar) POSTs raw cgroup period maxima (mem/cpu/disk) for one Compute unit; repman projects them to APU via the Compute profile and records them as consumed. kind = app | proxy. Optional netRxBytes/netTxBytes (cumulative octets of the pod interface) feed the internal network series net.\u003ccluster\u003e.\u003ckind\u003e.\u003cname\u003e.*.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterResources" ], "summary": "Ingest an app/proxy APU compute-sensor push", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "Compute kind: app or proxy", "name": "kind", "in": "path", "required": true }, { "type": "string", "description": "App deployment or proxy name", "name": "name", "in": "path", "required": true } ], "responses": { "200": { "description": "ingested", "schema": { "type": "string" } }, "400": { "description": "Decode error / invalid kind", "schema": { "type": "string" } }, "404": { "description": "Cluster not found", "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", "pgdump", "pgbasebackup", "pgstandby", "pgreseed", "pgschemasync", "pgrestore", "pgreseedlogical", "pgwalarchive", "pgrestorelogical", "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}/kube-storage-classes": { "get": { "description": "Lists the Kubernetes cluster's available StorageClasses.", "tags": [ "Database" ], "summary": "List available Kubernetes StorageClasses", "parameters": [ { "type": "string", "description": "Cluster Name", "name": "clusterName", "in": "path", "required": true } ], "responses": { "200": { "description": "Kubernetes StorageClass 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 Kubernetes storage class list", "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}/price": { "get": { "description": "The cluster's month statement: partner, sponsors and, per unit family (DBU, failover DBU, APU, BKU, BAU), plan, over-commit and under-commit in unit-months, unit price, EUR accrued, rate and projection. Integrated per monitoring period by the resource manager.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Price of a cluster for the running month", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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/cluster.ClusterStatement" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "description": "No statement yet", "schema": { "type": "string" } } } } }, "/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/events": { "get": { "description": "Scheduled database events (MySQL/MariaDB EVENT objects) as the last schema scan collected them on the master and the replicas (monitoring-schema-events), compared with the master: per server the collection state (checked, unavailable, unsupported, not-checked) and, for a replica, the comparison (consistent, different, not-checked); per event its presence, status class (active, disabled, unknown) and definition CRC64 on each checked server, and its drifts (missing, extra, definition, definer, status). A server absent from an event's nodes was not checked: it is never reported missing. It never carries an event definition, schedule, comment or definer. Observational only: the schema drift signal is WARN0164. enabled is false, with no server and no event, when monitoring-schema-events is off. Requires db-show-schema (or cluster-sharding, through /schema).", "produces": [ "application/json" ], "tags": [ "ClusterSchema" ], "summary": "Retrieve the scheduled database event consistency of 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": "Scheduled database event consistency", "schema": { "$ref": "#/definitions/cluster.EventSchemaView" } }, "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/alter-engine/{engine}": { "post": { "description": "Plans (confirm false) or runs (confirm true) ALTER TABLE schemaName.tableName ENGINE=engine on the master, binlog on, the replicas follow. Refused when the engine is not available on the master or the table has a foreign key and the engine is not InnoDB. Runs in the background: CINF0015, WARN0240 on a stop. Needs db-optimize.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "ClusterActions" ], "summary": "Switch one table to another storage engine", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "Target engine", "name": "engine", "in": "path", "required": true }, { "description": "confirm", "name": "request", "in": "body", "schema": { "$ref": "#/definitions/server.EngineSwitchTableRequest" } } ], "responses": { "200": { "description": "The plan (confirm false)", "schema": { "$ref": "#/definitions/cluster.EngineSwitchPlan" } }, "202": { "description": "Switch started (confirm true)", "schema": { "$ref": "#/definitions/cluster.EngineSwitchPlan" } }, "400": { "description": "Refused: the reason", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "404": { "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.\nAlso clears the durable maintenance membership, so the server does\nnot come back into maintenance on the next process restart or\nconfig reload.", "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.\nMaintenance mode is durable: it is written to the cluster's\ndynamic configuration and restored on process restart or config\nreload, so a server stays excluded from proxy routing and failover\nelection until maintenance is explicitly cleared. Requires\nmonitoring-save-config=true (the default) to survive a restart.", "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.\nMaintenance mode is durable: it is written to the cluster's\ndynamic configuration and restored on process restart or config\nreload, so the server stays excluded from proxy routing and\nfailover election until maintenance is explicitly cleared.\nRequires monitoring-save-config=true (the default) to survive a\nrestart.", "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/{orchestrator}": { "get": { "description": "Retrieves the database service configuration or live manifests of a specified server within a cluster: raw OpenSVC service config text, or live Kubernetes manifests as JSON.", "produces": [ "application/json" ], "tags": [ "Database" ], "summary": "Get database service/manifest view 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", "description": "Orchestrator (must match the cluster's configured orchestrator)", "name": "orchestrator", "in": "path", "required": true } ], "responses": { "200": { "description": "Database service configuration retrieved successfully", "schema": { "type": "string" } }, "400": { "description": "Orchestrator does not match cluster configuration", "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", "pgdump", "pgbasebackup", "pgstandby", "pgreseed", "pgschemasync", "pgrestore", "pgreseedlogical", "pgwalarchive", "pgrestorelogical", "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", "pgdump", "pgbasebackup", "pgstandby", "pgreseed", "pgschemasync", "pgrestore", "pgreseedlogical", "pgwalarchive", "pgrestorelogical", "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/change-plan-units/{unit}/{delta}": { "post": { "description": "Moves the cluster's plan (technical resource reservation) for a unit (DBU/APU)\nby a relative delta. Decrease is free down to the floor; increase is validated\n(admin immutable lock; external claim hook) then applied and persisted.", "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Change a cluster plan reservation by a delta", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "Plan unit: DBU or APU", "name": "unit", "in": "path", "required": true }, { "type": "integer", "description": "Relative change (e.g. -3 or 2)", "name": "delta", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "400": { "description": "delta must be an integer", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "500": { "description": "error", "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/git-push": { "post": { "description": "Triggers the server-level config git push immediately instead of waiting for the dirty-gated config-sync loop. Runs the real push path, which self-heals a corrupt pack (reclone + retry). Server-level (one repo, all clusters); routed per-cluster for ACL. Requires GrantClusterSettings.", "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Force the config-repo push to git now", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "config pushed to git", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "git config sync not configured", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/settings/actions/git-repair": { "post": { "description": "Explicit self-heal: refresh git metadata (reclone re-inits the local .git from the remote, shedding corrupt/dangling objects) then push a clean pack. Use when the config-repo push is stuck (e.g. after a gitlab failover emptied the remote and pushes fail the remote receive fsck). Server-level; routed per-cluster for ACL. Requires GrantClusterSettings.", "produces": [ "application/json" ], "tags": [ "ClusterSettings" ], "summary": "Repair a stuck config-repo git sync and push", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "git repaired and pushed", "schema": { "type": "string" } }, "403": { "description": "No valid ACL", "schema": { "type": "string" } }, "409": { "description": "git config sync not configured", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "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}/tokens": { "get": { "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "List the API tokens covering a cluster (grant token-manage)", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": { "type": "array", "items": { "$ref": "#/definitions/server.APITokenView" } } }, "403": { "description": "Forbidden", "schema": { "type": "string" } } } } }, "/api/clusters/{clusterName}/tools": { "get": { "description": "The command line tools found on this replication-manager for the cluster (database client, dump and binlog clients, mydumper, sysbench, restic) with their detected version; a tool that was not found is absent.", "produces": [ "application/json" ], "tags": [ "Cluster" ], "summary": "Local tools and their versions", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token 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": "tool name to version", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "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 (in-memory buffer), or — for general/task with ?since=/?until= — a bounded scan of on-disk log history. Available types: general, task, security, workload, ddl, schema, 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": "RFC3339 lower time bound; presence switches general/task to on-disk history", "name": "since", "in": "query" }, { "type": "string", "description": "RFC3339 upper time bound; presence switches general/task to on-disk history", "name": "until", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated level buckets ERR,WARN,INFO,DBG", "name": "level", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated module tags, e.g. sql,proxy", "name": "module", "in": "query" }, { "type": "string", "description": "History mode only: substring filter on message text", "name": "text", "in": "query" }, { "type": "integer", "description": "History mode only: max lines returned (server-clamped)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "Log data", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "logType has no on-disk history", "schema": { "type": "string" } }, "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 (in-memory buffer), or — for general/task with ?since=/?until= — a bounded scan of on-disk log history. Available types: general, task, security, workload, ddl, schema, 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, schema, variable-change, sysbench", "name": "logType", "in": "path" }, { "type": "string", "description": "RFC3339 lower time bound; presence switches general/task to on-disk history", "name": "since", "in": "query" }, { "type": "string", "description": "RFC3339 upper time bound; presence switches general/task to on-disk history", "name": "until", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated level buckets ERR,WARN,INFO,DBG", "name": "level", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated module tags, e.g. sql,proxy", "name": "module", "in": "query" }, { "type": "string", "description": "History mode only: substring filter on message text", "name": "text", "in": "query" }, { "type": "integer", "description": "History mode only: max lines returned (server-clamped)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "Log data", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "logType has no on-disk history", "schema": { "type": "string" } }, "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 (in-memory buffer), or — for general/task with ?since=/?until= — a bounded scan of on-disk log history. Available types: general, task, security, workload, ddl, schema, 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, schema, variable-change, sysbench", "name": "logType", "in": "path" }, { "type": "string", "description": "RFC3339 lower time bound; presence switches general/task to on-disk history", "name": "since", "in": "query" }, { "type": "string", "description": "RFC3339 upper time bound; presence switches general/task to on-disk history", "name": "until", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated level buckets ERR,WARN,INFO,DBG", "name": "level", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated module tags, e.g. sql,proxy", "name": "module", "in": "query" }, { "type": "string", "description": "History mode only: substring filter on message text", "name": "text", "in": "query" }, { "type": "integer", "description": "History mode only: max lines returned (server-clamped)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "Log data", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "logType has no on-disk history", "schema": { "type": "string" } }, "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 in-memory ring buffer, or — with ?since=/?until= — a bounded scan of on-disk log history.", "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 }, { "type": "string", "description": "RFC3339 lower time bound; presence switches to on-disk history", "name": "since", "in": "query" }, { "type": "string", "description": "RFC3339 upper time bound; presence switches to on-disk history", "name": "until", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated level buckets ERR,WARN,INFO,DBG", "name": "level", "in": "query" }, { "type": "string", "description": "History mode only: comma-separated module tags, e.g. sql,proxy", "name": "module", "in": "query" }, { "type": "string", "description": "History mode only: substring filter on message text", "name": "text", "in": "query" }, { "type": "integer", "description": "History mode only: max lines returned (server-clamped)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.globalLogsResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "string" } }, "403": { "description": "Forbidden", "schema": { "type": "string" } } } } }, "/api/global/jobs": { "get": { "description": "Returns running and recently completed DB jobs, and current Restic tasks, across all clusters.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Get global jobs", "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.globalJobsResponse" } }, "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/global/price": { "get": { "description": "The price of every cluster for the month, integrated per monitoring period: per cluster the partner, the sponsors and, per unit family (DBU, failover DBU, APU, BKU, BAU), plan, over-commit and under-commit in unit-months, unit price and EUR. Running month by default, a past month with /{month} (YYYY-MM). Requires global-admin-show.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Month billing statement of the infrastructure", "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/cluster.MonthStatement" } }, "403": { "description": "Forbidden", "schema": { "type": "string" } }, "404": { "description": "No statement for that month", "schema": { "type": "string" } } } } }, "/api/global/price/{month}": { "get": { "description": "The price of every cluster for the month, integrated per monitoring period: per cluster the partner, the sponsors and, per unit family (DBU, failover DBU, APU, BKU, BAU), plan, over-commit and under-commit in unit-months, unit price and EUR. Running month by default, a past month with /{month} (YYYY-MM). Requires global-admin-show.", "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Month billing statement of the infrastructure", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Month YYYY-MM (default: the running month)", "name": "month", "in": "path" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/cluster.MonthStatement" } }, "403": { "description": "Forbidden", "schema": { "type": "string" } }, "404": { "description": "No statement for that month", "schema": { "type": "string" } } } } }, "/api/global/resources": { "get": { "produces": [ "application/json" ], "tags": [ "Global" ], "summary": "Global ResourceManager view", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.globalResourcesResponse" } } } } }, "/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/me/units": { "get": { "description": "For every cluster the logged user sponsors or has access to, like an invoice: per unit family (DBU, failover DBU, APU, BKU, BAU) the units declared and, in unit-months so far, the reserved (plan, debit), the borrowed (over the plan, debit), the unused (under the plan, credit), the net, and the end-of-month projection; totals per unit kind and overall. On a Cloud18 instance each line also carries the amount in EUR at the cluster's unit price (+ debit, - credit) and its projection; elsewhere units only.", "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Units consumed this month by the logged 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": "OK", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "No statement", "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/tokens": { "get": { "description": "GET lists the caller's tokens (token strings included for an interactive login). POST (grant token-create, interactive login only) issues a new token narrowed to a subset of the caller's own grants and a cluster scope; the token can never carry a grant the caller does not hold. The system service account can never issue tokens.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "List or create the caller's API tokens", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "description": "Token form (POST)", "name": "token", "in": "body", "schema": { "$ref": "#/definitions/server.APITokenForm" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/server.APITokenView" } } }, "400": { "description": "Bad request", "schema": { "type": "string" } }, "403": { "description": "Forbidden", "schema": { "type": "string" } } } }, "post": { "description": "GET lists the caller's tokens (token strings included for an interactive login). POST (grant token-create, interactive login only) issues a new token narrowed to a subset of the caller's own grants and a cluster scope; the token can never carry a grant the caller does not hold. The system service account can never issue tokens.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "List or create the caller's API tokens", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "description": "Token form (POST)", "name": "token", "in": "body", "schema": { "$ref": "#/definitions/server.APITokenForm" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/server.APITokenView" } } }, "400": { "description": "Bad request", "schema": { "type": "string" } }, "403": { "description": "Forbidden", "schema": { "type": "string" } } } } }, "/api/tokens/{tokenID}": { "delete": { "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Revoke an API token", "parameters": [ { "type": "string", "default": "Bearer \u003cAdd access token here\u003e", "description": "Insert your access token", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Token id", "name": "tokenID", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/server.APITokenView" } }, "403": { "description": "Forbidden", "schema": { "type": "string" } }, "404": { "description": "Not found", "schema": { "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" }, "encryptionKeyVersion": { "description": "EncryptionKeyVersion is the secret_store.json version of\ndb-servers-credential whose password encrypted the artifact (0 when\nunknown). A version number only, never the password: restore uses it\nto pick the right historic root password after a password change.", "type": "integer" }, "endTime": { "type": "string" }, "fileCount": { "type": "integer" }, "id": { "type": "integer" }, "integrityAlgo": { "type": "string" }, "metaFile": { "type": "string" }, "originalRemoved": { "description": "OriginalRemoved: the artifact at Dest was removed once its archive snapshot\n(ResticSnapshotID) was verified to hold it (backup-archive-remove-original);\na restore fetches it back from the archive.", "type": "boolean" }, "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" }, "streamSize": { "description": "bytes received from the backup stream, before compression/encryption (physical); the next run's progress denominator", "type": "integer" } } }, "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" }, "extra_paths": { "description": "More paths in the same snapshot", "type": "array", "items": { "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" }, "dbProvisionError": { "description": "last app database auto-create refusal (#1870), \"\" once one goes through", "type": "string" }, "failCount": { "type": "integer" }, "host": { "type": "string" }, "hostIPV6": { "type": "string" }, "id": { "type": "string" }, "isHashingTemplate": { "type": "boolean" }, "lastRefreshDurationMs": { "type": "integer" }, "lastRefreshEnd": { "type": "string" }, "lastRefreshError": { "type": "string" }, "lastRefreshStart": { "description": "Per-app refresh freshness (cluster-level AppRefreshLast* on Cluster\nonly shows batch-wide timing, not which app is actually slow). Set\nvia SetRefreshInProgress/SetRefreshResult under app.Mutex -- read\nthem the same way (App.Lock()/Unlock(), or GetAppAPIView) rather than\ndirectly: these are read from a different goroutine than the one\nthat writes them (maybeRefreshAppsAsync's worker vs. any status/API\nreader).", "type": "string" }, "name": { "type": "string" }, "port": { "type": "string" }, "prevState": { "type": "string" }, "refreshInProgress": { "type": "boolean" }, "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" }, "url": { "description": "https://\u003cprimary route cname\u003e/ once routed, else the internal http://host:port/", "type": "string" }, "version": { "type": "string" }, "weight": { "type": "string" } } }, "cluster.BillingPrices": { "type": "object", "properties": { "apu": { "type": "number", "format": "float64" }, "bau": { "type": "number", "format": "float64" }, "bku": { "type": "number", "format": "float64" }, "dbu": { "type": "number", "format": "float64" }, "gwu": { "type": "number", "format": "float64" }, "overPct": { "type": "integer" }, "underPct": { "type": "integer" } } }, "cluster.ClusterForm": { "type": "object", "properties": { "clusterName": { "type": "string" }, "orchestrator": { "type": "string" }, "plan": { "type": "string" } } }, "cluster.ClusterStatement": { "type": "object", "properties": { "accrued": { "description": "Accrued unit-seconds per family, kept on disk so a reload continues the month:\nplan, over, under, rate, planCost, overCost, underCredit.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "number", "format": "float64" } } }, "cluster": { "type": "string" }, "firstSeen": { "type": "string" }, "lastSeen": { "type": "string" }, "monthCost": { "description": "EUR accrued this month", "type": "number" }, "partner": { "type": "string" }, "projected": { "description": "MonthCost + Rate × the time left", "type": "number" }, "rate": { "description": "EUR per month at the last tick", "type": "number" }, "sponsors": { "type": "array", "items": { "type": "string" } }, "units": { "type": "array", "items": { "$ref": "#/definitions/cluster.UnitBillingRow" } } } }, "cluster.Diff": { "type": "object", "properties": { "role": { "type": "string" }, "serverName": { "type": "string" }, "variableValue": { "type": "string" } } }, "cluster.EngineSwitchPlan": { "type": "object", "properties": { "cluster": { "type": "string" }, "engineFrom": { "type": "string" }, "engineTo": { "type": "string" }, "notes": { "type": "array", "items": { "type": "string" } }, "schema": { "type": "string" }, "server": { "type": "string" }, "skipped": { "type": "array", "items": { "$ref": "#/definitions/cluster.EngineSwitchTable" } }, "tables": { "type": "array", "items": { "$ref": "#/definitions/cluster.EngineSwitchTable" } }, "totalBytes": { "type": "integer" } } }, "cluster.EngineSwitchTable": { "type": "object", "properties": { "bytes": { "description": "data + indexes, as information_schema reports them", "type": "integer" }, "engine": { "type": "string" }, "foreignKey": { "description": "a foreign key references this table or is declared on it", "type": "boolean" }, "reason": { "type": "string" }, "schema": { "type": "string" }, "table": { "type": "string" } } }, "cluster.EventSchemaDriftView": { "type": "object", "properties": { "drift": { "type": "string" }, "serverId": { "type": "string" } } }, "cluster.EventSchemaEventView": { "type": "object", "properties": { "db": { "type": "string" }, "drifts": { "type": "array", "items": { "$ref": "#/definitions/cluster.EventSchemaDriftView" } }, "name": { "type": "string" }, "nodes": { "type": "object", "additionalProperties": { "$ref": "#/definitions/cluster.EventSchemaNodeView" } } } }, "cluster.EventSchemaNodeView": { "type": "object", "properties": { "definitionCrc64": { "type": "string", "example": "0" }, "present": { "type": "boolean" }, "status": { "type": "string" } } }, "cluster.EventSchemaServerView": { "type": "object", "properties": { "collectedAt": { "type": "integer" }, "collection": { "type": "string" }, "comparison": { "type": "string" }, "id": { "type": "string" }, "isMaster": { "type": "boolean" }, "url": { "type": "string" } } }, "cluster.EventSchemaView": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "events": { "type": "array", "items": { "$ref": "#/definitions/cluster.EventSchemaEventView" } }, "servers": { "type": "array", "items": { "$ref": "#/definitions/cluster.EventSchemaServerView" } } } }, "cluster.GraphiteFilterList": { "type": "object", "properties": { "blacklist": { "type": "string" }, "whitelist": { "type": "string" } } }, "cluster.LedgerAxes": { "type": "object", "properties": { "cores": { "type": "number" }, "diskBytes": { "type": "number" }, "iops": { "type": "number" }, "memBytes": { "type": "number" } } }, "cluster.MonthStatement": { "type": "object", "properties": { "clusters": { "type": "object", "additionalProperties": { "$ref": "#/definitions/cluster.ClusterStatement" } }, "currency": { "type": "string" }, "defaultPrices": { "description": "the instance's price list; each row carries the price its cluster applied", "allOf": [ { "$ref": "#/definitions/cluster.BillingPrices" } ] }, "elapsedPct": { "type": "number" }, "final": { "type": "boolean" }, "generatedAt": { "type": "string" }, "month": { "type": "string" }, "monthCost": { "type": "number" }, "projected": { "type": "number" }, "rate": { "type": "number" } } }, "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.ResourceLedger": { "type": "object", "properties": { "borrowPot": { "description": "over-commit pot per unit (smallest axis)", "allOf": [ { "$ref": "#/definitions/cluster.UnitPots" } ] }, "borrowed": { "description": "Σ resources granted above the plans (DB config over plan, BKU usage over plan)", "allOf": [ { "$ref": "#/definitions/cluster.LedgerAxes" } ] }, "capacity": { "description": "the metal (agents summed, config override winning)", "allOf": [ { "$ref": "#/definitions/cluster.LedgerAxes" } ] }, "known": { "type": "boolean" }, "overCommitPot": { "description": "capacity − reserved − borrowed", "allOf": [ { "$ref": "#/definitions/cluster.LedgerAxes" } ] }, "overdrawn": { "description": "an over-commit pot axis is negative: borrowed resources must give way", "type": "boolean" }, "planPot": { "description": "sellable − reserved", "allOf": [ { "$ref": "#/definitions/cluster.LedgerAxes" } ] }, "planPotUnits": { "description": "plan pot per unit (smallest axis)", "allOf": [ { "$ref": "#/definitions/cluster.UnitPots" } ] }, "quotaPct": { "type": "number" }, "reserved": { "description": "Σ plans of every cluster, DBU + APU + BKU, physical", "allOf": [ { "$ref": "#/definitions/cluster.LedgerAxes" } ] }, "reservedUnits": { "description": "Σ plans per unit, as sold (DBU, APU, BKU)", "allOf": [ { "$ref": "#/definitions/cluster.UnitPots" } ] }, "sellable": { "description": "capacity × quota: what plans may add up to", "allOf": [ { "$ref": "#/definitions/cluster.LedgerAxes" } ] } } }, "cluster.ResticEnsureBucketResult": { "type": "object", "properties": { "bucket": { "type": "string" }, "created": { "type": "boolean" }, "endpoint": { "type": "string" }, "message": { "type": "string" } } }, "cluster.RollingUpgradePlan": { "type": "object", "properties": { "cluster": { "type": "string" }, "currentImage": { "description": "prov-db-image as declared", "type": "string" }, "currentIsLTS": { "type": "boolean" }, "currentLine": { "type": "string" }, "currentRelease": { "description": "the release the service definitions carry (prov-db-docker-img-resolved)", "type": "string" }, "declaredAfter": { "description": "prov-db-image after the upgrade", "type": "string" }, "flavor": { "type": "string" }, "imageList": { "type": "string" }, "mechanic": { "description": "\"upgrade\" (restart on the new image) or \"reprov\" (provision again + reseed)", "type": "string" }, "nodes": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "orchestrator": { "type": "string" }, "order": { "type": "array", "items": { "type": "string" } }, "status": { "type": "string" }, "steps": { "type": "array", "items": { "type": "string" } }, "target": { "type": "string" }, "targetImage": { "description": "the real release, repo:x.y.z", "type": "string" }, "targetIsLTS": { "type": "boolean" }, "targetLine": { "type": "string" }, "warnings": { "type": "array", "items": { "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/github_com_signal18_replication-manager_config.Config" }, "config-test": { "$ref": "#/definitions/github_com_signal18_replication-manager_config.Config" }, "name": { "type": "string" }, "result": { "type": "string" } } }, "cluster.UnitBillingRow": { "type": "object", "properties": { "billable": { "type": "number" }, "cumulative": { "description": "month-to-date volume, not integrated (#1872)", "type": "boolean" }, "family": { "type": "string" }, "freePlan": { "description": "the plan is a free allowance: no plan cost, no unused credit", "type": "boolean" }, "monthCost": { "description": "= monthPlanCost + monthOverCost − monthUnderCredit", "type": "number" }, "monthOverCommit": { "type": "number" }, "monthOverCost": { "type": "number" }, "monthPlan": { "type": "number" }, "monthPlanCost": { "type": "number" }, "monthUnderCommit": { "type": "number" }, "monthUnderCredit": { "type": "number" }, "overCommit": { "type": "number" }, "overCommitPct": { "type": "integer" }, "overCost": { "description": "+ over-commit × price × (100+over%)/100", "type": "number" }, "plan": { "type": "number" }, "planCost": { "description": "plan × price, per month, at the last tick", "type": "number" }, "priced": { "type": "boolean" }, "projectedCost": { "type": "number" }, "projectedOverCommit": { "type": "number" }, "projectedOverCost": { "type": "number" }, "projectedPlan": { "description": "Projection to the end of the month: each component as it stands at the last tick\ncarried over the time left (plan count of every tick, over-commit and under-commit\nprojected per unit), then priced: projectedCost = monthCost + rate × time left.", "type": "number" }, "projectedPlanCost": { "type": "number" }, "projectedUnderCommit": { "type": "number" }, "projectedUnderCredit": { "type": "number" }, "rate": { "description": "EUR per month at the last tick = planCost + overCost − underCredit", "type": "number" }, "underCommit": { "type": "number" }, "underCommitPct": { "type": "integer" }, "underCredit": { "description": "− under-commit × price × under%/100", "type": "number" }, "unit": { "type": "string" }, "unitPrice": { "type": "number" } } }, "cluster.UnitPots": { "type": "object", "properties": { "apu": { "type": "number" }, "bku": { "type": "number" }, "dbu": { "type": "number" } } }, "cluster.UnitRatios": { "type": "object", "properties": { "coresPerUnit": { "type": "number" }, "diskGBPerUnit": { "type": "number" }, "iopsPerUnit": { "description": "0 = axis excluded", "type": "number" }, "memMBPerUnit": { "type": "number" } } }, "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" }, "appDbAutoCreate": { "description": "AppDbAutoCreate (#1870): the app asks the cluster for its own schema, user and password\n({{app.db.*}} template keys); created at provision, never on foreign objects.", "type": "boolean" }, "appDbOwned": { "description": "AppDbOwned: the ownership mark, set by the provision that created the schema and the user;\nwithout it an existing schema or user is never touched (APPERR008).", "type": "boolean" }, "appDbPass": { "type": "string" }, "appDbSchema": { "type": "string" }, "appDbUser": { "type": "string" }, "appHost": { "type": "string" }, "appHostsIpv6": { "type": "string" }, "appMonitorMode": { "description": "AppMonitorMode: how an app without a route is probed. \"port\" (default) connects to\napp-port over TCP; \"ping\" sends an ICMP echo to the app host, for a process that\nlistens on nothing (ERPNext worker and scheduler, #1919). The port stays the identity.", "type": "string" }, "appPort": { "type": "string" }, "appRandomPassword": { "description": "generated when the template references {{app.randompassword}}, stored encrypted", "type": "string" }, "appS3Provider": { "type": "boolean" }, "appStateful": { "description": "AppStateful: the app holds data (minio, a storage service), so it is accounted on the\nDatabase profile as whole DBU (reserved in the DBU pool, billed at the DBU price), not\nas APU. A template default (cloud18-templates minio) inherited at creation, overridable\nper app in the GUI.", "type": "boolean" }, "deployment": { "$ref": "#/definitions/config.Deployment" }, "provAppAgents": { "type": "string" }, "provAppAgentsFailover": { "type": "string" }, "provAppConfigurator": { "description": "engine whose moduleset (share/opensvc/moduleset_\u003cengine\u003e.svc.mrm.db.json) is rendered from the app plan and handed to the container (postgres); empty = none", "type": "string" }, "provAppCpuCores": { "type": "string" }, "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" }, "provAppStartTimeout": { "description": "om3 start_timeout and pull_timeout of the app container (10m, 1h); empty = the cluster default", "type": "string" }, "provAppTemplate": { "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" }, "gid": { "type": "string" }, "mountdir": { "type": "string" }, "name": { "type": "string" }, "providerName": { "type": "string" }, "region": { "type": "string" }, "secretkey": { "type": "string" }, "uid": { "description": "Uid / Gid: the owner the mounted files are presented as inside the container\n(the mount sidecar's --uid/--gid); empty = 33 (www-data), the historical value.", "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": { "dirperm": { "type": "string" }, "group": { "type": "string" }, "name": { "type": "string" }, "poolname": { "type": "string" }, "size": { "type": "string" }, "user": { "description": "Owner of the volume directories (OpenSVC volume user/group/dirperm): images that run as a\nnon-root user (rustfs 10001, frappe 1000) cannot write a root-owned directory (#1870).", "type": "string" }, "volumedir": { "type": "string" } } }, "github_com_signal18_replication-manager_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" }, "apiUserTokens": { "type": "boolean" }, "apiUserTokensDefaultExpireDays": { "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" }, "arbitrationVerdictStreak": { "type": "integer" }, "arbitratorBindAddress": { "type": "string" }, "arbitratorConnectTimeout": { "type": "integer" }, "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" }, "backupArchiveRemoveOriginal": { "type": "boolean" }, "backupBinlogs": { "type": "boolean" }, "backupBinlogsKeep": { "type": "integer" }, "backupCheckFreeSpace": { "type": "boolean" }, "backupConcurrentSlots": { "type": "integer" }, "backupDiskTresholdCrit": { "type": "integer" }, "backupDiskTresholdWarn": { "type": "integer" }, "backupEncryption": { "type": "boolean" }, "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" }, "backupWriteStallTimeout": { "type": "integer" }, "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" }, "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" }, "cloud18GatewayBandwidthMbit": { "description": "GWU (#1872): the gateway network unit, egress through the Cloud18 gateways.\nCloud18GatewayBandwidthMbit: the shared uplink of each gateway in Mb/s, a list aligned with\ncloud18-gateway-service; the bandwidth is tracked per cluster against it, not invoiced (#1872).", "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" }, "cloud18LicenseFile": { "description": "Cloud18LicenseFile, when set, is the single switch for offline-license mode:\nthe instance sources its plan from this signed file instead of the CRM (for\nair-gapped/PCI instances). Empty = normal online CRM path.", "type": "string" }, "cloud18MarketplaceApuPrice": { "type": "number" }, "cloud18MarketplaceBauClientStorage": { "type": "boolean" }, "cloud18MarketplaceBauPrice": { "type": "number" }, "cloud18MarketplaceBkuPrice": { "type": "number" }, "cloud18MarketplaceDbuPrice": { "type": "number" }, "cloud18MarketplaceGwuFreeUnits": { "description": "GWU for the BO (#1872): the first cloud18-marketplace-gwu-free-units GWU of BANDWIDTH (10 = 1 Gb/s) are free\nfor every cluster; bandwidth held above them is reported on top (only possible where the gateways give more).", "type": "integer" }, "cloud18MarketplaceGwuPrice": { "type": "number" }, "cloud18MarketplaceGwuUnitMbit": { "type": "number" }, "cloud18MarketplaceOvercommitPricePct": { "type": "integer" }, "cloud18MarketplacePricingMode": { "type": "string" }, "cloud18MarketplaceUndercommitPricePct": { "type": "integer" }, "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" }, "cloud18SelfServiceCacheSeconds": { "type": "integer" }, "cloud18SelfServiceClusters": { "type": "boolean" }, "cloud18SelfServiceClustersCanBorrow": { "type": "boolean" }, "cloud18SelfServiceClustersEnabledScript": { "type": "string" }, "cloud18SelfServiceMaxClustersPerUser": { "type": "integer" }, "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" }, "dbLogOnBackupStorage": { "type": "boolean" }, "dbLogRotate": { "type": "boolean" }, "dbLogRotateMaxAge": { "type": "integer" }, "dbLogRotateMaxBackup": { "type": "integer" }, "dbLogRotateMaxSize": { "type": "integer" }, "dbServersBackupHosts": { "type": "string" }, "dbServersBindAddress": { "type": "string" }, "dbServersConnectTimeout": { "type": "integer" }, "dbServersCredential": { "type": "string" }, "dbServersDnsTimeout": { "type": "integer" }, "dbServersExecTimeout": { "type": "integer" }, "dbServersHosts": { "type": "string" }, "dbServersIgnoredHosts": { "type": "string" }, "dbServersIgnoredReadonly": { "type": "string" }, "dbServersLocality": { "type": "string" }, "dbServersMaintenanceHosts": { "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" }, "graphiteMetricsQueueLimit": { "type": "integer" }, "graphiteWhitelist": { "type": "boolean" }, "graphiteWhitelistTemplate": { "type": "string" }, "haproxy": { "type": "boolean" }, "haproxyAPIBootstrapServers": { "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" }, "haproxyUser": { "type": "string" }, "haproxyWritePort": { "type": "integer" }, "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" }, "logHistoryEnable": { "type": "boolean" }, "logHistoryMaxFiles": { "type": "integer" }, "logHistoryMaxLines": { "type": "integer" }, "logHistoryMaxScanBytes": { "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" }, "maxscaleMode": { "type": "string" }, "maxscalePass": { "type": "string" }, "maxscalePort": { "type": "string" }, "maxscaleReadPort": { "type": "integer" }, "maxscaleReadWritePort": { "type": "integer" }, "maxscaleRestApi": { "type": "boolean" }, "maxscaleRestPort": { "type": "integer" }, "maxscaleServerMatchPort": { "type": "boolean" }, "maxscaleServers": { "type": "string" }, "maxscaleServers-ipv6": { "type": "string" }, "maxscaleUser": { "type": "string" }, "maxscaleWritePort": { "type": "integer" }, "maxscalemBinaryPath": { "type": "string" }, "mcpAdvertiseAddress": { "type": "string" }, "mcpAuthEnabled": { "type": "boolean" }, "mcpBindAddress": { "type": "string" }, "mcpPort": { "type": "string" }, "mcpServer": { "type": "boolean" }, "mcpTransport": { "type": "string" }, "measurement": { "type": "boolean" }, "measurementAutoClampLimit": { "type": "boolean" }, "monitoringAddMonitorScript": { "type": "string" }, "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" }, "monitoringDropMonitorScript": { "type": "string" }, "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" }, "monitoringPerformanceSchemaQueriesInterval": { "type": "integer" }, "monitoringPerformanceSchemaQueriesPeriod": { "type": "integer" }, "monitoringPfsSnapshotRetentionDays": { "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" }, "monitoringResolveServerIP": { "type": "boolean" }, "monitoringRestoreConfigOnStart": { "type": "boolean" }, "monitoringSSLCert": { "type": "string" }, "monitoringSSLKey": { "type": "string" }, "monitoringSaveConfig": { "type": "boolean" }, "monitoringScheduler": { "type": "boolean" }, "monitoringSchemaChange": { "type": "boolean" }, "monitoringSchemaChangeScript": { "type": "string" }, "monitoringSchemaColumns": { "type": "boolean" }, "monitoringSchemaEvents": { "type": "boolean" }, "monitoringSchemaEventsMax": { "type": "integer" }, "monitoringSchemaEventsPageSize": { "type": "integer" }, "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" }, "monitoringSystemResources": { "type": "boolean" }, "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" }, "provAppStartTimeout": { "type": "string" }, "provAppTemplateRepo": { "type": "string" }, "provAppTemplateRepoAllowOverride": { "type": "boolean" }, "provAppTemplateRepoBranch": { "type": "string" }, "provAppTemplateRepoPassword": { "type": "string" }, "provAppTemplateRepoTimeout": { "type": "integer" }, "provAppTemplateRepoUser": { "type": "string" }, "provAppVolumePools": { "type": "string" }, "provAutoUpdateCompliance": { "type": "boolean" }, "provDBApplyDynamicConfig": { "type": "boolean" }, "provDBCompliance": { "type": "string" }, "provDBDynamicResizeDailyTime": { "description": "HH:MM daily window when policy = daily-time", "type": "string" }, "provDBDynamicResizePolicy": { "description": "WHEN a live memory resize applies: \"scale-speed\" (default) / \"daily-time\"", "type": "string" }, "provDBForceWriteConfig": { "type": "boolean" }, "provDbAgents": { "type": "string" }, "provDbBinaryBasedir": { "type": "string" }, "provDbBinaryInTarball": { "type": "boolean" }, "provDbBinaryLogName": { "type": "string" }, "provDbBinaryTarballName": { "type": "string" }, "provDbBku": { "type": "integer" }, "provDbBootstrapScript": { "type": "string" }, "provDbCapSafetyPct": { "description": "HIGH-water margin: a server is \"over\" a reference on an axis when consumed \u003e= ref x (1 - pct/100). Drives raise-resources (vs config) and cap-up (vs plan). Default 15 (85%)", "type": "integer" }, "provDbCapShrinkPct": { "description": "LOW-water margin: a server is \"under\" a reference on an axis when consumed \u003c= ref x (pct/100). Drives shrink-resources (vs config) and cap-down (vs plan). The dead-band [shrink-pct, 100-safety-pct] = status quo (anti-flap). Default 50", "type": "integer" }, "provDbCleanupScript": { "type": "string" }, "provDbClientBasedir": { "type": "string" }, "provDbComplianceAutoAgree": { "type": "boolean" }, "provDbConfig": { "type": "boolean" }, "provDbConfigPreserve": { "type": "boolean" }, "provDbConfigPreserveVars": { "type": "string" }, "provDbCpuCores": { "type": "string" }, "provDbDatadirVersion": { "type": "string" }, "provDbDbu": { "type": "integer" }, "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" }, "provDbDockerImgResolved": { "type": "string" }, "provDbDockerJemallocPreload": { "type": "string" }, "provDbDockerRunArgs": { "type": "string" }, "provDbDockerRunArgsLimit": { "type": "boolean" }, "provDbDockerTmpfsSize": { "type": "string" }, "provDbDockerXtrabackupImg": { "type": "string" }, "provDbDomain": { "type": "string" }, "provDbDynamicResource": { "type": "boolean" }, "provDbDynamicResourceCanChangeScript": { "type": "string" }, "provDbDynamicResourceChangeScript": { "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" }, "provDbOvercommitPct": { "description": "COMMERCIAL scalability-up barrier: max % the dynamic resource change may auto-grow the plan (plan × (1+pct/100)) before a plan raise is required. Not a technical cap formula (see ResourceManager.CanGrowBeyondPlan)", "type": "integer" }, "provDbReplicationDomainParallelThreads": { "description": "slave_domain_parallel_threads (SVC_CONF_ENV_SLAVE_DOMAIN_PARALLEL_THREADS); 0 = no per-domain cap (MariaDB default)", "type": "integer" }, "provDbReplicationParallelThreads": { "description": "slave_parallel_threads written by the configurator (template env SVC_CONF_ENV_SLAVE_PARALLEL_THREADS); concurrency to absorb latency, NOT tied to cores", "type": "integer" }, "provDbResourceAlign": { "description": "container memory cap alignment to the DBU tier: \"plan\" (default) / \"up\" / \"off\"", "type": "string" }, "provDbResourceRaisedOverPlanScript": { "type": "string" }, "provDbRunAsUid": { "type": "string" }, "provDbServiceType": { "type": "string" }, "provDbStartFetchConfig": { "type": "boolean" }, "provDbStartScript": { "type": "string" }, "provDbStartTimeout": { "type": "string" }, "provDbStopScript": { "type": "string" }, "provDbTags": { "type": "string" }, "provDbUndercommitPct": { "description": "scale-down floor: auto-shrink never under floor(plan x (1 - pct/100)) DBU/node, min 1 -- the pendant of prov-db-overcommit-pct", "type": "integer" }, "provDbUpgradeMajorReprov": { "type": "boolean" }, "provDbVolumeData": { "type": "string" }, "provDbVolumeDocker": { "type": "string" }, "provDbVolumeUid": { "type": "string" }, "provDockerDaemonPrivate": { "type": "boolean" }, "provDockerRegistryCredentials": { "type": "string" }, "provEventTimeout": { "type": "integer" }, "provGatewayUnits": { "type": "integer" }, "provKubeImageForcePull": { "type": "boolean" }, "provKubeProxyStorageClass": { "type": "string" }, "provKubeStorageClass": { "type": "string" }, "provNetCni": { "type": "boolean" }, "provNetCniCluster": { "type": "string" }, "provNetDockerRunArgs": { "type": "string" }, "provObjectAllowOverwrite": { "type": "boolean" }, "provOrchestrator": { "type": "string" }, "provOrchestratorCluster": { "type": "string" }, "provOrchestratorDeploymentUpgradeOnStart": { "type": "boolean" }, "provOrchestratorEnable": { "type": "string" }, "provPlanIncreaseScript": { "type": "string" }, "provProxyAgents": { "type": "string" }, "provProxyAgentsFailover": { "type": "string" }, "provProxyApu": { "type": "integer" }, "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" }, "provProxyStartTimeout": { "type": "string" }, "provProxyStopScript": { "type": "string" }, "provProxyTags": { "type": "string" }, "provProxyVolumeData": { "type": "string" }, "provSerialized": { "type": "boolean" }, "provServicePlan": { "type": "string" }, "provServicePlanApu": { "type": "integer" }, "provServicePlanBku": { "type": "integer" }, "provServicePlanBpu": { "type": "integer" }, "provServicePlanDbu": { "type": "integer" }, "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" }, "replicationPgLogicalDdl": { "type": "boolean" }, "replicationSourceName": { "type": "string" }, "replicationSslCa": { "type": "string" }, "replicationUseSsl": { "type": "boolean" }, "resourceManagerInfraCpuCores": { "type": "number" }, "resourceManagerInfraDiskGb": { "type": "number" }, "resourceManagerInfraIops": { "type": "number" }, "resourceManagerInfraMemoryMb": { "type": "number" }, "resourceManagerInfraNetworkMbps": { "type": "number" }, "resourceManagerInfraQuotaPct": { "type": "number" }, "resourceManagerRatioApu": { "type": "string" }, "resourceManagerRatioBku": { "type": "string" }, "resourceManagerRatioDbu": { "type": "string" }, "resourceManagerSmtGain": { "type": "number" }, "scaleDownConfigInPlanSpeed": { "description": "sustain duration before scaling DOWN a server's config resources within the plan. Default 5m", "type": "string" }, "scaleDownPlanSpeed": { "description": "sustain duration before lowering the PLAN (cap down) -- most conservative, don't yo-yo the billed plan. Default 1h", "type": "string" }, "scaleUpConfigInPlanSpeed": { "description": "Client-settable SCALE SPEED: how long a saturation must persist before repman scales the\nresources up. Today this behaviour was fixed at 1 minute; this makes it a client knob.\nA duration string; the default 1m is the current (fastest) behaviour. The down/plan\nvariants (ScaleDownConfigInPlan, ScaleUp/DownPlan) will follow the same naming when wired.", "type": "string" }, "scaleUpPlanSpeed": { "description": "sustain duration before raising the PLAN (cap up) -- commercial, slower than in-plan. Default 30m", "type": "string" }, "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" } } }, "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": { "activePassiveStatus": { "type": "string" }, "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" }, "dbServers": { "type": "integer" }, "directUpdate": { "description": "last successful direct /api/clusters enrichment", "type": "string" }, "isDown": { "type": "boolean" }, "isFailable": { "type": "boolean" }, "isMasterDown": { "type": "boolean" }, "isProvisioned": { "type": "boolean" }, "lastUpdate": { "type": "string" }, "monitoringPause": { "type": "boolean" }, "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" }, "proxyServers": { "type": "integer" }, "repmgrVersion": { "type": "string" }, "topology": { "description": "Live monitoring fields — populated by the direct /api/clusters fetch from the\npeer (auto-connect to fleet), NOT present in the BO peer.json catalog. They stay\nempty until a successful direct connection enriches the row, and are preserved\nacross peer.json BatchUpdateClusters (which would otherwise reset them).", "type": "string" }, "uptime": { "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.APITokenForm": { "type": "object", "properties": { "clusters": { "description": "empty or [\"*\"] = every cluster the owner can see", "type": "array", "items": { "type": "string" } }, "expireDays": { "description": "0 = server default (api-user-tokens-default-expire-days); -1 = never", "type": "integer" }, "grants": { "description": "compact prefixes, space separated, e.g. \"db-show proxy\"; empty = all of the owner's grants", "type": "string" }, "label": { "type": "string" } } }, "server.APITokenView": { "type": "object", "properties": { "clusters": { "description": "cluster scope; [\"*\"] = all", "type": "array", "items": { "type": "string" } }, "createdAt": { "type": "string" }, "createdFrom": { "type": "string" }, "expired": { "type": "boolean" }, "expiresAt": { "type": "string" }, "grants": { "description": "compact grant prefixes requested by the owner", "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "label": { "type": "string" }, "lastUsedAt": { "type": "string" }, "lastUsedFrom": { "type": "string" }, "ownerAuthType": { "description": "OwnerAuthType is how the owner was authenticated when the token was issued\n(\"SSO\" or \"Local\"): a token issued by a Cloud18 identity keeps that identity\nfor the self-service rules, which need an SSO caller.", "type": "string" }, "revoked": { "type": "boolean" }, "revokedAt": { "type": "string" }, "revokedBy": { "type": "string" }, "token": { "type": "string" }, "user": { "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.ChildPlan": { "type": "object", "properties": { "backup": { "type": "string" }, "backupLogicalType": { "description": "the parent's", "type": "string" }, "dbCount": { "type": "integer" }, "dbImage": { "type": "string" }, "dbuPerNode": { "type": "integer" }, "domain": { "description": "GTID domain: the parent's + 1", "type": "string" }, "kind": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "array", "items": { "type": "string" } }, "orchestrator": { "type": "string" }, "ownSourceName": { "description": "the new cluster's replication-source-name (its master to its replicas)", "type": "string" }, "parent": { "type": "string" }, "proxy": { "description": "\"\" = none", "type": "string" }, "sourceName": { "description": "channel from the parent's master: the parent's replication-source-name", "type": "string" } } }, "server.ChildRequest": { "type": "object", "properties": { "confirm": { "description": "false: the plan only", "type": "boolean" }, "dbCount": { "description": "default 3 (staging), 2 (child)", "type": "integer" }, "dbImage": { "description": "default the parent's prov-db-image", "type": "string" }, "name": { "description": "default \u003cparent\u003e-staging or \u003cparent\u003e-child", "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.EngineSwitchRequest": { "type": "object", "properties": { "confirm": { "type": "boolean" }, "engineFrom": { "type": "string" }, "engineTo": { "type": "string" }, "schema": { "description": "optional: one schema only", "type": "string" } } }, "server.EngineSwitchTableRequest": { "type": "object", "properties": { "confirm": { "type": "boolean" } } }, "server.Heartbeat": { "type": "object", "properties": { "apiUrl": { "description": "APIURL is the answering instance's API URL, the one it writes as\nREPLICATION_MANAGER_URL: its peer offers it to init containers as the DR\nfallback (REPLICATION_MANAGER_URL_DR).", "type": "string" }, "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.IOPSCalibration": { "type": "object", "properties": { "agents": { "type": "integer" }, "applied": { "type": "boolean" }, "dir": { "type": "string" }, "durationSecond": { "type": "integer" }, "hostIops": { "type": "number" }, "infraIops": { "type": "number" }, "message": { "type": "string" }, "readsPerSecond": { "type": "number" }, "writesPerSecond": { "type": "number" } } }, "server.InfraUnitPool": { "type": "object", "properties": { "freeApu": { "type": "number" }, "freeDbu": { "type": "number" }, "known": { "type": "boolean" }, "plannedApu": { "type": "number" }, "plannedDbu": { "type": "number" }, "usableApu": { "type": "number" }, "usableDbu": { "type": "number" } } }, "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.SMTCalibration": { "type": "object", "properties": { "applied": { "type": "boolean" }, "cores": { "type": "integer" }, "cpuEventsPerSecCores": { "type": "number" }, "cpuEventsPerSecThreads": { "type": "number" }, "cpuGain": { "type": "number" }, "durationSeconds": { "type": "integer" }, "gain": { "type": "number" }, "memGain": { "type": "number" }, "memMiBPerSecCores": { "type": "number" }, "memMiBPerSecThreads": { "type": "number" }, "message": { "type": "string" }, "threads": { "type": "integer" } } }, "server.SelfServicePrices": { "type": "object", "properties": { "apu": { "type": "number" }, "bau": { "type": "number" }, "bku": { "type": "number" }, "currency": { "type": "string" }, "dbu": { "type": "number" }, "overcommitPricePct": { "description": "price of a unit above the plan, in % of the unit price", "type": "integer" }, "pricingMode": { "type": "string" } } }, "server.SelfServiceStatus": { "type": "object", "properties": { "appTemplates": { "type": "array", "items": { "type": "string" } }, "borrowed": { "description": "Borrowed: the pool could not guarantee the units but the over-commit pot can lend them\n(cloud18-self-service-clusters-can-borrow): the creation goes through without guarantee.", "type": "boolean" }, "clusters": { "type": "array", "items": { "type": "string" } }, "defaultApu": { "type": "integer" }, "defaultBku": { "type": "integer" }, "defaultDbu": { "type": "integer" }, "domain": { "description": "The infrastructure identity and the app templates it can deploy, so a client\nplans an app and renders its URL (the template's primary route CNAME is\n\u003capp\u003e.\u003ccluster\u003e.\u003csubDomain\u003e-\u003czone\u003e.\u003cdomain\u003e.cloud18.io) before creating anything.", "type": "string" }, "enabled": { "type": "boolean" }, "gatewayDomain": { "type": "string" }, "identity": { "type": "string" }, "maxClustersPerUser": { "type": "integer" }, "neededApu": { "type": "number" }, "neededDbu": { "description": "ResourceManager pool: what a new cluster needs and what is free.", "type": "number" }, "orchestrator": { "type": "string" }, "pool": { "$ref": "#/definitions/server.InfraUnitPool" }, "poolBlocked": { "description": "PoolBlocked: Enabled is false because of the pool only (the verdict a quote re-takes\nfor the requested units), never compared by its wording.", "type": "boolean" }, "poolNote": { "type": "string" }, "poolOk": { "type": "boolean" }, "prices": { "description": "Prices: this infrastructure's unit price list, so a client quotes a cluster from the\npartner's own figures (#1963). A 0 price means the unit is not priced here.", "allOf": [ { "$ref": "#/definitions/server.SelfServicePrices" } ] }, "reason": { "type": "string" }, "remaining": { "type": "integer" }, "subDomain": { "type": "string" }, "used": { "type": "integer" }, "zone": { "type": "string" } } }, "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.globalClusterResticTask": { "type": "object", "properties": { "clusterName": { "type": "string" }, "currentTask": { "$ref": "#/definitions/backupmgr.ResticTaskState" } } }, "server.globalJobEntry": { "type": "object", "properties": { "clusterName": { "type": "string" }, "end": { "type": "integer" }, "result": { "type": "string" }, "serverId": { "type": "string" }, "serverUrl": { "type": "string" }, "start": { "type": "integer" }, "state": { "type": "integer" }, "stateLabel": { "type": "string" }, "task": { "type": "string" } } }, "server.globalJobsResponse": { "type": "object", "properties": { "recentCompletedJobs": { "type": "array", "items": { "$ref": "#/definitions/server.globalJobEntry" } }, "resticCurrentTasks": { "type": "array", "items": { "$ref": "#/definitions/server.globalClusterResticTask" } }, "runningJobs": { "type": "array", "items": { "$ref": "#/definitions/server.globalJobEntry" } } } }, "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" }, "truncated": { "description": "Truncated is only ever true for a history response (see HttpLog.Truncated).", "type": "boolean" } } }, "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.globalResourcesAgent": { "type": "object", "properties": { "cores": { "type": "number" }, "name": { "type": "string" }, "token": { "type": "string" } } }, "server.globalResourcesAxis": { "type": "object", "properties": { "axis": { "description": "cpu|mem|io|disk|network", "type": "string" }, "capacityDbu": { "description": "projected to DBU (0 for network)", "type": "number" }, "capacityRaw": { "description": "native units", "type": "number" }, "consumedDbu": { "description": "consumed on this axis (0 for network)", "type": "number" }, "source": { "description": "config|agents", "type": "string" }, "unit": { "description": "cores|MB|iops|GB|Mbps", "type": "string" } } }, "server.globalResourcesCluster": { "type": "object", "properties": { "apu": { "description": "real consumed APU pivot -- the cluster's share of infra APU", "type": "number" }, "cluster": { "type": "string" }, "dbu": { "description": "real consumed pivot (max axis) -- the cluster's share of infra DBU", "type": "number" }, "dbuCpu": { "type": "number" }, "dbuDisk": { "type": "number" }, "dbuIo": { "type": "number" }, "dbuMem": { "type": "number" }, "gwu": { "description": "gateway bandwidth consumed, in GWU (#1872)", "type": "number" }, "planApu": { "description": "the cluster's APU reservation contract (prov-service-plan-apu)", "type": "number" }, "planDbu": { "description": "the cluster's DBU reservation contract (prov-service-plan-dbu)", "type": "number" }, "planGwu": { "description": "its GWU plan: gateway capacity / clusters present, or pinned", "type": "number" }, "planStatefulDbu": { "description": "their DBU reservation, own line (never in planDbu)", "type": "number" }, "servers": { "type": "integer" }, "statefulDbu": { "description": "real consumed DBU of the stateful apps (app-stateful)", "type": "number" } } }, "server.globalResourcesResponse": { "type": "object", "properties": { "agentList": { "description": "Agents the RM has placement for, each with the exact graphite token its per-agent series are\nkeyed on (resourcemanager.agent.\u003ctoken\u003e.{dbu,apu,plan_dbu,plan_apu}) so the GUI targets them.", "type": "array", "items": { "$ref": "#/definitions/server.globalResourcesAgent" } }, "agents": { "type": "integer" }, "axes": { "type": "array", "items": { "$ref": "#/definitions/server.globalResourcesAxis" } }, "bindingAxis": { "type": "string" }, "bindingAxisApu": { "type": "string" }, "capacityApu": { "description": "APU (Compute) infra view -- the SAME metal projected into APU (1c/2GB/10GB, no IO).", "type": "number" }, "capacityDbu": { "type": "number" }, "capacityGwu": { "description": "the same capacity in GWU (1 GWU = cloud18-marketplace-gwu-unit-mbit Mb/s)", "type": "number" }, "clusters": { "type": "array", "items": { "$ref": "#/definitions/server.globalResourcesCluster" } }, "consumedApu": { "type": "number" }, "consumedDbu": { "type": "number" }, "consumedGwu": { "description": "Σ clusters", "type": "number" }, "gatewayCapacityMbit": { "type": "number" }, "gatewayDomains": { "description": "Gateways: the shared uplinks the clusters' traffic is tracked against (#1872), Mb/s.", "type": "array", "items": { "type": "string" } }, "ledger": { "description": "the physical ledger: plan pot + over-commit pot, every unit from ONE metal", "allOf": [ { "$ref": "#/definitions/cluster.ResourceLedger" } ] }, "quotaPct": { "type": "number" }, "slackApu": { "type": "number" }, "slackDbu": { "type": "number" }, "unitRatios": { "description": "the manager's ratios, the page's only source of unit arithmetic", "type": "object", "additionalProperties": { "$ref": "#/definitions/cluster.UnitRatios" } }, "usableApu": { "type": "number" }, "usableDbu": { "type": "number" }, "usableGwu": { "description": "= capacity: the uplink has no quota", "type": "number" } } }, "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" } } } } }