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.

affected_charts object[]

The affected sibling charts (id + name), sorted by name — the detail behind the charts count, rendered as the rollup entry's hover tooltip. Capped at 50 entries per record; charts always carries the full count.

  • Array [
  • idinteger

    Chart id.

    namestring

    Chart name at the change's transaction — it may differ from the live name if the chart was renamed since.

  • ]
  • 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": {
    "affected_charts": [
    {
    "id": 0,
    "name": "string"
    }
    ],
    "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"
    }