Skip to content

get_dashboard_spec

Read back a spec-backed dashboard's spec verbatim plus its hash, for the edit-and-republish loop. Parameters, errors and scope.

Reads back a dashboard's stored Dashies spec verbatim: comments, formatting and the trailing newline intact, byte-identical to what was published. It also returns the spec_hash.

This is the read half of the edit loop. Fetch the spec, change one field, then republish to the same slug with publish_dashboard, passing base_spec_hash set to the hash you got here so a parallel edit is caught rather than clobbered.

Behaviour hints for clients: read-only, not open-world.

Parameters

ParameterTypeRequiredNotes
slugstringyesCanonical slug of the dashboard whose spec to read.
workspacestringnoWorkspace slug.

Returns

The human summary deliberately does not include the spec text. The spec is in the JSON block.

Spec for "revenue-overview" (https://mickey.dashies.xyz/revenue-overview):
Name: Revenue Overview
Visibility: public
Spec hash: 6f1c9d...
Spec size: 2841 bytes (the spec text is in the JSON block below).

BEGIN_JSON
{"slug":"revenue-overview","url":"https://mickey.dashies.xyz/revenue-overview","name":"Revenue Overview","visibility":"public","spec_hash":"6f1c9d...","spec":"dash: 1\n...","refresh_not_installed":false}
END_JSON

A spec-backed dashboard whose manifest failed to install additionally prints spec declares a schedule but refresh is NOT installed - republish to install.

A dashboard published as raw HTML, or restored from a version predating specs, is an ok: true result with the not-spec-backed text and {"spec_hash":null,"spec":null}. It is not an error.

For a small change, send edits rather than the whole document

The spec_edits argument on publish_dashboard applies exact-string replacements against the stored spec, so comments, ordering and formatting everywhere else survive byte for byte. Copy the span you are replacing verbatim out of the JSON block here, indentation included, and pass the spec_hash you got as base_spec_hash.

Errors

The shared slug rules, plus:

ConditionText
The read failedspec lookup failed: <err>
No such dashboardNo dashboard named "<slug>" in your account.
The stored bytes do not match the stored hashThe stored spec for "<slug>" failed its integrity check (spec_hash does not match the stored bytes). This is a server-side data issue; please report it.

That integrity check runs on every read. It exists so a corrupted spec is refused rather than handed to you as the basis for a republish.

Scope

Workspace-capable. Any member of the workspace may read the spec of its dashboards.

Check it worked

Hash the returned spec bytes yourself and compare against spec_hash. Then, on the republish, confirm the receipt's Spec hash differs from the one you passed as base_spec_hash, which is what tells you your edit actually landed rather than being a no-op.

Last updated 2026-08-04