Push migrations.

https://{your-workspace-slug}.{region}.xata.sh/db/db_branch_name/schema/push

Apply a list of migrations to the current branch.

Expected parameters

NameDescriptionInRequiredSchema
db_branch_name

The DBBranchName matches the pattern {db_name}:{branch_name}.

path✅string

Push Migrations.

POST
https://{your-workspace-slug}.{region}.xata.sh/db/db_branch_name/schema/push

The schema/push API accepts a list of migrations to be applied to the current branch. A list of applicable migrations can be fetched using the schema/history API from another branch or database.

The most recent migration must be part of the list or referenced (via parentID) by the first migration in the list of migrations to be pushed.

Each migration in the list has an id, parentID, and checksum. The checksum for migrations are generated and verified by xata. The operation fails if any migration in the list has an invalid checksum.

Request Body Type Definition

type PushBranchMigrations = {
    migrations: MigrationObject[];
};
 
type MigrationObject = {
    title?: string;
    message?: string;
    id: string;
    parentID?: string;
    checksum: string;
    operations: MigrationOp[];
};
 
/**
 * Branch schema migration operations.
 */
type MigrationOp = MigrationTableOp | MigrationColumnOp;
 
type MigrationTableOp = {
    addTable: TableOpAdd;
} | {
    removeTable: TableOpRemove;
} | {
    renameTable: TableOpRename;
};
 
type MigrationColumnOp = {
    addColumn: ColumnOpAdd;
} | {
    removeColumn: ColumnOpRemove;
} | {
    renameColumn: ColumnOpRename;
};
 
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 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 ColumnLink = {
    table: string;
};
 
type ColumnVector = {
    /**
     * @maximum 10000
     * @minimum 2
     */
    dimension: number;
};
 
type ColumnFile = {
    defaultPublicAccess?: boolean;
};

Responses

type PushBranchMigrations = {
    /**
     * @minLength 1
     */
    migrationID: string;
    parentMigrationID: string;
    status: MigrationStatus;
};
 
type MigrationStatus = "completed" | "pending" | "failed";