The branch's schema as the data API sees it
Authorization
bearer In: header
Path Parameters
Database id
uuidBranch id
uuidQuery Parameters
The Postgres database to describe; main when absent. It must be served by the data API.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/databases/497f6eca-6276-4993-bfeb-53cbbbba6f08/branches/497f6eca-6276-4993-bfeb-53cbbbba6f08/data-api/schema"{ "app_users": { "schema": "string", "table": "string" }, "default_schema": "string", "schemas": { "property1": { "enums": { "property1": [ "string" ], "property2": [ "string" ] }, "functions": { "property1": [ { "args": [ { "array": true, "has_default": true, "name": "string", "type": "string" } ], "returns": { "array": true, "set": true, "type": "string" } } ], "property2": [ { "args": [ { "array": true, "has_default": true, "name": "string", "type": "string" } ], "returns": { "array": true, "set": true, "type": "string" } } ] }, "tables": { "property1": { "columns": { "property1": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" }, "property2": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" } }, "kind": "table", "primary_key": [ "string" ], "privileges": { "property1": [ "select" ], "property2": [ "select" ] }, "rls": true, "security_invoker": true }, "property2": { "columns": { "property1": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" }, "property2": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" } }, "kind": "table", "primary_key": [ "string" ], "privileges": { "property1": [ "select" ], "property2": [ "select" ] }, "rls": true, "security_invoker": true } } }, "property2": { "enums": { "property1": [ "string" ], "property2": [ "string" ] }, "functions": { "property1": [ { "args": [ { "array": true, "has_default": true, "name": "string", "type": "string" } ], "returns": { "array": true, "set": true, "type": "string" } } ], "property2": [ { "args": [ { "array": true, "has_default": true, "name": "string", "type": "string" } ], "returns": { "array": true, "set": true, "type": "string" } } ] }, "tables": { "property1": { "columns": { "property1": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" }, "property2": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" } }, "kind": "table", "primary_key": [ "string" ], "privileges": { "property1": [ "select" ], "property2": [ "select" ] }, "rls": true, "security_invoker": true }, "property2": { "columns": { "property1": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" }, "property2": { "array": true, "enum": "string", "generated": true, "has_default": true, "nullable": true, "type": "string" } }, "kind": "table", "primary_key": [ "string" ], "privileges": { "property1": [ "select" ], "property2": [ "select" ] }, "rls": true, "security_invoker": true } } } }, "version": "string"}The schema the console can show, as the owner or a role GET
What the console may show for one Postgres database of a branch, in the data API schema's shape (schemas, tables with their primary keys and the role's privileges, functions, enums). Without `role`, everything the database's owner reaches; with it, what that role reaches, after the same check the console's queries pass (it exists and isn't owner-level; BYPASSRLS is allowed, Admin only).
The branch's generated types for a secret key role GET
What `GET /data/v1/types` serves a secret key of `role` on this branch (with no database list), byte for byte: the TypeScript module `db.ts` (`Database` and the runtime `types` map for `@chelabase/client`), or with `format=json` the `types` map alone. Studio's Download types. You may call it when you pass `createKey`'s checks on the caller and the role: Developer access on the branch, not a personal login's role, and a role you may use. Its all-rows exposure check (`exposes_data_api`) does not apply, since types expose the schema and never rows. The `ETag` is the body's hash: send it back as `If-None-Match` for a 304 while the schema is unchanged. Not cached (`Cache-Control: no-store`).