---
title: "List a dashboard's revision history."
method: GET
path: "/v1/dashboards/{id}/revisions"
tags: ["dashboards"]
---

# List a dashboard's revision history.

`GET /v1/dashboards/{id}/revisions`

## Request

- Base URL: `http://localhost:8080`
- URL: `http://localhost:8080/v1/dashboards/{id}/revisions`
- Auth: one of:
  - API key in cookie `dvt_session`
  - HTTP bearer

Returns the dashboard's revisions newest-first (ADR-0021 Phase 3: pointer-set revisions).
Each entry is a header — version, actor, change summary, timestamp. Use a version with
POST .../restore to revert the whole dashboard.

## Response `200`

The dashboard's revision history.

- DashboardRevisionCollection
  - `data` DashboardRevision[], required
    - `revisionId` string, uuid, required
    - `version` integer, required: The dashboard version this revision captured.
    - `actorId` string, uuid, nullable: The actor who wrote the revision (null for system writes).
    - `actorType` 'user' | 'agent' | 'system', required
    - `actorName` string, nullable: Display name, else email, of the actor who wrote the revision; null for system writes.
    - `changeSummary` string: Human-readable summary, e.g. "Restored dashboard to v3".
    - `createdAt` string, date-time, required
    - `beforeThumbUrl` string, nullable: DVT-2085: a same-origin URL (GET /v1/dashboards/{id}/thumbnail?revision=N) resolving to the revision-pinned render artifact nearest to version-1, at or before it. Null when no such artifact exists (never re-rendered — dvt never re-renders history against today's warehouse, ADR-0011); always null for the initial version (there is no version 0 to request).
    - `afterThumbUrl` string, nullable: DVT-2085: a same-origin URL (GET /v1/dashboards/{id}/thumbnail?revision=N) resolving to the revision-pinned render artifact nearest to this row's own version, at or before it. Null when no such artifact exists.
    - `beforeThumbRevision` integer, nullable: The revision actually resolved for beforeThumbUrl — may be OLDER than version-1 when that exact revision was never rendered (nearest-older fallback). Null when beforeThumbUrl is null.
    - `afterThumbRevision` integer, nullable: The revision actually resolved for afterThumbUrl — may be OLDER than version when that exact revision was never rendered (nearest-older fallback). Null when afterThumbUrl is null.
    - `certificationPaused` object: DVT-5223: present when this revision is the first edit after an active certified/canonical grant's pinned revision, i.e. the edit that paused the certification. Read-only, derived at read time.
      - `tier` 'certified' | 'canonical', required
      - `domain` string: Name of the certification domain, when the grant is domain-scoped.
      - `certifiedVersion` integer, required: The revision version the grant was pinned to.
  - `meta` Meta, required: Response metadata.
    - `requestId` string, required: Correlates with the X-Request-Id header.
    - `total` integer: Item count, present on collection responses.
    - `nextCursor` string, nullable: Opaque keyset-pagination cursor, present on paginated responses (e.g. GET /v1/dashboards) when more rows exist beyond this page. Pass it back as the `cursor` query param to fetch the next page; absent or null on the last page.
    - `roleResolveDegraded` boolean: Snowflake mode only (DVT-2260), on GET /v1/dashboards: present and true when the caller's live Snowflake role resolution failed or was unavailable — role-shared dashboards may be missing from this page. Omitted (not merely false) whenever resolution succeeded or the role-share arm does not apply (off snowflake mode, an org admin/owner, or off the ingress listener).

## Other responses

- `401`: Missing, invalid, or expired session.
- `404`: Resource does not exist.

---

[API](https://skmtc.dev/dvt/apis/dvt-rest-api.md) · [All operations](https://skmtc.dev/dvt/apis/dvt-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dvt/apis/dvt-rest-api/revisions/00016f504165?raw)
