dashboards

Update a dashboard (optimistic concurrency).

Updates title, visibility, and/or the full spec. Requires the current version for optimistic concurrency; a stale version returns 409. If a new spec is provided it is re-validated before persistence.

patch/v1/dashboards/{id}

Request

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

Query parameters

reasonstring

Optional change note (the "why") recorded in the dashboard's audit log entry (DVT-5309); 1–280 characters. May also be supplied via the X-Dvt-Change-Reason header. Over-cap values return 400.

Request body

versioninteger required

The current version, from the latest GET. Required for optimistic concurrency.

titlestring

A title-only update (no spec) sets this denormalized column without writing a dashboard revision. Because spec.meta.title is the source of truth, restoring any earlier revision will overwrite such a rename.

visibility'private' | 'shared' | 'public'
specobject
queryRolestring

Snowflake mode only (DVT-1388): pin the Snowflake role this dashboard's queries run under for every viewer, or pass an empty string to clear the pin. Requires share access (like a visibility change), and you can only pin a role your own Snowflake session holds (validated live against CURRENT_AVAILABLE_ROLES()). Unquoted role names only (letters, digits, _ or $ — canonicalized to upper case); reserved pseudo-roles (PUBLIC) are rejected. Omit the field to leave the pin unchanged. Outside snowflake mode the field is rejected with 400.

changeSummarystring

Optional human-readable note describing this edit (DVT-1426) — e.g. "Swapped revenue bar for cohort heatmap per Maria's request". Human-authored, agent-authored, or — via dvt web's Save-confirmation modal (DVT-2686) — prefixed by a client-generated summary of the spec diff against the prior revision, with the author's typed note appended after ' — ' when one was supplied (the same composition rule as the server's own mergeReason, server/internal/repo/element.go) — truncated, or dropped entirely in favor of the note alone, when a long note leaves too little room for it. Other callers may of course send any string, or omit the field entirely. Recorded verbatim on the new revision and surfaced verbatim in the org activity feed; never summarized or transformed. Over 280 characters is rejected with 400.

Response

Dashboard updated.

Changes

No recorded changes to this operation across all 1 revision of this API.