{
  "swagger": "2.0",
  "info": {
    "title": "gRPC for our DBaaS dataflow service",
    "description": "notably uses gRPC-Gateway with OpenAPI",
    "version": "0.1"
  },
  "tags": [
    {
      "name": "ChangefeedService"
    },
    {
      "name": "ChangefeedSpecService"
    },
    {
      "name": "DPFeatureService"
    },
    {
      "name": "OpsInternalService"
    },
    {
      "name": "SinkEndpointService"
    }
  ],
  "schemes": ["https"],
  "consumes": ["application/json"],
  "produces": ["application/json"],
  "paths": {
    "/api/v1beta2/dataflow/ops/cluster/{cluster_id}:pauseChangefeeds": {
      "post": {
        "operationId": "NgPauseClusterChangefeeds",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpsInternalServicePauseClusterChangefeedsBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/cluster/{cluster_id}:resumeChangefeeds": {
      "post": {
        "operationId": "NgResumeClusterChangefeeds",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpsInternalServiceResumeClusterChangefeedsBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/cluster/{cluster_id}:updateTableFilters": {
      "post": {
        "operationId": "NgUpdateTableFilters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpsInternalServiceUpdateTableFilterOfClusterChangefeedsBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/config/apply": {
      "post": {
        "operationId": "NgApplyConfigChanges",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiApplyConfigChangesResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/consoleapiApplyConfigChangesReq"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalChangefeeds": {
      "get": {
        "operationId": "NgListInternalChangefeeds",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiListInternalChangefeedsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tidb_cluster_id",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalChangefeeds/{changefeed_id}": {
      "get": {
        "operationId": "NgGetInternalChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiInternalChangefeed"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalChangefeeds/{changefeed_id}:pause": {
      "post": {
        "operationId": "NgOpsPauseChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/consoleapiOpsInternalServicePauseChangefeedBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalChangefeeds/{changefeed_id}:restart": {
      "post": {
        "operationId": "NgRestartChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpsInternalServiceRestartChangefeedBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalChangefeeds/{changefeed_id}:resume": {
      "post": {
        "operationId": "NgOpsResumeChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/consoleapiOpsInternalServiceResumeChangefeedBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalTiCDCClusters/{ticdc_cluster_id}": {
      "get": {
        "operationId": "NgGetInternalTiCDCCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiInternalTiCDCCluster"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "ticdc_cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/internalTiCDCClusters/{ticdc_cluster_id}:restart": {
      "post": {
        "operationId": "NgRestartTiCDCCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "ticdc_cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpsInternalServiceRestartTiCDCClusterBody"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/dataflow/ops/storage/apply": {
      "post": {
        "operationId": "NgUpdateTiCDCClusterStorage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiUpdateTiCDCClusterStorageResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/consoleapiUpdateTiCDCClusterStorageReq"
            }
          }
        ],
        "tags": ["OpsInternalService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/adminProfile": {
      "get": {
        "operationId": "NgGetAdminProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiAdminProfile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/calChangefeedFee": {
      "post": {
        "operationId": "NgCalChangefeedFee",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiCalChangefeedFeeResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangefeedServiceCalChangefeedFeeBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeedSpecifications": {
      "get": {
        "operationId": "ListChangefeedSpecsX",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiChangefeedSpecs"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_type",
            "description": " - TIDB: deprecated",
            "in": "query",
            "required": false,
            "type": "string",
            "default": "TOTAL",
            "enum": ["TOTAL", "KAFKA", "TIDB", "MYSQL", "SERVERLESS_TIDB", "S3", "GCS", "PULSAR"]
          }
        ],
        "tags": ["ChangefeedSpecService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds": {
      "get": {
        "operationId": "NgListChangefeeds",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiChangefeeds"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "page",
            "in": "query",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "changefeed_type",
            "description": " - TIDB: deprecated",
            "in": "query",
            "required": true,
            "type": "string",
            "default": "TOTAL",
            "enum": ["TOTAL", "KAFKA", "TIDB", "MYSQL", "SERVERLESS_TIDB", "S3", "GCS", "PULSAR"]
          }
        ],
        "tags": ["ChangefeedService"]
      },
      "post": {
        "operationId": "NgCreateChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiChangefeedID"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangefeedServiceCreateChangefeedBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/test": {
      "post": {
        "operationId": "NgTestChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangefeedServiceTestChangefeedBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}": {
      "get": {
        "operationId": "NgGetChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiChangefeed"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ChangefeedService"]
      },
      "delete": {
        "operationId": "NgDeleteChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}/detail": {
      "get": {
        "summary": "For E2E tests",
        "operationId": "NgGetChangefeedDetail",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}/ticdc_cluster": {
      "get": {
        "summary": "For E2E tests",
        "operationId": "NgGetTiCDCCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}:edit": {
      "post": {
        "operationId": "NgEditChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangefeedServiceEditChangefeedBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}:pause": {
      "post": {
        "operationId": "NgPauseChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/consoleapiChangefeedServicePauseChangefeedBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}:resume": {
      "post": {
        "operationId": "NgResumeChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/consoleapiChangefeedServiceResumeChangefeedBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/changefeeds/{changefeed_id}:scale": {
      "post": {
        "operationId": "NgScaleChangefeed",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "changefeed_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangefeedServiceScaleChangefeedBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/describeSchemaTable": {
      "post": {
        "operationId": "NgDescribeSchemaTable",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiDescribeSchemaTableResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangefeedServiceDescribeSchemaTableBody"
            }
          }
        ],
        "tags": ["ChangefeedService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/enabledDPFeatures": {
      "get": {
        "operationId": "NgGetEnabledDPFeaturesForCluster",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiEnabledDPFeaturesForClusterResp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["DPFeatureService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints": {
      "get": {
        "operationId": "NgListSinkEndpoints",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiListSinkEndpointsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "type": "string",
            "default": "SINK_ENDPOINT_STATUS_UNSPECIFIED",
            "enum": [
              "SINK_ENDPOINT_STATUS_UNSPECIFIED",
              "SINK_ENDPOINT_STATUS_CREATING",
              "SINK_ENDPOINT_STATUS_PENDING_ACCEPTANCE",
              "SINK_ENDPOINT_STATUS_AVAILABLE",
              "SINK_ENDPOINT_STATUS_FAILED"
            ]
          }
        ],
        "tags": ["SinkEndpointService"]
      },
      "post": {
        "operationId": "NgCreateSinkEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiSinkEndpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SinkEndpointServiceCreateSinkEndpointBody"
            }
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints/authInfo": {
      "get": {
        "operationId": "NgGetSinkEndpointAuthInfo",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiGetSinkEndpointAuthInfoResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints/availabilityZones": {
      "get": {
        "operationId": "NgListSinkAvailabilityZones",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiListSinkAvailabilityZonesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints/endpointServiceAvailabilityZones": {
      "get": {
        "operationId": "NgDescribeEndpointServiceAvailabilityZones",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiDescribeEndpointServiceAvailabilityZonesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "endpoint_service_name",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "service_region",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints/generateAdvertisedListener": {
      "post": {
        "operationId": "NgGenerateSinkAdvertisedListener",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiGenerateSinkAdvertisedListenerResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SinkEndpointServiceGenerateSinkAdvertisedListenerBody"
            }
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints/validateAdvertisedListenerDomain": {
      "post": {
        "operationId": "NgValidateSinkAdvertisedListenerDomain",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiValidateSinkAdvertisedListenerDomainResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SinkEndpointServiceValidateSinkAdvertisedListenerDomainBody"
            }
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/sinkEndpoints/{sink_endpoint_id}": {
      "get": {
        "operationId": "NgGetSinkEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/consoleapiSinkEndpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "sink_endpoint_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["SinkEndpointService"]
      },
      "delete": {
        "operationId": "NgDeleteSinkEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          },
          {
            "name": "sink_endpoint_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["SinkEndpointService"]
      }
    },
    "/api/v1beta2/tidbs/{cluster_id}/ticdc_clusters": {
      "get": {
        "operationId": "NgListTiCDCClusters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "cluster_id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": ["ChangefeedService"]
      }
    }
  },
  "definitions": {
    "ChangefeedServiceCalChangefeedFeeBody": {
      "type": "object",
      "properties": {
        "duration": {
          "type": "string",
          "format": "int64"
        },
        "changefeed_spec": {
          "type": "string"
        }
      }
    },
    "ChangefeedServiceCreateChangefeedBody": {
      "type": "object",
      "properties": {
        "changefeed_type": {
          "$ref": "#/definitions/consoleapiChangefeedType"
        },
        "kafka_info": {
          "$ref": "#/definitions/consoleapiKafkaInfo"
        },
        "mysql_info": {
          "$ref": "#/definitions/consoleapiMySQLInfo"
        },
        "s3_info": {
          "$ref": "#/definitions/consoleapiS3Info"
        },
        "gcs_info": {
          "$ref": "#/definitions/consoleapiGcsInfo"
        },
        "serverless_tidb_info": {
          "$ref": "#/definitions/consoleapiServerlessTidbInfo"
        },
        "pulsar_info": {
          "$ref": "#/definitions/consoleapiPulsarInfo"
        },
        "changefeed_spec": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "internal": {
          "type": "boolean"
        },
        "network_info": {
          "$ref": "#/definitions/consoleapiNetworkInfo"
        }
      },
      "required": ["changefeed_type"]
    },
    "ChangefeedServiceDescribeSchemaTableBody": {
      "type": "object",
      "properties": {
        "filter_rule": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "case_sensitive": {
          "type": "boolean"
        }
      }
    },
    "ChangefeedServiceEditChangefeedBody": {
      "type": "object",
      "properties": {
        "changefeed_type": {
          "$ref": "#/definitions/consoleapiChangefeedType"
        },
        "kafka_info": {
          "$ref": "#/definitions/consoleapiKafkaInfo"
        },
        "mysql_info": {
          "$ref": "#/definitions/consoleapiMySQLInfo"
        },
        "serverless_tidb_info": {
          "$ref": "#/definitions/consoleapiServerlessTidbInfo"
        },
        "s3_info": {
          "$ref": "#/definitions/consoleapiS3Info"
        },
        "gcs_info": {
          "$ref": "#/definitions/consoleapiGcsInfo"
        },
        "pulsar_info": {
          "$ref": "#/definitions/consoleapiPulsarInfo"
        },
        "name": {
          "type": "string"
        }
      },
      "required": ["changefeed_type"]
    },
    "ChangefeedServiceScaleChangefeedBody": {
      "type": "object",
      "properties": {
        "changefeed_spec": {
          "type": "string"
        }
      },
      "required": ["changefeed_spec"]
    },
    "ChangefeedServiceTestChangefeedBody": {
      "type": "object",
      "properties": {
        "changefeed_type": {
          "$ref": "#/definitions/consoleapiChangefeedType"
        },
        "kafka_info": {
          "$ref": "#/definitions/consoleapiKafkaInfo"
        },
        "mysql_info": {
          "$ref": "#/definitions/consoleapiMySQLInfo"
        },
        "s3_info": {
          "$ref": "#/definitions/consoleapiS3Info"
        },
        "gcs_info": {
          "$ref": "#/definitions/consoleapiGcsInfo"
        },
        "serverless_tidb_info": {
          "$ref": "#/definitions/consoleapiServerlessTidbInfo"
        },
        "pulsar_info": {
          "$ref": "#/definitions/consoleapiPulsarInfo"
        },
        "changefeed_spec": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "internal": {
          "type": "boolean"
        },
        "network_info": {
          "$ref": "#/definitions/consoleapiNetworkInfo"
        }
      },
      "required": ["changefeed_type"]
    },
    "OpsInternalServicePauseClusterChangefeedsBody": {
      "type": "object"
    },
    "OpsInternalServiceRestartChangefeedBody": {
      "type": "object"
    },
    "OpsInternalServiceRestartTiCDCClusterBody": {
      "type": "object"
    },
    "OpsInternalServiceResumeClusterChangefeedsBody": {
      "type": "object"
    },
    "OpsInternalServiceUpdateTableFilterOfClusterChangefeedsBody": {
      "type": "object",
      "properties": {
        "updates": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiTableFilterUpdate"
          }
        }
      }
    },
    "SinkAdvertisedListenerDomainType": {
      "type": "string",
      "enum": ["DOMAIN_TYPE_UNSPECIFIED", "GENERATED", "CUSTOM"],
      "default": "DOMAIN_TYPE_UNSPECIFIED"
    },
    "SinkAdvertisedListenerRecord": {
      "type": "object",
      "properties": {
        "zone": {
          "type": "string"
        },
        "subdomain_name": {
          "type": "string"
        }
      }
    },
    "SinkEndpointServiceCreateSinkEndpointBody": {
      "type": "object",
      "properties": {
        "sink_endpoint": {
          "$ref": "#/definitions/consoleapiSinkEndpoint"
        }
      },
      "required": ["sink_endpoint"]
    },
    "SinkEndpointServiceGenerateSinkAdvertisedListenerBody": {
      "type": "object",
      "properties": {
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "endpoint_service_name": {
          "type": "string"
        },
        "downstream_id": {
          "type": "string"
        }
      },
      "required": ["endpoint_service_name", "downstream_id"]
    },
    "SinkEndpointServiceValidateSinkAdvertisedListenerDomainBody": {
      "type": "object",
      "properties": {
        "endpoint_service_name": {
          "type": "string"
        },
        "root_domain_name": {
          "type": "string"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["endpoint_service_name", "root_domain_name"]
    },
    "consoleapiAdminProfile": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string"
        },
        "cloud_account_id": {
          "type": "string"
        },
        "aws_external_id": {
          "type": "string"
        }
      },
      "required": ["provider", "cloud_account_id", "aws_external_id"]
    },
    "consoleapiApplyConfigChangesReq": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/consoleapiConfigClusterType"
        },
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "configuration_file": {
          "$ref": "#/definitions/consoleapiConfigFileType"
        },
        "custom_params": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/consoleapiParamItem"
          }
        },
        "template_id": {
          "type": "string",
          "format": "uint64"
        },
        "version": {
          "type": "string"
        },
        "custom_image_tag": {
          "type": "string"
        }
      }
    },
    "consoleapiApplyConfigChangesResp": {
      "type": "object"
    },
    "consoleapiAuthentication": {
      "type": "object",
      "properties": {
        "auth_type": {
          "$ref": "#/definitions/consoleapiKafkaAuthType"
        },
        "userName": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "consoleapiBigintUnsignedHandlingMode": {
      "type": "string",
      "enum": ["BIGINT_UNSIGNED_HANDLING_MODE_LONG", "BIGINT_UNSIGNED_HANDLING_MODE_STRING"],
      "default": "BIGINT_UNSIGNED_HANDLING_MODE_LONG"
    },
    "consoleapiBinaryEncodingMethod": {
      "type": "string",
      "enum": ["BASE64", "HEX"],
      "default": "BASE64"
    },
    "consoleapiBroker": {
      "type": "object",
      "properties": {
        "kafka_version": {
          "$ref": "#/definitions/consoleapiKafkaVersion"
        },
        "broker_endpoints": {
          "type": "string"
        },
        "tls_enable": {
          "type": "boolean"
        },
        "compression": {
          "$ref": "#/definitions/consoleapiCompressionType"
        },
        "insecure_skip_verify": {
          "type": "boolean"
        }
      }
    },
    "consoleapiCalChangefeedFeeResp": {
      "type": "object",
      "properties": {
        "raw_fee": {
          "type": "number",
          "format": "double"
        },
        "fee": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "consoleapiChangefeed": {
      "type": "object",
      "properties": {
        "changefeed_id": {
          "type": "string",
          "format": "uint64"
        },
        "changefeed_type": {
          "$ref": "#/definitions/consoleapiChangefeedType"
        },
        "status": {
          "$ref": "#/definitions/consoleapiChangefeedStatus"
        },
        "checkpoint_tso": {
          "type": "string",
          "format": "uint64"
        },
        "checkpoint_utc": {
          "type": "string",
          "format": "date-time"
        },
        "error": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "request": {
          "$ref": "#/definitions/consoleapiChangefeedCreateReq"
        },
        "changefeed_spec": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "required": ["changefeed_id", "changefeed_type", "status"]
    },
    "consoleapiChangefeedCreateReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "changefeed_type": {
          "$ref": "#/definitions/consoleapiChangefeedType"
        },
        "kafka_info": {
          "$ref": "#/definitions/consoleapiKafkaInfo"
        },
        "mysql_info": {
          "$ref": "#/definitions/consoleapiMySQLInfo"
        },
        "s3_info": {
          "$ref": "#/definitions/consoleapiS3Info"
        },
        "gcs_info": {
          "$ref": "#/definitions/consoleapiGcsInfo"
        },
        "serverless_tidb_info": {
          "$ref": "#/definitions/consoleapiServerlessTidbInfo"
        },
        "pulsar_info": {
          "$ref": "#/definitions/consoleapiPulsarInfo"
        },
        "changefeed_spec": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "internal": {
          "type": "boolean"
        },
        "network_info": {
          "$ref": "#/definitions/consoleapiNetworkInfo"
        }
      },
      "required": ["cluster_id", "changefeed_type"]
    },
    "consoleapiChangefeedID": {
      "type": "object",
      "properties": {
        "changefeed_id": {
          "type": "string",
          "format": "uint64"
        },
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        }
      },
      "required": ["changefeed_id", "cluster_id"]
    },
    "consoleapiChangefeedServicePauseChangefeedBody": {
      "type": "object"
    },
    "consoleapiChangefeedServiceResumeChangefeedBody": {
      "type": "object"
    },
    "consoleapiChangefeedSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "rcu_num": {
          "type": "integer",
          "format": "int64"
        },
        "rps_limit": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "consoleapiChangefeedSpecs": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiChangefeedSpec"
          }
        },
        "total": {
          "type": "integer",
          "format": "int64"
        }
      },
      "required": ["items", "total"]
    },
    "consoleapiChangefeedStatus": {
      "type": "string",
      "enum": [
        "RUNNING",
        "FAILED",
        "ERROR",
        "CREATING",
        "RESUMING",
        "PAUSING",
        "PAUSED",
        "DELETING",
        "DELETED",
        "EDITING",
        "WARNING",
        "SCALING"
      ],
      "default": "RUNNING"
    },
    "consoleapiChangefeedType": {
      "type": "string",
      "enum": ["TOTAL", "KAFKA", "TIDB", "MYSQL", "SERVERLESS_TIDB", "S3", "GCS", "PULSAR"],
      "title": "- TIDB: deprecated",
      "default": "TOTAL"
    },
    "consoleapiChangefeeds": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiChangefeed"
          }
        },
        "total": {
          "type": "integer",
          "format": "int64"
        }
      },
      "required": ["items", "total"]
    },
    "consoleapiColumnSelector": {
      "type": "object",
      "properties": {
        "matcher": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "consoleapiCompressionType": {
      "type": "string",
      "enum": ["NONE", "GZIP", "SNAPPY", "LZ4", "ZSTD"],
      "default": "NONE"
    },
    "consoleapiConfigClusterType": {
      "type": "string",
      "enum": ["CONFIG_CLUSTER_TYPE_UNSPECIFIED", "TICDC_CLUSTER", "CHANGEFEED_CLUSTER"],
      "default": "CONFIG_CLUSTER_TYPE_UNSPECIFIED"
    },
    "consoleapiConfigFileType": {
      "type": "string",
      "enum": ["CONFIG_FILE_TYPE_UNSPECIFIED", "TICDC_FILE", "CHANGEFEED_FILE", "SINK_URI"],
      "default": "CONFIG_FILE_TYPE_UNSPECIFIED"
    },
    "consoleapiConnection": {
      "type": "object",
      "properties": {
        "endpoint": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "consoleapiDataFormat": {
      "type": "object",
      "properties": {
        "protocol": {
          "$ref": "#/definitions/consoleapiProtocol"
        },
        "enable_tidb_extension": {
          "type": "boolean"
        },
        "decimal_handling_mode": {
          "$ref": "#/definitions/consoleapiDecimalHandlingMode"
        },
        "bigint_unsigned_handling_mode": {
          "$ref": "#/definitions/consoleapiBigintUnsignedHandlingMode"
        },
        "schema_registry": {
          "$ref": "#/definitions/consoleapiSchemaRegistry"
        },
        "debezium_config": {
          "$ref": "#/definitions/consoleapiDebeziumConfig"
        },
        "output_raw_change_event": {
          "type": "boolean"
        }
      }
    },
    "consoleapiDebeziumConfig": {
      "type": "object",
      "properties": {
        "output_old_value": {
          "type": "boolean"
        },
        "disable_schema": {
          "type": "boolean"
        }
      }
    },
    "consoleapiDecimalHandlingMode": {
      "type": "string",
      "enum": ["DECIMAL_HANDLING_MODE_PRECISE", "DECIMAL_HANDLING_MODE_STRING"],
      "default": "DECIMAL_HANDLING_MODE_PRECISE"
    },
    "consoleapiDescribeEndpointServiceAvailabilityZonesResponse": {
      "type": "object",
      "properties": {
        "zones": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiEndpointServiceAvailabilityZone"
          }
        }
      }
    },
    "consoleapiDescribeSchemaTableResp": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "replicate_allow_schema_table": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "replicate_deny_schema_table": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "gc_safe_point": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": ["cluster_id"]
    },
    "consoleapiDispatchType": {
      "type": "string",
      "enum": ["DISPATCH_TYPE_ONE_TOPIC", "DISPATCH_TYPE_BY_TABLE", "DISPATCH_TYPE_BY_DATABASE"],
      "default": "DISPATCH_TYPE_ONE_TOPIC"
    },
    "consoleapiEnabledDPFeaturesForClusterResp": {
      "type": "object",
      "properties": {
        "features": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["features"]
    },
    "consoleapiEndpointServiceAvailabilityZone": {
      "type": "object",
      "properties": {
        "availability_zone": {
          "type": "string",
          "readOnly": true
        },
        "availability_zone_id": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "consoleapiEventFilterRule": {
      "type": "object",
      "properties": {
        "matcher": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignore_event": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignore_sql": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignore_insert_value_expr": {
          "type": "string"
        },
        "ignore_update_new_value_expr": {
          "type": "string"
        },
        "ignore_update_old_value_expr": {
          "type": "string"
        },
        "ignore_delete_value_expr": {
          "type": "string"
        }
      }
    },
    "consoleapiGcsEndpoint": {
      "type": "object",
      "properties": {
        "gcsUri": {
          "type": "string"
        }
      }
    },
    "consoleapiGcsInfo": {
      "type": "object",
      "properties": {
        "endpoint": {
          "$ref": "#/definitions/consoleapiGcsEndpoint"
        },
        "data_format": {
          "$ref": "#/definitions/consoleapiS3Dataformat"
        },
        "table_config": {
          "$ref": "#/definitions/consoleapiTableConfig"
        },
        "start_position": {
          "$ref": "#/definitions/consoleapiStartPosition"
        },
        "storage_flush_config": {
          "$ref": "#/definitions/consoleapiStorageFlushConfig"
        }
      }
    },
    "consoleapiGenerateSinkAdvertisedListenerResponse": {
      "type": "object",
      "properties": {
        "advertised_listener": {
          "$ref": "#/definitions/consoleapiSinkAdvertisedListener"
        }
      }
    },
    "consoleapiGetSinkEndpointAuthInfoResponse": {
      "type": "object",
      "properties": {
        "cloud_account_id": {
          "type": "string"
        },
        "aws_principal_id": {
          "type": "string"
        }
      }
    },
    "consoleapiInternalChangefeed": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uint64"
        },
        "display_id": {
          "type": "string",
          "format": "uint64"
        },
        "display_name": {
          "type": "string"
        },
        "downstream_type": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "ticdc_cluster": {
          "$ref": "#/definitions/consoleapiInternalTiCDCCluster"
        }
      }
    },
    "consoleapiInternalTiCDCCluster": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uint64"
        },
        "name": {
          "type": "string"
        },
        "shared_pool_id": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "provider_type": {
          "type": "string"
        },
        "specification_code": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "org_id": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "consoleapiKafkaAuthType": {
      "type": "string",
      "enum": ["DISABLE", "SASL_PLAIN", "SASL_SCRAM_SHA_256", "SASL_SCRAM_SHA_512"],
      "default": "DISABLE"
    },
    "consoleapiKafkaInfo": {
      "type": "object",
      "properties": {
        "broker": {
          "$ref": "#/definitions/consoleapiBroker"
        },
        "authentication": {
          "$ref": "#/definitions/consoleapiAuthentication"
        },
        "data_format": {
          "$ref": "#/definitions/consoleapiDataFormat"
        },
        "topic_partition_config": {
          "$ref": "#/definitions/consoleapiTopicPartitionConfig"
        },
        "table_config": {
          "$ref": "#/definitions/consoleapiTableConfig"
        },
        "start_position": {
          "$ref": "#/definitions/consoleapiStartPosition"
        },
        "column_selectors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiColumnSelector"
          }
        }
      }
    },
    "consoleapiKafkaVersion": {
      "type": "string",
      "enum": ["KAFKA_VERSION_0XX", "KAFKA_VERSION_1XX", "KAFKA_VERSION_2XX", "KAFKA_VERSION_3XX"],
      "default": "KAFKA_VERSION_0XX"
    },
    "consoleapiListInternalChangefeedsResponse": {
      "type": "object",
      "properties": {
        "changefeeds": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiInternalChangefeed"
          }
        }
      }
    },
    "consoleapiListSinkAvailabilityZonesResponse": {
      "type": "object",
      "properties": {
        "availability_zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "consoleapiListSinkEndpointsResponse": {
      "type": "object",
      "properties": {
        "sink_endpoints": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiSinkEndpoint"
          }
        }
      }
    },
    "consoleapiMskAuthType": {
      "type": "string",
      "enum": ["MSK_AUTH_TYPE_UNSPECIFIED", "SASL_SCRAM", "SASL_IAM"],
      "default": "MSK_AUTH_TYPE_UNSPECIFIED"
    },
    "consoleapiMySQLInfo": {
      "type": "object",
      "properties": {
        "connection": {
          "$ref": "#/definitions/consoleapiConnection"
        },
        "table_config": {
          "$ref": "#/definitions/consoleapiTableConfig"
        },
        "start_position": {
          "$ref": "#/definitions/consoleapiStartPosition"
        },
        "privatelink_info": {
          "$ref": "#/definitions/consoleapiPrivatelinkInfo"
        }
      }
    },
    "consoleapiNetworkInfo": {
      "type": "object",
      "properties": {
        "network_type": {
          "$ref": "#/definitions/consoleapiNetworkType"
        },
        "sink_endpoint_id": {
          "type": "string",
          "format": "uint64"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "consoleapiNetworkType": {
      "type": "string",
      "enum": ["NetworkType_Public", "NetworkType_VPC_Peering", "NetworkType_Private_Link"],
      "default": "NetworkType_Public"
    },
    "consoleapiOpsInternalServicePauseChangefeedBody": {
      "type": "object"
    },
    "consoleapiOpsInternalServiceResumeChangefeedBody": {
      "type": "object"
    },
    "consoleapiParamItem": {
      "type": "object",
      "properties": {
        "value": {},
        "comment": {
          "type": "string"
        }
      }
    },
    "consoleapiPartitionDispatcher": {
      "type": "string",
      "enum": ["TABLE", "INDEX_VALUE", "TS", "COLUMNS"],
      "default": "TABLE"
    },
    "consoleapiPartitionDispatcherConfig": {
      "type": "object",
      "properties": {
        "partition_type": {
          "$ref": "#/definitions/consoleapiPartitionDispatcher"
        },
        "matcher": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "index_name": {
          "type": "string"
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "consoleapiPrivatelinkInfo": {
      "type": "object",
      "properties": {
        "df_privatelink_endpoint_id": {
          "type": "string",
          "format": "uint64"
        },
        "endpoint_name": {
          "type": "string",
          "readOnly": true
        },
        "endpoint_address": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "consoleapiProtocol": {
      "type": "string",
      "enum": ["CANAL_JSON", "OPEN_PROTOCOL", "AVRO", "DEBEZIUM", "DEBEZIUM_AVRO"],
      "default": "CANAL_JSON"
    },
    "consoleapiPulsarAdvancedSetting": {
      "type": "object",
      "properties": {
        "batching_max_messages": {
          "type": "integer",
          "format": "int64"
        },
        "batching_max_publish_delay": {
          "type": "integer",
          "format": "int64"
        },
        "connection_timeout": {
          "type": "integer",
          "format": "int64"
        },
        "operation_timeout": {
          "type": "integer",
          "format": "int64"
        },
        "send_timeout": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "consoleapiPulsarAuthType": {
      "type": "string",
      "enum": ["PULSAR_AUTH_TYPE_BASIC", "PULSAR_AUTH_TYPE_TOKEN"],
      "default": "PULSAR_AUTH_TYPE_BASIC"
    },
    "consoleapiPulsarAuthentication": {
      "type": "object",
      "properties": {
        "auth_type": {
          "$ref": "#/definitions/consoleapiPulsarAuthType"
        },
        "user_name": {
          "type": "string",
          "title": "PULSAR_AUTH_TYPE_BASIC"
        },
        "password": {
          "type": "string"
        },
        "token": {
          "type": "string",
          "title": "PULSAR_AUTH_TYPE_TOKEN"
        }
      }
    },
    "consoleapiPulsarCompressionType": {
      "type": "string",
      "enum": [
        "PULSAR_COMPRESSION_NONE",
        "PULSAR_COMPRESSION_LZ4",
        "PULSAR_COMPRESSION_ZLIB",
        "PULSAR_COMPRESSION_ZSTD"
      ],
      "default": "PULSAR_COMPRESSION_NONE"
    },
    "consoleapiPulsarDataFormat": {
      "type": "object",
      "properties": {
        "protocol": {
          "$ref": "#/definitions/consoleapiProtocol",
          "title": "only support CANAL_JSON"
        },
        "enable_tidb_extension": {
          "type": "boolean"
        }
      }
    },
    "consoleapiPulsarDestinationProtocol": {
      "type": "string",
      "enum": ["PULSAR_PROTOCOL_PULSAR", "PULSAR_PROTOCOL_PULSAR_SSL", "PULSAR_PROTOCOL_HTTP", "PULSAR_PROTOCOL_HTTPS"],
      "default": "PULSAR_PROTOCOL_PULSAR"
    },
    "consoleapiPulsarInfo": {
      "type": "object",
      "properties": {
        "destination_protocol": {
          "$ref": "#/definitions/consoleapiPulsarDestinationProtocol"
        },
        "endpoint": {
          "type": "string"
        },
        "authentication": {
          "$ref": "#/definitions/consoleapiPulsarAuthentication"
        },
        "compression_type": {
          "$ref": "#/definitions/consoleapiPulsarCompressionType"
        },
        "table_config": {
          "$ref": "#/definitions/consoleapiTableConfig"
        },
        "start_position": {
          "$ref": "#/definitions/consoleapiStartPosition"
        },
        "data_format": {
          "$ref": "#/definitions/consoleapiPulsarDataFormat"
        },
        "topic_distribution": {
          "$ref": "#/definitions/consoleapiPulsarTopicDistribution"
        },
        "partition_dispatchers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiPartitionDispatcherConfig"
          }
        },
        "advanced_setting": {
          "$ref": "#/definitions/consoleapiPulsarAdvancedSetting"
        }
      }
    },
    "consoleapiPulsarTopicDistribution": {
      "type": "object",
      "properties": {
        "pulsar_tenant": {
          "type": "string"
        },
        "pulsar_namespace": {
          "type": "string"
        },
        "default_topic": {
          "type": "string"
        },
        "dispatch_type": {
          "$ref": "#/definitions/consoleapiDispatchType"
        },
        "topic_prefix": {
          "type": "string"
        },
        "separator": {
          "type": "string"
        },
        "topic_suffix": {
          "type": "string"
        }
      }
    },
    "consoleapiS3AuthType": {
      "type": "string",
      "enum": ["S3_AUTH_TYPE_AK_SK", "S3_AUTH_TYPE_ASSUME_ROLE"],
      "default": "S3_AUTH_TYPE_AK_SK"
    },
    "consoleapiS3Dataformat": {
      "type": "object",
      "properties": {
        "protocol": {
          "$ref": "#/definitions/consoleapiS3Protocol"
        },
        "terminator": {
          "type": "string"
        },
        "date_separator": {
          "type": "string"
        },
        "enable_tidb_extension": {
          "type": "boolean"
        },
        "delimiter": {
          "type": "string"
        },
        "quote": {
          "type": "string"
        },
        "null": {
          "type": "string"
        },
        "include_commit_ts": {
          "type": "boolean"
        },
        "binary_encoding_method": {
          "$ref": "#/definitions/consoleapiBinaryEncodingMethod"
        }
      }
    },
    "consoleapiS3Endpoint": {
      "type": "object",
      "properties": {
        "s3Uri": {
          "type": "string"
        },
        "access_key": {
          "type": "string"
        },
        "secret_key": {
          "type": "string"
        },
        "auth_type": {
          "$ref": "#/definitions/consoleapiS3AuthType"
        },
        "iam_assumed_role_arn": {
          "type": "string"
        },
        "endpoint": {
          "description": "endpoint is the custom S3-compatible storage endpoint (e.g. for\nAlibaba Cloud OSS: https://s3.oss-us-east-1.aliyuncs.com). When set,\nit is appended to the changefeed sink URI as the `endpoint` query\nparameter. Leave empty to use the default AWS S3 endpoint.",
          "type": "string"
        },
        "provider": {
          "$ref": "#/definitions/consoleapiS3Provider",
          "description": "provider selects the object-storage provider. Defaults to AWS S3. When\nset to ALIBABA_OSS it is appended to the changefeed sink URI as the\n`provider=alibaba` query parameter, which makes TiCDC/BR skip AWS-specific\nbucket-region discovery (which fails against OSS) and use the path-style\naddressing suited to OSS. Must be paired with a non-empty endpoint."
        }
      }
    },
    "consoleapiS3Info": {
      "type": "object",
      "properties": {
        "endpoint": {
          "$ref": "#/definitions/consoleapiS3Endpoint"
        },
        "data_format": {
          "$ref": "#/definitions/consoleapiS3Dataformat"
        },
        "table_config": {
          "$ref": "#/definitions/consoleapiTableConfig"
        },
        "start_position": {
          "$ref": "#/definitions/consoleapiStartPosition"
        },
        "storage_flush_config": {
          "$ref": "#/definitions/consoleapiStorageFlushConfig"
        }
      }
    },
    "consoleapiS3Protocol": {
      "type": "string",
      "enum": ["S3_PROTOCOL_CSV", "S3_PROTOCOL_CANAL_JSON"],
      "default": "S3_PROTOCOL_CSV"
    },
    "consoleapiS3Provider": {
      "type": "string",
      "enum": ["S3_PROVIDER_AWS", "S3_PROVIDER_ALIBABA_OSS"],
      "default": "S3_PROVIDER_AWS"
    },
    "consoleapiSchemaRegistry": {
      "type": "object",
      "properties": {
        "schema_registry_endpoints": {
          "type": "string"
        },
        "enableHttpAuth": {
          "type": "boolean"
        },
        "userName": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "consoleapiServerlessTidbInfo": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "mysql_info": {
          "$ref": "#/definitions/consoleapiMySQLInfo"
        }
      }
    },
    "consoleapiSinkAdvertisedListener": {
      "type": "object",
      "properties": {
        "domain_type": {
          "$ref": "#/definitions/SinkAdvertisedListenerDomainType"
        },
        "root_domain_name": {
          "type": "string"
        },
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SinkAdvertisedListenerRecord"
          }
        }
      },
      "required": ["domain_type", "root_domain_name"]
    },
    "consoleapiSinkEndpoint": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uint64",
          "readOnly": true
        },
        "endpoint_name": {
          "type": "string"
        },
        "endpoint_service_name": {
          "type": "string",
          "description": "endpoint_service_name is required for endpoint_type = VPC_ENDPOINT_SERVICE,\nand left empty for endpoint_type = AMAZON_MSK."
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "endpoint_zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "service_region": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/consoleapiSinkEndpointStatus",
          "readOnly": true
        },
        "endpoint_id": {
          "type": "string",
          "readOnly": true
        },
        "advertised_listener": {
          "$ref": "#/definitions/consoleapiSinkAdvertisedListener"
        },
        "endpoint_address": {
          "type": "string",
          "readOnly": true
        },
        "cloud_account_id": {
          "type": "string",
          "readOnly": true
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true
        },
        "endpoint_type": {
          "$ref": "#/definitions/consoleapiSinkEndpointType",
          "description": "endpoint_type selects the private-link model. Empty defaults to\nVPC_ENDPOINT_SERVICE for backward compatibility."
        },
        "msk_arn": {
          "type": "string",
          "description": "msk_arn is required when endpoint_type = AMAZON_MSK."
        },
        "auth_type": {
          "$ref": "#/definitions/consoleapiMskAuthType",
          "description": "auth_type is the MSK VPC connection auth scheme (AMAZON_MSK only). It is\nimmutable. Only SASL_SCRAM is supported for now."
        },
        "bootstrap_broker": {
          "type": "string",
          "description": "bootstrap_broker is the MSK VPC-connectivity bootstrap broker string,\npopulated once the connection is available (AMAZON_MSK only).",
          "readOnly": true
        }
      },
      "required": ["endpoint_name", "provider", "region"]
    },
    "consoleapiSinkEndpointStatus": {
      "type": "string",
      "enum": [
        "SINK_ENDPOINT_STATUS_UNSPECIFIED",
        "SINK_ENDPOINT_STATUS_CREATING",
        "SINK_ENDPOINT_STATUS_PENDING_ACCEPTANCE",
        "SINK_ENDPOINT_STATUS_AVAILABLE",
        "SINK_ENDPOINT_STATUS_FAILED"
      ],
      "default": "SINK_ENDPOINT_STATUS_UNSPECIFIED"
    },
    "consoleapiSinkEndpointType": {
      "type": "string",
      "enum": ["SINK_ENDPOINT_TYPE_UNSPECIFIED", "VPC_ENDPOINT_SERVICE", "AMAZON_MSK"],
      "default": "SINK_ENDPOINT_TYPE_UNSPECIFIED"
    },
    "consoleapiStartMode": {
      "type": "string",
      "enum": ["FROM_NOW", "FROM_TSO", "FROM_UTC"],
      "default": "FROM_NOW"
    },
    "consoleapiStartPosition": {
      "type": "object",
      "properties": {
        "mode": {
          "$ref": "#/definitions/consoleapiStartMode"
        },
        "tso": {
          "type": "string",
          "format": "uint64"
        },
        "utc": {
          "type": "string"
        }
      }
    },
    "consoleapiStorageFlushConfig": {
      "type": "object",
      "properties": {
        "flush_interval": {
          "type": "string"
        },
        "file_size": {
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "consoleapiTableConfig": {
      "type": "object",
      "properties": {
        "filter_rule": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "mode": {
          "$ref": "#/definitions/consoleapiTableMode"
        },
        "event_filter_rule": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiEventFilterRule"
          }
        },
        "case_sensitive": {
          "type": "boolean"
        },
        "bdr_mode": {
          "type": "boolean"
        }
      }
    },
    "consoleapiTableFilterUpdate": {
      "type": "object",
      "properties": {
        "changefeed_id": {
          "type": "string",
          "format": "uint64"
        },
        "table_filter": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "consoleapiTableMode": {
      "type": "string",
      "enum": ["IGNORE_NOT_SUPPORT_TABLE", "FORCE_SYNC"],
      "default": "IGNORE_NOT_SUPPORT_TABLE"
    },
    "consoleapiTopicPartitionConfig": {
      "type": "object",
      "properties": {
        "dispatch_type": {
          "$ref": "#/definitions/consoleapiDispatchType"
        },
        "default_topic": {
          "type": "string"
        },
        "topic_prefix": {
          "type": "string"
        },
        "separator": {
          "type": "string"
        },
        "topic_suffix": {
          "type": "string"
        },
        "replication_factor": {
          "type": "integer",
          "format": "int64"
        },
        "partition_num": {
          "type": "integer",
          "format": "int64"
        },
        "partition_dispatcher": {
          "$ref": "#/definitions/consoleapiPartitionDispatcher"
        },
        "partition_dispatchers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/consoleapiPartitionDispatcherConfig"
          }
        }
      }
    },
    "consoleapiUpdateTiCDCClusterStorageReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "format": "uint64"
        },
        "size_gi": {
          "type": "integer",
          "format": "int64"
        },
        "iops": {
          "type": "integer",
          "format": "int64"
        },
        "throughput_mbs": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "consoleapiUpdateTiCDCClusterStorageResp": {
      "type": "object"
    },
    "consoleapiValidateSinkAdvertisedListenerDomainResponse": {
      "type": "object",
      "properties": {
        "advertised_listener": {
          "$ref": "#/definitions/consoleapiSinkAdvertisedListener"
        }
      }
    },
    "googlerpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "protobufAny": {
      "type": "object",
      "additionalProperties": {},
      "properties": {
        "@type": {
          "type": "string"
        }
      }
    },
    "protobufNullValue": {
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value.",
      "type": "string",
      "enum": ["NULL_VALUE"],
      "default": "NULL_VALUE"
    }
  },
  "securityDefinitions": {
    "bearer": {
      "type": "apiKey",
      "description": "Authentication token, prefixed by Bearer: Bearer <token>",
      "name": "Authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "externalDocs": {
    "description": "DBaaS Dataflow Service",
    "url": "https://github.com/tidbcloud/dataflow-service"
  }
}
