Compare branch with custom schema.
https://{your-workspace-slug}.{region}.xata.sh/db/db_branch_name/schema/compare
Compare the branch schema with a custom provided schema.
Expected parameters
Name | Description | In | Required | Schema |
---|---|---|---|---|
db_branch_name | The DBBranchName matches the pattern | path | ✅ | string |
Compare Branch With User Schema.
POSThttps://{your-workspace-slug}.{region}.xata.sh/db/db_branch_name/schema/compare
Request Body Type Definition
type CompareBranchWithUserSchema = {
schema: Schema;
schemaOperations?: MigrationOp[];
branchOperations?: MigrationOp[];
};
type Schema = {
tables: Table[];
tablesOrder?: string[];
};
/**
* Branch schema migration operations.
*/
type MigrationOp = MigrationTableOp | MigrationColumnOp;
type Table = {
id?: string;
name: TableName;
columns: Column[];
revLinks?: RevLink[];
};
type MigrationTableOp = {
addTable: TableOpAdd;
} | {
removeTable: TableOpRemove;
} | {
renameTable: TableOpRename;
};
type MigrationColumnOp = {
addColumn: ColumnOpAdd;
} | {
removeColumn: ColumnOpRemove;
} | {
renameColumn: ColumnOpRename;
};
/**
* @maxLength 255
* @minLength 1
* @pattern [a-zA-Z0-9_\-~]+
*/
type TableName = string;
type Column = {
name: string;
type: "bool" | "int" | "float" | "string" | "text" | "email" | "multiple" | "link" | "object" | "datetime" | "vector" | "file[]" | "file" | "json";
link?: ColumnLink;
vector?: ColumnVector;
file?: ColumnFile;
["file[]"]?: ColumnFile;
notNull?: boolean;
defaultValue?: string;
unique?: boolean;
columns?: Column[];
};
type RevLink = {
table: string;
column: string;
};
type TableOpAdd = {
table: string;
};
type TableOpRemove = {
table: string;
};
type TableOpRename = {
oldName: string;
newName: string;
};
type ColumnOpAdd = {
table: string;
column: Column;
};
type ColumnOpRemove = {
table: string;
column: string;
};
type ColumnOpRename = {
table: string;
oldName: string;
newName: string;
};
type ColumnLink = {
table: string;
};
type ColumnVector = {
/**
* @maximum 10000
* @minimum 2
*/
dimension: number;
};
type ColumnFile = {
defaultPublicAccess?: boolean;
};
Responses
type CompareBranchWithUserSchema = {
source: Schema;
target: Schema;
edits: SchemaEditScript;
};
type Schema = {
tables: Table[];
tablesOrder?: string[];
};
type SchemaEditScript = {
sourceMigrationID?: string;
targetMigrationID?: string;
operations: MigrationOp[];
};
type Table = {
id?: string;
name: TableName;
columns: Column[];
revLinks?: RevLink[];
};
/**
* Branch schema migration operations.
*/
type MigrationOp = MigrationTableOp | MigrationColumnOp;
/**
* @maxLength 255
* @minLength 1
* @pattern [a-zA-Z0-9_\-~]+
*/
type TableName = string;
type Column = {
name: string;
type: "bool" | "int" | "float" | "string" | "text" | "email" | "multiple" | "link" | "object" | "datetime" | "vector" | "file[]" | "file" | "json";
link?: ColumnLink;
vector?: ColumnVector;
file?: ColumnFile;
["file[]"]?: ColumnFile;
notNull?: boolean;
defaultValue?: string;
unique?: boolean;
columns?: Column[];
};
type RevLink = {
table: string;
column: string;
};
type MigrationTableOp = {
addTable: TableOpAdd;
} | {
removeTable: TableOpRemove;
} | {
renameTable: TableOpRename;
};
type MigrationColumnOp = {
addColumn: ColumnOpAdd;
} | {
removeColumn: ColumnOpRemove;
} | {
renameColumn: ColumnOpRename;
};
type ColumnLink = {
table: string;
};
type ColumnVector = {
/**
* @maximum 10000
* @minimum 2
*/
dimension: number;
};
type ColumnFile = {
defaultPublicAccess?: boolean;
};
type TableOpAdd = {
table: string;
};
type TableOpRemove = {
table: string;
};
type TableOpRename = {
oldName: string;
newName: string;
};
type ColumnOpAdd = {
table: string;
column: Column;
};
type ColumnOpRemove = {
table: string;
column: string;
};
type ColumnOpRename = {
table: string;
oldName: string;
newName: string;
};
type CompareBranchWithUserSchema = {
id?: string;
message: string;
};
{
"message": "invalid API key"
}
type CompareBranchWithUserSchema = {
id?: string;
message: string;
};
type CompareBranchWithUserSchema = void;
type CompareBranchWithUserSchema = void;