Skip to main content
POST
https://sandbox.getcollate.io/api
/
v1
/
databaseSchemas
POST /v1/databaseSchemas
from metadata.sdk import configure
from metadata.sdk.entities import DatabaseSchemas
from metadata.generated.schema.api.data.createDatabaseSchema import CreateDatabaseSchemaRequest

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

request = CreateDatabaseSchemaRequest(
    name="public",
    displayName="Public Schema",
    database="snowflake_prod.analytics",
    description="Main public schema for analytics tables",
    retentionPeriod="P365D"
)

schema = DatabaseSchemas.create(request)
print(f"Created: {schema.fullyQualifiedName}")
{
  "id": "f681432b-e66c-4096-a1cd-7771358c5323",
  "name": "information_schema",
  "fullyQualifiedName": "Glue.default.information_schema",
  "description": "This **mock** database contains tables related to the Glue service",
  "version": 0.1,
  "updatedAt": 1769982658171,
  "updatedBy": "admin",
  "href": "http://localhost:8585/api/v1/databaseSchemas/f681432b-e66c-4096-a1cd-7771358c5323",
  "owners": [],
  "service": {
    "id": "0fab117a-4c58-4ebb-9d42-beab0768fa8e",
    "type": "databaseService",
    "name": "Glue",
    "fullyQualifiedName": "Glue",
    "displayName": "Glue",
    "deleted": false,
    "href": "http://localhost:8585/api/v1/services/databaseServices/0fab117a-4c58-4ebb-9d42-beab0768fa8e"
  },
  "serviceType": "Glue",
  "database": {
    "id": "9655ba5b-b8d7-419c-98f4-16b976692ad8",
    "type": "database",
    "name": "default",
    "fullyQualifiedName": "Glue.default",
    "description": "This **mock** database contains tables related to the Glue service",
    "displayName": "default",
    "deleted": false,
    "href": "http://localhost:8585/api/v1/databases/9655ba5b-b8d7-419c-98f4-16b976692ad8"
  },
  "tags": [],
  "deleted": false,
  "sourceUrl": "https://www.glue.com/information_schema",
  "domains": [],
  "entityStatus": "Unprocessed"
}

Create a Database Schema

Create a new database schema within a database.

Body Parameters

name
string
required
Name of the database schema. Must be unique within the parent database.
database
string
required
Fully qualified name of the parent Database.
displayName
string
Human-readable display name for the schema.
description
string
Description of the schema in Markdown format.
retentionPeriod
string
Data retention period in ISO 8601 duration format (e.g., P365D).
owners
array
Array of owner references (users or teams) to assign to the schema.
domain
string
Fully qualified name of the domain to assign for governance purposes.
tags
array
Array of classification tags to apply to the schema.
extension
object
Custom property values defined by your organization’s metadata schema.
POST /v1/databaseSchemas
from metadata.sdk import configure
from metadata.sdk.entities import DatabaseSchemas
from metadata.generated.schema.api.data.createDatabaseSchema import CreateDatabaseSchemaRequest

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

request = CreateDatabaseSchemaRequest(
    name="public",
    displayName="Public Schema",
    database="snowflake_prod.analytics",
    description="Main public schema for analytics tables",
    retentionPeriod="P365D"
)

schema = DatabaseSchemas.create(request)
print(f"Created: {schema.fullyQualifiedName}")
{
  "id": "f681432b-e66c-4096-a1cd-7771358c5323",
  "name": "information_schema",
  "fullyQualifiedName": "Glue.default.information_schema",
  "description": "This **mock** database contains tables related to the Glue service",
  "version": 0.1,
  "updatedAt": 1769982658171,
  "updatedBy": "admin",
  "href": "http://localhost:8585/api/v1/databaseSchemas/f681432b-e66c-4096-a1cd-7771358c5323",
  "owners": [],
  "service": {
    "id": "0fab117a-4c58-4ebb-9d42-beab0768fa8e",
    "type": "databaseService",
    "name": "Glue",
    "fullyQualifiedName": "Glue",
    "displayName": "Glue",
    "deleted": false,
    "href": "http://localhost:8585/api/v1/services/databaseServices/0fab117a-4c58-4ebb-9d42-beab0768fa8e"
  },
  "serviceType": "Glue",
  "database": {
    "id": "9655ba5b-b8d7-419c-98f4-16b976692ad8",
    "type": "database",
    "name": "default",
    "fullyQualifiedName": "Glue.default",
    "description": "This **mock** database contains tables related to the Glue service",
    "displayName": "default",
    "deleted": false,
    "href": "http://localhost:8585/api/v1/databases/9655ba5b-b8d7-419c-98f4-16b976692ad8"
  },
  "tags": [],
  "deleted": false,
  "sourceUrl": "https://www.glue.com/information_schema",
  "domains": [],
  "entityStatus": "Unprocessed"
}

Returns

Returns the created database schema object with all specified properties and system-generated fields.

Response

id
string
Unique identifier for the database schema (UUID format).
name
string
Schema name.
fullyQualifiedName
string
Fully qualified name in format service.database.schema.
displayName
string
Human-readable display name.
description
string
Description of the schema in Markdown format.
database
object
Reference to the parent database.
service
object
Reference to the parent database service.
serviceType
string
Type of database service (e.g., Snowflake, BigQuery, PostgreSQL).
retentionPeriod
string
Data retention period in ISO 8601 duration format.
owners
array
List of owners assigned to the schema.
domains
array
Domain assignments for the schema.
tags
array
Classification tags applied to the schema.
extension
object
Custom property values defined by your organization’s metadata schema.
version
number
Version number for the entity (starts at 0.1).

Create or Update (PUT)

Use PUT /v1/databaseSchemas instead of POST to perform an upsert. If a database schema with the same fullyQualifiedName already exists, it will be updated; otherwise, a new schema is created. The request body is the same as POST.
curl -X PUT "{base_url}/api/v1/databaseSchemas" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{ ... same body as POST ... }'
PUT will not return a 409 conflict error if the entity already exists — it will update the existing entity instead.

Bulk Create or Update (PUT)

Use PUT /v1/databaseSchemas/bulk to create or update multiple database schemas in a single request. The request body is an array of create request objects.
curl -X PUT "{base_url}/api/v1/databaseSchemas/bulk" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '[
    { "name": "schema_one", "database": "service.db" },
    { "name": "schema_two", "database": "service.db" }
  ]'

Error Handling

CodeError TypeDescription
400BAD_REQUESTInvalid request body or missing required fields
401UNAUTHORIZEDInvalid or missing authentication token
403FORBIDDENUser lacks permission to create database schemas
409ENTITY_ALREADY_EXISTSSchema with same name already exists in database (POST only)