Skip to main content
Version: Next

ActivityRecord

action_kindstringnullable

Transaction-level avenue that produced this record's batch: restore / import / clone. null for ordinary saves. All records sharing a transaction_id share the same action_kind. The schema's third *_kind column (entity_kind / kind / action_kind), at transaction scope.

Possible values: [clone, import, restore, null]

changed_by objectnullable

User who produced the change, or null when the saving user no longer exists in ab_user.

first_namestring
idinteger
last_namestring
entity_deletedboolean

True iff the source entity is hard-deleted (no live row by entity_id). False for live and soft-deleted entities.

entity_deletion_statestringnullable

Present when the source entity has non-null deleted_at Absent or null otherwise.

Possible values: [soft_deleted, null]

entity_kindstring

User-facing kind of the source entity: one of "dashboard" / "chart" / "dataset".

Possible values: [dashboard, chart, dataset]

entity_namestring

Name of the source entity at the time of the change — denormalized from the validity-strategy shadow row. Survives entity rename / delete.

entity_uuidstringnullable

UUID of the source entity; null only when entity_deleted: true (the entity has been hard-deleted since the change was recorded).

first_tracked_saveboolean

True when this record's transaction is the entity's FIRST tracked save (first UPDATE after the retroactive baseline). Such transactions can carry dozens of params-normalization records for entities that predate versioning; clients use the marker to collapse them rather than render each delta as a user edit. Matched against the LIVE row's (id, uuid), so it is always false for hard-deleted entities (no live row) and for shadow rows predating the entity's current uuid.

from_valuenullable

Prior value; null = didn't exist.

impact objectnullable

Optional dependent-count for source: "related" records — e.g., {"charts": 4} for a dataset edit that affected 4 charts on the path dashboard at the change's transaction. Absent for source: "self" records and for related records without dependents.

chartsinteger

Number of sibling charts on the path entity affected by the same related-record change at this transaction.

issued_atstring<date-time>

UTC timestamp; primary ordering key (DESC).

kindstring

Content category — what kind of thing changed. field is the fallback for scalar changes without a more specific category. Per-record.

Possible values: [filter, metric, dimension, column, chart, row, tab, tabs, header, markdown, divider, time_range, color_palette, field, __meta__]

operationstring

Per-record verb: add / remove / move / edit. Explicit instead of inferred from from_value / to_value null-tests. move only fires for layout records.

Possible values: [add, remove, move, edit, update, announce]

pathstring[]nullable

Pure navigation address — no verb or kind embedded. Examples: ['slice_name'], ['params', 'adhoc_filters', 'country'], ['CHART-x'] for a layout add/remove/move, ['HEADER-y', 'text'] for a layout edit leaf. The verb lives in operation, the element type in kind.

sourcestring

"self" if (entity_kind, entity_id) matches the path entity; else "related". Drives the frontend's no-group-under-save rendering rule.

Possible values: [self, related]

summarystring

Synthesized headline for source: "related" records — e.g., "Dataset updated: Sales Transactions". Empty string for source: "self" records, except __meta__ self records (e.g. restore announcements), which carry their own headline.

to_valuenullable

New value; null = removed.

transaction_idinteger

Stable secondary ordering key; never reused.

version_uuidstring

Stable UUIDv5 identifier for the source version (derive_version_uuid(entity_uuid, transaction_id)). Identical to what /versions/<version_uuid>/ would return for the same change.

ActivityRecord
{
"action_kind": "clone",
"changed_by": {
"first_name": "string",
"id": 0,
"last_name": "string"
},
"entity_deleted": true,
"entity_deletion_state": "soft_deleted",
"entity_kind": "dashboard",
"entity_name": "string",
"entity_uuid": "string",
"first_tracked_save": true,
"impact": {
"charts": 0
},
"issued_at": "2024-07-29T15:51:28.071Z",
"kind": "filter",
"operation": "add",
"path": [
"string"
],
"source": "self",
"summary": "string",
"transaction_id": 0,
"version_uuid": "string"
}