{
"$schema": "https://lix.dev/schema-v1.json",
"key": "lix_change",
"description": "A change records one edit to a Lix row, including what changed, when it changed, and which row was affected.",
"columns": [
{
"name": "account_id",
"type": "uuid",
"nullable": false,
"description": "Account whose active session authored this change."
},
{
"name": "created_at",
"type": "text",
"nullable": false,
"description": "ISO-8601 timestamp at which the change was recorded (set via `CURRENT_TIMESTAMP` at write time).",
"examples": [
"2026-05-08T17:42:31.123Z"
]
},
{
"name": "row_pk",
"type": "jsonb",
"nullable": false,
"description": "Canonical JSON primary-key tuple for the row this change applies to, scoped by (`schema_key`, `file_id`). Values are ordered according to the target schema's `x-lix-primary-key`."
},
{
"name": "file_id",
"type": "text",
"nullable": true,
"description": "Filesystem-scoped file identifier when the change belongs to a file; NULL for engine-internal rows (commits, branches, settings)."
},
{
"name": "id",
"type": "uuid",
"nullable": false,
"default_expression": "uuidv7()",
"description": "Stable identifier for this change."
},
{
"name": "metadata",
"type": "jsonb",
"nullable": true,
"description": "Optional user-provided JSON metadata attached to the change; NULL when nothing was supplied."
},
{
"name": "origin_key",
"type": "text",
"nullable": true,
"description": "Optional caller-provided origin key for the write that produced this change; NULL when the writer did not provide one."
},
{
"name": "schema_key",
"type": "text",
"nullable": false,
"description": "Schema identifier of the row (e.g. `lix_file_descriptor`, `lix_commit`, or a user-registered key)."
},
{
"name": "snapshot_content",
"type": "jsonb",
"nullable": true,
"description": "Row JSON body at this change; NULL represents a tombstone (deletion)."
}
],
"primary_key": [
"id"
],
"foreign_keys": [
{
"columns": [
"account_id"
],
"references": {
"schema_key": "lix_account",
"columns": [
"id"
]
}
}
]
}