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.
View JSON Schema on GitHub

JSON Schema

tidb-data-service-schema.json Raw ↑
{
  "$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."
        }
      }
    }
  }
}