{
  "swagger": "2.0",
  "info": {
    "title": "TiDB Cloud Dedicated API",
    "description": "*TiDB Cloud API is in beta.*\n\nThis API manages [TiDB Cloud Dedicated](https://docs.pingcap.com/tidbcloud/select-cluster-tier/#tidb-cloud-dedicated) clusters. For TiDB Cloud Starter or TiDB Cloud Essential clusters, use the [TiDB Cloud Starter and Essential API](). For more information about TiDB Cloud API, see [TiDB Cloud API Overview](https://docs.pingcap.com/tidbcloud/api-overview/).\n\n# Overview\n\nThe TiDB Cloud API is a [REST interface](https://en.wikipedia.org/wiki/Representational_state_transfer) that provides you with programmatic access to manage clusters and related resources within TiDB Cloud.\n\nThe API has the following features:\n\n- **JSON entities.** All entities are expressed in JSON.\n- **HTTPS-only.** You can only access the API via HTTPS, ensuring all the data sent over the network is encrypted with TLS.\n- **Key-based access and digest authentication.** Before you access TiDB Cloud API, you must generate an API key. All requests are authenticated through [HTTP Digest Authentication](https://en.wikipedia.org/wiki/Digest_access_authentication), ensuring the API key is never sent over the network.\n\n# Get Started\n\nThis guide helps you make your first API call to TiDB Cloud API. You'll learn how to authenticate a request, build a request, and interpret the response.\n\n## Prerequisites\n\nTo complete this guide, you need to perform the following tasks:\n\n- Create a [TiDB Cloud account](https://tidbcloud.com/free-trial)\n- Install [curl](https://curl.se/)\n\n## Step 1. Create an API key\n\nTo create an API key, log in to your TiDB Cloud console. Navigate to the [**API Keys**](https://tidbcloud.com/org-settings/api-keys) page of your organization, and create an API key.\n\nAn API key contains a public key and a private key. Copy and save them in a secure location. You will need to use the API key later in this guide.\n\nFor more details about creating API key, refer to [API Key Management](#section/Authentication/API-Key-Management).\n\n## Step 2. Make your first API call\n\n### Build an API call\n\nTiDB Cloud API call consists of the following components:\n\n- **A host**. The host for TiDB Cloud API is <https://dedicated.tidbapi.com>.\n- **An API Key**. The public key and the private key are required for authentication.\n- **A request**. When submitting data to a resource via `POST`, `PATCH`, or `PUT`, you must submit your payload in JSON.\n\nIn this guide, you call the [List clusters](#tag/Cluster/operation/ClusterService_ListClusters) endpoint. For the detailed description of the endpoint, see the [API reference](#tag/Cluster/operation/ClusterService_ListClusters).\n\n### Call an API endpoint\n\nTo get all clusters in your organization, run the following command in your terminal. Remember to change `YOUR_PUBLIC_KEY` to your public key and `YOUR_PRIVATE_KEY` to your private key.\n\n```shell\ncurl --digest \\\n --user 'YOUR_PUBLIC_KEY:YOUR_PRIVATE_KEY' \\\n --request GET \\\n --url 'https://dedicated.tidbapi.com/v1beta1/clusters'\n```\n\n## Step 3. Check the response\n\nAfter making the API call, if the status code in response is `200` and you see details about all clusters in your organization, your request is successful.\n\n# Authentication\n\nThe TiDB Cloud API uses [HTTP Digest Authentication](https://en.wikipedia.org/wiki/Digest_access_authentication). It protects your private key from being sent over the network. For more details about HTTP Digest Authentication, refer to the [IETF RFC](https://datatracker.ietf.org/doc/html/rfc7616).\n\n## API key overview\n\n- The API key contains a public key and a private key, which act as the username and password required in the HTTP Digest Authentication. The private key only displays upon the key creation.\n- The API key belongs to your organization and acts as the `Organization Owner` role. You can check [permissions of owner](https://docs.pingcap.com/tidbcloud/manage-user-access#configure-member-roles).\n- You must provide the correct API key in every request. Otherwise, the TiDB Cloud responds with a `401` error.\n\n## API key management\n\n### Create an API key\n\nOnly the **owner** of an organization can create an API key.\n\nTo create an API key in an organization, perform the following steps:\n\n1. In the [TiDB Cloud console](https://tidbcloud.com), switch to your target organization using the combo box in the upper-left corner.\n2. In the left navigation pane, click **Organization Settings** > **API Keys**.\n3. On the **API Keys** page, click **Create API Key**.\n4. Enter a description for your API key. The role of the API key is always `Organization Owner` currently.\n5. Click **Next**. Copy and save the public key and the private key.\n6. Make sure that you have copied and saved the private key in a secure location. The private key only displays upon the creation. After leaving this page, you will not be able to get the full private key again.\n7. Click **Done**.\n\n### View details of an API key\n\nTo view details of an API key, perform the following steps:\n\n1. In the [TiDB Cloud console](https://tidbcloud.com), switch to your target organization using the combo box in the upper-left corner.\n2. In the left navigation pane, click **Organization Settings** > **API Keys**.\n3. You can view the details of the API keys on the page.\n\n### Edit an API key\n\nOnly the **owner** of an organization can modify an API key.\n\nTo edit an API key in an organization, perform the following steps:\n\n1. In the [TiDB Cloud console](https://tidbcloud.com), switch to your target organization using the combo box in the upper-left corner.\n2. In the left navigation pane, click **Organization Settings** > **API Keys**.\n3. On the **API Keys** page, click **...** in the API key row that you want to change, and then click **Edit**.\n4. You can update the API key description.\n5. Click **Update**.\n\n### Delete an API key\n\nOnly the **owner** of an organization can delete an API key.\n\nTo delete an API key in an organization, perform the following steps:\n\n1. In the [TiDB Cloud console](https://tidbcloud.com), switch to your target organization using the combo box in the upper-left corner.\n2. In the left navigation pane, click **Organization Settings** > **API Keys**.\n3. On the **API Keys** page, click **...** in the API key row that you want to delete, and then click **Delete**.\n4. Click **I understand, delete it.**\n\n# Rate Limiting\n\nThe TiDB Cloud API allows up to 100 requests per minute per API key. If you exceed the rate limit, the API returns a `429` error. For more quota, you can [submit a request](https://support.pingcap.com/hc/en-us/requests/new?ticket_form_id=7800003722519) to contact our support team.\n\nEach API request returns the following headers about the limit.\n\n- `X-Ratelimit-Limit-Minute`: The number of requests allowed per minute. It is 100 currently.\n- `X-Ratelimit-Remaining-Minute`: The number of remaining requests in the current minute. When it reaches `0`, the API returns a `429` error and indicates that you exceed the rate limit.\n- `X-Ratelimit-Reset`: The time in seconds at which the current rate limit resets.\n\nIf you exceed the rate limit, an error response returns like this.\n\n```\n> HTTP/2 429\n> date: Fri, 22 Jul 2022 05:28:37 GMT\n> content-type: application/json\n> content-length: 66\n> x-ratelimit-reset: 23\n> x-ratelimit-remaining-minute: 0\n> x-ratelimit-limit-minute: 100\n> x-kong-response-latency: 2\n> server: kong/2.8.1\n\n> {\"details\":[],\"code\":49900007,\"message\":\"The request exceeded the limit of 100 times per apikey per minute. For more quota, please contact us: https://support.pingcap.com/hc/en-us/requests/new?ticket_form_id=7800003722519\"}\n```\n\n# API Changelog\n\nThis changelog lists all changes to the TiDB Cloud API.\n\n<!-- In reverse chronological order -->\n\n## 20250812\n\n- Initial release of the TiDB Cloud Dedicated API, including the following resources and endpoints:\n\t* Cluster\r\n\t\t* [List clusters](#tag/Cluster/operation/ClusterService_ListClusters)\r\n\t\t* [Create a cluster](#tag/Cluster/operation/ClusterService_CreateCluster)\r\n\t\t* [Get a cluster](#tag/Cluster/operation/ClusterService_GetCluster)\r\n\t\t* [Delete a cluster](#tag/Cluster/operation/ClusterService_DeleteCluster)\r\n\t\t* [Update a cluster](#tag/Cluster/operation/ClusterService_UpdateCluster)\r\n\t\t* [Pause a cluster](#tag/Cluster/operation/ClusterService_PauseCluster)\r\n\t\t* [Resume a cluster](#tag/Cluster/operation/ClusterService_ResumeCluster)\r\n\t\t* [Reset the root password of a cluster](#tag/Cluster/operation/ClusterService_ResetRootPassword)\r\n\t\t* [List node quotas for your organization](#tag/Cluster/operation/ClusterService_ShowNodeQuota)\r\n\t\t* [Get log redaction policy](#tag/Cluster/operation/ClusterService_GetLogRedactionPolicy)\r\n\t* Region\r\n\t\t* [List regions](#tag/Region/operation/RegionService_ListRegions)\r\n\t\t* [Get a region](#tag/Region/operation/RegionService_GetRegion)\r\n\t\t* [List cloud providers](#tag/Region/operation/RegionService_ShowCloudProviders)\r\n\t\t* [List node specs](#tag/Region/operation/RegionService_ListNodeSpecs)\r\n\t\t* [Get a node spec](#tag/Region/operation/RegionService_GetNodeSpec)\r\n\t* Private Endpoint Connection\r\n\t\t* [Get private link service for a TiDB node group](#tag/Private-Endpoint-Connection/operation/PrivateEndpointConnectionService_GetPrivateLinkService)\r\n\t\t* [Create a private endpoint connection](#tag/Private-Endpoint-Connection/operation/PrivateEndpointConnectionService_CreatePrivateEndpointConnection)\r\n\t\t* [List private endpoint connections](#tag/Private-Endpoint-Connection/operation/PrivateEndpointConnectionService_ListPrivateEndpointConnections)\r\n\t\t* [Get a private endpoint connection](#tag/Private-Endpoint-Connection/operation/PrivateEndpointConnectionService_GetPrivateEndpointConnection)\r\n\t\t* [Delete a private endpoint connection](#tag/Private-Endpoint-Connection/operation/PrivateEndpointConnectionService_DeletePrivateEndpointConnection)\r\n\t* Import\r\n\t\t* [List import tasks](#tag/Import/operation/ListImports)\r\n\t\t* [Create an import task](#tag/Import/operation/CreateImport)\r\n\t\t* [Get an import task](#tag/Import/operation/GetImport)\r\n\t\t* [Cancel an import task](#tag/Import/operation/CancelImport)\r\n",
    "version": "v1beta1"
  },
  "tags": [
    {
      "name": "ClusterService"
    },
    {
      "name": "CustomerManagedEncryptionKeyService"
    },
    {
      "name": "DatabaseAuditLogService"
    },
    {
      "name": "MaintenanceService"
    },
    {
      "name": "NetworkContainerService"
    },
    {
      "name": "PrivateEndpointConnectionService"
    },
    {
      "name": "RegionService"
    },
    {
      "name": "TidbNodeGroupService"
    }
  ],
  "host": "dedicated.tidbapi.com",
  "basePath": "/api/v2023/dedicated/v1beta1",
  "schemes": ["https"],
  "consumes": ["application/json"],
  "produces": ["application/json"],
  "paths": {
    "/api/v2023/dedicated/v1beta1/clusters": {
      "get": {
        "summary": "List clusters",
        "description": "Lists all clusters in your organization. You can filter results by project, region, cluster state, or specific cluster IDs.",
        "operationId": "ClusterService_ListClusters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1ListClustersResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterIds",
            "description": "A list of cluster IDs. If specified, only clusters matching these IDs are returned.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "regionIds",
            "description": "A list of region IDs. If specified, only clusters in these regions are returned.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "clusterStates",
            "description": "A list of cluster states. If specified, only clusters in these states are returned.\n\n`\"UPGRADING\"`, `\"IMPORTING\"`, `\"MODIFYING\"`, `\"PAUSING\"`, `\"PAUSED\"`, and `\"RESUMING\"` states are only available for [TiDB Cloud Dedicated](https://docs.pingcap.com/tidbcloud/select-cluster-tier/#tidb-cloud-dedicated) clusters.\n\n - CREATING: Cluster is being created.\n - DELETING: Cluster is being deleted.\n - ACTIVE: Cluster is active for use.\n - RESTORING: Cluster data is being restored.\n - MAINTENANCE: Cluster is under maintenance.\n - DELETED: Cluster has been deleted.\n - INACTIVE: Cluster is not active, but not being deleted.\n - UPGRADING: Cluster is being updated.\nOnly for Dedicated Cluster.\n - IMPORTING: Cluster is being imported.\nOnly for Dedicated Cluster.\n - MODIFYING: Cluster is being modified.\nOnly for Dedicated Cluster.\n - PAUSING: Cluster is being paused.\nOnly for Dedicated Cluster.\n - PAUSED: Cluster is paused.\nOnly for Dedicated Cluster.\n - RESUMING: Cluster is resuming.\nOnly for Dedicated Cluster.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "enum": [
                "CREATING",
                "DELETING",
                "ACTIVE",
                "RESTORING",
                "MAINTENANCE",
                "DELETED",
                "INACTIVE",
                "UPGRADING",
                "IMPORTING",
                "MODIFYING",
                "PAUSING",
                "PAUSED",
                "RESUMING"
              ],
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "globalMetaOnly",
            "description": "When true, returns basic cluster metadata for each matching cluster.\nWhen false or omitted, returns the full cluster information (default).",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of clusters to return. If not specified, at most 10 clusters will be returned. The maximum value is `100`. Values greater than `100` are set to `100`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": "10"
          },
          {
            "name": "pageToken",
            "description": "The pagination token received from a previous [List clusters](#tag/ClusterService/operation/ClusterService_ListClusters) request. Use this token to retrieve the next page of results.\n\n**Note**: When paginating, all other parameters must match the original request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of clusters to skip before returning results. If the value exceeds the total number of clusters, the response is `200` with an empty list and no `nextPageToken`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      },
      "post": {
        "summary": "Create a cluster",
        "description": "Creates a new [TiDB Cloud Dedicated](https://docs.pingcap.com/tidbcloud/select-cluster-tier/#tidb-cloud-dedicated) cluster. Before creating a TiDB Cloud Dedicated cluster, you must set a [Project CIDR on TiDB Cloud console](https://docs.pingcap.com/tidbcloud/set-up-vpc-peering-connections/#prerequisite-set-a-cidr-for-a-region).",
        "operationId": "ClusterService_CreateCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          },
          {
            "name": "validateOnly",
            "description": "If set to `true`, the request is validated but not executed. Defaults to `false`.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{auditLogConfig.clusterId}/auditLogConfig": {
      "patch": {
        "summary": "Update the audit log config of a cluster",
        "operationId": "DatabaseAuditLogService_UpdateAuditLogConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1AuditLogConfig"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "auditLogConfig.clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogConfig",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "awsRoleArn": {
                  "type": "string"
                },
                "azureSasToken": {
                  "type": "string"
                },
                "bucketManager": {
                  "$ref": "#/definitions/AuditLogConfigBucketManager"
                },
                "bucketRegionId": {
                  "type": "string",
                  "title": "Format: {cloud_provider}-{region_code}"
                },
                "bucketUri": {
                  "type": "string"
                },
                "enabled": {
                  "type": "boolean",
                  "x-nullable": true
                },
                "format": {
                  "$ref": "#/definitions/v1beta1AuditLogConfigFormat"
                },
                "rotationPolicy": {
                  "$ref": "#/definitions/v1beta1AuditLogConfigRotationPolicy"
                },
                "unredacted": {
                  "type": "boolean",
                  "x-nullable": true
                }
              }
            }
          },
          {
            "name": "validateOnly",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{auditLogFilterRule.clusterId}/auditLogFilterRules": {
      "post": {
        "summary": "Create an audit log filter rule",
        "operationId": "DatabaseAuditLogService_CreateAuditLogFilterRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRule"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "auditLogFilterRule.clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogFilterRule",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "accessTypeList": {
                  "description": "Deprecated. Only available when `AuditLogConfig.legacy` is true.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "auditLogFilterRuleId": {
                  "description": "audit_log_filter_rule_id is a unique identifier for the rule. Currently, the value is the same as user_expr.\nFor legacy, the audit_log_filter_rule_id is a number.",
                  "type": "string",
                  "readOnly": true
                },
                "dbExpr": {
                  "description": "Deprecated. Only available when `AuditLogConfig.legacy` is true.\nThe express is a glob pattern. Refer to https://github.com/pingcap/tidb/blob/master/pkg/util/table-filter/README.md#wildcards.",
                  "type": "string"
                },
                "disabled": {
                  "description": "Default is enabled.",
                  "type": "boolean"
                },
                "displayName": {
                  "description": "If not set, default to the value of `user_expr`.",
                  "type": "string"
                },
                "eventTypes": {
                  "description": "If empty, it means all events.",
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRuleEventType"
                  }
                },
                "name": {
                  "type": "string",
                  "readOnly": true,
                  "title": "Format: auditLogFilterRules/{audit_log_filter_rule_id}"
                },
                "tableExpr": {
                  "description": "Deprecated. Only available when `AuditLogConfig.legacy` is true.\nThe express is a glob pattern. Refer to https://github.com/pingcap/tidb/blob/master/pkg/util/table-filter/README.md#wildcards.",
                  "type": "string"
                },
                "userExpr": {
                  "description": "Format: <user>@<host>.\nThe audit user <user>@<host> consists of the username and hostname with @ as separator, where @ and <host> are optional.\nBoth username and hostname can be identifiers with wildcards:\n  - % for matching any username/hostname.\n  - _ for matching any character.\nFor multiple filter rules, if their user_expr fields match the same username, that matches the longest username takes effect.\nIn general, this field is required. Only when `AuditLogConfig.legacy` is true, this field is optional.\nFor legacy, the express is a regex.",
                  "type": "string"
                }
              }
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{auditLogFilterRule.clusterId}/auditLogFilterRules/{auditLogFilterRule.auditLogFilterRuleId}:replaceAuditLogFilterRule": {
      "post": {
        "summary": "Replace an audit log filter rule. All fields of the rule will be replaced with the provided values.",
        "operationId": "DatabaseAuditLogService_ReplaceAuditLogFilterRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ReplaceAuditLogFilterRuleResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "auditLogFilterRule.clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogFilterRule.auditLogFilterRuleId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogFilterRule",
            "description": "Required. The audit log filter rule to update.",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "disabled": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "eventTypes": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRuleEventType"
                  }
                },
                "userExpr": {
                  "type": "string"
                }
              },
              "title": "Required. The audit log filter rule to update."
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}": {
      "get": {
        "summary": "Get a cluster",
        "description": "Retrieves details of a specific cluster.",
        "operationId": "ClusterService_GetCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "globalMetaOnly",
            "description": "When true, returns basic cluster metadata only.\nWhen false or omitted, returns the full cluster information (default).",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      },
      "delete": {
        "summary": "Delete a cluster",
        "description": "Deletes a cluster by `clusterId`.",
        "operationId": "ClusterService_DeleteCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "validateOnly",
            "description": "If set to `true`, the request is validated but not executed. Defaults to `false`.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      },
      "patch": {
        "summary": "Update a cluster",
        "description": "Updates the configuration of a specific cluster. You can modify the following fields: `tidbNodeSetting`, `tikvNodeSetting`, `tiflashNodeSetting` and `displayName`.",
        "operationId": "ClusterService_UpdateCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster to update.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "cluster",
            "description": "The updated cluster configuration.",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "displayName": {
                  "description": "The display name of the cluster.",
                  "type": "string",
                  "example": "My Cluster"
                },
                "labels": {
                  "description": "The labels of the cluster. \n\n**Note**: Currently, does not support `labels` updates.",
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "map<string, string>",
                  "example": {}
                },
                "tidbNodeSetting": {
                  "description": "The TiDB node setting for updating cluster. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/v1beta1UpdateClusterRequestTidbNodeSetting"
                    }
                  ]
                },
                "tiflashNodeSetting": {
                  "description": "The TiFlash node setting for updating cluster. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/v1beta1UpdateClusterRequestStorageNodeSetting"
                    }
                  ],
                  "example": {
                    "nodeCount": 3,
                    "nodeSpecKey": "16C128G",
                    "storageSizeGi": 500,
                    "storageType": "Basic"
                  }
                },
                "tikvNodeSetting": {
                  "description": "The TiKV node setting for updating cluster. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/v1beta1UpdateClusterRequestStorageNodeSetting"
                    }
                  ]
                }
              },
              "title": "The updated cluster configuration."
            }
          },
          {
            "name": "validateOnly",
            "description": "If set to `true`, the request is validated but not executed. Defaults to `false`.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/auditLogConfig": {
      "get": {
        "summary": "Get the audit log config of a cluster",
        "operationId": "DatabaseAuditLogService_GetAuditLogConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1AuditLogConfig"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/auditLogConfig:generateAuditLogFileDownloadAddress": {
      "post": {
        "summary": "Generate the download address for an audit log file, the address have an 15 minutes expiration time",
        "operationId": "DatabaseAuditLogService_GenerateAuditLogFileDownloadAddress",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1GenerateAuditLogFileDownloadAddressResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogFileUri",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/auditLogConfig:queryAuditLogFiles": {
      "get": {
        "summary": "Query audit log files",
        "operationId": "DatabaseAuditLogService_QueryAuditLogFiles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1QueryAuditLogFilesResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "startTime",
            "description": "the start time of the audit logs created time range.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "endTime",
            "description": "the end time of the audit logs created time range.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/auditLogConfig:showObjectStorageAccessIamPrincipal": {
      "get": {
        "summary": "Show IAM principal of TiDB Cloud for accessing customer's object storage",
        "operationId": "DatabaseAuditLogService_ShowObjectStorageAccessIamPrincipal",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ShowObjectStorageAccessIamPrincipalResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/auditLogFilterRules": {
      "get": {
        "summary": "List audit log filter rules",
        "operationId": "DatabaseAuditLogService_ListAuditLogFilterRules",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListAuditLogFilterRulesResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/auditLogFilterRules/{auditLogFilterRuleId}": {
      "get": {
        "summary": "Get an audit log filter rule",
        "operationId": "DatabaseAuditLogService_GetAuditLogFilterRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRule"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogFilterRuleId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      },
      "delete": {
        "summary": "Delete an audit log filter rule",
        "operationId": "DatabaseAuditLogService_DeleteAuditLogFilterRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "auditLogFilterRuleId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DatabaseAuditLogService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/logRedactionPolicy": {
      "get": {
        "summary": "Get log redaction policy",
        "description": "Gets the log redaction policy for a cluster.",
        "operationId": "ClusterService_GetLogRedactionPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1LogRedactionPolicy"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to get the log redaction policy.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/nodeInstances": {
      "get": {
        "summary": "List node instances in a cluster",
        "description": "Lists node instances in a cluster.",
        "operationId": "ClusterService_ListNodeInstances",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListNodeInstancesResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to list node instances.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "componentType",
            "description": "The component type of the node instances. If specified, only node instances of the specified component type will be returned.\n- `TIDB`: TiDB node component.\n- `TIKV`: TiKV node instances.\n- `TIFLASH`: TiFlash node instances.\n- `PD`: PD node instances.\n- `PROXY`: Proxy node instances.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": ["TIKV", "TIDB", "TIFLASH", "PD", "TIPROXY"]
          },
          {
            "name": "pageSize",
            "description": "The maximum number of node instances to return. The service may return fewer than this value.\nIf unspecified, at most X node instances will be returned.\nThe maximum value is X; values above X will be coerced to X.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListNodeInstances` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListNodeInstances` must match\nthe call that provided the page token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/nodeInstances/{instanceId}": {
      "get": {
        "summary": "Get a node instance",
        "description": "Retrieves a node instance in a cluster.",
        "operationId": "ClusterService_GetNodeInstance",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1NodeInstance"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to get the node instance.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "instanceId",
            "description": "The ID of the node instance to get.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups": {
      "get": {
        "summary": "List TiDB Node Groups",
        "operationId": "TidbNodeGroupService_ListTidbNodeGroups",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListTidbNodeGroupsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to list TiDB groups.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of TiDB groups to return. The service may return fewer than this value.\nIf unspecified, at most X TiDB groups will be returned.\nThe maximum value is X; values above X will be coerced to X.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListTidbNodeGroups` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListTidbNodeGroups` must match\nthe call that provided the page token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no `nextPageToken`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{privateEndpointConnection.tidbNodeGroupId}/privateEndpointConnections": {
      "post": {
        "summary": "Create a private endpoint connection",
        "description": "Creates a private endpoint connection for a TiDB node group. For more information, see the following documents:\n\n- [Connect via Private Endpoint with AWS](https://docs.pingcap.com/tidbcloud/set-up-private-endpoint-connections/) \n- [Connect via Private Endpoint with Azure](https://docs.pingcap.com/tidbcloud/set-up-private-endpoint-connections-on-azure/) \n- [Connect via Private Endpoint with Google Cloud](https://docs.pingcap.com/tidbcloud/set-up-private-endpoint-connections-on-google-cloud/)",
        "operationId": "PrivateEndpointConnectionService_CreatePrivateEndpointConnection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1PrivateEndpointConnection"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "privateEndpointConnection.tidbNodeGroupId",
            "description": "The ID of the TiDB group to which the private endpoint connection belongs.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "privateEndpointConnection",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "accountId": {
                  "description": "(Google Cloud only) The project name used to identify the Google Cloud project that the private service connection belongs to.",
                  "type": "string",
                  "readOnly": true,
                  "x-nullable": true
                },
                "cloudProvider": {
                  "description": "The cloud provider where the private endpoint connection is located.\n\n- `\"aws\"`: Amazon Web Services\n\n- `\"gcp\"`: Google Cloud\n\n- `\"azure\"`: Microsoft Azure\n\n- `\"alicloud\"`: Alibaba Cloud",
                  "allOf": [
                    {
                      "$ref": "#/definitions/v1beta1RegionCloudProvider"
                    }
                  ],
                  "readOnly": true,
                  "example": "aws"
                },
                "clusterDisplayName": {
                  "description": "The display name of the cluster to which the private endpoint connection belongs.",
                  "type": "string",
                  "readOnly": true,
                  "example": "my-cluster"
                },
                "clusterId": {
                  "description": "The ID of the cluster to which the private endpoint connection belongs.",
                  "type": "string",
                  "readOnly": true,
                  "example": "1"
                },
                "endpointId": {
                  "description": "The endpoint ID of the private link connection.\n\n- AWS: the VPC endpoint ID for [AWS PrivateLink\n](https://aws.amazon.com/privatelink/).\n\n- Google Cloud: the endpoint ID for [Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect).\n\n- Azure: the resource ID for [Azure Private Link](https://learn.microsoft.com/en-us/azure/private-link/private-link-overview).",
                  "type": "string",
                  "example": "vpce-0a1b2c3d4e5f6g7h8"
                },
                "endpointState": {
                  "description": "The state of the private endpoint connection.\n\n- `\"PENDING\"`: TiDB Cloud is asynchronously accepting the endpoint connection.\n\n- `\"ACTIVE\"`: the private endpoint connection is ready to use.\n\n- `\"DELETING\"`: the private endpoint connection is being deleted.\n\n- `\"FAILED\"`: the private endpoint connection has failed.\n- `\"DISCOVERED\"`: the endpoint is created in your VPC but not registered with TiDB Cloud.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/dedicatedv1beta1PrivateEndpointConnectionEndpointState"
                    }
                  ],
                  "readOnly": true,
                  "example": "ACTIVE"
                },
                "host": {
                  "description": "The hostname for accessing the TiDB cluster through the private endpoint connection.",
                  "type": "string",
                  "readOnly": true,
                  "example": "privatelink-1234567890.abcdefg.clusters.tidb-cloud.com"
                },
                "labels": {
                  "description": "The labels of the private link connection, including the mandatory `tidb.cloud/project` label identifying the project it belongs to.",
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  },
                  "readOnly": true,
                  "title": "map<string, string>",
                  "example": {
                    "tidb.cloud/project": "1"
                  }
                },
                "message": {
                  "description": "The detailed message when the `endpointState` field is `\"FAILED\"`.",
                  "type": "string",
                  "readOnly": true,
                  "example": ""
                },
                "name": {
                  "description": "The name of the private endpoint connection, in the format of `tidbNodeGroups/{tidb_node_group_id}/privateEndpointConnections/{private_endpoint_connection_id}`.",
                  "type": "string",
                  "readOnly": true,
                  "example": "tidbNodeGroups/1/privateEndpointConnections/1234567890"
                },
                "port": {
                  "description": "The port used to connect to the TiDB cluster through the private endpoint connection.",
                  "type": "integer",
                  "format": "int32",
                  "readOnly": true,
                  "example": 4000
                },
                "privateEndpointConnectionId": {
                  "description": "The unique ID of the private endpoint connection.",
                  "type": "string",
                  "readOnly": true,
                  "example": "1234567890"
                },
                "privateIpAddress": {
                  "description": "(Azure only) The private IP address of the private endpoint in your virtual network. TiDB Cloud automatically creates a public DNS record that resolves to this IP address, enabling you to connect using the DNS name.",
                  "type": "string",
                  "x-nullable": true
                },
                "privateLinkServiceName": {
                  "description": "The name of the private link service that the private endpoint connection is connected to.",
                  "type": "string",
                  "readOnly": true,
                  "example": "com.amazonaws.vpce.us-east-1.vpce-svc-1234567890"
                },
                "privateLinkServiceState": {
                  "description": "The state of the private link service that the private endpoint connection is connected to.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/dedicatedv1beta1PrivateLinkServiceState"
                    }
                  ],
                  "readOnly": true,
                  "example": "ACTIVE"
                },
                "regionDisplayName": {
                  "description": "The display name of the region where the private endpoint connection is located. For example, `N. Virginia (us-east-1)`.",
                  "type": "string",
                  "readOnly": true,
                  "example": "N. Virginia (us-east-1)"
                },
                "regionId": {
                  "description": "The ID of the region where the private endpoint connection is located, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-east-1`.",
                  "type": "string",
                  "readOnly": true,
                  "example": "aws-us-east-1"
                },
                "tidbNodeGroupDisplayName": {
                  "description": "The display name of the TiDB node group that the private endpoint connection is connected to.",
                  "type": "string",
                  "readOnly": true,
                  "example": "DefaultGroup"
                }
              },
              "required": ["endpointId"]
            }
          },
          {
            "name": "validateOnly",
            "description": "(Azure only) If set to `true`, the request is validated but not executed. Defaults to `false`.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["PrivateEndpointConnectionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{publicEndpointSetting.tidbNodeGroupId}/publicEndpointSetting": {
      "patch": {
        "summary": "Update the public endpoint setting of a TiDB Node Group",
        "operationId": "TidbNodeGroupService_UpdatePublicEndpointSetting",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1PublicEndpointSetting"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to update the public endpoint setting.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "publicEndpointSetting.tidbNodeGroupId",
            "description": "The ID of the TiDB group to which the public endpoint setting belongs. If set to \"-\", the default TiDB group will be used.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "publicEndpointSetting",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "enabled": {
                  "description": "Indicates whether the public endpoint is enabled for the TiDB group.",
                  "type": "boolean",
                  "x-nullable": true
                },
                "ipAccessList": {
                  "description": "A list of IP access control lists for the public endpoint. If not set, all IPs are allowed to access the public endpoint.",
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/v1beta1PublicEndpointSettingIpAccessList",
                    "type": "object"
                  },
                  "title": "IpAccessList"
                },
                "name": {
                  "description": "The name of the public endpoint setting resource formatted as: `tidbNodeGroups/{tidb_node_group_id}/publicEndpointSetting`.",
                  "type": "string",
                  "readOnly": true
                }
              }
            }
          },
          {
            "name": "validateOnly",
            "description": "Indicates whether the request is a dry run. If set to true, the request will be validated but not executed.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}": {
      "get": {
        "summary": "Get a TiDB Node Group",
        "operationId": "TidbNodeGroupService_GetTidbNodeGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroup"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to get the TiDB Node Group.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "The ID of the TiDB Node Group to get.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      },
      "delete": {
        "summary": "Delete a TiDB Node Group",
        "operationId": "TidbNodeGroupService_DeleteTidbNodeGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster from which to delete the TiDB Node Group.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "The ID of the TiDB Node Group to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "validateOnly",
            "description": "Indicates whether the request is a dry run. If set to true, the request will be validated but not executed.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/privateEndpointConnections": {
      "get": {
        "summary": "List private endpoint connections",
        "description": "Lists private endpoint connections for a cluster and TiDB node group. To list private link connections across different clusters and TiDB groups, set cluster_id and tidb_node_group_id to \"-\". If you want to list private link connections under a project across different clusters and TiDB groups, set both cluster_id and tidb_node_group_id to \"-\", and pass the project_id in the query parameter.",
        "operationId": "PrivateEndpointConnectionService_ListPrivateEndpointConnections",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListPrivateEndpointConnectionsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The id of the cluster for which to list private link connections. To list private link connections across different clusters and TiDB groups, set as `-``.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "To list private link connections across different clusters and TiDB groups, set tidb_node_group_id to \"-\".",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "[^/]+"
          },
          {
            "name": "cloudProvider",
            "description": "If specified, only private link connections of the specified cloud provider will be returned.\n\n - aws: Amazon Web Services.\n - gcp: Google Cloud Platform.\n - azure: Microsoft Azure.\n - alicloud: Alibaba Cloud.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": ["aws", "gcp", "azure", "alicloud"]
          },
          {
            "name": "pageSize",
            "description": "The maximum number of private link connections to return. The service may return fewer than this value.\nIf unspecified, at most 10 private link connections will be returned.\nThe maximum value is 100; values above 100 will be coerced to 100.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListPrivateLinkConnections` call.\nProvide this to retrieve the subsequent page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["PrivateEndpointConnectionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/privateEndpointConnections/{privateEndpointConnectionId}": {
      "get": {
        "summary": "Get a private endpoint connection",
        "description": "Retrieves a private endpoint connection for a TiDB node group.",
        "operationId": "PrivateEndpointConnectionService_GetPrivateEndpointConnection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1PrivateEndpointConnection"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to get the private endpoint connection.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "The ID of the TiDB node group for which to get the private endpoint connection.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "privateEndpointConnectionId",
            "description": "The ID of the private endpoint connection to get.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["PrivateEndpointConnectionService"]
      },
      "delete": {
        "summary": "Delete a private endpoint connection",
        "description": "Deletes a private endpoint connection for a TiDB node group.",
        "operationId": "PrivateEndpointConnectionService_DeletePrivateEndpointConnection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster from which to delete the private endpoint connection.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "The ID of the TiDB node group from which to delete the private endpoint connection.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "privateEndpointConnectionId",
            "description": "The ID of the private endpoint connection to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["PrivateEndpointConnectionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/privateLinkIpAddressTypeSetting": {
      "get": {
        "description": "Returns the desired, observed, and asynchronous state of the PrivateLink address capability for an AWS EKS TiDB Node Group.",
        "operationId": "TidbNodeGroupService_GetPrivateLinkIPAddressTypeSetting",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "tidbNodeGroupId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Organization id",
            "format": "uint64",
            "in": "query",
            "name": "orgId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Project id",
            "format": "uint64",
            "in": "query",
            "name": "projectId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1PrivateLinkIPAddressTypeSetting"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "404": {
            "description": "The cluster or TiDB Node Group was not found.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "summary": "Get the PrivateLink IP address type setting of a TiDB Node Group",
        "tags": ["TidbNodeGroupService"]
      },
      "patch": {
        "description": "Updates the desired IP address type and returns the asynchronous setting. Only desired is mutable; updateMask may be omitted because it is derived from the request body. A successful response means that the update was accepted, not that the underlying AWS resources are ready. Poll the Get method while state is CHANGING. Switching to IPv4 is allowed only after all IPv6 or dualstack PrivateLink endpoint connections for the TiDB Node Group have been deleted.",
        "operationId": "TidbNodeGroupService_UpdatePrivateLinkIPAddressTypeSetting",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "tidbNodeGroupId",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "privateLinkIpAddressTypeSetting",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1PrivateLinkIPAddressTypeSetting"
            }
          },
          {
            "description": "Organization id",
            "format": "uint64",
            "in": "query",
            "name": "orgId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Project id",
            "format": "uint64",
            "in": "query",
            "name": "projectId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1PrivateLinkIPAddressTypeSetting"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "404": {
            "description": "The cluster or TiDB Node Group was not found.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "409": {
            "description": "Another PrivateLink IP address type setting request is being admitted, or a conflicting address change is already in progress.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "412": {
            "description": "The PrivateLink IP address type change preconditions are not met.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "summary": "Update the PrivateLink IP address type setting of a TiDB Node Group",
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/privateLinkService": {
      "get": {
        "summary": "Get private link service for a TiDB node group",
        "description": "Retrieves the private link service configuration for a [TiDB node group](https://docs.pingcap.com/tidbcloud/tidb-node-group-overview/). You can the private link service to establish private endpoint connections to your TiDB cluster.",
        "operationId": "PrivateEndpointConnectionService_GetPrivateLinkService",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1PrivateLinkService"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to get the private link service.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "The ID of the TiDB node group for which to get the private link service.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["PrivateEndpointConnectionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}/tidbNodeGroups/{tidbNodeGroupId}/publicEndpointSetting": {
      "get": {
        "summary": "Get the public endpoint setting of a TiDB Node Group",
        "operationId": "TidbNodeGroupService_GetPublicEndpointSetting",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1PublicEndpointSetting"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to get the public endpoint setting.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroupId",
            "description": "The ID of the TiDB Node Group for which to get the public endpoint setting.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}:bindTags": {
      "post": {
        "summary": "Bind tags to a cluster",
        "description": "Binds full key:value tags to a specific cluster.",
        "operationId": "ClusterService_BindTags",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1BindTagsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1ClusterServiceBindTagsBody"
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}:pauseCluster": {
      "post": {
        "summary": "Pause a cluster",
        "description": "Pauses a cluster by ID.",
        "operationId": "ClusterService_PauseCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1PauseClusterResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster to pause.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}:resetRootPassword": {
      "post": {
        "summary": "Reset the root password of a cluster",
        "description": "Sets a new password for the cluster's root user. The new password is not returned in the response for security reasons, so save your password in a secure location.\n\nThe cluster must be in the `READY` state. If the cluster is not `READY`, wait until it is before retrying.",
        "operationId": "ClusterService_ResetRootPassword",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ResetRootPasswordResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster for which to reset the root password.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1ClusterServiceResetRootPasswordBody"
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}:resumeCluster": {
      "post": {
        "summary": "Resume a cluster",
        "description": "Resumes a paused cluster. Only clusters in the `PAUSED` state can be resumed.",
        "operationId": "ClusterService_ResumeCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ResumeClusterResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "description": "The ID of the cluster to resume.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{clusterId}:unbindTags": {
      "post": {
        "summary": "Unbind tags from a cluster",
        "description": "Unbinds full key:value tags from a specific cluster.",
        "operationId": "ClusterService_UnbindTags",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1UnbindTagsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "clusterId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1ClusterServiceUnbindTagsBody"
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{logRedactionPolicy.clusterId}/logRedactionPolicy": {
      "patch": {
        "summary": "Update log redaction policy",
        "description": "Updates the log redaction policy for the specified cluster. The log redaction policy determines whether sensitive information is redacted from logs. The default policy is to redact sensitive information from logs.",
        "operationId": "ClusterService_UpdateLogRedactionPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1LogRedactionPolicy"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "logRedactionPolicy.clusterId",
            "description": "The ID of the cluster to which the log redaction policy applies.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "logRedactionPolicy",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "redactLog": {
                  "description": "Indicates whether to redact sensitive information in logs.\n\nThe default policy is `true`, which means sensitive data is redacted in logs.\n\n**Note**: Disabling log redaction might expose sensitive information and increase the risk of data leakage. Ensure that you understand and acknowledge this risk before proceeding. Remember to re-enable it as soon as you complete your diagnostic or maintenance task.",
                  "type": "boolean",
                  "default": "true",
                  "example": true,
                  "x-nullable": true
                }
              }
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{tidbNodeGroup.clusterId}/tidbNodeGroups": {
      "post": {
        "summary": "Create a TiDB Node Group",
        "description": "Creates a new TiDB Node Group in the specified cluster. The TiDB Node Group is used to scale the TiDB nodes in the cluster.",
        "operationId": "TidbNodeGroupService_CreateTidbNodeGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroup"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tidbNodeGroup.clusterId",
            "description": "The ID of the cluster that the TiDB node group belongs to.\n\n- This field is **optional** when creating a cluster with the default TiDB group.\n\n- This field is **required** when creating a non-default TiDB group.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroup",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "displayName": {
                  "description": "The display name of the TiDB group.",
                  "type": "string",
                  "example": "DefaultGroup"
                },
                "endpoints": {
                  "description": "The endpoints of the TiDB group.",
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupEndpoint",
                    "type": "object"
                  },
                  "readOnly": true,
                  "title": "Endpoint",
                  "example": []
                },
                "isDefaultGroup": {
                  "description": "Indicates whether this is the default TiDB node group.",
                  "type": "boolean",
                  "readOnly": true,
                  "example": false
                },
                "name": {
                  "description": "The resource name of the TiDB group, in the format of `tidbNodeGroups/{tidb_node_group_id}`.",
                  "type": "string",
                  "readOnly": true,
                  "example": "tidbNodeGroups/1"
                },
                "nodeChangingProgress": {
                  "description": "The progress of node configuration changes.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/ClusterNodeChangingProgress"
                    }
                  ],
                  "readOnly": true,
                  "title": "NodeChangingProgress"
                },
                "nodeCount": {
                  "description": "The number of TiDB nodes in the TiDB group. It must be greater than or equal to `1`.",
                  "type": "integer",
                  "format": "int32",
                  "example": 2,
                  "minimum": 1
                },
                "nodeSpecDisplayName": {
                  "description": "The display name of the node spec of the TiDB group. For example, `8 vCPU, 32 GiB`.",
                  "type": "string",
                  "readOnly": true,
                  "example": "8 vCPU, 32 GiB"
                },
                "nodeSpecKey": {
                  "description": "The node spec key of the TiDB group. For example, `8C32G`.",
                  "type": "string",
                  "example": "8C32G"
                },
                "nodeSpecVersion": {
                  "description": "The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.",
                  "type": "string",
                  "readOnly": true
                },
                "state": {
                  "description": "The current state of the TiDB group.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupState"
                    }
                  ],
                  "readOnly": true,
                  "example": "ACTIVE"
                },
                "tidbNodeGroupId": {
                  "description": "The unique ID of the TiDB group.",
                  "type": "string",
                  "readOnly": true,
                  "example": "1"
                },
                "tiproxyNodeChangingProgress": {
                  "description": "The progress of TiProxy node configuration changes.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/ClusterNodeChangingProgress"
                    }
                  ],
                  "readOnly": true
                },
                "tiproxySetting": {
                  "description": "Configures TiProxy settings for this TiDB group. If not specified, the default TiProxy settings is used.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupTiProxySetting"
                    }
                  ]
                }
              },
              "required": ["nodeCount"]
            }
          },
          {
            "name": "validateOnly",
            "description": "Indicates whether the request is a dry run. If set to true, the request will be validated but not executed.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters/{tidbNodeGroup.clusterId}/tidbNodeGroups/{tidbNodeGroup.tidbNodeGroupId}": {
      "patch": {
        "summary": "Update a TiDB Node Group",
        "operationId": "TidbNodeGroupService_UpdateTidbNodeGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroup"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tidbNodeGroup.clusterId",
            "description": "The ID of the cluster to which the TiDB Node Group belongs.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroup.tidbNodeGroupId",
            "description": "The ID of the TiDB Node Group to update.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "tidbNodeGroup",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "displayName": {
                  "description": "The display name of the TiDB Node Group.",
                  "type": "string"
                },
                "nodeCount": {
                  "description": "The node count of the TiDB Node Group.",
                  "type": "integer",
                  "format": "int32",
                  "x-nullable": true
                },
                "tiproxySetting": {
                  "description": "The TiProxy setting of the TiDB Node Group. If not specified, the default TiProxy setting will be used.",
                  "allOf": [
                    {
                      "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupTiProxySetting"
                    }
                  ],
                  "title": "TiProxySetting"
                }
              }
            }
          },
          {
            "name": "validateOnly",
            "description": "Indicates whether the request is a dry run. If set to true, the request will be validated but not executed.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["TidbNodeGroupService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/clusters:showNodeQuota": {
      "get": {
        "summary": "List node quotas for your organization",
        "description": "Lists the node quotas for your organization, including the maximum number of nodes allowed for each component type.",
        "operationId": "ClusterService_ShowNodeQuota",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ShowNodeQuotaResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ClusterService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/cmeks": {
      "get": {
        "operationId": "CustomerManagedEncryptionKeyService_ListCustomerManagedEncryptionKeys",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListCustomerManagedEncryptionKeysResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["CustomerManagedEncryptionKeyService"]
      },
      "post": {
        "operationId": "CustomerManagedEncryptionKeyService_CreateCustomerManagedEncryptionKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1CustomerManagedEncryptionKey"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "customerManagedEncryptionKey",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1CustomerManagedEncryptionKey"
            }
          },
          {
            "name": "validateOnly",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["CustomerManagedEncryptionKeyService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/cmeks/{customerManagedEncryptionKeyId}": {
      "get": {
        "operationId": "CustomerManagedEncryptionKeyService_GetCustomerManagedEncryptionKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1CustomerManagedEncryptionKey"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "customerManagedEncryptionKeyId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["CustomerManagedEncryptionKeyService"]
      },
      "delete": {
        "operationId": "CustomerManagedEncryptionKeyService_DeleteCustomerManagedEncryptionKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "customerManagedEncryptionKeyId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["CustomerManagedEncryptionKeyService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/cmeks:showCmekAccessIamPrincipal": {
      "get": {
        "operationId": "CustomerManagedEncryptionKeyService_ShowCmekAccessIamPrincipal",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ShowCmekAccessIamPrincipalResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cloudProvider",
            "description": " - aws: Amazon Web Services.\n - gcp: Google Cloud Platform.\n - azure: Microsoft Azure.\n - alicloud: Alibaba Cloud.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": ["aws", "gcp", "azure", "alicloud"]
          },
          {
            "name": "regionId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["CustomerManagedEncryptionKeyService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/maintenanceTasks": {
      "get": {
        "summary": "List maintenance tasks",
        "operationId": "MaintenanceService_ListMaintenanceTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListMaintenanceTasksResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "description": "The maximum number of maintenance tasks to return. The service may return fewer than this value.\nIf unspecified, at most X maintenance tasks will be returned.\nThe maximum value is X; values above X will be coerced to X.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListMaintenanceTasks` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListMaintenanceTasks` must match\nthe call that provided the page token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["MaintenanceService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/maintenanceTasks/{maintenanceTask.maintenanceTaskId}": {
      "patch": {
        "summary": "Update a maintenance task",
        "operationId": "MaintenanceService_UpdateMaintenanceTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1MaintenanceTask"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "maintenanceTask.maintenanceTaskId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "maintenanceTask",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "scheduledApplyTime": {
                  "description": "Timestamp when the task run.",
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": ["scheduledApplyTime"]
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["MaintenanceService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/maintenanceTasks/{maintenanceTaskId}": {
      "get": {
        "summary": "Get a maintenance task",
        "operationId": "MaintenanceService_GetMaintenanceTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1MaintenanceTask"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "maintenanceTaskId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["MaintenanceService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/maintenanceWindows": {
      "get": {
        "summary": "List maintenance windows",
        "operationId": "MaintenanceService_ListMaintenanceWindows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListMaintenanceWindowsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "description": "The maximum number of maintenance windows to return. The service may return fewer than this value.\nIf unspecified, at most X maintenance windows will be returned.\nThe maximum value is X; values above X will be coerced to X.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListMaintenanceWindows` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListMaintenanceWindows` must match\nthe call that provided the page token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["MaintenanceService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/maintenanceWindows/{maintenanceWindow.maintenanceWindowId}": {
      "patch": {
        "summary": "Update a maintenance window",
        "operationId": "MaintenanceService_UpdateMaintenanceWindow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1MaintenanceWindow"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "maintenanceWindow.maintenanceWindowId",
            "description": "Format: project-{project_id}",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "maintenanceWindow",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "dayHour": {
                  "type": "integer",
                  "format": "int32"
                },
                "hourMinute": {
                  "type": "integer",
                  "format": "int32"
                },
                "weekDay": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["MaintenanceService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/maintenanceWindows/{maintenanceWindowId}": {
      "get": {
        "summary": "Get a maintenance window",
        "operationId": "MaintenanceService_GetMaintenanceWindow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1MaintenanceWindow"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "maintenanceWindowId",
            "description": "Format: project-{project_id}",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["MaintenanceService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/networkContainers": {
      "get": {
        "summary": "List network containers",
        "operationId": "NetworkContainerService_ListNetworkContainers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListNetworkContainersResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cloudProvider",
            "description": " - aws: Amazon Web Services.\n - gcp: Google Cloud Platform.\n - azure: Microsoft Azure.\n - alicloud: Alibaba Cloud.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": ["aws", "gcp", "azure", "alicloud"]
          },
          {
            "name": "pageSize",
            "description": "The maximum number of network containers to return. The service may return fewer than this value.\nIf unspecified, at most X network containers will be returned.\nThe maximum value is X; values above X will be coerced to X.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListNetworkContainers` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListNetworkContainers` must match\nthe call that provided the page token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of individual resources to skip before starting to return results.\nIf the skip value causes the cursor to move past the end of the collection,\nthe response will be 200 OK with an empty result set and no next_page_token.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      },
      "post": {
        "summary": "Create a network container",
        "operationId": "NetworkContainerService_CreateNetworkContainer",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1NetworkContainer"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "networkContainer",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1NetworkContainer"
            }
          },
          {
            "name": "validateOnly",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/networkContainers/{networkContainerId}": {
      "get": {
        "summary": "Get a network container",
        "operationId": "NetworkContainerService_GetNetworkContainer",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1NetworkContainer"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "networkContainerId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      },
      "delete": {
        "summary": "Delete a network container",
        "operationId": "NetworkContainerService_DeleteNetworkContainer",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "networkContainerId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/regions": {
      "get": {
        "summary": "List regions",
        "description": "Lists the regions where you can create a cluster, across all supported cloud providers.",
        "operationId": "RegionService_ListRegions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1ListRegionsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cloudProvider",
            "description": "The cloud provider where the region is located. If specified, only regions of the specified cloud provider are returned.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of regions to return. If not specified, at most 20 regions will be returned. The maximum value is `100`. Values greater than `100` are set to `100`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": "20"
          },
          {
            "name": "pageToken",
            "description": "The pagination token received from a previous [List regions](#tag/Region/operation/RegionService_ListRegions) request. Use this token to retrieve the next page of results.\n\n**Note**: When paginating, all other parameters must match the original request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of regions to skip before returning results. If the value exceeds the total number of clusters, the response is `200` with an empty list and no `nextPageToken`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["RegionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/regions/{regionId}": {
      "get": {
        "summary": "Get a region",
        "description": "Retrieves details of a specific region by region ID.",
        "operationId": "RegionService_GetRegion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/commonv1beta1Region"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "regionId",
            "description": "The ID of the region to retrieve, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-east-1`.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["RegionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/regions/{regionId}/componentTypes/{componentType}/nodeSpecs/{nodeSpecKey}": {
      "get": {
        "summary": "Get a node spec",
        "description": "Retrieves details of a node spec used for creating or scaling a cluster.",
        "operationId": "RegionService_GetNodeSpec",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1NodeSpec"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "regionId",
            "description": "The region ID of the node spec to retrieve, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-east-1`. If not specified, the default region ID is used.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "componentType",
            "description": "Filters the results to include only node specs for the specified component type.",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": ["TIKV", "TIDB", "TIFLASH", "PD", "TIPROXY"]
          },
          {
            "name": "nodeSpecKey",
            "description": "The key of the node spec to retrieve. For example, `8C32G`.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "clusterId",
            "description": "The ID of the existing cluster. If specified, only node specs that are available to the cluster are returned. If not specified, all available node specs are returned.\nUsage case: Scale up/down a cluster.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "tidbVersion",
            "description": "The TiDB version of the wanted cluster. If specified, only node specs that are available to the specified TiDB version are returned. If not specified, all available node specs are returned.\nUsage case: Restore a cluster from a backup.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["RegionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/regions/{regionId}/nodeSpecs": {
      "get": {
        "summary": "List node specs",
        "description": "Retrieves a paginated list of node specifications (specs) available for creating or scaling a cluster in the specified region. You can filter the results using the `componentType`, `projectId`, or `clusterId` parameter.",
        "operationId": "RegionService_ListNodeSpecs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListNodeSpecsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "regionId",
            "description": "The ID of the region, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-east-1`.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "componentType",
            "description": "Filters the results to include only node specs for the specified component type.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": ["TIKV", "TIDB", "TIFLASH", "PD", "TIPROXY"]
          },
          {
            "name": "clusterId",
            "description": "The ID of the existing cluster. If specified, only node specs that are available to the cluster are returned. If not specified, all available node specs are returned.\nUsage case: Scale up/down a cluster.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "tidbVersion",
            "description": "The TiDB version of the wanted cluster. If specified, only node specs that are available to the specified TiDB version are returned. If not specified, all available node specs are returned.\nUsage case: Restore a cluster from a backup.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of node specs to return. If not specified, at most 10 node specs will be returned. The maximum value is `100`. Values greater than `100` are set to `100`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": "10"
          },
          {
            "name": "pageToken",
            "description": "The pagination token received from a previous [List node specs](#tag/Region/operation/RegionService_ListNodeSpecs) request. Use this token to retrieve the next page of results.\n\n**Note**: When paginating, all other parameters must match the original request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "skip",
            "description": "The number of node specs to skip before returning results. If the value exceeds the total number of clusters, the response is `200` with an empty list and no `nextPageToken`.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["RegionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/regions:showCloudProviders": {
      "get": {
        "summary": "List cloud providers",
        "description": "Lists the cloud providers available for creating a cluster.",
        "operationId": "RegionService_ShowCloudProviders",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ShowCloudProvidersResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["RegionService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/vpcPeerings": {
      "get": {
        "summary": "List VPC peerings",
        "operationId": "NetworkContainerService_ListVpcPeerings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1ListVpcPeeringsResponse"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cloudProvider",
            "description": "If specified, only VPC peerings of the specified cloud provider will be returned.\n\n - aws: Amazon Web Services.\n - gcp: Google Cloud Platform.\n - azure: Microsoft Azure.\n - alicloud: Alibaba Cloud.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": ["aws", "gcp", "azure", "alicloud"]
          },
          {
            "name": "pageSize",
            "description": "The maximum number of VPC peerings to return. The service may return fewer than this value.\nIf unspecified, at most X VPC peerings will be returned.\nThe maximum value is X; values above X will be coerced to X.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListVpcPeerings` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to `ListVpcPeerings` must match\nthe call that provided the page token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      },
      "post": {
        "summary": "Create a VPC peering",
        "operationId": "NetworkContainerService_CreateVpcPeering",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1VpcPeering"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "vpcPeering",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1VpcPeering"
            }
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      }
    },
    "/api/v2023/dedicated/v1beta1/vpcPeerings/{vpcPeeringId}": {
      "get": {
        "summary": "Get a VPC peering",
        "operationId": "NetworkContainerService_GetVpcPeering",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/dedicatedv1beta1VpcPeering"
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "vpcPeeringId",
            "description": "Format {cloud_provider}-{random_suffix}",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      },
      "delete": {
        "summary": "Delete a VPC peering",
        "operationId": "NetworkContainerService_DeleteVpcPeering",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "400": {
            "description": "A request field is invalid.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "401": {
            "description": "The API key cannot be authenticated.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "403": {
            "description": "The API key does not have permission to access the resource.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "429": {
            "description": "You have exceed the rate limit.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "500": {
            "description": "Internal server error.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "vpcPeeringId",
            "description": "Format {cloud_provider}-{random_suffix}",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "orgId",
            "description": "Organization id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "projectId",
            "description": "Project id",
            "in": "query",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["NetworkContainerService"]
      }
    }
  },
  "definitions": {
    "AuditLogConfigBucketManager": {
      "type": "string",
      "enum": ["CUSTOMER", "PINGCAP"]
    },
    "ClusterNodeChangingProgress": {
      "type": "object",
      "properties": {
        "matchingNodeSpecNodeCount": {
          "description": "The number of nodes that match the specified node spec.",
          "type": "integer",
          "format": "int32",
          "readOnly": true
        },
        "remainingDeletionNodeCount": {
          "description": "The number of nodes pending deletion. This value appears only during node deletion operations.",
          "type": "integer",
          "format": "int32",
          "readOnly": true
        }
      }
    },
    "ClusterStorageNodeSettingStorageType": {
      "description": " - Basic: Data disk: gp3; Raft log disk: none.\n - Standard: Data disk: gp3; Raft log disk: gp3.\n - Performance: Data disk: gp3; Raft log disk: io2.\n - Plus: Data disk: io2; Raft log disk: none.",
      "type": "string",
      "enum": ["Basic", "Standard", "Performance", "Plus"]
    },
    "ShowNodeQuotaResponseComponentQuota": {
      "type": "object",
      "properties": {
        "componentType": {
          "description": "The component type. The value options are:\n\n- `TIDB`: [TiDB node](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#tidb-node).\n\n- `TIKV`: [TiKV node](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#tikv-node).\n\n- `TIFLASH`: [TiFlash node](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#tiflash-node).",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1ComponentType"
            }
          ]
        },
        "quota": {
          "description": "The maximum number of nodes allowed for this component type.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "UpdateClusterRequestTidbNodeSettingTidbNodeGroup": {
      "type": "object",
      "properties": {
        "nodeCount": {
          "description": "The number of TiDB nodes in the TiDB group. It must be greater than or equal to 1.",
          "type": "integer",
          "format": "int32",
          "example": 2,
          "minimum": 1,
          "x-nullable": true
        },
        "nodeSpecKey": {
          "description": "The node spec key of the TiDB group. For example, `8C32G`.",
          "type": "string",
          "example": "8C32G"
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB node group. If empty, it means to scale the default TiDB group.",
          "type": "string",
          "example": "1"
        },
        "tiproxySetting": {
          "description": "The TiProxy setting for the TiDB group. If not specified, the default TiProxy setting will be used.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupTiProxySetting"
            }
          ]
        }
      }
    },
    "commonv1beta1ClusterState": {
      "description": "Enum of possible states of a cluster.\n\n - CREATING: Cluster is being created.\n - DELETING: Cluster is being deleted.\n - ACTIVE: Cluster is active for use.\n - RESTORING: Cluster data is being restored.\n - MAINTENANCE: Cluster is under maintenance.\n - DELETED: Cluster has been deleted.\n - INACTIVE: Cluster is not active, but not being deleted.\n - UPGRADING: Cluster is being updated.\nOnly for Dedicated Cluster.\n - IMPORTING: Cluster is being imported.\nOnly for Dedicated Cluster.\n - MODIFYING: Cluster is being modified.\nOnly for Dedicated Cluster.\n - PAUSING: Cluster is being paused.\nOnly for Dedicated Cluster.\n - PAUSED: Cluster is paused.\nOnly for Dedicated Cluster.\n - RESUMING: Cluster is resuming.\nOnly for Dedicated Cluster.",
      "type": "string",
      "enum": [
        "CREATING",
        "DELETING",
        "ACTIVE",
        "RESTORING",
        "MAINTENANCE",
        "DELETED",
        "INACTIVE",
        "UPGRADING",
        "IMPORTING",
        "MODIFYING",
        "PAUSING",
        "PAUSED",
        "RESUMING"
      ]
    },
    "commonv1beta1Region": {
      "description": "A representation of a region for deploying TiDB clusters.",
      "type": "object",
      "properties": {
        "cloudProvider": {
          "description": "The cloud provider that offers the region.\n\n- `\"aws\"`: Amazon Web Services\n\n- `\"gcp\"`: Google Cloud\n\n- `\"azure\"`: Microsoft Azure\n\n- `\"alicloud\"`: Alibaba Cloud",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1RegionCloudProvider"
            }
          ],
          "readOnly": true,
          "example": "aws"
        },
        "displayName": {
          "description": "A human-readable name for the region. For example, `Oregon (us-west-2)`.",
          "type": "string",
          "readOnly": true,
          "example": "Oregon (us-west-2)"
        },
        "name": {
          "description": "The unique name of the region, in the format of `regions/{region_id}`. For example, `regions/aws-us-west-2`.",
          "type": "string",
          "example": "regions/aws-us-west-2",
          "pattern": "^regions/(aws|gcp|azure)-(.+)$"
        },
        "provider": {
          "description": "**Deprecated.** Use `cloudProvider` instead. The name of the cloud provider. For example, `aws`, `gcp`, `azure`, or `alicloud`.",
          "type": "string",
          "readOnly": true,
          "title": "Deprecated",
          "example": "aws",
          "x-nullable": true
        },
        "regionId": {
          "description": "The unique identifier for the region, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-west-2`.",
          "type": "string",
          "readOnly": true,
          "example": "aws-us-west-2",
          "pattern": "^(aws|gcp|azure|alicloud)-[a-z0-9-]+$"
        },
        "servicePlans": {
          "description": "The service plans available in this region. Premium, Essential_V2, and Premium_Reserved can appear together in the same logical region. Starter, Essential, and BYOC are standalone service plans and cannot share a logical region with any other service plan.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/commonv1beta1ServicePlan"
          },
          "readOnly": true,
          "title": "ServicePlan",
          "example": ["Premium", "Essential_V2", "Premium_Reserved"]
        },
        "supportedServicePlans": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1ServicePlanInfo",
            "type": "object"
          },
          "readOnly": true
        }
      }
    },
    "commonv1beta1ServicePlan": {
      "type": "string",
      "enum": ["Starter", "Essential", "Premium", "BYOC", "Dedicated", "Premium_Reserved", "Essential_V2"]
    },
    "commonv1beta1Tag": {
      "type": "object",
      "properties": {
        "key": {
          "description": "The key of the tag.",
          "type": "string",
          "example": "env"
        },
        "name": {
          "description": "The unique name of the tag, in the format `tags/{key}:{value}`.",
          "type": "string",
          "example": "tags/aaa:bbb",
          "pattern": "^tags/(.+):(.+)$"
        },
        "value": {
          "description": "The value of the tag.",
          "type": "string",
          "example": "prod"
        }
      },
      "required": ["key", "value"]
    },
    "dedicatedv1beta1AuditLogConfig": {
      "type": "object",
      "properties": {
        "awsRoleArn": {
          "type": "string"
        },
        "azureSasToken": {
          "type": "string"
        },
        "bucketManager": {
          "description": "The bucket_manager field is used to indicate who manages the bucket.\nIf this field is not set, the bucket is managed by the customer by default.",
          "allOf": [
            {
              "$ref": "#/definitions/AuditLogConfigBucketManager"
            }
          ]
        },
        "bucketRegionId": {
          "type": "string",
          "title": "Format: {cloud_provider}-{region_code}"
        },
        "bucketUri": {
          "description": "Required if bucket_manager is CUSTOMER.",
          "type": "string"
        },
        "bucketWriteCheck": {
          "description": "Available only when write check failed.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1AuditLogConfigBucketWriteCheck"
            }
          ],
          "readOnly": true
        },
        "clusterId": {
          "type": "string"
        },
        "enabled": {
          "description": "Default is disabled.",
          "type": "boolean"
        },
        "format": {
          "description": "If unset, default to TEXT.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1AuditLogConfigFormat"
            }
          ]
        },
        "legacy": {
          "description": "Default to false (and not shown), which means the legacy audit log implementation are not used.",
          "type": "boolean",
          "readOnly": true,
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "title": "Format: clusters/{cluster_id}/auditLogConfig"
        },
        "rotationPolicy": {
          "description": "If unset, default to max_size_mib=10, max_age_second=86400 (1 day).",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1AuditLogConfigRotationPolicy"
            }
          ]
        },
        "unredacted": {
          "description": "Default is redacted.",
          "type": "boolean"
        }
      },
      "required": ["clusterId"]
    },
    "dedicatedv1beta1AuditLogFilterRule": {
      "type": "object",
      "properties": {
        "accessTypeList": {
          "description": "Deprecated. Only available when `AuditLogConfig.legacy` is true.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "auditLogFilterRuleId": {
          "description": "audit_log_filter_rule_id is a unique identifier for the rule. Currently, the value is the same as user_expr.\nFor legacy, the audit_log_filter_rule_id is a number.",
          "type": "string",
          "readOnly": true
        },
        "clusterId": {
          "type": "string"
        },
        "dbExpr": {
          "description": "Deprecated. Only available when `AuditLogConfig.legacy` is true.\nThe express is a glob pattern. Refer to https://github.com/pingcap/tidb/blob/master/pkg/util/table-filter/README.md#wildcards.",
          "type": "string"
        },
        "disabled": {
          "description": "Default is enabled.",
          "type": "boolean"
        },
        "displayName": {
          "description": "If not set, default to the value of `user_expr`.",
          "type": "string"
        },
        "eventTypes": {
          "description": "If empty, it means all events.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRuleEventType"
          }
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "title": "Format: auditLogFilterRules/{audit_log_filter_rule_id}"
        },
        "tableExpr": {
          "description": "Deprecated. Only available when `AuditLogConfig.legacy` is true.\nThe express is a glob pattern. Refer to https://github.com/pingcap/tidb/blob/master/pkg/util/table-filter/README.md#wildcards.",
          "type": "string"
        },
        "userExpr": {
          "description": "Format: <user>@<host>.\nThe audit user <user>@<host> consists of the username and hostname with @ as separator, where @ and <host> are optional.\nBoth username and hostname can be identifiers with wildcards:\n  - % for matching any username/hostname.\n  - _ for matching any character.\nFor multiple filter rules, if their user_expr fields match the same username, that matches the longest username takes effect.\nIn general, this field is required. Only when `AuditLogConfig.legacy` is true, this field is optional.\nFor legacy, the express is a regex.",
          "type": "string"
        }
      },
      "required": ["clusterId"]
    },
    "dedicatedv1beta1AuditLogFilterRuleEventType": {
      "type": "string",
      "enum": [
        "CONNECTION",
        "CONNECT",
        "DISCONNECT",
        "CHANGE_USER",
        "QUERY",
        "TRANSACTION",
        "EXECUTE",
        "QUERY_DML",
        "INSERT",
        "REPLACE",
        "UPDATE",
        "DELETE",
        "LOAD_DATA",
        "SELECT",
        "QUERY_DDL"
      ],
      "title": "DB audit logging includes the following event types:\n - CONNECTION\n   - CONNECT\n   - DISCONNECT\n   - CHANGE_USER\n - QUERY\n   - TRANSACTION\n   - EXECUTE\n   - QUERY_DML\n     - INSERT\n     - REPLACE\n     - UPDATE\n     - DELETE\n     - LOAD DATA\n   - SELECT\n   - QUERY_DDL"
    },
    "dedicatedv1beta1AwsKms": {
      "type": "object",
      "properties": {
        "kmsKeyArn": {
          "type": "string"
        }
      },
      "required": ["kmsKeyArn"]
    },
    "dedicatedv1beta1AzureAppRegistration": {
      "type": "object",
      "properties": {
        "appRegistrationId": {
          "type": "string",
          "readOnly": true
        },
        "appRegistrationName": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "dedicatedv1beta1AzureKeyVault": {
      "type": "object",
      "properties": {
        "appRegistration": {
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1AzureAppRegistration"
            }
          ],
          "readOnly": true
        },
        "keyVaultKey": {
          "type": "string"
        },
        "keyVaultName": {
          "type": "string"
        }
      },
      "required": ["keyVaultKey", "keyVaultName"]
    },
    "dedicatedv1beta1ClusterPausePlan": {
      "type": "object",
      "properties": {
        "pauseType": {
          "description": "The type of the pause plan.\n\n- `\"NORMAL\"`: the default pause plan.\n- `\"DEPRECATE\"`: the legacy pause plan and will be removed in a future release.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1ClusterPausePlanType"
            }
          ],
          "title": "PausePlanType"
        },
        "scheduledResumeTime": {
          "description": "The scheduled time for the cluster to automatically resume from the `PAUSED` state, in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.",
          "type": "string",
          "format": "date-time",
          "readOnly": true
        }
      },
      "required": ["pauseType"]
    },
    "dedicatedv1beta1ClusterPausePlanType": {
      "type": "string",
      "enum": ["NORMAL", "DEPRECATE"],
      "title": "- NORMAL: default pause plan\n - DEPRECATE: old pause plan, will be removed"
    },
    "dedicatedv1beta1ComponentType": {
      "type": "string",
      "enum": ["TIKV", "TIDB", "TIFLASH", "PD", "TIPROXY"]
    },
    "dedicatedv1beta1CustomerManagedEncryptionKey": {
      "type": "object",
      "properties": {
        "awsKms": {
          "$ref": "#/definitions/dedicatedv1beta1AwsKms"
        },
        "azureKeyVault": {
          "$ref": "#/definitions/dedicatedv1beta1AzureKeyVault"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "readOnly": true
        },
        "customerManagedEncryptionKeyId": {
          "type": "string",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "title": "Format: customerManagedEncryptionKeys/{customer_managed_encryption_key_id}"
        },
        "projectId": {
          "type": "string"
        },
        "regionDisplayName": {
          "type": "string",
          "readOnly": true
        },
        "regionId": {
          "type": "string",
          "title": "Format: {cloud_provider}-{region_code}"
        }
      },
      "required": ["regionId"]
    },
    "dedicatedv1beta1GenerateAuditLogFileDownloadAddressResponse": {
      "type": "object",
      "properties": {
        "downloadAddress": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "dedicatedv1beta1ListAuditLogFilterRulesResponse": {
      "type": "object",
      "properties": {
        "auditLogFilterRules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRule",
            "type": "object"
          }
        },
        "nextPageToken": {
          "type": "string"
        },
        "totalSize": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "dedicatedv1beta1ListCustomerManagedEncryptionKeysResponse": {
      "type": "object",
      "properties": {
        "cmeks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1CustomerManagedEncryptionKey",
            "type": "object"
          }
        },
        "nextPageToken": {
          "type": "string"
        },
        "totalSize": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "dedicatedv1beta1ListMaintenanceTasksResponse": {
      "type": "object",
      "properties": {
        "maintenanceTasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1MaintenanceTask",
            "type": "object"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "totalSize": {
          "description": "The total number of maintenance tasks that matched the query.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "dedicatedv1beta1ListMaintenanceWindowsResponse": {
      "type": "object",
      "properties": {
        "maintenanceWindows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1MaintenanceWindow",
            "type": "object"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "totalSize": {
          "description": "The total number of maintenance windows that matched the query.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "dedicatedv1beta1ListPrivateEndpointConnectionsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "The token to retrieve the next page of results. Use this value as the `pageToken` parameter in the next request. This field is empty when there are no more pages.",
          "type": "string",
          "example": "next_page_token"
        },
        "privateEndpointConnections": {
          "description": "A list of private endpoint connections that match the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1PrivateEndpointConnection",
            "type": "object"
          },
          "title": "PrivateEndpointConnection"
        },
        "totalSize": {
          "description": "The total number of private link connections that match the query.",
          "type": "integer",
          "format": "int32",
          "example": 1
        }
      }
    },
    "dedicatedv1beta1ListTidbNodeGroupsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `pageToken` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "tidbNodeGroups": {
          "description": "A list of TiDB Node Groups that matched the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroup",
            "type": "object"
          },
          "title": "TidbNodeGroup"
        },
        "totalSize": {
          "description": "The total number of TiDB groups that matched the query.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "dedicatedv1beta1ListVpcPeeringsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "totalSize": {
          "description": "The total number of VPC peerings that matched the query.",
          "type": "integer",
          "format": "int32"
        },
        "vpcPeerings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1VpcPeering",
            "type": "object"
          }
        }
      }
    },
    "dedicatedv1beta1LogRedactionPolicy": {
      "type": "object",
      "properties": {
        "clusterId": {
          "description": "The ID of the cluster to which the log redaction policy applies.",
          "type": "string",
          "example": "1"
        },
        "redactLog": {
          "description": "Indicates whether to redact sensitive information in logs.\n\nThe default policy is `true`, which means sensitive data is redacted in logs.\n\n**Note**: Disabling log redaction might expose sensitive information and increase the risk of data leakage. Ensure that you understand and acknowledge this risk before proceeding. Remember to re-enable it as soon as you complete your diagnostic or maintenance task.",
          "type": "boolean",
          "default": "true",
          "example": true,
          "x-nullable": true
        }
      },
      "required": ["clusterId"]
    },
    "dedicatedv1beta1MaintenanceTask": {
      "description": "All fields are output only.",
      "type": "object",
      "properties": {
        "createTime": {
          "description": "Timestamp when the task was created.",
          "type": "string",
          "format": "date-time"
        },
        "deadline": {
          "description": "Timestamp when the task will be expired.",
          "type": "string",
          "format": "date-time"
        },
        "description": {
          "type": "string"
        },
        "maintenanceTaskId": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "title": "Format: maintenanceTasks/{maintenance_task_id}"
        },
        "projectId": {
          "type": "string"
        },
        "scheduledApplyTime": {
          "description": "Timestamp when the task run.",
          "type": "string",
          "format": "date-time"
        },
        "state": {
          "$ref": "#/definitions/dedicatedv1beta1MaintenanceTaskState"
        }
      }
    },
    "dedicatedv1beta1MaintenanceTaskState": {
      "type": "string",
      "enum": ["PENDING", "RUNNING", "DONE"]
    },
    "dedicatedv1beta1MaintenanceWindow": {
      "description": "MaintenanceWindow is a singleton resource that represents the maintenance window under a project.",
      "type": "object",
      "properties": {
        "dayHour": {
          "description": "0-23 in UTC.",
          "type": "integer",
          "format": "int32"
        },
        "hourMinute": {
          "description": "0-59 in UTC.",
          "type": "integer",
          "format": "int32"
        },
        "maintenanceWindowId": {
          "type": "string",
          "readOnly": true,
          "title": "Format: project-{project_id}"
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "title": "Format: maintenanceWindows/{maintenance_window_id}"
        },
        "nextMaintenanceDate": {
          "type": "string",
          "format": "date-time",
          "readOnly": true
        },
        "projectId": {
          "type": "string"
        },
        "unchangedMaintenanceTasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1MaintenanceTask",
            "type": "object"
          },
          "readOnly": true
        },
        "weekDay": {
          "description": "0-6, 0 is Sunday.",
          "type": "integer",
          "format": "int32"
        }
      },
      "required": ["projectId", "weekDay", "dayHour", "hourMinute"]
    },
    "dedicatedv1beta1NodeSpec": {
      "description": "All fields are output only.",
      "type": "object",
      "properties": {
        "componentType": {
          "description": "The component type of the node spec.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1ComponentType"
            }
          ]
        },
        "default": {
          "description": "Indicates whether this is the default node spec.",
          "type": "boolean"
        },
        "defaultNodeCount": {
          "description": "The default number of nodes for the node spec resource.",
          "type": "integer",
          "format": "int32"
        },
        "defaultRaftStoreIops": {
          "description": "The default IOPS for Raft log storage of the node spec resource. Currently, this parameter is only useful when overriding IOPS for Raft log storage.",
          "type": "integer",
          "format": "int32",
          "example": 3000,
          "x-nullable": true
        },
        "defaultStorageSizeGi": {
          "description": "The default storage size of the node spec resource in GiB.",
          "type": "integer",
          "format": "int32"
        },
        "displayName": {
          "description": "The display name of the node spec. For example, `8 vCPU, 32 GiB`.",
          "type": "string"
        },
        "maxRaftStoreIops": {
          "description": "The maximum IOPS for Raft log storage of the node spec resource. Currently, this parameter is only useful when overriding IOPS for Raft log storage.",
          "type": "integer",
          "format": "int32",
          "x-nullable": true
        },
        "maxStorageSizeGi": {
          "description": "The maximum storage size of the node spec resource in GiB.",
          "type": "integer",
          "format": "int32"
        },
        "memorySizeGi": {
          "description": "The amount of memory in gibibytes (GiB) allocated to the node spec. For example, `32`.",
          "type": "integer",
          "format": "int32"
        },
        "minRaftStoreIops": {
          "description": "The minimum IOPS for Raft log storage of the node spec resource. Currently, this parameter is only useful when overriding IOPS for Raft log storage.",
          "type": "integer",
          "format": "int32",
          "x-nullable": true
        },
        "minStorageSizeGi": {
          "description": "The minimum storage size of the node spec resource in GiB.",
          "type": "integer",
          "format": "int32"
        },
        "name": {
          "description": "The name of the node spec resource, in the format of `regions/{region_id}/componentTypes/{component_type}/nodeSpecs/{node_spec_key}`. For example, `regions/aws-us-west-2/componentTypes/TIKV/nodeSpecs/8C32G`.",
          "type": "string"
        },
        "nodeSpecKey": {
          "description": "The key of the node spec. For example, `8C32G`.",
          "type": "string"
        },
        "regionId": {
          "description": "The region ID of the node spec resource, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-west-2`.",
          "type": "string"
        },
        "storageTypeDetails": {
          "description": "Detailed storage capabilities grouped by storage type enum string values. Currently, only Plus storage type is supported.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1beta1NodeSpecStorageTypeDetail"
          },
          "readOnly": true
        },
        "storageTypes": {
          "description": "The storage types supported by the node spec resource.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClusterStorageNodeSettingStorageType"
          }
        },
        "vCpu": {
          "description": "The number of virtual CPUs (vCPUs) allocated to the node spec. For example, `8`.",
          "type": "integer",
          "format": "int32"
        },
        "version": {
          "description": "The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.",
          "type": "string",
          "example": "v1"
        }
      }
    },
    "dedicatedv1beta1PrivateEndpointConnection": {
      "type": "object",
      "properties": {
        "accountId": {
          "description": "(Google Cloud only) The project name used to identify the Google Cloud project that the private service connection belongs to.",
          "type": "string",
          "readOnly": true,
          "x-nullable": true
        },
        "cloudProvider": {
          "description": "The cloud provider where the private endpoint connection is located.\n\n- `\"aws\"`: Amazon Web Services\n\n- `\"gcp\"`: Google Cloud\n\n- `\"azure\"`: Microsoft Azure\n\n- `\"alicloud\"`: Alibaba Cloud",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1RegionCloudProvider"
            }
          ],
          "readOnly": true,
          "example": "aws"
        },
        "clusterDisplayName": {
          "description": "The display name of the cluster to which the private endpoint connection belongs.",
          "type": "string",
          "readOnly": true,
          "example": "my-cluster"
        },
        "clusterId": {
          "description": "The ID of the cluster to which the private endpoint connection belongs.",
          "type": "string",
          "readOnly": true,
          "example": "1"
        },
        "endpointId": {
          "description": "The endpoint ID of the private link connection.\n\n- AWS: the VPC endpoint ID for [AWS PrivateLink\n](https://aws.amazon.com/privatelink/).\n\n- Google Cloud: the endpoint ID for [Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect).\n\n- Azure: the resource ID for [Azure Private Link](https://learn.microsoft.com/en-us/azure/private-link/private-link-overview).",
          "type": "string",
          "example": "vpce-0a1b2c3d4e5f6g7h8"
        },
        "endpointState": {
          "description": "The state of the private endpoint connection.\n\n- `\"PENDING\"`: TiDB Cloud is asynchronously accepting the endpoint connection.\n\n- `\"ACTIVE\"`: the private endpoint connection is ready to use.\n\n- `\"DELETING\"`: the private endpoint connection is being deleted.\n\n- `\"FAILED\"`: the private endpoint connection has failed.\n- `\"DISCOVERED\"`: the endpoint is created in your VPC but not registered with TiDB Cloud.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1PrivateEndpointConnectionEndpointState"
            }
          ],
          "readOnly": true,
          "example": "ACTIVE"
        },
        "host": {
          "description": "The hostname for accessing the TiDB cluster through the private endpoint connection.",
          "type": "string",
          "readOnly": true,
          "example": "privatelink-1234567890.abcdefg.clusters.tidb-cloud.com"
        },
        "ipAddressType": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1PrivateEndpointConnectionIPAddressType"
            }
          ],
          "description": "The IP address type configured on the private endpoint connection. This field is currently available only for AWS PrivateLink endpoints.",
          "example": "IP_ADDRESS_TYPE_IPV6",
          "readOnly": true
        },
        "labels": {
          "description": "The labels of the private link connection, including the mandatory `tidb.cloud/project` label identifying the project it belongs to.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "readOnly": true,
          "title": "map<string, string>",
          "example": {
            "tidb.cloud/project": "1"
          }
        },
        "message": {
          "description": "The detailed message when the `endpointState` field is `\"FAILED\"`.",
          "type": "string",
          "readOnly": true,
          "example": ""
        },
        "name": {
          "description": "The name of the private endpoint connection, in the format of `tidbNodeGroups/{tidb_node_group_id}/privateEndpointConnections/{private_endpoint_connection_id}`.",
          "type": "string",
          "readOnly": true,
          "example": "tidbNodeGroups/1/privateEndpointConnections/1234567890"
        },
        "port": {
          "description": "The port used to connect to the TiDB cluster through the private endpoint connection.",
          "type": "integer",
          "format": "int32",
          "readOnly": true,
          "example": 4000
        },
        "privateEndpointConnectionId": {
          "description": "The unique ID of the private endpoint connection.",
          "type": "string",
          "readOnly": true,
          "example": "1234567890"
        },
        "privateIpAddress": {
          "description": "(Azure only) The private IP address of the private endpoint in your virtual network. TiDB Cloud automatically creates a public DNS record that resolves to this IP address, enabling you to connect using the DNS name.",
          "type": "string",
          "x-nullable": true
        },
        "privateLinkServiceName": {
          "description": "The name of the private link service that the private endpoint connection is connected to.",
          "type": "string",
          "readOnly": true,
          "example": "com.amazonaws.vpce.us-east-1.vpce-svc-1234567890"
        },
        "privateLinkServiceState": {
          "description": "The state of the private link service that the private endpoint connection is connected to.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1PrivateLinkServiceState"
            }
          ],
          "readOnly": true,
          "example": "ACTIVE"
        },
        "regionDisplayName": {
          "description": "The display name of the region where the private endpoint connection is located. For example, `N. Virginia (us-east-1)`.",
          "type": "string",
          "readOnly": true,
          "example": "N. Virginia (us-east-1)"
        },
        "regionId": {
          "description": "The ID of the region where the private endpoint connection is located, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-east-1`.",
          "type": "string",
          "readOnly": true,
          "example": "aws-us-east-1"
        },
        "tidbNodeGroupDisplayName": {
          "description": "The display name of the TiDB node group that the private endpoint connection is connected to.",
          "type": "string",
          "readOnly": true,
          "example": "DefaultGroup"
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB group to which the private endpoint connection belongs.",
          "type": "string",
          "example": "1"
        }
      },
      "required": ["tidbNodeGroupId", "endpointId"]
    },
    "dedicatedv1beta1PrivateEndpointConnectionEndpointState": {
      "description": "The state of the private endpoint connection.\n\n - PENDING: TiDB Cloud is asynchronously accepting the endpoint connection.\n - ACTIVE: The private endpoint connection is ready to use.\n - DELETING: The private endpoint connection is being deleted.\n - FAILED: The private endpoint connection has failed.\n - DISCOVERED: The endpoint is created in your VPC but not registered with TiDB Cloud.",
      "type": "string",
      "enum": ["PENDING", "ACTIVE", "DELETING", "FAILED", "DISCOVERED"]
    },
    "dedicatedv1beta1PrivateLinkService": {
      "description": "All fields are output only.",
      "type": "object",
      "properties": {
        "availableZones": {
          "description": "(AWS only) The availability zones where the private link service is available. For more information, see [`DescribeVpcEndpointServices`](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcEndpointServices.html).",
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": ["use1-az1", "use1-az4", "use1-az6"]
        },
        "cloudProvider": {
          "description": "The cloud provider where the private link service is located.\n\n- `\"aws\"`: Amazon Web Services\n\n- `\"gcp\"`: Google Cloud\n\n- `\"azure\"`: Microsoft Azure\n\n- `\"alicloud\"`: Alibaba Cloud",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1RegionCloudProvider"
            }
          ],
          "example": "aws"
        },
        "name": {
          "description": "The name of the private link service.",
          "type": "string",
          "example": "tidbNodeGroups/1/privateLinkService"
        },
        "regionDisplayName": {
          "description": "The display name of the region where the private link service is located. For example, `N. Virginia (us-east-1)`.",
          "type": "string",
          "example": "N. Virginia (us-east-1)"
        },
        "regionId": {
          "description": "The ID of the region where the private link service is located, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-east-1`.",
          "type": "string",
          "example": "aws-us-east-1"
        },
        "serviceDnsName": {
          "description": "The DNS name of the private link service, which varies by cloud provider:\n\n- AWS: the fully qualified domain name (FQDN) shared across all private endpoints, regardless of VPC location.\n\n- Google Cloud: the zone name (suffix of the FQDN) shared across all private endpoints in a single VPC network. The format of FQDN is `<endpoint_name>.<service_dns_name>`.\n\n- Azure: the zone name shared across public internet. The format of FQDN is `<endpoint_name>-<random_hash>.<service_dns_name>`.",
          "type": "string",
          "example": "privatelink-1234567890.muznnz1umf3p.clusters.staging.tidb-cloud.com"
        },
        "serviceName": {
          "description": "The service name of the private link service, which varies by cloud provider:\n\n- AWS: the service name of the private link service.\n\n- Google Cloud: the resource name of the service attachment.\n\n- Azure: the resource ID of the private link service.",
          "type": "string",
          "example": "com.amazonaws.vpce.us-east-1.vpce-svc-1234567890"
        },
        "state": {
          "description": "The state of the private link service.\n\n- `\"CREATING\"`: the private link service is being created.\n\n- `\"ACTIVE\"`: the private link service is ready to use.\n\n- `\"DELETING\"`: the private link service is being deleted.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1PrivateLinkServiceState"
            }
          ],
          "example": "ACTIVE"
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB group to which the private link service belongs.",
          "type": "string",
          "example": "1"
        }
      }
    },
    "dedicatedv1beta1PrivateLinkServiceState": {
      "description": " - CREATING: The private link service is being created.\n - ACTIVE: The private link service is active and ready for use.\n - DELETING: The private link service is being deleted.",
      "type": "string",
      "enum": ["CREATING", "ACTIVE", "DELETING"]
    },
    "dedicatedv1beta1QueryAuditLogFilesResponse": {
      "type": "object",
      "properties": {
        "auditLogFiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1QueryAuditLogFilesResponseAuditLogFile",
            "type": "object"
          }
        },
        "nextPageToken": {
          "type": "string"
        },
        "totalSize": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "dedicatedv1beta1QueryAuditLogFilesResponseAuditLogFile": {
      "type": "object",
      "properties": {
        "bucket": {
          "type": "string"
        },
        "createTime": {
          "type": "string",
          "format": "date-time"
        },
        "filename": {
          "type": "string"
        },
        "sizeByte": {
          "type": "integer",
          "format": "int32"
        },
        "uri": {
          "type": "string"
        }
      }
    },
    "dedicatedv1beta1ResetRootPasswordResponse": {
      "type": "object"
    },
    "dedicatedv1beta1TidbNodeGroup": {
      "type": "object",
      "properties": {
        "clusterId": {
          "description": "The ID of the cluster that the TiDB node group belongs to.\n\n- This field is **optional** when creating a cluster with the default TiDB group.\n\n- This field is **required** when creating a non-default TiDB group.",
          "type": "string",
          "example": "1"
        },
        "displayName": {
          "description": "The display name of the TiDB group.",
          "type": "string",
          "example": "DefaultGroup"
        },
        "endpoints": {
          "description": "The endpoints of the TiDB group.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupEndpoint",
            "type": "object"
          },
          "readOnly": true,
          "title": "Endpoint",
          "example": []
        },
        "isDefaultGroup": {
          "description": "Indicates whether this is the default TiDB node group.",
          "type": "boolean",
          "readOnly": true,
          "example": false
        },
        "name": {
          "description": "The resource name of the TiDB group, in the format of `tidbNodeGroups/{tidb_node_group_id}`.",
          "type": "string",
          "readOnly": true,
          "example": "tidbNodeGroups/1"
        },
        "nodeChangingProgress": {
          "description": "The progress of node configuration changes.",
          "allOf": [
            {
              "$ref": "#/definitions/ClusterNodeChangingProgress"
            }
          ],
          "readOnly": true,
          "title": "NodeChangingProgress"
        },
        "nodeCount": {
          "description": "The number of TiDB nodes in the TiDB group. It must be greater than or equal to `1`.",
          "type": "integer",
          "format": "int32",
          "example": 2,
          "minimum": 1
        },
        "nodeSpecDisplayName": {
          "description": "The display name of the node spec of the TiDB group. For example, `8 vCPU, 32 GiB`.",
          "type": "string",
          "readOnly": true,
          "example": "8 vCPU, 32 GiB"
        },
        "nodeSpecKey": {
          "description": "The node spec key of the TiDB group. For example, `8C32G`.",
          "type": "string",
          "example": "8C32G"
        },
        "nodeSpecVersion": {
          "description": "The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.",
          "type": "string",
          "readOnly": true
        },
        "state": {
          "description": "The current state of the TiDB group.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupState"
            }
          ],
          "readOnly": true,
          "example": "ACTIVE"
        },
        "tidbNodeGroupId": {
          "description": "The unique ID of the TiDB group.",
          "type": "string",
          "readOnly": true,
          "example": "1"
        },
        "tiproxyNodeChangingProgress": {
          "description": "The progress of TiProxy node configuration changes.",
          "allOf": [
            {
              "$ref": "#/definitions/ClusterNodeChangingProgress"
            }
          ],
          "readOnly": true
        },
        "tiproxySetting": {
          "description": "Configures TiProxy settings for this TiDB group. If not specified, the default TiProxy settings is used.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupTiProxySetting"
            }
          ]
        }
      },
      "required": ["nodeCount"]
    },
    "dedicatedv1beta1TidbNodeGroupEndpoint": {
      "type": "object",
      "properties": {
        "connectionType": {
          "description": "The connection type for TiDB node group endpoints.\n\n- `\"PUBLIC\"`: indicates that the endpoint is accessible over the public network.\n\n- `\"VPC_PEERING\"`: indicates that the endpoint is accessible over [VPC peering](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#vpc-peering).\n\n- `\"PRIVATE_ENDPOINT\"`: indicates that the endpoint is accessible over a private link.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1TidbNodeGroupEndpointConnectionType"
            }
          ],
          "readOnly": true,
          "example": "PRIVATE_ENDPOINT"
        },
        "host": {
          "description": "The hostname or IP address of the endpoint. For `PRIVATE_ENDPOINT` connection types, availability varies by cloud provider:\n\n- For clusters deployed on AWS, the `host` field is available after the private link service is ready.\n\n- For clusters deployed on Google Cloud or Azure, the `host` field is available after you create a `PrivateEndpointConnection`.",
          "type": "string",
          "readOnly": true
        },
        "port": {
          "description": "The port of the endpoint connection.",
          "type": "integer",
          "format": "int32",
          "readOnly": true
        }
      }
    },
    "dedicatedv1beta1TidbNodeGroupState": {
      "description": " - ACTIVE: Indicates the TiDB group is active and ready for use.\n - MODIFYING: Indicates the TiDB group is being modified.\n - PAUSED: Indicates the TiDB group is paused.",
      "type": "string",
      "enum": ["ACTIVE", "MODIFYING", "PAUSED"]
    },
    "dedicatedv1beta1TidbNodeGroupTiProxySetting": {
      "type": "object",
      "properties": {
        "nodeCount": {
          "description": "The number of TiProxy nodes in the TiDB group. If not specified or set to `0`, TiProxy is disabled.",
          "type": "integer",
          "format": "int32",
          "example": 2,
          "x-nullable": true
        },
        "nodeSpecDisplayName": {
          "description": "The display name of the TiProxy node spec. For example, `2 vCPU, 4 GiB`.",
          "type": "string",
          "readOnly": true,
          "example": "2 vCPU, 4 GiB"
        },
        "nodeSpecKey": {
          "description": "The node spec key of the TiProxy nodes in the cluster. For example, `2C4G`.\n\nTo view available node specs, use the [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) endpoint.",
          "type": "string",
          "example": "2C4G"
        },
        "nodeSpecVersion": {
          "type": "string",
          "readOnly": true
        }
      },
      "required": ["nodeSpecKey"]
    },
    "dedicatedv1beta1VpcPeering": {
      "type": "object",
      "properties": {
        "awsVpcPeeringConnectionId": {
          "description": "Only for AWS vpc peerings.",
          "type": "string",
          "readOnly": true,
          "x-nullable": true
        },
        "customerAccountId": {
          "description": "In AWS, it is the account ID.\nIn GCP, it is the project name.",
          "type": "string"
        },
        "customerRegionId": {
          "description": "Format: {cloud_provider}-{region_code}\nFor AWS, it's required.\nFor GCP, it's optional. Since GCP does not require region_id when creating VPC peering.",
          "type": "string"
        },
        "customerVpcCidr": {
          "type": "string"
        },
        "customerVpcId": {
          "description": "In AWS, it is the VPC ID.\nIn GCP, it is the network name.",
          "type": "string"
        },
        "labels": {
          "description": "The labels of the vpc peering. It always contains the `project_id` label.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "readOnly": true
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "title": "Format: vpcPeerings/{vpc_peering_id}"
        },
        "state": {
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1VpcPeeringState"
            }
          ],
          "readOnly": true
        },
        "tidbCloudAccountId": {
          "description": "In AWS, it is the account ID.\nIn GCP, it is the project name.",
          "type": "string",
          "readOnly": true
        },
        "tidbCloudCloudProvider": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1RegionCloudProvider"
            }
          ],
          "readOnly": true
        },
        "tidbCloudRegionId": {
          "type": "string",
          "title": "Format: {cloud_provider}-{region_code}"
        },
        "tidbCloudVpcCidr": {
          "type": "string",
          "readOnly": true
        },
        "tidbCloudVpcId": {
          "description": "In AWS, it is the VPC ID.\nIn GCP, it is the network name.",
          "type": "string",
          "readOnly": true
        },
        "vpcPeeringId": {
          "type": "string",
          "readOnly": true,
          "title": "Format {cloud_provider}-{random_suffix}"
        }
      },
      "required": ["tidbCloudRegionId", "customerAccountId", "customerVpcId", "customerVpcCidr"]
    },
    "dedicatedv1beta1VpcPeeringState": {
      "type": "string",
      "enum": ["PENDING", "FAILED", "ACTIVE"]
    },
    "googlerpcStatus": {
      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
      "type": "object",
      "properties": {
        "code": {
          "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code].",
          "type": "integer",
          "format": "int32"
        },
        "details": {
          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny",
            "type": "object"
          }
        },
        "message": {
          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized\nby the client.",
          "type": "string"
        }
      }
    },
    "protobufAny": {
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "type": "object",
      "additionalProperties": {},
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      }
    },
    "tidb_cloud_open_apidedicatedv1beta1BindTagsResponse": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/commonv1beta1Tag",
            "type": "object"
          }
        }
      }
    },
    "tidb_cloud_open_apidedicatedv1beta1Cluster": {
      "description": "Cluster represents a dedicated TiDB cluster.",
      "type": "object",
      "properties": {
        "annotations": {
          "description": "The annotations for the cluster. The following lists some predefined annotations:\n- `tidb.cloud/has-set-password`: indicates whether the cluster has a root password set.\n- `tidb.cloud/available-features`: lists available features of the cluster.\n- `tidb.cloud/insufficient-vm-resource`: indicates insufficient virtual machine resources during during cluster creation or modification.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "readOnly": true,
          "title": "map<string, string>",
          "example": {
            "tidb.cloud/has-set-password": "false"
          }
        },
        "cloudProvider": {
          "description": "The cloud provider where the cluster is located.\n\n- `\"aws\"`: Amazon Web Services\n\n- `\"gcp\"`: Google Cloud\n\n- `\"azure\"`: Microsoft Azure\n\n- `\"alicloud\"`: Alibaba Cloud",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1RegionCloudProvider"
            }
          ],
          "readOnly": true,
          "title": "CloudProvider",
          "example": "aws"
        },
        "clusterId": {
          "description": "The ID of the cluster.",
          "type": "string",
          "readOnly": true,
          "example": "1"
        },
        "createTime": {
          "description": "The timestamp when the cluster was created, in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.",
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "example": "2023-10-01T12:00:00Z"
        },
        "createdBy": {
          "description": "The email address or public API key of the user who create the cluster.",
          "type": "string",
          "readOnly": true,
          "example": "test@example.com"
        },
        "displayName": {
          "description": "The user-defined name of the cluster.",
          "type": "string",
          "example": "foo-bar",
          "maxLength": 64,
          "minLength": 4,
          "pattern": "^[A-Za-z0-9][-A-Za-z0-9]{2,62}[A-Za-z0-9]$"
        },
        "labels": {
          "description": "Key-value pairs used to label the cluster. If the `tidb.cloud/project` label is not specified, the cluster is associated with the default project in the creator's organization. \n\n**Note**: Currently, only the `tidb.cloud/project` label key can be specified when creating a new cluster.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "map<string, string>",
          "example": {
            "tidb.cloud/project": "1"
          }
        },
        "name": {
          "description": "The unique identifier for the TiDB cluster, which is generated by the API and follows the format `clusters/{clusterId}`.",
          "type": "string",
          "readOnly": true,
          "example": "clusters/1"
        },
        "pausePlan": {
          "description": "The pause plan configuration of the cluster.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1ClusterPausePlan"
            }
          ],
          "readOnly": true,
          "title": "PausePlan"
        },
        "port": {
          "description": "The port for cluster connections. All network endpoints in the cluster use this port.",
          "type": "integer",
          "format": "int32",
          "default": "4000",
          "example": 4000,
          "maximum": 65535,
          "minimum": 1024
        },
        "regionDisplayName": {
          "description": "The display name of the region where the cluster is located. For example, `N. Virginia (us-east-1)`.",
          "type": "string",
          "readOnly": true,
          "example": "N. Virginia (us-east-1)"
        },
        "regionId": {
          "description": "The region where the cluster is deployed, in the format of `{cloud_provider}-{region_code}`. For example, `aws-us-west-2`.",
          "type": "string",
          "example": "aws-us-west-2"
        },
        "rootPassword": {
          "description": "The root password of the cluster. It must be between 8 and 64 characters long and can contain letters, numbers, and special characters.",
          "type": "string",
          "example": "my-shining-password",
          "maxLength": 64,
          "minLength": 8,
          "pattern": "^.{8,64}$"
        },
        "state": {
          "description": "The current state of the cluster.",
          "allOf": [
            {
              "$ref": "#/definitions/commonv1beta1ClusterState"
            }
          ],
          "readOnly": true,
          "example": "ACTIVE"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/commonv1beta1Tag",
            "type": "object"
          }
        },
        "tidbNodeSetting": {
          "description": "The configuration for [TiDB nodes](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#tidb-node) in a TiDB Cloud Dedicated cluster.\n\nTo view available node specs for a specific region and cloud provider, use the [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) endpoint.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1ClusterTidbNodeSetting"
            }
          ],
          "title": "TidbNodeSetting"
        },
        "tiflashNodeSetting": {
          "description": "The configuration for [TiFlash nodes](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#tiflash-node) in a TiDB Cloud Dedicated cluster. If not set, TiFlash is disabled.\n\nTo view available node specs for a specific region and cloud provider, use the [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) endpoint.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1ClusterStorageNodeSetting"
            }
          ],
          "title": "StorageNodeSetting",
          "example": {
            "nodeCount": 3,
            "nodeSpecKey": "16C128G",
            "storageSizeGi": 500,
            "storageType": "Basic"
          }
        },
        "tikvNodeSetting": {
          "description": "The configuration for [TiKV nodes](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#tikv-node) in a TiDB Cloud Dedicated cluster.\n\nTo view available node specs for a specific region and cloud provider, use the [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) endpoint.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1ClusterStorageNodeSetting"
            }
          ],
          "title": "StorageNodeSetting"
        },
        "updateTime": {
          "description": "The timestamp when the cluster was last updated, in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.",
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "example": "2023-10-01T12:00:00Z"
        },
        "version": {
          "description": "The TiDB version of the cluster.",
          "type": "string",
          "readOnly": true,
          "example": "8.5.2"
        }
      },
      "required": ["displayName", "regionId", "tidbNodeSetting", "tikvNodeSetting", "port"]
    },
    "tidb_cloud_open_apidedicatedv1beta1ClusterServiceBindTagsBody": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["tags"]
    },
    "tidb_cloud_open_apidedicatedv1beta1ClusterServiceUnbindTagsBody": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["tags"]
    },
    "tidb_cloud_open_apidedicatedv1beta1ListClustersResponse": {
      "type": "object",
      "properties": {
        "clusters": {
          "description": "A list of clusters that match the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster",
            "type": "object"
          }
        },
        "nextPageToken": {
          "description": "The token to retrieve the next page of results. Use this value as the `pageToken` parameter in the next request. This field is empty when there are no more pages.",
          "type": "string",
          "example": "next_page_token"
        },
        "totalSize": {
          "description": "The total number of clusters that match the query.",
          "type": "integer",
          "format": "int32",
          "example": 1
        }
      }
    },
    "tidb_cloud_open_apidedicatedv1beta1ListRegionsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "The token to retrieve the next page of results. Use this value as the `pageToken` parameter in the next request. This field is empty when there are no more pages.",
          "type": "string"
        },
        "regions": {
          "description": "A list of regions that match the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/commonv1beta1Region",
            "type": "object"
          },
          "title": "Region"
        },
        "totalSize": {
          "description": "The total number of regions that match the query.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "tidb_cloud_open_apidedicatedv1beta1UnbindTagsResponse": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/commonv1beta1Tag",
            "type": "object"
          }
        }
      }
    },
    "v1beta1AuditLogConfigBucketWriteCheck": {
      "type": "object",
      "properties": {
        "errorReason": {
          "description": "The reason why the bucket is not writable. Output only when `writable` is false.",
          "type": "string",
          "readOnly": true
        },
        "writable": {
          "type": "boolean",
          "readOnly": true
        }
      }
    },
    "v1beta1AuditLogConfigFormat": {
      "type": "string",
      "enum": ["TEXT", "JSON"]
    },
    "v1beta1AuditLogConfigRotationPolicy": {
      "type": "object",
      "properties": {
        "maxAgeSecond": {
          "description": "Set the time limitation for audit logs. A log rotation is triggered if the log file exceeds this limitation.\nSetting this variable to 0 means to disable automatic log rotation by time.",
          "type": "integer",
          "format": "int32",
          "default": "86400",
          "maximum": 2592000,
          "x-nullable": true
        },
        "maxSizeMib": {
          "description": "Set the file size limitation for audit logs. A log rotation is triggered if the log file exceeds this limitation.\nIn the current version, If you set this variable to 0, TiDB automatically changes it to 10.",
          "type": "integer",
          "format": "int32",
          "default": "10",
          "maximum": 100,
          "minimum": 1
        }
      }
    },
    "v1beta1ClusterServiceResetRootPasswordBody": {
      "type": "object",
      "properties": {
        "rootPassword": {
          "description": "The new root password for the cluster. The password must be between 8 and 64 characters long and can contain letters, numbers, and special characters.",
          "type": "string",
          "example": "new_password"
        }
      },
      "required": ["rootPassword"]
    },
    "v1beta1ClusterStorageNodeSetting": {
      "type": "object",
      "properties": {
        "dataStoreIops": {
          "description": "The IOPS (input/output operations per second) of the data store for the node. Only supported for AWS clusters with `Plus` TiKV storage type. If not specified, the default IOPS of the data store is used.",
          "type": "integer",
          "format": "int32",
          "example": 3000,
          "x-nullable": true
        },
        "nodeChangingProgress": {
          "description": "The progress of the node changing.",
          "allOf": [
            {
              "$ref": "#/definitions/ClusterNodeChangingProgress"
            }
          ],
          "readOnly": true,
          "title": "NodeChangingProgress"
        },
        "nodeCount": {
          "description": "The number of nodes in the cluster.",
          "type": "integer",
          "format": "int32",
          "example": 3
        },
        "nodeSpecDisplayName": {
          "description": "The display name of the node spec. For example, `8 vCPU, 32 GiB`.",
          "type": "string",
          "readOnly": true,
          "example": "8 vCPU, 32 GiB"
        },
        "nodeSpecKey": {
          "description": "The node spec key of the nodes in the cluster. For example, `8C32G`.",
          "type": "string",
          "example": "8C32G"
        },
        "nodeSpecVersion": {
          "description": "The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.",
          "type": "string",
          "readOnly": true,
          "example": "v1"
        },
        "raftStoreIops": {
          "description": "The IOPS (input/output operations per second) of the Raft store for the node. If not specified, the default IOPS of Raft store is used. It is recommended to leave it blank to use the default settings for optimal performance.",
          "type": "integer",
          "format": "int32",
          "example": 3000,
          "x-nullable": true
        },
        "storageSizeGi": {
          "description": "The storage size of each node in gibibytes (GiB). To view supported storage size ranges, use the [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) or [Get a node spec](#tag/RegionService/operation/RegionService_GetNodeSpec) endpoint.",
          "type": "integer",
          "format": "int32",
          "example": 500
        },
        "storageType": {
          "description": "The storage type of the node. For more information, see [TiKV node storage types](https://docs.pingcap.com/tidbcloud/size-your-cluster/#tikv-node-storage-types) and [TiFlash node storage types](https://docs.pingcap.com/tidbcloud/size-your-cluster/#tiflash-node-storage-types).",
          "allOf": [
            {
              "$ref": "#/definitions/ClusterStorageNodeSettingStorageType"
            }
          ],
          "example": "Standard"
        }
      },
      "required": ["nodeCount", "nodeSpecKey", "storageSizeGi"]
    },
    "v1beta1ClusterTidbNodeSetting": {
      "type": "object",
      "properties": {
        "nodeSpecDisplayName": {
          "description": "The display name of the node spec. For example, `8 vCPU, 32 GiB`.",
          "type": "string",
          "readOnly": true,
          "example": "8 vCPU, 32 GiB"
        },
        "nodeSpecKey": {
          "description": "The node spec key of the TiDB nodes in the cluster. For example, `8C32G`. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
          "type": "string",
          "example": "8C32G"
        },
        "nodeSpecVersion": {
          "description": "The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.",
          "type": "string",
          "readOnly": true,
          "example": "v1"
        },
        "tidbNodeGroups": {
          "description": "The [TiDB node groups](https://docs.pingcap.com/tidbcloud/tidb-node-group-overview/) in the cluster.\n\nWhen you create a cluster, this array must contain exactly one `TidbNodeGroup` object, and the `nodeCount` field must be set.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroup",
            "type": "object"
          },
          "title": "TidbNodeGroup"
        }
      },
      "required": ["tidbNodeGroups"]
    },
    "v1beta1ListNetworkContainersResponse": {
      "type": "object",
      "properties": {
        "networkContainers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1NetworkContainer",
            "type": "object"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "totalSize": {
          "description": "The total number of network containers that matched the query.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "v1beta1ListNodeInstancesResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `pageToken` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string",
          "example": "next_page_token"
        },
        "nodeInstances": {
          "description": "A list of node instances that matched the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1NodeInstance",
            "type": "object"
          },
          "title": "NodeInstance"
        },
        "totalSize": {
          "description": "The total number of node instances that matched the query.",
          "type": "integer",
          "format": "int32",
          "example": 1
        }
      }
    },
    "v1beta1ListNodeSpecsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "The token to retrieve the next page of results. Use this value as the `pageToken` parameter in the next request. This field is empty when there are no more pages.",
          "type": "string"
        },
        "nodeSpecs": {
          "description": "A list of node specs that match the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1NodeSpec",
            "type": "object"
          }
        },
        "totalSize": {
          "description": "The total number of node specs that match the query.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "v1beta1NetworkContainer": {
      "type": "object",
      "properties": {
        "cidrNotation": {
          "description": "If not set, the default cidr of the region will be used.",
          "type": "string"
        },
        "cloudProvider": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1RegionCloudProvider"
            }
          ],
          "readOnly": true
        },
        "labels": {
          "description": "The labels of the cluster.\nIf there is no \"project_id\" in labels, resource should be in the default project of the creator's organization.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "title": "Format: networkContainers/{network_container_id}"
        },
        "networkContainerId": {
          "type": "string",
          "readOnly": true
        },
        "regionDisplayName": {
          "type": "string",
          "readOnly": true
        },
        "regionId": {
          "type": "string",
          "title": "Format: {cloud_provider}-{region_code}"
        },
        "state": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1NetworkContainerState"
            }
          ],
          "readOnly": true
        },
        "vpcId": {
          "description": "For AWS, it is the vpc id.\nFor GCP, it is the network name.\nFor Azure, it is the vnet name.",
          "type": "string",
          "readOnly": true
        }
      },
      "required": ["regionId"]
    },
    "v1beta1NetworkContainerState": {
      "type": "string",
      "enum": ["ACTIVE", "INACTIVE"]
    },
    "v1beta1NodeInstance": {
      "description": "All fields are output only.",
      "type": "object",
      "properties": {
        "availabilityZone": {
          "description": "The availability zone of the node instance, e.g. `us-west-2a`.",
          "type": "string",
          "readOnly": true,
          "example": "us-west-2a"
        },
        "clusterId": {
          "description": "The ID of the cluster to which the node instance belongs.",
          "type": "string",
          "example": "1"
        },
        "componentType": {
          "description": "The component type of the node instance. It can be one of the following values:\n- `TIDB`: TiDB node instance.\n- `TIKV`: TiKV node instances.\n- `TIFLASH`: TiFlash node instances.\n- `PD`: PD node instances.\n- `PROXY`: Proxy node instances.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1ComponentType"
            }
          ],
          "example": "TIDB"
        },
        "dataStoreIops": {
          "description": "The IOPS of the data store of the node instance. Only available for AWS instances with `Plus` TiKV storage type.",
          "type": "integer",
          "format": "int32",
          "x-nullable": true
        },
        "instanceId": {
          "description": "The ID of the node instance. It is formatted as:\n- `tidb-{index}` for TiDB instances in the default TiDB group\n- `{tidb_group_name}-tidb-{index}` for TiDB instances in non-default TiDB groups\n- `{component_type}-{index}` for other instances.",
          "type": "string",
          "example": "tidb-0"
        },
        "isDefaultTidbNodeGroup": {
          "description": "Indicates whether the TiDB node group that the node instance belongs to is the default one.",
          "type": "boolean",
          "example": true,
          "x-nullable": true
        },
        "memorySizeGi": {
          "description": "The memory size of the node instance in GiB. e.g. `32`.",
          "type": "integer",
          "format": "int32",
          "example": 32
        },
        "name": {
          "description": "The name of the node instance resource which is formatted as: `clusters/{cluster_id}/nodeInstances/{instance_id}`.",
          "type": "string",
          "example": "clusters/1/nodeInstances/tidb-0"
        },
        "nodeSpecDisplayName": {
          "description": "The display name of the node spec of the node instance. e.g. `8 vCPU, 32 GiB`.",
          "type": "string",
          "example": "8 vCPU, 32 GiB"
        },
        "nodeSpecKey": {
          "description": "The node spec key of the node instance. e.g. `8C32G`.",
          "type": "string",
          "example": "8C32G"
        },
        "nodeSpecVersion": {
          "description": "The version tag of the node spec resource. The performance and price of the component may vary based on the version tag.",
          "type": "string"
        },
        "raftStoreIops": {
          "description": "The IOPS of the raft store of the node instance. Only available for instances which have storage. If not set, the default IOPS of raft store will be used.",
          "type": "integer",
          "format": "int32",
          "x-nullable": true
        },
        "state": {
          "description": "The state of the node instance.\n- `CREATING`: indicates the node instance is being created.\n- `AVAILABLE`: indicates the node instance is available for use.\n- `DELETING`: indicates the node instance is being deleted.\n- `UNAVAILABLE`: indicates the node instance is not available.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1NodeInstanceState"
            }
          ],
          "example": "AVAILABLE"
        },
        "storageSizeGi": {
          "description": "The storage size of the node instance in GiB. e.g. `200`.",
          "type": "integer",
          "format": "int32",
          "example": 200
        },
        "storageType": {
          "description": "The storage type of the node instance. Only available for instances which have storage.",
          "allOf": [
            {
              "$ref": "#/definitions/ClusterStorageNodeSettingStorageType"
            }
          ],
          "example": "Standard"
        },
        "tidbNodeGroupDisplayName": {
          "description": "The display name of the TiDB node group that the node instance belongs to.",
          "type": "string",
          "example": "DefaultGroup",
          "x-nullable": true
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB node group that the node instance belongs to.",
          "type": "string",
          "example": "node_group_id",
          "x-nullable": true
        },
        "vCpu": {
          "description": "The number of vCPUs of the node instance. e.g. `8`.",
          "type": "integer",
          "format": "int32",
          "example": 8
        }
      }
    },
    "v1beta1NodeInstanceState": {
      "type": "string",
      "enum": ["CREATING", "AVAILABLE", "DELETING", "UNAVAILABLE"]
    },
    "v1beta1NodeSpecStorage": {
      "type": "object",
      "properties": {
        "defaultIops": {
          "description": "The default IOPS of the storage for the node spec resource.",
          "type": "integer",
          "format": "int32",
          "readOnly": true,
          "x-nullable": true
        },
        "maxIops": {
          "description": "The maximum IOPS of the storage for the node spec resource.",
          "type": "integer",
          "format": "int32",
          "readOnly": true,
          "x-nullable": true
        },
        "minIops": {
          "description": "The minimum IOPS of the storage for the node spec resource.",
          "type": "integer",
          "format": "int32",
          "readOnly": true,
          "x-nullable": true
        }
      }
    },
    "v1beta1NodeSpecStorageTypeDetail": {
      "type": "object",
      "properties": {
        "dataStorage": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1NodeSpecStorage"
            }
          ],
          "readOnly": true
        },
        "raftlogStorage": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1NodeSpecStorage"
            }
          ],
          "readOnly": true
        }
      }
    },
    "v1beta1PauseClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "description": "The cluster details after it is paused.",
          "allOf": [
            {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          ],
          "title": "Cluster"
        }
      },
      "required": ["cluster"]
    },
    "v1beta1PrivateEndpointConnectionIPAddressType": {
      "enum": ["IP_ADDRESS_TYPE_IPV4", "IP_ADDRESS_TYPE_IPV6", "IP_ADDRESS_TYPE_DUALSTACK"],
      "type": "string"
    },
    "v1beta1PrivateLinkIPAddressTypeSetting": {
      "description": "PrivateLinkIPAddressTypeSetting represents the asynchronous PrivateLink IP address type setting of a TiDB Node Group.",
      "properties": {
        "desired": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1PrivateLinkIPAddressTypeSettingIPAddressType"
            }
          ],
          "description": "The requested PrivateLink IP address type."
        },
        "message": {
          "description": "A human-readable status message. Clients must use state rather than parse this field.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The name of the setting resource formatted as: `tidbNodeGroups/{tidb_node_group_id}/privateLinkIpAddressTypeSetting`.",
          "readOnly": true,
          "type": "string"
        },
        "observed": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1PrivateLinkIPAddressTypeSettingIPAddressType"
            }
          ],
          "description": "The PrivateLink IP address type strictly observed from the infrastructure.",
          "readOnly": true
        },
        "ready": {
          "description": "Whether the desired type has been strictly observed and is ready.",
          "readOnly": true,
          "type": "boolean"
        },
        "state": {
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1PrivateLinkIPAddressTypeSettingState"
            }
          ],
          "description": "The asynchronous state of the setting.",
          "readOnly": true
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB Node Group to which the setting belongs.",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": ["desired"],
      "type": "object"
    },
    "v1beta1PrivateLinkIPAddressTypeSettingIPAddressType": {
      "enum": ["IPV4", "DUALSTACK"],
      "type": "string"
    },
    "v1beta1PrivateLinkIPAddressTypeSettingState": {
      "description": " - CHANGING: The address update is running or being retried.\n - UNKNOWN: The infrastructure is not strictly ready and no active address operation can be proven.",
      "enum": ["READY", "CHANGING", "UNKNOWN"],
      "type": "string"
    },
    "v1beta1PublicEndpointSetting": {
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Indicates whether the public endpoint is enabled for the TiDB group.",
          "type": "boolean",
          "x-nullable": true
        },
        "ipAccessList": {
          "description": "A list of IP access control lists for the public endpoint. If not set, all IPs are allowed to access the public endpoint.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1PublicEndpointSettingIpAccessList",
            "type": "object"
          },
          "title": "IpAccessList"
        },
        "name": {
          "description": "The name of the public endpoint setting resource formatted as: `tidbNodeGroups/{tidb_node_group_id}/publicEndpointSetting`.",
          "type": "string",
          "readOnly": true
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB group to which the public endpoint setting belongs. If set to \"-\", the default TiDB group will be used.",
          "type": "string"
        }
      },
      "required": ["tidbNodeGroupId"]
    },
    "v1beta1PublicEndpointSettingIpAccessList": {
      "type": "object",
      "properties": {
        "cidrNotation": {
          "description": "The CIDR notation of the IP access control list.",
          "type": "string"
        },
        "description": {
          "description": "The description of the IP access control list.",
          "type": "string"
        }
      },
      "required": ["cidrNotation"]
    },
    "v1beta1RegionCloudProvider": {
      "description": "Enum of cloud provider names.\n\n - aws: Amazon Web Services.\n - gcp: Google Cloud Platform.\n - azure: Microsoft Azure.\n - alicloud: Alibaba Cloud.",
      "type": "string",
      "enum": ["aws", "gcp", "azure", "alicloud"]
    },
    "v1beta1ReplaceAuditLogFilterRuleRequestAuditLogFilterRule": {
      "type": "object",
      "properties": {
        "auditLogFilterRuleId": {
          "type": "string"
        },
        "clusterId": {
          "type": "string"
        },
        "disabled": {
          "type": "boolean"
        },
        "displayName": {
          "type": "string"
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRuleEventType"
          }
        },
        "userExpr": {
          "type": "string"
        }
      },
      "required": ["clusterId", "auditLogFilterRuleId"]
    },
    "v1beta1ReplaceAuditLogFilterRuleResponse": {
      "type": "object",
      "properties": {
        "auditLogFilterRule": {
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1AuditLogFilterRule"
            }
          ],
          "readOnly": true
        }
      }
    },
    "v1beta1ResumeClusterResponse": {
      "type": "object",
      "properties": {
        "cluster": {
          "description": "The cluster details after it is resumed.",
          "allOf": [
            {
              "$ref": "#/definitions/tidb_cloud_open_apidedicatedv1beta1Cluster"
            }
          ],
          "title": "Cluster"
        }
      },
      "required": ["cluster"]
    },
    "v1beta1ServicePlanInfo": {
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string"
        },
        "servicePlan": {
          "$ref": "#/definitions/commonv1beta1ServicePlan"
        }
      }
    },
    "v1beta1ShowCloudProvidersResponse": {
      "type": "object",
      "properties": {
        "cloudProviders": {
          "description": "A list of cloud providers that are available for the project.\n\n- `\"aws\"`: Amazon Web Services\n\n- `\"gcp\"`: Google Cloud\n\n- `\"azure\"`: Microsoft Azure\n\n- `\"alicloud\"`: Alibaba Cloud",
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1RegionCloudProvider"
          }
        }
      }
    },
    "v1beta1ShowCmekAccessIamPrincipalResponse": {
      "type": "object",
      "properties": {
        "awsCmekPrincipal": {
          "$ref": "#/definitions/v1beta1ShowCmekAccessIamPrincipalResponseAwsCmekPrincipal"
        },
        "azureCmekPrincipal": {
          "$ref": "#/definitions/v1beta1ShowCmekAccessIamPrincipalResponseAzureCmekPrincipal"
        },
        "cloudProvider": {
          "$ref": "#/definitions/v1beta1RegionCloudProvider"
        },
        "projectId": {
          "type": "string"
        },
        "regionId": {
          "type": "string"
        }
      }
    },
    "v1beta1ShowCmekAccessIamPrincipalResponseAwsCmekPrincipal": {
      "type": "object",
      "properties": {
        "accountId": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "v1beta1ShowCmekAccessIamPrincipalResponseAzureCmekPrincipal": {
      "type": "object",
      "properties": {
        "appRegistration": {
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1AzureAppRegistration"
            }
          ],
          "readOnly": true
        },
        "keyVaultKeySuffix": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "v1beta1ShowNodeQuotaResponse": {
      "type": "object",
      "properties": {
        "componentQuotas": {
          "description": "A list of quotas for each component type. Each quota specifies the maximum number of nodes allowed for that component.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ShowNodeQuotaResponseComponentQuota",
            "type": "object"
          },
          "title": "ComponentQuota",
          "example": [
            {
              "componentType": "TIDB",
              "quota": 200
            },
            {
              "componentType": "TIKV",
              "quota": 200
            },
            {
              "componentType": "TIFLASH",
              "quota": 50
            }
          ]
        }
      }
    },
    "v1beta1ShowObjectStorageAccessIamPrincipalResponse": {
      "type": "object",
      "properties": {
        "iamPrincipal": {
          "type": "string"
        }
      }
    },
    "v1beta1TidbNodeGroupEndpointConnectionType": {
      "description": "The connection type for TiDB node group endpoints.\n\n - PUBLIC: Indicates that the endpoint is accessible over the public network.\n - VPC_PEERING: Indicates that the endpoint is accessible over [VPC peering](https://docs.pingcap.com/tidbcloud/tidb-cloud-glossary/#vpc-peering).\n - PRIVATE_ENDPOINT: Indicates that the endpoint is accessible over a private link.",
      "type": "string",
      "enum": ["PUBLIC", "VPC_PEERING", "PRIVATE_ENDPOINT"]
    },
    "v1beta1UpdateAuditLogConfigRequestAuditLogConfig": {
      "type": "object",
      "properties": {
        "awsRoleArn": {
          "type": "string"
        },
        "azureSasToken": {
          "type": "string"
        },
        "bucketManager": {
          "$ref": "#/definitions/AuditLogConfigBucketManager"
        },
        "bucketRegionId": {
          "type": "string",
          "title": "Format: {cloud_provider}-{region_code}"
        },
        "bucketUri": {
          "type": "string"
        },
        "clusterId": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean",
          "x-nullable": true
        },
        "format": {
          "$ref": "#/definitions/v1beta1AuditLogConfigFormat"
        },
        "rotationPolicy": {
          "$ref": "#/definitions/v1beta1AuditLogConfigRotationPolicy"
        },
        "unredacted": {
          "type": "boolean",
          "x-nullable": true
        }
      },
      "required": ["clusterId"]
    },
    "v1beta1UpdateClusterRequestCluster": {
      "type": "object",
      "properties": {
        "clusterId": {
          "description": "The ID of the cluster to update.",
          "type": "string",
          "example": "1"
        },
        "displayName": {
          "description": "The display name of the cluster.",
          "type": "string",
          "example": "My Cluster"
        },
        "labels": {
          "description": "The labels of the cluster. \n\n**Note**: Currently, does not support `labels` updates.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "map<string, string>",
          "example": {}
        },
        "tidbNodeSetting": {
          "description": "The TiDB node setting for updating cluster. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1UpdateClusterRequestTidbNodeSetting"
            }
          ]
        },
        "tiflashNodeSetting": {
          "description": "The TiFlash node setting for updating cluster. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1UpdateClusterRequestStorageNodeSetting"
            }
          ],
          "example": {
            "nodeCount": 3,
            "nodeSpecKey": "16C128G",
            "storageSizeGi": 500,
            "storageType": "Basic"
          }
        },
        "tikvNodeSetting": {
          "description": "The TiKV node setting for updating cluster. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/RegionService/operation/RegionService_ListNodeSpecs) API.",
          "allOf": [
            {
              "$ref": "#/definitions/v1beta1UpdateClusterRequestStorageNodeSetting"
            }
          ]
        }
      },
      "required": ["clusterId"]
    },
    "v1beta1UpdateClusterRequestStorageNodeSetting": {
      "type": "object",
      "properties": {
        "dataStoreIops": {
          "description": "The IOPS of the data store for the node. Only supported for AWS clusters with `Plus` TiKV storage type.",
          "type": "integer",
          "format": "int32",
          "example": 3000,
          "x-nullable": true
        },
        "nodeCount": {
          "description": "The number of nodes in the cluster. \nWhen update TiFlash node setting: \n- If the node count is set to 0, the TiFlash node will be removed.\n- If the node count is null, the TiFlash node count won't change.\nFor other components, if the node count is set to 0, server will ignore the node count.",
          "type": "integer",
          "format": "int32",
          "example": 3,
          "x-nullable": true
        },
        "nodeSpecKey": {
          "description": "The node spec key of the nodes in the cluster. For example, `8C32G`.",
          "type": "string",
          "example": "8C32G"
        },
        "raftStoreIops": {
          "description": "The IOPS of the raft store for the node. If not set, the default IOPS of raft store will be used.",
          "type": "integer",
          "format": "int32",
          "example": 3000,
          "x-nullable": true
        },
        "storageSizeGi": {
          "description": "The storage size of the node in GiB. To get the supported storage size range, please refer to the `NodeSpec` resource.",
          "type": "integer",
          "format": "int32",
          "example": 500
        },
        "storageType": {
          "description": "The type of storage for the node. Default to `Basic`. For more information, see [TiKV node storage types](https://docs.pingcap.com/tidbcloud/size-your-cluster/#tikv-node-storage-types) and [TiFlash node storage types](https://docs.pingcap.com/tidbcloud/size-your-cluster/#tiflash-node-storage-types).",
          "allOf": [
            {
              "$ref": "#/definitions/ClusterStorageNodeSettingStorageType"
            }
          ],
          "example": "Standard"
        }
      }
    },
    "v1beta1UpdateClusterRequestTidbNodeSetting": {
      "type": "object",
      "properties": {
        "nodeSpecKey": {
          "description": "The node spec key of the TiDB nodes in the cluster. For example, `8C32G`. \n\nTo get the node spec available configurations of a specific region for a cloud provider, please refer to [List node specs](#tag/Cluster/operation/RegionService_ListNodeSpecs) API.",
          "type": "string",
          "example": "8C32G"
        },
        "tidbNodeGroups": {
          "description": "The TiDB node groups of the cluster.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UpdateClusterRequestTidbNodeSettingTidbNodeGroup",
            "type": "object"
          },
          "title": "TidbNodeGroup"
        }
      }
    },
    "v1beta1UpdateMaintenanceTaskRequestMaintenanceTask": {
      "type": "object",
      "properties": {
        "maintenanceTaskId": {
          "type": "string"
        },
        "scheduledApplyTime": {
          "description": "Timestamp when the task run.",
          "type": "string",
          "format": "date-time"
        }
      },
      "required": ["maintenanceTaskId", "scheduledApplyTime"]
    },
    "v1beta1UpdateMaintenanceWindowRequestMaintenanceWindow": {
      "type": "object",
      "properties": {
        "dayHour": {
          "type": "integer",
          "format": "int32"
        },
        "hourMinute": {
          "type": "integer",
          "format": "int32"
        },
        "maintenanceWindowId": {
          "type": "string",
          "title": "Format: project-{project_id}"
        },
        "weekDay": {
          "type": "integer",
          "format": "int32"
        }
      },
      "required": ["maintenanceWindowId"]
    },
    "v1beta1UpdateTidbNodeGroupRequestTidbNodeGroup": {
      "type": "object",
      "properties": {
        "clusterId": {
          "description": "The ID of the cluster to which the TiDB Node Group belongs.",
          "type": "string"
        },
        "displayName": {
          "description": "The display name of the TiDB Node Group.",
          "type": "string"
        },
        "nodeCount": {
          "description": "The node count of the TiDB Node Group.",
          "type": "integer",
          "format": "int32",
          "x-nullable": true
        },
        "tidbNodeGroupId": {
          "description": "The ID of the TiDB Node Group to update.",
          "type": "string"
        },
        "tiproxySetting": {
          "description": "The TiProxy setting of the TiDB Node Group. If not specified, the default TiProxy setting will be used.",
          "allOf": [
            {
              "$ref": "#/definitions/dedicatedv1beta1TidbNodeGroupTiProxySetting"
            }
          ],
          "title": "TiProxySetting"
        }
      },
      "required": ["clusterId", "tidbNodeGroupId"]
    }
  }
}
