Preview branch schema edits.

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

Preview the resulting branch schema when applying the edit script.

Expected Parameters

NameDescriptionInRequiredSchema
db_branch_nameThe DBBranchName matches the pattern `{db_name}:{branch_name}`. pathstring

Preview Branch Schema Edits.

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

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
type PreviewBranchSchemaEdit = {
    edits?: SchemaEditScript;
};

type SchemaEditScript = {
    sourceMigrationID?: string;
    targetMigrationID?: 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
200OK
type PreviewBranchSchemaEdit = {
    original: Schema;
    updated: Schema;
};

type Schema = {
    tables: Table[];
    tablesOrder?: string[];
};

type Table = {
    id?: string;
    name: TableName;
    columns: Column[];
    revLinks?: RevLink[];
};

/**
 * @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";
    link?: ColumnLink;
    vector?: ColumnVector;
    file?: ColumnFile;
    ["file[]"]?: ColumnFile;
    notNull?: boolean;
    defaultValue?: string;
    unique?: boolean;
    columns?: Column[];
};

type RevLink = {
    linkID: string;
    table: string;
};

type ColumnLink = {
    table: string;
};

type ColumnVector = {
    /*
     * @maximum 10000
     * @minimum 2
     */
    dimension: number;
};

type ColumnFile = {
    defaultPublicAccess?: boolean;
};
400Bad Request
type PreviewBranchSchemaEdit = {
    id?: string;
    message: string;
};
401Authentication Error
{
  "message": "invalid API key"
}
404Example response
type PreviewBranchSchemaEdit = {
    id?: string;
    message: string;
};
5XXUnexpected Error
defaultUnexpected Error