diff --git a/docs/reference/cli-command-catalogue.md b/docs/reference/cli-command-catalogue.md index 7f910e2..b3826a0 100644 --- a/docs/reference/cli-command-catalogue.md +++ b/docs/reference/cli-command-catalogue.md @@ -5,7 +5,7 @@ Auto-generated from `specs/*.json.gz` via `scripts/generate_cli_command_catalogu Lists every operation the CLI dispatches. Deprecated operations and the `internal` resource are excluded. Each row corresponds to a concrete `--api-scope` / `--api-version` combination. **Services:** 24 -**Operations:** 1962 +**Operations:** 1990 ## achievement @@ -393,11 +393,16 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna ## csm - Spec name: `csm` -- Resources: 9 -- Operations: 52 +- Resources: 13 +- Operations: 80 | Resource | Method | Scope | Version | HTTP | Path | Summary | |----------|--------|-------|---------|------|------|---------| +| `app-ui` | `create` | admin | v1 | POST | `/csm/v1/admin/namespaces/{namespace}/app-ui` | Creates an App UI instance | +| `app-ui` | `delete` | admin | v1 | DELETE | `/csm/v1/admin/namespaces/{namespace}/app-ui/{appUiName}` | Deletes an App UI instance | +| `app-ui` | `list` | admin | v1 | GET | `/csm/v1/admin/namespaces/{namespace}/app-ui` | Lists all App UI instances in a namespace | +| `app-ui` | `upload-assets` | admin | v1 | POST | `/csm/v1/admin/namespaces/{namespace}/app-ui/{appUiName}/files/upload` | Uploads App UI assets as a ZIP archive | +| `apps` | `apply` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/apply` | Creates or updates an Extend app from a declarative spec | | `apps` | `create` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}` | Creates a new extend app | | `apps` | `delete` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/apps/{app}` | Deletes the extend app by name | | `apps` | `get` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/apps/{app}` | Retrieves the extend app by name | @@ -420,11 +425,23 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna | `deployments` | `delete` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/deployments/{deploymentId}` | Deletes a deployment by ID | | `deployments` | `get` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/deployments/{deploymentId}` | Retrieves a deployment by ID | | `deployments` | `list` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/deployments` | Fetches the List of Deployments | +| `files` | `get` | admin | v1 | GET | `/csm/v1/admin/namespaces/{namespace}/files/{filePath}` | Retrieves a hosted static file | | `images` | `delete` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/images` | Deletes app images | | `images` | `list` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/images` | Lists container images for the app | +| `key-value` | `create-cluster` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters` | Creates Key-Value Cluster | +| `key-value` | `create-credentials` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/credentials` | Generates a Key-Value credential for an integrated Extend app | +| `key-value` | `create-integration` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/integrations` | Integrates an Extend app with a Key-Value cluster | +| `key-value` | `delete-cluster` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters/{resourceId}` | Deletes the Key-Value cluster | +| `key-value` | `delete-integration` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/integrations` | Removes an Extend app's Key-Value integration | +| `key-value` | `get-cluster` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/keyvalue/cluster/{resourceId}` | Retrieves Key-Value cluster information | +| `key-value` | `get-integration` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/integrations` | Retrieves an Extend app's Key-Value integration | +| `key-value` | `get-limit-config` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters/limitconfig` | Retrieves Key-Value cluster limit configuration | +| `key-value` | `list-clusters` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters` | Lists Key-Value clusters | +| `key-value` | `list-integrations` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/keyvalue/{resourceId}/integrations` | Lists Extend apps integrated with a Key-Value cluster | +| `key-value` | `update-cluster` | admin | v2 | PUT | `/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters/{resourceId}` | Updates Key-Value cluster configuration | | `nosql` | `create` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/databases` | Creates NoSQL Database for Extend App | | `nosql` | `create-cluster` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/nosql/clusters` | Creates NoSQL Cluster | -| `nosql` | `create-credentials` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/crendentials` | Creates a new database credential for the customer | +| `nosql` | `create-credentials` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/credentials` | Creates a NoSQL database credential for an Extend app | | `nosql` | `delete` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/databases` | Deletes NoSQL Database for Extend App | | `nosql` | `delete-cluster` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/nosql/clusters` | Deletes the NoSQL cluster | | `nosql` | `get` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/databases` | Retrieves the NoSQL database for the extend app | @@ -436,6 +453,17 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna | `nosql` | `update-cluster` | admin | v2 | PUT | `/csm/v2/admin/namespaces/{namespace}/nosql/clusters` | Updates the NoSQL cluster configuration | | `resource-limits` | `list` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/resources/limits` | Retrieves configurable resource limits for extend apps | | `service-messages` | `list` | public | v1 | GET | `/csm/v1/messages` | Retrieves service messages | +| `sql` | `create` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/databases` | Creates SQL Database for Extend App | +| `sql` | `create-cluster` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/sql/clusters` | Creates SQL Cluster | +| `sql` | `create-credentials` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/credentials` | Creates a SQL database credential for an Extend app | +| `sql` | `delete` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/databases` | Deletes SQL Database for Extend App | +| `sql` | `delete-cluster` | admin | v2 | DELETE | `/csm/v2/admin/namespaces/{namespace}/sql/clusters` | Deletes the SQL cluster | +| `sql` | `get` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/databases` | Retrieves the SQL database for an Extend app | +| `sql` | `get-cluster` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/sql/clusters` | Retrieves SQL cluster information | +| `sql` | `list-apps` | admin | v2 | GET | `/csm/v2/admin/namespaces/{namespace}/sql/{resourceId}/apps` | Lists Extend apps using a SQL cluster | +| `sql` | `start-cluster` | admin | v2 | PUT | `/csm/v2/admin/namespaces/{namespace}/sql/clusters/start` | Starts the SQL cluster | +| `sql` | `stop-cluster` | admin | v2 | PUT | `/csm/v2/admin/namespaces/{namespace}/sql/clusters/stop` | Stops the SQL cluster | +| `sql` | `update-cluster` | admin | v2 | PUT | `/csm/v2/admin/namespaces/{namespace}/sql/clusters` | Updates SQL cluster configuration | | `subscriptions` | `add` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/subscriptions` | Subscribes users to app notifications | | `subscriptions` | `add-my` | admin | v2 | POST | `/csm/v2/admin/namespaces/{namespace}/apps/{app}/subscriptions/me` | Subscribes the authenticated user to app notifications | | `subscriptions` | `delete` | admin | v3 | DELETE | `/csm/v3/admin/namespaces/{namespace}/apps/{app}/subscriptions` | Removes a user's notification subscription by user ID or email | diff --git a/specs/csm.json.gz b/specs/csm.json.gz index d398e94..df951f3 100644 Binary files a/specs/csm.json.gz and b/specs/csm.json.gz differ diff --git a/src/catalogue/manifest.rs b/src/catalogue/manifest.rs index 8ce4ece..ab2bdba 100644 --- a/src/catalogue/manifest.rs +++ b/src/catalogue/manifest.rs @@ -360,6 +360,7 @@ pub static RESOURCE_DESCRIPTIONS: &[(&str, &str, &str)] = &[ "Protected user records with restricted access", ), // csm + ("csm", "app-ui", "App UI hosting and asset management"), ("csm", "apps", "Custom service application lifecycle"), ( "csm", @@ -367,7 +368,13 @@ pub static RESOURCE_DESCRIPTIONS: &[(&str, &str, &str)] = &[ "Service configuration variables and secrets", ), ("csm", "deployments", "Service deployment management"), + ("csm", "files", "Hosted static file access"), ("csm", "images", "Container image registry and management"), + ( + "csm", + "key-value", + "Key-Value store configuration and management", + ), ( "csm", "nosql", @@ -379,6 +386,7 @@ pub static RESOURCE_DESCRIPTIONS: &[(&str, &str, &str)] = &[ "service-messages", "Service messaging and notifications", ), + ("csm", "sql", "SQL database configuration and management"), ( "csm", "subscriptions", diff --git a/src/runtime/dispatch/confirmation.rs b/src/runtime/dispatch/confirmation.rs index d0c8cac..6cc887c 100644 --- a/src/runtime/dispatch/confirmation.rs +++ b/src/runtime/dispatch/confirmation.rs @@ -16,7 +16,7 @@ pub(crate) fn requires_confirmation(http_method: HttpMethod, operation_name: &st HttpMethod::Post | HttpMethod::Put | HttpMethod::Patch ) { const RISKY_KEYWORDS: &[&str] = &[ - "delete", "ban", "revoke", "reset", "disable", "remove", "force", + "delete", "ban", "revoke", "reset", "disable", "remove", "force", "stop", ]; let lowered_name = operation_name.to_ascii_lowercase(); return RISKY_KEYWORDS @@ -92,4 +92,11 @@ mod tests { assert!(requires_confirmation(HttpMethod::Post, "Ban-User")); assert!(requires_confirmation(HttpMethod::Post, "RESET-PASSWORD")); } + + /// Stopping a cluster is disruptive and confirms, while starting one does not + #[test] + fn test_stop_cluster_triggers_confirmation() { + assert!(requires_confirmation(HttpMethod::Put, "stop-cluster")); + assert!(!requires_confirmation(HttpMethod::Put, "start-cluster")); + } } diff --git a/tests/fixtures/baselines/csm_input_contract.json b/tests/fixtures/baselines/csm_input_contract.json index df6bc65..890d9bc 100644 --- a/tests/fixtures/baselines/csm_input_contract.json +++ b/tests/fixtures/baselines/csm_input_contract.json @@ -1,5 +1,122 @@ { + "app-ui": [ + { + "http_method": "POST", + "method": "create", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v1/admin/namespaces/{namespace}/app-ui", + "permissions": [], + "summary": "Creates an App UI instance", + "x_operation_id": "csm/admin/app-ui/v1/create" + }, + { + "http_method": "DELETE", + "method": "delete", + "parameters": [ + { + "location": "path", + "name": "appUiName", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v1/admin/namespaces/{namespace}/app-ui/{appUiName}", + "permissions": [], + "summary": "Deletes an App UI instance", + "x_operation_id": "csm/admin/app-ui/v1/delete" + }, + { + "http_method": "GET", + "method": "list", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "query", + "name": "limit", + "required": false + }, + { + "location": "query", + "name": "name", + "required": false + }, + { + "location": "query", + "name": "offset", + "required": false + } + ], + "path": "/csm/v1/admin/namespaces/{namespace}/app-ui", + "permissions": [], + "summary": "Lists all App UI instances in a namespace", + "x_operation_id": "csm/admin/app-ui/v1/list" + }, + { + "http_method": "POST", + "method": "upload-assets", + "parameters": [ + { + "location": "form_data", + "name": "file", + "required": true + }, + { + "location": "path", + "name": "appUiName", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "query", + "name": "version", + "required": false + } + ], + "path": "/csm/v1/admin/namespaces/{namespace}/app-ui/{appUiName}/files/upload", + "permissions": [], + "summary": "Uploads App UI assets as a ZIP archive", + "x_operation_id": "csm/admin/app-ui/v1/upload-assets" + } + ], "apps": [ + { + "http_method": "POST", + "method": "apply", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/apply", + "permissions": [], + "summary": "Creates or updates an Extend app from a declarative spec", + "x_operation_id": "csm/admin/apps/v2/apply" + }, { "http_method": "POST", "method": "create", @@ -500,6 +617,28 @@ "x_operation_id": "csm/admin/deployments/v2/list" } ], + "files": [ + { + "http_method": "GET", + "method": "get", + "parameters": [ + { + "location": "path", + "name": "filePath", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v1/admin/namespaces/{namespace}/files/{filePath}", + "permissions": [], + "summary": "Retrieves a hosted static file", + "x_operation_id": "csm/admin/files/v1/get" + } + ], "images": [ { "http_method": "DELETE", @@ -547,6 +686,218 @@ "x_operation_id": "csm/admin/images/v2/list" } ], + "key-value": [ + { + "http_method": "POST", + "method": "create-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters", + "permissions": [], + "summary": "Creates Key-Value Cluster", + "x_operation_id": "csm/admin/key-value/v2/create-cluster" + }, + { + "http_method": "POST", + "method": "create-credentials", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/credentials", + "permissions": [], + "summary": "Generates a Key-Value credential for an integrated Extend app", + "x_operation_id": "csm/admin/key-value/v2/create-credentials" + }, + { + "http_method": "POST", + "method": "create-integration", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/integrations", + "permissions": [], + "summary": "Integrates an Extend app with a Key-Value cluster", + "x_operation_id": "csm/admin/key-value/v2/create-integration" + }, + { + "http_method": "DELETE", + "method": "delete-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "path", + "name": "resourceId", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters/{resourceId}", + "permissions": [], + "summary": "Deletes the Key-Value cluster", + "x_operation_id": "csm/admin/key-value/v2/delete-cluster" + }, + { + "http_method": "DELETE", + "method": "delete-integration", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/integrations", + "permissions": [], + "summary": "Removes an Extend app's Key-Value integration", + "x_operation_id": "csm/admin/key-value/v2/delete-integration" + }, + { + "http_method": "GET", + "method": "get-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "path", + "name": "resourceId", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/cluster/{resourceId}", + "permissions": [], + "summary": "Retrieves Key-Value cluster information", + "x_operation_id": "csm/admin/key-value/v2/get-cluster" + }, + { + "http_method": "GET", + "method": "get-integration", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/keyvalue/integrations", + "permissions": [], + "summary": "Retrieves an Extend app's Key-Value integration", + "x_operation_id": "csm/admin/key-value/v2/get-integration" + }, + { + "http_method": "GET", + "method": "get-limit-config", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters/limitconfig", + "permissions": [], + "summary": "Retrieves Key-Value cluster limit configuration", + "x_operation_id": "csm/admin/key-value/v2/get-limit-config" + }, + { + "http_method": "GET", + "method": "list-clusters", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "query", + "name": "refresh", + "required": false + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters", + "permissions": [], + "summary": "Lists Key-Value clusters", + "x_operation_id": "csm/admin/key-value/v2/list-clusters" + }, + { + "http_method": "GET", + "method": "list-integrations", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "path", + "name": "resourceId", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/{resourceId}/integrations", + "permissions": [], + "summary": "Lists Extend apps integrated with a Key-Value cluster", + "x_operation_id": "csm/admin/key-value/v2/list-integrations" + }, + { + "http_method": "PUT", + "method": "update-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "path", + "name": "resourceId", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/keyvalue/clusters/{resourceId}", + "permissions": [], + "summary": "Updates Key-Value cluster configuration", + "x_operation_id": "csm/admin/key-value/v2/update-cluster" + } + ], "nosql": [ { "http_method": "POST", @@ -598,9 +949,9 @@ "required": true } ], - "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/crendentials", + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/nosql/credentials", "permissions": [], - "summary": "Creates a new database credential for the customer", + "summary": "Creates a NoSQL database credential for an Extend app", "x_operation_id": "csm/admin/nosql/v2/create-credentials" }, { @@ -802,6 +1153,218 @@ "x_operation_id": "csm/public/service-messages/v1/list" } ], + "sql": [ + { + "http_method": "POST", + "method": "create", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/databases", + "permissions": [], + "summary": "Creates SQL Database for Extend App", + "x_operation_id": "csm/admin/sql/v2/create" + }, + { + "http_method": "POST", + "method": "create-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/clusters", + "permissions": [], + "summary": "Creates SQL Cluster", + "x_operation_id": "csm/admin/sql/v2/create-cluster" + }, + { + "http_method": "POST", + "method": "create-credentials", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/credentials", + "permissions": [], + "summary": "Creates a SQL database credential for an Extend app", + "x_operation_id": "csm/admin/sql/v2/create-credentials" + }, + { + "http_method": "DELETE", + "method": "delete", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/databases", + "permissions": [], + "summary": "Deletes SQL Database for Extend App", + "x_operation_id": "csm/admin/sql/v2/delete" + }, + { + "http_method": "DELETE", + "method": "delete-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/clusters", + "permissions": [], + "summary": "Deletes the SQL cluster", + "x_operation_id": "csm/admin/sql/v2/delete-cluster" + }, + { + "http_method": "GET", + "method": "get", + "parameters": [ + { + "location": "path", + "name": "app", + "required": true + }, + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/apps/{app}/sql/databases", + "permissions": [], + "summary": "Retrieves the SQL database for an Extend app", + "x_operation_id": "csm/admin/sql/v2/get" + }, + { + "http_method": "GET", + "method": "get-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/clusters", + "permissions": [], + "summary": "Retrieves SQL cluster information", + "x_operation_id": "csm/admin/sql/v2/get-cluster" + }, + { + "http_method": "GET", + "method": "list-apps", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + }, + { + "location": "path", + "name": "resourceId", + "required": true + }, + { + "location": "query", + "name": "appName", + "required": false + }, + { + "location": "query", + "name": "gameNamespace", + "required": false + }, + { + "location": "query", + "name": "limit", + "required": false + }, + { + "location": "query", + "name": "offset", + "required": false + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/{resourceId}/apps", + "permissions": [], + "summary": "Lists Extend apps using a SQL cluster", + "x_operation_id": "csm/admin/sql/v2/list-apps" + }, + { + "http_method": "PUT", + "method": "start-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/clusters/start", + "permissions": [], + "summary": "Starts the SQL cluster", + "x_operation_id": "csm/admin/sql/v2/start-cluster" + }, + { + "http_method": "PUT", + "method": "stop-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/clusters/stop", + "permissions": [], + "summary": "Stops the SQL cluster", + "x_operation_id": "csm/admin/sql/v2/stop-cluster" + }, + { + "http_method": "PUT", + "method": "update-cluster", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/csm/v2/admin/namespaces/{namespace}/sql/clusters", + "permissions": [], + "summary": "Updates SQL cluster configuration", + "x_operation_id": "csm/admin/sql/v2/update-cluster" + } + ], "subscriptions": [ { "http_method": "POST",