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_nameThe DBBranchName matches the pattern `{db_name}:{branch_name}`. pathstring

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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";
    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;
};
Status CodeDescriptionExample Response/Type Definition
200Schema migration response with ID and migration status.
type PushBranchMigrations = {
    /*
     * @minLength 1
     */
    migrationID: string;
    parentMigrationID: string;
    status: MigrationStatus;
};

type MigrationStatus = "completed" | "pending" | "failed";
400Bad Request
type PushBranchMigrations = {
    id?: string;
    message: string;
};
401Authentication Error
{
  "message": "invalid API key"
}
404Example response
type PushBranchMigrations = {
    id?: string;
    message: string;
};
5XXUnexpected Error
defaultUnexpected Error