tidb · Schema
TiDB Cloud Data Service
Schema representing TiDB Cloud Data Service entities including Data Apps, custom SQL-backed API endpoints, endpoint parameters, API keys, and deployment records. The Data Service enables developers to expose TiDB Cloud data via HTTPS REST endpoints backed by SQL queries.
Properties
| Name | Type | Description |
|---|---|---|
| dataAppId | string | The unique identifier assigned to the Data App by TiDB Cloud. |
| displayName | string | The human-readable display name of the Data App. |
| description | string | An optional description of the Data App's purpose and the data it exposes. |
| region | string | The cloud region where this Data App is deployed. |
| createTime | string | The ISO 8601 timestamp when the Data App was created. |
| updateTime | string | The ISO 8601 timestamp when the Data App was last modified. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://pingcap.com/schemas/tidb/data-service.json",
"title": "TiDB Cloud Data Service",
"description": "Schema representing TiDB Cloud Data Service entities including Data Apps, custom SQL-backed API endpoints, endpoint parameters, API keys, and deployment records. The Data Service enables developers to expose TiDB Cloud data via HTTPS REST endpoints backed by SQL queries.",
"type": "object",
"required": ["dataAppId", "displayName"],
"properties": {
"dataAppId": {
"type": "string",
"description": "The unique identifier assigned to the Data App by TiDB Cloud."
},
"displayName": {
"type": "string",
"description": "The human-readable display name of the Data App.",
"minLength": 1,
"maxLength": 64
},
"description": {
"type": "string",
"description": "An optional description of the Data App's purpose and the data it exposes.",
"maxLength": 256
},
"region": {
"type": "string",
"description": "The cloud region where this Data App is deployed."
},
"createTime": {
"type": "string",
"format": "date-time",
"description": "The ISO 8601 timestamp when the Data App was created."
},
"updateTime": {
"type": "string",
"format": "date-time",
"description": "The ISO 8601 timestamp when the Data App was last modified."
}
},
"$defs": {
"DataSource": {
"type": "object",
"description": "A TiDB Cloud cluster linked as a data source within a Data App.",
"required": ["clusterId"],
"properties": {
"clusterId": {
"type": "string",
"description": "The unique identifier of the linked TiDB Cloud cluster."
},
"clusterName": {
"type": "string",
"description": "The display name of the linked cluster."
},
"clusterType": {
"type": "string",
"description": "The type of the linked cluster.",
"enum": ["SERVERLESS", "DEDICATED"]
}
}
},
"Endpoint": {
"type": "object",
"description": "A custom SQL-backed API endpoint within a TiDB Cloud Data App that handles HTTPS requests by executing SQL against a linked cluster.",
"required": ["displayName", "path", "method", "clusterId", "sqlTemplate"],
"properties": {
"name": {
"type": "string",
"description": "The resource name of the endpoint."
},
"displayName": {
"type": "string",
"description": "The human-readable display name for the endpoint.",
"minLength": 1,
"maxLength": 64
},
"description": {
"type": "string",
"description": "A description of what this endpoint returns and how to call it.",
"maxLength": 256
},
"path": {
"type": "string",
"description": "The URL path for the endpoint, relative to the Data App base URL (e.g., /users/{id}).",
"pattern": "^/"
},
"method": {
"type": "string",
"description": "The HTTP method this endpoint accepts.",
"enum": ["GET", "POST", "PUT", "DELETE"]
},
"clusterId": {
"type": "string",
"description": "The ID of the linked cluster this endpoint queries."
},
"sqlTemplate": {
"type": "string",
"description": "The SQL template executed when this endpoint is called. Supports ${param_name} substitution for parameters."
},
"tag": {
"type": "string",
"description": "An optional label for grouping related endpoints."
},
"settings": {
"$ref": "#/$defs/EndpointSettings"
},
"params": {
"type": "array",
"description": "The list of parameter definitions accepted by this endpoint.",
"items": {
"$ref": "#/$defs/EndpointParameter"
}
}
}
},
"EndpointSettings": {
"type": "object",
"description": "Configuration settings controlling the behavior of a Data App endpoint.",
"properties": {
"timeout": {
"type": "integer",
"description": "Maximum SQL execution time in milliseconds before returning a timeout error.",
"minimum": 1,
"maximum": 30000
},
"rowLimit": {
"type": "integer",
"description": "Maximum number of rows the endpoint can return in a single response.",
"minimum": 1,
"maximum": 2000
},
"cacheEnabled": {
"type": "boolean",
"description": "Whether response caching is enabled for GET requests to this endpoint."
},
"cacheTtl": {
"type": "integer",
"description": "Time-to-live for cached responses in seconds.",
"minimum": 1,
"maximum": 3600
},
"paginationEnabled": {
"type": "boolean",
"description": "Whether cursor-based pagination is enabled for result sets."
},
"batchOperation": {
"type": "boolean",
"description": "Whether this endpoint accepts batch array input for bulk operations."
}
}
},
"EndpointParameter": {
"type": "object",
"description": "A parameter definition for a Data App endpoint that maps to SQL template substitution variables.",
"required": ["name", "type"],
"properties": {
"name": {
"type": "string",
"description": "The parameter name as referenced in the SQL template using ${name} syntax.",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
},
"type": {
"type": "string",
"description": "The data type of the parameter.",
"enum": ["STRING", "INTEGER", "NUMBER", "BOOLEAN", "ARRAY"]
},
"required": {
"type": "boolean",
"description": "Whether this parameter is required for every call to the endpoint."
},
"defaultValue": {
"type": "string",
"description": "The default value used when the parameter is not provided by the caller."
},
"description": {
"type": "string",
"description": "A description of the parameter's purpose and expected format.",
"maxLength": 256
}
}
},
"DataAppApiKey": {
"type": "object",
"description": "An API key scoped to a specific Data App, used for authenticating HTTPS calls to the Data App's endpoints via HTTP Digest Authentication.",
"required": ["role"],
"properties": {
"apiKeyId": {
"type": "string",
"description": "The unique identifier of the Data App API key."
},
"publicKey": {
"type": "string",
"description": "The public key portion used as the username in Digest Authentication."
},
"privateKey": {
"type": "string",
"description": "The private key portion used as the password. Only returned at creation time."
},
"description": {
"type": "string",
"description": "A human-readable description identifying the purpose or owner of this key.",
"maxLength": 256
},
"role": {
"type": "string",
"description": "The permission role controlling what operations this key can perform.",
"enum": ["READ_ONLY", "READ_AND_WRITE"]
},
"rateLimitRpm": {
"type": "integer",
"description": "The maximum number of requests per minute allowed for this API key.",
"minimum": 1,
"maximum": 1000
},
"expiresAt": {
"type": "string",
"format": "date-time",
"description": "Optional ISO 8601 expiration timestamp after which this key will no longer be valid."
}
}
},
"Deployment": {
"type": "object",
"description": "A versioned deployment record of a Data App, capturing the endpoint configuration at the time of deployment.",
"required": ["deploymentId", "dataAppId", "status"],
"properties": {
"deploymentId": {
"type": "string",
"description": "The unique identifier of this deployment."
},
"dataAppId": {
"type": "string",
"description": "The ID of the Data App that was deployed."
},
"status": {
"type": "string",
"description": "The current status of the deployment.",
"enum": ["PENDING", "RUNNING", "SUCCEEDED", "FAILED"]
},
"createTime": {
"type": "string",
"format": "date-time",
"description": "The ISO 8601 timestamp when the deployment was initiated."
},
"endTime": {
"type": "string",
"format": "date-time",
"description": "The ISO 8601 timestamp when the deployment completed or failed."
}
}
},
"EndpointCallResponse": {
"type": "object",
"description": "The standard JSON response body returned by a Data App endpoint call.",
"required": ["code", "msg"],
"properties": {
"code": {
"type": "integer",
"description": "The application-level response code. 200 indicates the SQL was executed successfully.",
"enum": [200, 400, 401, 403, 404, 429, 500]
},
"msg": {
"type": "string",
"description": "A human-readable message describing the response status."
},
"result": {
"$ref": "#/$defs/EndpointCallResult"
}
}
},
"EndpointCallResult": {
"type": "object",
"description": "The data payload returned by a successful Data App endpoint call.",
"properties": {
"columns": {
"type": "array",
"description": "The column definitions for the result set.",
"items": {
"$ref": "#/$defs/ResultColumn"
}
},
"rows": {
"type": "array",
"description": "The result rows returned by the SQL query.",
"items": {
"type": "object",
"description": "A single result row as a key-value object.",
"additionalProperties": true
}
},
"latency": {
"type": "string",
"description": "The SQL execution latency string (e.g., 23ms)."
},
"row_affect": {
"type": "integer",
"description": "The number of rows affected by a DML statement."
},
"row_count": {
"type": "integer",
"description": "The total number of rows returned by the query."
}
}
},
"ResultColumn": {
"type": "object",
"description": "A column definition in a Data App endpoint result set.",
"required": ["col", "data_type"],
"properties": {
"col": {
"type": "string",
"description": "The column name."
},
"data_type": {
"type": "string",
"description": "The SQL data type of the column (e.g., VARCHAR, INT, DATETIME)."
},
"nullable": {
"type": "boolean",
"description": "Whether this column can contain NULL values."
}
}
}
}
}