{
  "swagger": "2.0",
  "info": {
    "title": "TiDB Cloud Data Service Open API",
    "description": "TiDB Cloud Data Service Open API",
    "version": "v1beta1"
  },
  "tags": [
    {
      "name": "DataAppsService"
    },
    {
      "name": "DataSourcesService"
    },
    {
      "name": "EndpointsService"
    },
    {
      "name": "DeploymentsService"
    },
    {
      "name": "ApiKeyService"
    },
    {
      "name": "ApiSpecService"
    }
  ],
  "host": "dataservice.tidbapi.com",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1beta1/dataApps": {
      "get": {
        "summary": "List DataApps",
        "operationId": "DataAppsService_ListDataApps",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListDataAppsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "projectId",
            "description": "Define your fields as needed for listing DataApps\nProject which the data app belong to",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of data apps to return.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListDataApps` call.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      },
      "post": {
        "summary": "Create a new DataApp",
        "operationId": "DataAppsService_CreateDataApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1DataApp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "dataApp",
            "description": "Define your fields as needed for creating a DataApp\nDataApp resource",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1DataApp"
            }
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      }
    },
    "/v1beta1/{apiKey.name}": {
      "patch": {
        "summary": "Update an API key",
        "operationId": "ApiKeyService_UpdateApiKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ApiKey"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "apiKey.name",
            "description": "Unique name of API key, format: dataApps/{data_app}/apiKeys/{api_key}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/apiKeys/[^/]+"
          },
          {
            "name": "apiKey",
            "description": "ApiKey resource",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "apiKeyId": {
                  "type": "string",
                  "format": "uint64",
                  "title": "(-- api-linter: core::0141::forbidden-types=disabled\n    aip.dev/not-precedent: We need to do this because we need to keep data\n    type returned from account. --)\nIdentifier of API key",
                  "readOnly": true
                },
                "publicKey": {
                  "type": "string",
                  "title": "Public key of API key",
                  "readOnly": true
                },
                "privateKey": {
                  "type": "string",
                  "description": "Private key of API key, only fully displayed when initially created.\nAfterwards, the content will be obscured for security, showing only the\nlast 4 characters.",
                  "readOnly": true
                },
                "description": {
                  "type": "string",
                  "title": "Description of API key",
                  "required": [
                    "description"
                  ]
                },
                "role": {
                  "$ref": "#/definitions/ApiKeyRole",
                  "title": "Role of API key"
                },
                "rateLimitRpm": {
                  "type": "integer",
                  "format": "int32",
                  "description": "The rate limit for how many API requests can be made per minute with the\nkey. The value should be in the range of 1 and 1000. For a chat2query data\napp, the value can not be modified.",
                  "required": [
                    "rateLimitRpm"
                  ]
                },
                "expireState": {
                  "$ref": "#/definitions/ApiKeyExpireState",
                  "title": "expire state about this key"
                },
                "expireTime": {
                  "type": "string",
                  "format": "date-time",
                  "title": "this key will expired at this time\nonly makes sense if this expiry_state is EXPIRE_STATE_NOT_EXPIRE",
                  "readOnly": true
                },
                "apiKeyExpireSetting": {
                  "$ref": "#/definitions/ApiKeyApiKeyExpireSetting",
                  "title": "expire setting"
                }
              },
              "title": "ApiKey resource",
              "required": [
                "description",
                "rateLimitRpm"
              ]
            }
          }
        ],
        "tags": [
          "ApiKeyService"
        ]
      }
    },
    "/v1beta1/{chat2querySettings.name}": {
      "patch": {
        "summary": "Update Chat2Query Settings",
        "operationId": "DataAppsService_UpdateChat2QuerySettings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Chat2QuerySettings"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "chat2querySettings.name",
            "description": "Chat2querySettings, format: dataApps/{data_app}/chat2querySettings",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/chat2querySettings"
          },
          {
            "name": "chat2querySettings",
            "description": "Chat2QuerySettings resource",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "llmApiKey": {
                  "type": "string",
                  "title": "Chat2Query llm_api_key",
                  "required": [
                    "llmApiKey"
                  ]
                },
                "languageCode": {
                  "type": "string",
                  "title": "Chat2Query language",
                  "required": [
                    "languageCode"
                  ]
                },
                "llmModel": {
                  "type": "string",
                  "title": "Chat2Query llm_model",
                  "required": [
                    "llmModel"
                  ]
                }
              },
              "title": "Chat2QuerySettings resource",
              "required": [
                "llmApiKey",
                "languageCode",
                "llmModel"
              ]
            }
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      }
    },
    "/v1beta1/{dataApp.name}": {
      "patch": {
        "summary": "Update a DataApp",
        "operationId": "DataAppsService_UpdateDataApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1DataApp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "dataApp.name",
            "description": "Unique name of Data App, format: dataApps/{data_app_id}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "dataApp",
            "description": "Define your fields as needed for updating a DataApp\nDataApp resource",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "dataAppId": {
                  "type": "string",
                  "title": "Identifier of DataApp",
                  "readOnly": true
                },
                "version": {
                  "type": "string",
                  "title": "App Version",
                  "required": [
                    "version"
                  ]
                },
                "projectId": {
                  "type": "string",
                  "title": "Project id which the data app belong to"
                },
                "clusterIds": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "title": "Cluster id which the data app belong to"
                },
                "appType": {
                  "$ref": "#/definitions/v1beta1DataAppType",
                  "title": "App Type"
                },
                "displayName": {
                  "type": "string",
                  "title": "App name",
                  "required": [
                    "displayName"
                  ]
                },
                "description": {
                  "type": "string",
                  "title": "App description",
                  "required": [
                    "description"
                  ]
                },
                "createdAt": {
                  "type": "string",
                  "title": "App create time",
                  "readOnly": true
                },
                "updatedAt": {
                  "type": "string",
                  "title": "App update time",
                  "readOnly": true
                }
              },
              "title": "Define your fields as needed for updating a DataApp\nDataApp resource",
              "required": [
                "version",
                "displayName",
                "description"
              ]
            }
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      }
    },
    "/v1beta1/{endpoint.name}": {
      "patch": {
        "summary": "Update an Endpoint",
        "operationId": "EndpointsService_UpdateEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Endpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "endpoint.name",
            "description": "(-- api-linter: core::0141::forbidden-types=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)\nUnique name of endpoint, format: dataApps/{data_app}/endpoints/{endpoint}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/endpoints/[^/]+"
          },
          {
            "name": "endpoint",
            "description": "Updated Endpoint resource",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string",
                  "title": "Endpoint deployment status: deployed/draft",
                  "readOnly": true
                },
                "displayName": {
                  "type": "string",
                  "title": "Endpoint display name",
                  "required": [
                    "displayName"
                  ]
                },
                "description": {
                  "type": "string",
                  "title": "Endpoint description"
                },
                "path": {
                  "type": "string",
                  "title": "Http Path, example: /v1/endpoint1",
                  "required": [
                    "path"
                  ]
                },
                "method": {
                  "type": "string",
                  "title": "Http method, example: GET/POST/PUT/DELETE",
                  "required": [
                    "method"
                  ]
                },
                "clusterId": {
                  "type": "string",
                  "title": "Endpoint datasource",
                  "required": [
                    "clusterId"
                  ]
                },
                "params": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/v1beta1EndpointParams"
                  },
                  "title": "Endpoint parameters"
                },
                "settings": {
                  "$ref": "#/definitions/v1beta1EndpointSettings",
                  "title": "Endpoint settings"
                },
                "tag": {
                  "type": "string",
                  "title": "Endpoint tag",
                  "required": [
                    "tag"
                  ]
                },
                "batchOperation": {
                  "type": "boolean",
                  "title": "Is support batch operation",
                  "readOnly": true
                },
                "sqlTemplate": {
                  "type": "string",
                  "title": "Sql query",
                  "required": [
                    "sqlTemplate"
                  ]
                },
                "type": {
                  "type": "string",
                  "title": "Endpoint type",
                  "readOnly": true
                },
                "returnType": {
                  "type": "string",
                  "title": "Result format type",
                  "readOnly": true
                },
                "createdAt": {
                  "type": "string",
                  "title": "(-- api-linter: core::0140::prepositions=disabled\n    aip.dev/not-precedent: created_at is the standard filed name in dataservice. --)\nEndpoint create time",
                  "readOnly": true
                },
                "updatedAt": {
                  "type": "string",
                  "title": "Endpoint update time",
                  "readOnly": true
                }
              },
              "title": "Updated Endpoint resource",
              "required": [
                "displayName",
                "path",
                "method",
                "clusterId",
                "tag",
                "sqlTemplate"
              ]
            }
          }
        ],
        "tags": [
          "EndpointsService"
        ]
      }
    },
    "/v1beta1/{name_1}": {
      "get": {
        "summary": "Get Chat2Query Settings",
        "operationId": "DataAppsService_GetChat2QuerySettings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Chat2QuerySettings"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_1",
            "description": "Data App chat2querySettings, format: dataApps/{data_app}/chat2querySettings",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/chat2querySettings"
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      },
      "delete": {
        "summary": "Delete a DataSource",
        "operationId": "DataSourcesService_DeleteDataSource",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_1",
            "description": "Data Source, format: dataApps/{data_app}/dataSources/{data_source}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/dataSources/[^/]+"
          }
        ],
        "tags": [
          "DataSourcesService"
        ]
      }
    },
    "/v1beta1/{name_2}": {
      "get": {
        "summary": "Get System Endpoint Config",
        "operationId": "DataAppsService_GetSystemEndpointConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1SystemEndpointConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_2",
            "description": "System Endpoint Config, format: dataApps/{data_app}/systemEndpointConfig",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/systemEndpointConfig"
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      },
      "delete": {
        "summary": "Delete an Endpoint",
        "operationId": "EndpointsService_DeleteEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_2",
            "description": "Endpoint, format: dataApps/{data_app}/endpoints/{endpoint}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/endpoints/[^/]+"
          }
        ],
        "tags": [
          "EndpointsService"
        ]
      }
    },
    "/v1beta1/{name_3}": {
      "get": {
        "summary": "Get a DataSource",
        "operationId": "DataSourcesService_GetDataSource",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1DataSource"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_3",
            "description": "Name of the API key, format: dataApps/{data_app}/dataSources/{api_key}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/dataSources/[^/]+"
          }
        ],
        "tags": [
          "DataSourcesService"
        ]
      },
      "delete": {
        "summary": "Delete an API key",
        "operationId": "ApiKeyService_DeleteApiKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_3",
            "description": "Name of the API key, format: dataApps/{data_app}/apiKeys/{api_key}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/apiKeys/[^/]+"
          }
        ],
        "tags": [
          "ApiKeyService"
        ]
      }
    },
    "/v1beta1/{name_4}": {
      "get": {
        "summary": "Get an Endpoint",
        "operationId": "EndpointsService_GetEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Endpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_4",
            "description": "Endpoint, format: dataApps/{data_app}/endpoints/{endpoint}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/endpoints/[^/]+"
          }
        ],
        "tags": [
          "EndpointsService"
        ]
      }
    },
    "/v1beta1/{name_5}": {
      "get": {
        "summary": "Get Deployments by id",
        "operationId": "DeploymentsService_GetDeployment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Deployment"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_5",
            "description": "Deployment, format: dataApps/{data_app}/deployments/{deployment_id}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/deployments/[^/]+"
          }
        ],
        "tags": [
          "DeploymentsService"
        ]
      }
    },
    "/v1beta1/{name_6}": {
      "get": {
        "summary": "Get an API key",
        "operationId": "ApiKeyService_GetApiKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ApiKey"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_6",
            "description": "Name of the API key, format: dataApps/{data_app}/apiKeys/{api_key}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/apiKeys/[^/]+"
          }
        ],
        "tags": [
          "ApiKeyService"
        ]
      }
    },
    "/v1beta1/{name_7}": {
      "get": {
        "summary": "Get API Specification of Data App",
        "operationId": "ApiSpecService_GetApiSpec",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ApiSpec"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name_7",
            "description": "Name of the API Specification, format: dataApps/{data_app}/apiSpec",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/apiSpec"
          },
          {
            "name": "format",
            "description": "(-- api-linter: core::0131::request-unknown-fields=disabled\n    aip.dev/not-precedent: We really need this field because we need this\n    field to control the return format of the api specification. --)\nApi specification content format, default format is json\n\n - FORMAT_UNSPECIFIED: Unspecified. Do not use\n - JSON: Json format\n - YAML: Yaml format",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "FORMAT_UNSPECIFIED",
              "JSON",
              "YAML"
            ],
            "default": "FORMAT_UNSPECIFIED"
          }
        ],
        "tags": [
          "ApiSpecService"
        ]
      }
    },
    "/v1beta1/{name}": {
      "get": {
        "summary": "Get a DataApp",
        "operationId": "DataAppsService_GetDataApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1DataApp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "description": "Define your fields as needed for getting a DataApp",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      },
      "delete": {
        "summary": "Delete a DataApp",
        "operationId": "DataAppsService_DeleteDataApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "description": "Define your fields as needed for deleting a DataApp",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      }
    },
    "/v1beta1/{name}:test": {
      "post": {
        "summary": "Test an Endpoint",
        "operationId": "EndpointsService_TestEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1TestEndpointResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "description": "Endpoint, format: dataApps/{data_app}/endpoints/{endpoint}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/endpoints/[^/]+"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "args": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/v1beta1EndpointArgs"
                  },
                  "title": "Test endpoint args"
                }
              },
              "title": "Request for TestEndpoint"
            }
          }
        ],
        "tags": [
          "EndpointsService"
        ]
      }
    },
    "/v1beta1/{parent}/apiKeys": {
      "get": {
        "summary": "List API keys",
        "operationId": "ApiKeyService_ListApiKeys",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListApiKeysResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of API keys to return.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListApiKeys` call.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ApiKeyService"
        ]
      },
      "post": {
        "summary": "Create a new API key",
        "operationId": "ApiKeyService_CreateApiKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ApiKey"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "apiKey",
            "description": "ApiKey resource",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1ApiKey"
            }
          }
        ],
        "tags": [
          "ApiKeyService"
        ]
      }
    },
    "/v1beta1/{parent}/dataSources": {
      "get": {
        "summary": "List DataSources",
        "operationId": "DataSourcesService_ListDataSources",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListDataSourcesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of data sources to return.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListDataSources` call.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DataSourcesService"
        ]
      },
      "post": {
        "summary": "Create a new DataSource",
        "operationId": "DataSourcesService_CreateDataSource",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1DataSource"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}/dataSources/{data_source}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "dataSource",
            "description": "DataSource resource",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1DataSource"
            }
          }
        ],
        "tags": [
          "DataSourcesService"
        ]
      }
    },
    "/v1beta1/{parent}/deployments": {
      "get": {
        "summary": "List Deployments",
        "operationId": "DeploymentsService_ListDeployments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListDeploymentsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of deployments to return.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListDataApps` call.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DeploymentsService"
        ]
      },
      "post": {
        "summary": "Create a new Deployment",
        "operationId": "DeploymentsService_CreateDeployment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Deployment"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "deployment",
            "description": "Deployment resource",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1Deployment"
            }
          }
        ],
        "tags": [
          "DeploymentsService"
        ]
      }
    },
    "/v1beta1/{parent}/endpoints": {
      "get": {
        "summary": "List Endpoints",
        "operationId": "EndpointsService_ListEndpoints",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1ListEndpointsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "pageSize",
            "description": "The maximum number of endpoints to return.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "description": "A page token, received from a previous `ListEndpoints` call.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "EndpointsService"
        ]
      },
      "post": {
        "summary": "Create a new Endpoint",
        "operationId": "EndpointsService_CreateEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1Endpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "parent",
            "description": "Data App, format: dataApps/{data_app}",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+"
          },
          {
            "name": "endpoint",
            "description": "Endpoint resource",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1beta1Endpoint"
            }
          }
        ],
        "tags": [
          "EndpointsService"
        ]
      }
    },
    "/v1beta1/{systemEndpointConfig.name}": {
      "patch": {
        "summary": "Update System Endpoint Config",
        "operationId": "DataAppsService_UpdateSystemEndpointConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1beta1SystemEndpointConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "systemEndpointConfig.name",
            "description": "System Endpoint Config, format: dataApps/{data_app}/systemEndpointConfig",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": "dataApps/[^/]+/systemEndpointConfig"
          },
          {
            "name": "systemEndpointConfig",
            "description": "System Endpoint Config",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "items": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/v1beta1SystemEndpointConfigItem"
                  },
                  "title": "System Endpoint Config items",
                  "required": [
                    "items"
                  ]
                }
              },
              "title": "System Endpoint Config",
              "required": [
                "items"
              ]
            }
          }
        ],
        "tags": [
          "DataAppsService"
        ]
      }
    }
  },
  "definitions": {
    "ApiKeyApiKeyExpireSetting": {
      "type": "object",
      "properties": {
        "expireOption": {
          "$ref": "#/definitions/ApiKeyExpireOption",
          "title": "Expiry option about this key"
        },
        "apiKeyTtl": {
          "type": "integer",
          "format": "int64",
          "title": "(-- api-linter: core::0141::forbidden-types=disabled\n    aip.dev/not-precedent: We need to do this because we need enforce\n    input range. --)\nThis key will expire in {api_key_ttl} minutes;\nonly avaliable when expire_option set to EXPIRE_OPTION_SET_TTL;\nrange from 1 to 525600, inclusively"
        }
      },
      "title": "Api key expire setting"
    },
    "ApiKeyExpireOption": {
      "type": "string",
      "enum": [
        "EXPIRE_OPTION_UNSPECIFIED",
        "EXPIRE_OPTION_NEVER_EXPIRE",
        "EXPIRE_OPTION_SET_TTL"
      ],
      "default": "EXPIRE_OPTION_UNSPECIFIED",
      "description": "- EXPIRE_OPTION_UNSPECIFIED: Unspecified. Do not use\n - EXPIRE_OPTION_NEVER_EXPIRE: Set key never expires\n - EXPIRE_OPTION_SET_TTL: Set key will expire",
      "title": "Api key expiry option"
    },
    "ApiKeyExpireState": {
      "type": "string",
      "enum": [
        "EXPIRE_STATE_UNSPECIFIED",
        "EXPIRE_STATE_NEVER_EXPIRE",
        "EXPIRE_STATE_EXPIRED",
        "EXPIRE_STATE_NOT_EXPIRE"
      ],
      "default": "EXPIRE_STATE_UNSPECIFIED",
      "description": "- EXPIRE_STATE_UNSPECIFIED: Unspecified. Do not use\n - EXPIRE_STATE_NEVER_EXPIRE: This key never expires\n - EXPIRE_STATE_EXPIRED: This key has expired\n - EXPIRE_STATE_NOT_EXPIRE: This key is alive",
      "title": "ExpireState for api key"
    },
    "ApiKeyRole": {
      "type": "string",
      "enum": [
        "ROLE_UNSPECIFIED",
        "READ_AND_WRITE",
        "READ_ONLY",
        "CHAT2QUERY_ADMIN",
        "CHAT2QUERY_DATA_SUMMARY_MANAGEMENT",
        "CHAT2QUERY_SQL_READ_ONLY",
        "CHAT2QUERY_SQL_READ_WRITE"
      ],
      "default": "ROLE_UNSPECIFIED",
      "description": "- ROLE_UNSPECIFIED: Unspecified. Do not use\n - READ_AND_WRITE: ReadAndWrite role, can run all typs of queries, such as DML/DDL\n - READ_ONLY: Read onlly role, can only read data via SELECT query\n - CHAT2QUERY_ADMIN: Chat2Query Admin role, can manage chat2query data app\n - CHAT2QUERY_DATA_SUMMARY_MANAGEMENT: Chat2Query Data Summary Management role, can manage chat2query data summary\n - CHAT2QUERY_SQL_READ_ONLY: Chat2Query SQL ReadOnly role, can only read data via SELECT query\n - CHAT2QUERY_SQL_READ_WRITE: Chat2Query SQL ReadWrite role, can run all typs of queries, such as DML/DDL",
      "title": "Role for API key"
    },
    "DeploymentOriginInfo": {
      "type": "object",
      "properties": {
        "commit": {
          "type": "string",
          "title": "origin commit id",
          "readOnly": true
        },
        "diffUrl": {
          "type": "string",
          "title": "origin diff url",
          "readOnly": true
        }
      },
      "title": "Deployment origin information"
    },
    "GetApiSpecRequestFormat": {
      "type": "string",
      "enum": [
        "FORMAT_UNSPECIFIED",
        "JSON",
        "YAML"
      ],
      "default": "FORMAT_UNSPECIFIED",
      "description": "- FORMAT_UNSPECIFIED: Unspecified. Do not use\n - JSON: Json format\n - YAML: Yaml format",
      "title": "Api specification content format"
    },
    "TestEndpointResponseColumn": {
      "type": "object",
      "properties": {
        "col": {
          "type": "string",
          "title": "col",
          "readOnly": true
        },
        "dataType": {
          "type": "string",
          "title": "data_type",
          "readOnly": true
        },
        "nullable": {
          "type": "boolean",
          "title": "allow null or not",
          "readOnly": true
        }
      },
      "title": "Endpoint query columns"
    },
    "TestEndpointResponseData": {
      "type": "object",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TestEndpointResponseColumn"
          },
          "title": "Endpoint query columns",
          "readOnly": true
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TestEndpointResponseRow"
          },
          "title": "Endpoint query rows",
          "readOnly": true
        },
        "result": {
          "$ref": "#/definitions/TestEndpointResponseResult",
          "title": "Endpoint request result"
        }
      },
      "title": "Endpoint request data"
    },
    "TestEndpointResponseResult": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "title": "result code, 200 is OK",
          "readOnly": true
        },
        "message": {
          "type": "string",
          "title": "result message",
          "readOnly": true
        },
        "startMs": {
          "type": "string",
          "format": "int64",
          "title": "request start timestamp",
          "readOnly": true
        },
        "endMs": {
          "type": "string",
          "format": "int64",
          "title": "request end timestamp",
          "readOnly": true
        },
        "latency": {
          "type": "string",
          "title": "request total latency",
          "readOnly": true
        },
        "rowCount": {
          "type": "integer",
          "format": "int32",
          "title": "request total count",
          "readOnly": true
        },
        "rowAffect": {
          "type": "integer",
          "format": "int32",
          "title": "request affected row count",
          "readOnly": true
        },
        "limit": {
          "type": "integer",
          "format": "int32",
          "title": "request max row limit",
          "readOnly": true
        }
      },
      "title": "Endpoint request result\n(-- api-linter: core::0142::time-field-type=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)"
    },
    "TestEndpointResponseRow": {
      "type": "object",
      "properties": {
        "items": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "row items",
          "readOnly": true
        }
      },
      "title": "Endpoint query rows"
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "rpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "v1beta1ApiKey": {
      "type": "object",
      "properties": {
        "apiKeyId": {
          "type": "string",
          "format": "uint64",
          "title": "(-- api-linter: core::0141::forbidden-types=disabled\n    aip.dev/not-precedent: We need to do this because we need to keep data\n    type returned from account. --)\nIdentifier of API key",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "title": "Unique name of API key, format: dataApps/{data_app}/apiKeys/{api_key}"
        },
        "publicKey": {
          "type": "string",
          "title": "Public key of API key",
          "readOnly": true
        },
        "privateKey": {
          "type": "string",
          "description": "Private key of API key, only fully displayed when initially created.\nAfterwards, the content will be obscured for security, showing only the\nlast 4 characters.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "title": "Description of API key",
          "required": [
            "description"
          ]
        },
        "role": {
          "$ref": "#/definitions/ApiKeyRole",
          "title": "Role of API key"
        },
        "rateLimitRpm": {
          "type": "integer",
          "format": "int32",
          "description": "The rate limit for how many API requests can be made per minute with the\nkey. The value should be in the range of 1 and 1000. For a chat2query data\napp, the value can not be modified.",
          "required": [
            "rateLimitRpm"
          ]
        },
        "expireState": {
          "$ref": "#/definitions/ApiKeyExpireState",
          "title": "expire state about this key"
        },
        "expireTime": {
          "type": "string",
          "format": "date-time",
          "title": "this key will expired at this time\nonly makes sense if this expiry_state is EXPIRE_STATE_NOT_EXPIRE",
          "readOnly": true
        },
        "apiKeyExpireSetting": {
          "$ref": "#/definitions/ApiKeyApiKeyExpireSetting",
          "title": "expire setting"
        }
      },
      "title": "An API key of a Data App",
      "required": [
        "description",
        "rateLimitRpm"
      ]
    },
    "v1beta1ApiSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "Name of the API Specification, format: dataApps/{data_app}/apiSpec"
        },
        "content": {
          "type": "string",
          "title": "Document content of the API Specification for the Data App",
          "readOnly": true
        }
      },
      "title": "ApiSpec resource"
    },
    "v1beta1Chat2QuerySettings": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "Chat2querySettings, format: dataApps/{data_app}/chat2querySettings"
        },
        "llmApiKey": {
          "type": "string",
          "title": "Chat2Query llm_api_key",
          "required": [
            "llmApiKey"
          ]
        },
        "languageCode": {
          "type": "string",
          "title": "Chat2Query language",
          "required": [
            "languageCode"
          ]
        },
        "llmModel": {
          "type": "string",
          "title": "Chat2Query llm_model",
          "required": [
            "llmModel"
          ]
        }
      },
      "title": "Response for GetChat2QuerySettings and UpdateChat2QuerySettings\n(-- api-linter: core::0135::force-field=disabled\n    aip.dev/not-precedent: all delete operations are enforced. --)",
      "required": [
        "llmApiKey",
        "languageCode",
        "llmModel"
      ]
    },
    "v1beta1DataApp": {
      "type": "object",
      "properties": {
        "dataAppId": {
          "type": "string",
          "title": "Identifier of DataApp",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "title": "Unique name of Data App, format: dataApps/{data_app_id}"
        },
        "version": {
          "type": "string",
          "title": "App Version",
          "required": [
            "version"
          ]
        },
        "projectId": {
          "type": "string",
          "title": "Project id which the data app belong to"
        },
        "clusterIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Cluster id which the data app belong to"
        },
        "appType": {
          "$ref": "#/definitions/v1beta1DataAppType",
          "title": "App Type"
        },
        "displayName": {
          "type": "string",
          "title": "App name",
          "required": [
            "displayName"
          ]
        },
        "description": {
          "type": "string",
          "title": "App description",
          "required": [
            "description"
          ]
        },
        "createdAt": {
          "type": "string",
          "title": "App create time",
          "readOnly": true
        },
        "updatedAt": {
          "type": "string",
          "title": "App update time",
          "readOnly": true
        }
      },
      "title": "(-- api-linter: core::0140::prepositions=disabled\n    aip.dev/not-precedent: created_at is the standard filed name in dataservice. --)\nResponse for DataApp",
      "required": [
        "version",
        "displayName",
        "description"
      ]
    },
    "v1beta1DataAppType": {
      "type": "string",
      "enum": [
        "TYPE_UNSPECIFIED",
        "DATAAPP",
        "CHAT2QUERY"
      ],
      "default": "TYPE_UNSPECIFIED",
      "description": "- TYPE_UNSPECIFIED: Unspecified. Do not use\n - DATAAPP: Standard DataAPP\n - CHAT2QUERY: Chat2query DataApp",
      "title": "Type for Data API"
    },
    "v1beta1DataSource": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string",
          "title": "(-- api-linter: core::0141::forbidden-types=disabled\n    aip.dev/not-precedent: We need to do this because we need to keep data\n    type returned from account. --)\nCluster Id",
          "required": [
            "clusterId"
          ]
        },
        "name": {
          "type": "string",
          "title": "Unique name of API key, format:\ndataApps/{data_app}/dataSources/{data_source}"
        },
        "clusterDisplay": {
          "type": "string",
          "title": "Cluster Display Name",
          "readOnly": true
        },
        "clusterType": {
          "type": "string",
          "title": "Cluster Type",
          "readOnly": true
        },
        "clusterProvider": {
          "type": "string",
          "title": "Cluster Provider",
          "readOnly": true
        },
        "clusterRegion": {
          "type": "string",
          "title": "Cluster Region",
          "readOnly": true
        },
        "clusterRegionDisplay": {
          "type": "string",
          "title": "Cluster Region Display Name",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "description": "Time when the data source was bound.",
          "readOnly": true
        }
      },
      "title": "(-- api-linter: core::0140::prepositions=disabled\n    aip.dev/not-precedent: created_at is the standard filed name in dataservice. --)\nResponse for DataSource",
      "required": [
        "clusterId"
      ]
    },
    "v1beta1Deployment": {
      "type": "object",
      "properties": {
        "deploymentId": {
          "type": "string",
          "title": "Identifier of deployment",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "title": "Unique name of deployment, format: dataApps/{data_app}/deployments/{deployment_id}"
        },
        "description": {
          "type": "string",
          "title": "deployment description"
        },
        "origin": {
          "type": "string",
          "title": "deployment origin type",
          "readOnly": true
        },
        "originInfo": {
          "$ref": "#/definitions/DeploymentOriginInfo",
          "title": "deployment origin info"
        },
        "createdBy": {
          "type": "string",
          "title": "deployment creator",
          "readOnly": true
        },
        "status": {
          "type": "string",
          "title": "deployment status",
          "readOnly": true
        },
        "statusErrorMessage": {
          "type": "string",
          "title": "deployment error message",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "title": "deployment create time",
          "readOnly": true
        },
        "deployedAt": {
          "type": "string",
          "title": "deployment launch time",
          "readOnly": true
        },
        "finishedAt": {
          "type": "string",
          "title": "deployment finished time",
          "readOnly": true
        }
      },
      "title": "Response for Deployment\n(-- api-linter: core::0140::uri=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)\n(-- api-linter: core::0140::prepositions=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)"
    },
    "v1beta1Endpoint": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "(-- api-linter: core::0141::forbidden-types=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)\nUnique name of endpoint, format: dataApps/{data_app}/endpoints/{endpoint}"
        },
        "status": {
          "type": "string",
          "title": "Endpoint deployment status: deployed/draft",
          "readOnly": true
        },
        "displayName": {
          "type": "string",
          "title": "Endpoint display name",
          "required": [
            "displayName"
          ]
        },
        "description": {
          "type": "string",
          "title": "Endpoint description"
        },
        "path": {
          "type": "string",
          "title": "Http Path, example: /v1/endpoint1",
          "required": [
            "path"
          ]
        },
        "method": {
          "type": "string",
          "title": "Http method, example: GET/POST/PUT/DELETE",
          "required": [
            "method"
          ]
        },
        "clusterId": {
          "type": "string",
          "title": "Endpoint datasource",
          "required": [
            "clusterId"
          ]
        },
        "params": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1EndpointParams"
          },
          "title": "Endpoint parameters"
        },
        "settings": {
          "$ref": "#/definitions/v1beta1EndpointSettings",
          "title": "Endpoint settings"
        },
        "tag": {
          "type": "string",
          "title": "Endpoint tag",
          "required": [
            "tag"
          ]
        },
        "batchOperation": {
          "type": "boolean",
          "title": "Is support batch operation",
          "readOnly": true
        },
        "sqlTemplate": {
          "type": "string",
          "title": "Sql query",
          "required": [
            "sqlTemplate"
          ]
        },
        "type": {
          "type": "string",
          "title": "Endpoint type",
          "readOnly": true
        },
        "returnType": {
          "type": "string",
          "title": "Result format type",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "title": "(-- api-linter: core::0140::prepositions=disabled\n    aip.dev/not-precedent: created_at is the standard filed name in dataservice. --)\nEndpoint create time",
          "readOnly": true
        },
        "updatedAt": {
          "type": "string",
          "title": "Endpoint update time",
          "readOnly": true
        }
      },
      "title": "Response for Endpoint\n(-- api-linter: core::0140::prepositions=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)",
      "required": [
        "displayName",
        "path",
        "method",
        "clusterId",
        "tag",
        "sqlTemplate"
      ]
    },
    "v1beta1EndpointArgs": {
      "type": "object",
      "properties": {
        "items": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "endpoint args",
          "required": [
            "items"
          ]
        }
      },
      "title": "Endpoint Args structure",
      "required": [
        "items"
      ]
    },
    "v1beta1EndpointParams": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "parameter name",
          "required": [
            "name"
          ]
        },
        "type": {
          "type": "string",
          "title": "parameter type: string/number/interger/bool/array",
          "required": [
            "type"
          ]
        },
        "itemType": {
          "type": "string",
          "title": "array parameter item type: string/number/interger"
        },
        "required": {
          "type": "boolean",
          "title": "parameter is required"
        },
        "defaultValue": {
          "type": "string",
          "title": "paramester's default value"
        },
        "description": {
          "type": "string",
          "title": "parameter's description"
        },
        "enum": {
          "type": "string",
          "description": "(-- api-linter: core::0140::reserved-words=disabled\n    aip.dev/not-precedent: This paramis is used to test endpoint. --)\nValue range, optional, multiple values are separated by commas."
        }
      },
      "title": "(-- api-linter: core::0123::resource-annotation=disabled\n    aip.dev/not-precedent: We need to do this because reasons. --)\nEndpoint parameter struct",
      "required": [
        "name",
        "type"
      ]
    },
    "v1beta1EndpointSettings": {
      "type": "object",
      "properties": {
        "timeout": {
          "type": "integer",
          "format": "int32",
          "title": "endpoint request timeout",
          "required": [
            "timeout"
          ]
        },
        "rowLimit": {
          "type": "integer",
          "format": "int32",
          "title": "endpoint return max row count",
          "required": [
            "rowLimit"
          ]
        },
        "paginationEnabled": {
          "type": "boolean",
          "title": "is pagination enabled",
          "required": [
            "paginationEnabled"
          ]
        },
        "cacheEnabled": {
          "type": "boolean",
          "title": "is cache enabled",
          "required": [
            "cacheEnabled"
          ]
        },
        "cacheTtl": {
          "type": "integer",
          "format": "int32",
          "title": "cache's ttl",
          "required": [
            "cacheTtl"
          ]
        }
      },
      "title": "Endpoint settings struct",
      "required": [
        "timeout",
        "rowLimit",
        "paginationEnabled",
        "cacheEnabled",
        "cacheTtl"
      ]
    },
    "v1beta1ListApiKeysResponse": {
      "type": "object",
      "properties": {
        "apiKeys": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1ApiKey"
          },
          "description": "The list of matching API keys."
        },
        "nextPageToken": {
          "type": "string",
          "title": "`next_page_token` can be sent in a subsequent call to fetch more results"
        }
      },
      "title": "Response for ListApiKeys"
    },
    "v1beta1ListDataAppsResponse": {
      "type": "object",
      "properties": {
        "dataApps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1DataApp"
          },
          "description": "Define your fields as needed for the list of DataApps response\nThe list of matching data apps."
        },
        "nextPageToken": {
          "type": "string",
          "title": "`next_page_token` can be sent in a subsequent call to fetch more results"
        }
      },
      "title": "Response for ListDataApps"
    },
    "v1beta1ListDataSourcesResponse": {
      "type": "object",
      "properties": {
        "dataSources": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1DataSource"
          },
          "description": "Define fields as needed for the ListDataSources response\nThe list of matching data sources."
        },
        "nextPageToken": {
          "type": "string",
          "title": "`next_page_token` can be sent in a subsequent call to fetch more results"
        }
      },
      "title": "Response for ListDataSources"
    },
    "v1beta1ListDeploymentsResponse": {
      "type": "object",
      "properties": {
        "deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1Deployment"
          },
          "description": "Define fields as needed for the ListDeployments response\nThe list of matching deployments."
        },
        "nextPageToken": {
          "type": "string",
          "title": "`next_page_token` can be sent in a subsequent call to fetch more results"
        }
      },
      "title": "Response for ListDeployments"
    },
    "v1beta1ListEndpointsResponse": {
      "type": "object",
      "properties": {
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1Endpoint"
          },
          "description": "The list of matching endpoints."
        },
        "nextPageToken": {
          "type": "string",
          "title": "`next_page_token` can be sent in a subsequent call to fetch more results"
        }
      },
      "title": "Response for ListEndpoint"
    },
    "v1beta1SystemEndpointConfig": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "System Endpoint Config, format: dataApps/{data_app}/systemEndpointConfig"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1beta1SystemEndpointConfigItem"
          },
          "title": "System Endpoint Config items",
          "required": [
            "items"
          ]
        }
      },
      "title": "Response for UpdateSystemEndpointConfig\n(-- api-linter: core::0133::request-id-field=disabled\n    aip.dev/not-precedent: We need to do this because we don't allow client\n    to specify api_key_id. --)",
      "required": [
        "items"
      ]
    },
    "v1beta1SystemEndpointConfigItem": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "title": "System Endpoint Config type",
          "required": [
            "type"
          ]
        },
        "key": {
          "type": "string",
          "title": "System Endpoint Config key",
          "required": [
            "key"
          ]
        },
        "enabled": {
          "type": "boolean",
          "title": "System Endpoint Config enabled",
          "required": [
            "enabled"
          ]
        }
      },
      "title": "System Endpoint Config Item\n(-- api-linter: core::0133::request-id-field=disabled\n    aip.dev/not-precedent: We need to do this because we don't allow client\n    to specify api_key_id. --)",
      "required": [
        "type",
        "key",
        "enabled"
      ]
    },
    "v1beta1TestEndpointResponse": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "title": "Endpoint type",
          "readOnly": true
        },
        "data": {
          "$ref": "#/definitions/TestEndpointResponseData",
          "title": "Endpoint request data"
        }
      },
      "title": "Response for TestEndpoint"
    }
  }
}
