delete_dashboard
Retire a dashboard by its canonical slug. Parameters, the deletion ordering, the degraded return variants, errors and scope.
Retires a dashboard. The public URL stops resolving, the dashboard leaves the app, and the stored bytes are removed. The database row is preserved internally so the deletion can be audited or reversed out of band; do not offer this as end-user undo. Deleting a slug frees that name for a fresh publish.
To roll a body back to an earlier snapshot without retiring the dashboard, use
restore_dashboard_version
instead.
Behaviour hints for clients: not read-only, destructive, not open-world.
Parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
slug | string | yes | The canonical slug. Aliases left by earlier renames are rejected. |
There is no workspace argument. A workspace-authorized connection deletes that
workspace's dashboards.
Returns
Deleted dashboard for mickey.
Slug: revenue-overview
URL https://mickey.dashies.xyz/revenue-overview now 404s.
Aliases tombstoned: 1
R2 objects removed: 3
Version snapshots purged: 7
Deletion runs database-first, then best-effort cleanup: soft-delete the row, purge versions, delete the stored prefix, then garbage-collect per-version objects. A cleanup step that does not finish replaces its line rather than failing the call:
Note: R2 cleanup didn't finish - some object bytes may linger (not user-visible). Error: <err>
Version snapshots: purge failed (rows may remain, swept later). Error: <err>
Both of those mean the dashboard is deleted and its URL does 404. What lingers is invisible storage that a later sweep collects.
Errors
The shared slug rules, plus a rejection when you pass an alias rather than the canonical slug:
delete rejected: <msg>
The message names the current canonical slug, so the recovery is to re-issue the call with it.
Scope
Workspace-capable. A workspace dashboard's stored objects live under a
workspace-scoped prefix, and the receipt labels the target
the <workspace> workspace.
Check it worked
Load the URL the receipt printed. It should return 404. Then run
list_dashboards and confirm the slug is
gone, since the list excludes soft-deleted rows.