Rename a dashboard, or replace its layout, range or filters. Needs datalyr:write:reports. Send at least one field. Only the fields you send change.
layout is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it.
Send expected_updated_at from your last read to refuse the write when someone changed the dashboard in between: the request then returns 409 with code: stale_dashboard.
The change, in full. A dry run returns the change it WOULD make; an applied write returns the change it DID make, in the same shape, so the two can be compared directly.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Datalyr Docs","description":"Simple guides for setting up and using Datalyr.","colors":{"primary":"#FC6600","light":"#FC6600","dark":"#FC6600"},"logo":{"light":"https://mintcdn.com/datalyr/ROJj0wlntTvU8OM_/light.svg?fit=max\u0026auto=format\u0026n=ROJj0wlntTvU8OM_\u0026q=85\u0026s=29f98b487b8f65c3bd267065db18b4b9","dark":"https://mintcdn.com/datalyr/xt7Bk8U79eZ1GtVp/dark.svg?fit=max\u0026auto=format\u0026n=xt7Bk8U79eZ1GtVp\u0026q=85\u0026s=43fe8f8da4b4e1658fe86bbeef08ff59"},"favicon":"https://mintcdn.com/datalyr/ROJj0wlntTvU8OM_/fav.png?fit=max\u0026auto=format\u0026n=ROJj0wlntTvU8OM_\u0026q=85\u0026s=f5026bdd46f056f274b9f4b111ee8f5b","appearance":{"default":"dark","strict":false},"navbar":{"links":[{"href":"https://datalyr.com","label":"Open Datalyr"}],"primary":{"type":"button","label":"Get started","href":"https://datalyr.com/signup"}},"fonts":{"family":"Inter"},"styling":{"eyebrows":"section","latex":false},"contextual":{"options":["copy","chatgpt","claude","add-mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"datalyr","hasAudioNarration":false,"actualSubdomain":"datalyr","customDomains":["docs.datalyr.com"],"gitSource":{"type":"github","owner":"datalyr","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae53b8d0b793c10791deee6","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API \u0026 MCP","count":92},{"language":"default","tag":"Getting Started","count":77},{"language":"default","tag":"Agent ads","count":15},{"language":"default","tag":"Advanced","count":14},{"language":"default","tag":"Dashboards, analyses and share links","count":14},{"language":"default","tag":"Using Datalyr","count":13},{"language":"default","tag":"Integrations","count":12},{"language":"default","tag":"Revenue","count":11},{"language":"default","tag":"SDK Reference","count":10},{"language":"default","tag":"Account \u0026 billing","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":":root{--datalyr-bg: #ffffff;--datalyr-surface: #fafafa;--datalyr-surface-hover: #f5f5f5;--datalyr-border: #e7e7e7;--datalyr-text: #171717;--datalyr-muted: #666666;--datalyr-orange: #fc6600}.dark,[data-theme=\"dark\"]{--datalyr-bg: #141414;--datalyr-surface: #181818;--datalyr-surface-hover: #1d1d1d;--datalyr-border: #303030;--datalyr-text: #ededed;--datalyr-muted: #a8a8a8}html,body{background:var(--datalyr-bg)!important}body{color:var(--datalyr-text);font-feature-settings:\"cv02\", \"cv03\", \"cv04\", \"cv11\";letter-spacing:-0.006em}#navbar,#navbar-transition{background:color-mix(in srgb, var(--datalyr-bg) 94%, transparent)!important;border-color:var(--datalyr-border)!important;backdrop-filter:blur(16px)}#navbar a,#navbar button{letter-spacing:-0.01em}html body nav#sidebar{background:transparent!important;border-color:var(--datalyr-border)!important}#sidebar-content>div>div.sticky.top-0{background:transparent!important}#sidebar a,#sidebar button{border-radius:6px!important;font-size:14px;font-weight:400!important}#sidebar a:hover,#sidebar button:hover{background:var(--datalyr-surface-hover)!important}#sidebar a[aria-current=\"page\"]{background:transparent!important;box-shadow:none;border-radius:6px!important;color:var(--datalyr-orange)!important;font-weight:500!important}#sidebar a[aria-current=\"page\"]:hover{background:var(--datalyr-surface-hover)!important}#sidebar .sidebar-group{border-left:1px solid var(--datalyr-border);margin-left:4px;padding-left:8px}main{color:var(--datalyr-text)}main h1,main h2,main h3,main h4{color:var(--datalyr-text)!important;letter-spacing:-0.035em;font-weight:650}main h1{font-size:clamp(1.875rem, 3vw, 2rem)!important;line-height:1.16!important}main h2{font-size:1.5rem!important;line-height:1.25!important}main h3{font-size:1.125rem!important;line-height:1.35!important}main p,main li,main td{color:var(--datalyr-muted)!important;font-size:15.5px;line-height:1.72}main strong{color:var(--datalyr-text);font-weight:600}main a{text-underline-offset:3px}main a[class*=\"card\"],main [class*=\"Card\"]{background:var(--datalyr-surface)!important;border-color:var(--datalyr-border)!important;border-radius:10px!important;box-shadow:none!important;transition:background-color 140ms ease, border-color 140ms ease,\n transform 140ms ease}main a[class*=\"card\"]:hover{background:var(--datalyr-surface-hover)!important;border-color:#3a3a3a!important;transform:translateY(-1px)}main a[class*=\"card\"] h2,main [class*=\"Card\"] h2{font-size:1rem!important;line-height:1.35!important;letter-spacing:-0.015em}main [data-component-part=\"card-icon\"] svg{background:var(--datalyr-muted)!important;color:var(--datalyr-muted)!important}pre,code{border-radius:8px!important}aside[aria-label=\"Table of Contents\"],.toc,[class*=\"TableOfContents\"],nav[aria-labelledby=\"toc-heading\"]{position:sticky!important;top:88px!important;max-height:calc(100vh - 110px)!important;overflow-y:auto!important}@media (max-width: 768px){main h1{font-size:1.875rem!important}}"}],"page":{"pagePath":"api-reference/dashboards/update-a-dashboard","slug":"/api-reference/dashboards/update-a-dashboard","pageMetadata":{"title":"Update a dashboard","description":"Rename a dashboard, or replace its layout, range or filters. Needs `datalyr:write:reports`. Send at least one field. Only the fields you send change.\n\n`layout` is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it.\n\nSend `expected_updated_at` from your last read to refuse the write when someone changed the dashboard in between: the request then returns `409` with `code: stale_dashboard`.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /dashboards/{dashboardId}","href":"/api-reference/dashboards/update-a-dashboard","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Rename a dashboard, or replace its layout, range or filters. Needs \", _jsx(_components.code, {\n children: \"datalyr:write:reports\"\n }), \". Send at least one field. Only the fields you send change.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"layout\"\n }), \" is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Send \", _jsx(_components.code, {\n children: \"expected_updated_at\"\n }), \" from your last read to refuse the write when someone changed the dashboard in between: the request then returns \", _jsx(_components.code, {\n children: \"409\"\n }), \" with \", _jsx(_components.code, {\n children: \"code: stale_dashboard\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update a dashboard","description":"Rename a dashboard, or replace its layout, range or filters. Needs `datalyr:write:reports`. Send at least one field. Only the fields you send change.\n\n`layout` is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it.\n\nSend `expected_updated_at` from your last read to refuse the write when someone changed the dashboard in between: the request then returns `409` with `code: stale_dashboard`.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /dashboards/{dashboardId}","href":"/api-reference/dashboards/update-a-dashboard","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Dashboards","analyses and share links"],"summary":"Update a dashboard","description":"Rename a dashboard, or replace its layout, range or filters. Needs `datalyr:write:reports`. Send at least one field. Only the fields you send change.\n\n`layout` is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it.\n\nSend `expected_updated_at` from your last read to refuse the write when someone changed the dashboard in between: the request then returns `409` with `code: stale_dashboard`.","operationId":"update-dashboard","parameters":["ac912da8-7e93-4672-afb8-32689adebc7f"],"requestBody":"79258648-c01f-47a1-a62a-38daf68ae4f8","responses":{"200":"88464ce0-fb1e-4c82-827a-b234eb53e95b","400":"981fcb5a-97ea-4e71-b85f-b294972022cc","403":"b21b651d-3dc4-4e27-8fd7-7d7e383f53a4","404":"8870f7cf-5232-4eb5-97b5-2a2f83f35aaf","409":"12c35103-93cf-4035-b78f-bab4c6e86d24","422":"edbdeb93-8b03-46d0-a036-ba3ce8eba352","429":"eb3d9765-bf0f-416e-92dc-6e7f2eb8b022"},"method":"patch","type":"path","servers":["78ceae59-a477-4949-898e-d94f40b1c3ae"],"security":["6042b473-0802-451b-85ea-c4070c75d098"],"path":"/dashboards/{dashboardId}","baseUrlOptions":["https://api.datalyr.com/v1"],"title":"Update a dashboard","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ac912da8-7e93-4672-afb8-32689adebc7f":{"name":"dashboardId","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["dashboard"],"properties":{"dashboard":{"type":"object","minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":120,"uniqueKey":"dashboard.name","typeLabel":"string"},"layout":{"type":"object","additionalProperties":false,"required":["v","cards"],"properties":{"v":{"type":"integer","enum":[1],"isRequired":true,"uniqueKey":"dashboard.layout.v","typeLabel":"enum\u003cinteger>"},"cards":{"type":"array","maxItems":24,"description":"The cards in display order.","items":{"type":"object","additionalProperties":false,"required":["report_id"],"properties":{"report_id":{"type":"string","format":"uuid","description":"A saved report in the same workspace. Unique within the layout.","isRequired":true,"uniqueKey":"dashboard.layout.cards.items.[INDEX].report_id","typeLabel":"string\u003cuuid>"},"size":{"type":"string","enum":["sm","md","lg"],"description":"Width on a wide screen: `sm` a third of the row, `md` half, `lg` the full row. Omit it for the default by kind: `sm` for a metric, `lg` for a funnel, `md` otherwise.","uniqueKey":"dashboard.layout.cards.items.[INDEX].size","typeLabel":"enum\u003cstring>"}},"uniqueKey":"dashboard.layout.cards.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"dashboard.layout.cards","typeLabel":"object[]"}},"uniqueKey":"dashboard.layout","typeLabel":"object"},"date_range":{"oneOf":[{"type":"object","description":"Defaults to `{preset: last_30_days}`.","required":["from","to"],"properties":{"from":{"type":"string","isRequired":true,"uniqueKey":"dashboard.date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"dashboard.date_range.oneOf.0.to","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"dashboard.date_range.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defaults to `{preset: last_30_days}`.","required":["preset"],"properties":{"preset":{"type":"string","enum":["today","yesterday","last_7_days","last_14_days","last_30_days","last_90_days","this_week","this_month","last_month"],"isRequired":true,"uniqueKey":"dashboard.date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"dashboard.date_range.oneOf.1","typeLabel":"object"}],"uniqueKey":"dashboard.date_range","typeLabel":"object"},"filters":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["dimension","op"],"properties":{"dimension":{"type":"string","description":"A dimension id, or `property:\u003ckey>` for a custom event property.","isRequired":true,"uniqueKey":"dashboard.filters.items.[INDEX].dimension","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","contains","not_contains","gt","gte","lt","lte","is_set","not_set"],"isRequired":true,"uniqueKey":"dashboard.filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"dashboard.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"dashboard.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"dashboard.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"dashboard.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"dashboard.filters.items.[INDEX].value.oneOf.2.items.[INDEX]","typeLabel":"string | number"},"description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"dashboard.filters.items.[INDEX].value.oneOf.2","typeLabel":"(string | number)[]"}],"uniqueKey":"dashboard.filters.items.[INDEX].value","typeLabel":"string | number | (string | number)[]"}},"uniqueKey":"dashboard.filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"dashboard.filters","typeLabel":"object[]"},"expected_updated_at":{"type":"string","format":"date-time","description":"`PATCH` only. The `updated_at` you read. A mismatch returns `409 stale_dashboard`.","uniqueKey":"dashboard.expected_updated_at","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"dashboard","typeLabel":"object"},"dry_run":{"type":"boolean","default":false,"uniqueKey":"dry_run","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"dashboard":{"name":"\u003cstring>","date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"filters":[{"dimension":"\u003cstring>","value":"\u003cstring>"}],"expected_updated_at":"2023-11-07T05:31:56Z"},"dry_run":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"88464ce0-fb1e-4c82-827a-b234eb53e95b":{"description":"The write was applied. `diff` describes what changed, `data` is the dashboard with its resolved `cards`, and `audit_id` is the handle to undo it.","content":{"application/json":{"schema":{"type":"object","required":["dry_run","applied","diff"],"properties":{"dry_run":{"type":"boolean","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"},"applied":{"type":"boolean","description":"False on a dry run and on every error.","isRequired":true,"uniqueKey":"applied","typeLabel":"boolean"},"diff":{"type":"object","additionalProperties":true,"description":"The change, in full. A dry run returns the change it WOULD make; an applied write returns the change it DID make, in the same shape, so the two can be compared directly.","properties":{"action":{"type":"string","description":"`\u003cresource>.\u003cverb>`, such as conversion_rule.update.","uniqueKey":"diff.action","typeLabel":"string"},"resource":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","enum":["conversion_rule","trackable_link","saved_report","dashboard","analysis","share_link","script_proposal"],"uniqueKey":"diff.resource.type","typeLabel":"enum\u003cstring>"},"id":{"oneOf":[{"type":"string","description":"Null for a dry-run create, which has no id yet.","uniqueKey":"diff.resource.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Null for a dry-run create, which has no id yet.","uniqueKey":"diff.resource.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.resource.id","typeLabel":"string | null"},"label":{"oneOf":[{"type":"string","uniqueKey":"diff.resource.label.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"diff.resource.label.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.resource.label","typeLabel":"string | null"}},"uniqueKey":"diff.resource","typeLabel":"object"},"prior_state":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"diff.prior_state.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"diff.prior_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.prior_state","typeLabel":"object | null"},"new_state":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"diff.new_state.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"diff.new_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.new_state","typeLabel":"object | null"},"changes":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"field":{"type":"string","uniqueKey":"diff.changes.items.[INDEX].field","typeLabel":"string"},"from":{"oneOf":[{}],"uniqueKey":"diff.changes.items.[INDEX].from","typeLabel":"any"},"to":{"oneOf":[{}],"uniqueKey":"diff.changes.items.[INDEX].to","typeLabel":"any"}},"uniqueKey":"diff.changes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"diff.changes","typeLabel":"object[]"},"effects":{"type":"array","items":{"type":"object","additionalProperties":true,"description":"Something the write changes beyond the row itself. Read these before applying anything: `postback_target` is where a conversion rule sends events, which is the part that moves money.","properties":{"type":{"type":"string","enum":["postback_target","postback_target_removed","edge_kv","cache_revalidate","proposal_pending"],"uniqueKey":"diff.effects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"summary":{"type":"string","description":"Plain-language statement of the effect.","uniqueKey":"diff.effects.items.[INDEX].summary","typeLabel":"string"},"platform":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].platform","typeLabel":"string"},"ad_account_id":{"oneOf":[{"type":"string","uniqueKey":"diff.effects.items.[INDEX].ad_account_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"diff.effects.items.[INDEX].ad_account_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].ad_account_id","typeLabel":"string | null"},"asset_id":{"oneOf":[{"type":"string","description":"The pixel, pixel code or conversion action receiving events.","uniqueKey":"diff.effects.items.[INDEX].asset_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The pixel, pixel code or conversion action receiving events.","uniqueKey":"diff.effects.items.[INDEX].asset_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].asset_id","typeLabel":"string | null"},"asset_field":{"oneOf":[{"type":"string","description":"The config key the postback worker reads the asset from.","uniqueKey":"diff.effects.items.[INDEX].asset_field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The config key the postback worker reads the asset from.","uniqueKey":"diff.effects.items.[INDEX].asset_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].asset_field","typeLabel":"string | null"},"endpoint_url_masked":{"oneOf":[{"type":"string","description":"`platform: webhook` only. The destination endpoint with its origin visible and its path masked (`https://hooks.acme.com/••••••••a1b2`). Masked because this effect is persisted on the audit row, and a webhook path is frequently the receiver's only credential. Null for every ad platform.","uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked.oneOf.0","typeLabel":"string"},{"type":"null","description":"`platform: webhook` only. The destination endpoint with its origin visible and its path masked (`https://hooks.acme.com/••••••••a1b2`). Masked because this effect is persisted on the audit row, and a webhook path is frequently the receiver's only credential. Null for every ad platform.","uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked.oneOf.1","typeLabel":"null"}],"uniqueKey":"diff.effects.items.[INDEX].endpoint_url_masked","typeLabel":"string | null"},"trigger_event":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].trigger_event","typeLabel":"string"},"trigger_event_source":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].trigger_event_source","typeLabel":"string"},"platform_event":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].platform_event","typeLabel":"string"},"active":{"type":"boolean","description":"False means the rule exists and fires nothing.","uniqueKey":"diff.effects.items.[INDEX].active","typeLabel":"boolean"},"operation":{"type":"string","enum":["put","delete"],"description":"edge_kv only.","uniqueKey":"diff.effects.items.[INDEX].operation","typeLabel":"enum\u003cstring>"},"key":{"type":"string","description":"edge_kv only: the edge redirect key.","uniqueKey":"diff.effects.items.[INDEX].key","typeLabel":"string"},"path":{"type":"string","description":"cache_revalidate only.","uniqueKey":"diff.effects.items.[INDEX].path","typeLabel":"string"},"requires_approval":{"type":"boolean","description":"`proposal_pending` only, and always true: the absence of an effect, stated. A proposal changes nothing that runs anywhere until a human approves it.","uniqueKey":"diff.effects.items.[INDEX].requires_approval","typeLabel":"boolean"},"approver_roles":{"type":"array","items":{"type":"string","uniqueKey":"diff.effects.items.[INDEX].approver_roles.items.[INDEX]","typeLabel":"string"},"description":"`proposal_pending` only: who can approve it.","uniqueKey":"diff.effects.items.[INDEX].approver_roles","typeLabel":"string[]"},"review_surface":{"type":"string","description":"`proposal_pending` only: where a human reviews it. Not an API path — there is none.","uniqueKey":"diff.effects.items.[INDEX].review_surface","typeLabel":"string"},"supersedes":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"diff.effects.items.[INDEX].supersedes.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"`proposal_pending` only: pending proposals for the same target this one retires.","uniqueKey":"diff.effects.items.[INDEX].supersedes","typeLabel":"string\u003cuuid>[]"}},"uniqueKey":"diff.effects.items.[INDEX]","typeLabel":"object"},"uniqueKey":"diff.effects","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"diff","typeLabel":"object"},"audit_id":{"type":"string","format":"uuid","description":"Present on an applied write. The handle `POST /audit/{auditId}/undo` takes.","uniqueKey":"audit_id","typeLabel":"string\u003cuuid>"},"data":{"type":"object","additionalProperties":true,"required":["id","name","layout","date_range","filters","created_via","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"layout":{"type":"object","additionalProperties":false,"required":["v","cards"],"properties":{"v":{"type":"integer","enum":[1],"isRequired":true,"uniqueKey":"data.layout.v","typeLabel":"enum\u003cinteger>"},"cards":{"type":"array","maxItems":24,"description":"The cards in display order.","items":{"type":"object","additionalProperties":false,"required":["report_id"],"properties":{"report_id":{"type":"string","format":"uuid","description":"A saved report in the same workspace. Unique within the layout.","isRequired":true,"uniqueKey":"data.layout.cards.items.[INDEX].report_id","typeLabel":"string\u003cuuid>"},"size":{"type":"string","enum":["sm","md","lg"],"description":"Width on a wide screen: `sm` a third of the row, `md` half, `lg` the full row. Omit it for the default by kind: `sm` for a metric, `lg` for a funnel, `md` otherwise.","uniqueKey":"data.layout.cards.items.[INDEX].size","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.layout.cards.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.layout.cards","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"data.layout","typeLabel":"object"},"date_range":{"oneOf":[{"type":"object","description":"The one range every card runs over. A custom range spans at most 400 days.","required":["from","to"],"properties":{"from":{"type":"string","isRequired":true,"uniqueKey":"data.date_range.oneOf.0.from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"data.date_range.oneOf.0.to","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.date_range.oneOf.0","typeLabel":"object"},{"type":"object","description":"The one range every card runs over. A custom range spans at most 400 days.","required":["preset"],"properties":{"preset":{"type":"string","enum":["today","yesterday","last_7_days","last_14_days","last_30_days","last_90_days","this_week","this_month","last_month"],"isRequired":true,"uniqueKey":"data.date_range.oneOf.1.preset","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.date_range.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.date_range","typeLabel":"object"},"filters":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["dimension","op"],"properties":{"dimension":{"type":"string","description":"A dimension id, or `property:\u003ckey>` for a custom event property.","isRequired":true,"uniqueKey":"data.filters.items.[INDEX].dimension","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","contains","not_contains","gt","gte","lt","lte","is_set","not_set"],"isRequired":true,"uniqueKey":"data.filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"data.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"data.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.filters.items.[INDEX].value.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"data.filters.items.[INDEX].value.oneOf.2.items.[INDEX]","typeLabel":"string | number"},"description":"Omit for `is_set` and `not_set`. An array for `in` and `not_in`. Use exact values from `GET /dimension-values`.","uniqueKey":"data.filters.items.[INDEX].value.oneOf.2","typeLabel":"(string | number)[]"}],"uniqueKey":"data.filters.items.[INDEX].value","typeLabel":"string | number | (string | number)[]"}},"uniqueKey":"data.filters.items.[INDEX]","typeLabel":"object"},"description":"Applied to query reports whose metrics accept the dimension. Other cards run unfiltered.","isRequired":true,"uniqueKey":"data.filters","typeLabel":"object[]"},"created_via":{"type":"string","enum":["dashboard","chat","mcp","api"],"description":"`dashboard` means the Datalyr app.","isRequired":true,"uniqueKey":"data.created_via","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"workspace_id":{"type":"string","format":"uuid","uniqueKey":"data.workspace_id","typeLabel":"string\u003cuuid>"},"cards":{"type":"array","items":{"type":"object","additionalProperties":true,"description":"One layout card with the report it points to. Returned, never stored.","properties":{"report_id":{"type":"string","format":"uuid","uniqueKey":"data.cards.items.[INDEX].report_id","typeLabel":"string\u003cuuid>"},"size":{"type":"string","enum":["sm","md","lg"],"uniqueKey":"data.cards.items.[INDEX].size","typeLabel":"enum\u003cstring>"},"report":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Null when the report was deleted. The card stays in the layout.","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"data.cards.items.[INDEX].report.oneOf.0.id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"data.cards.items.[INDEX].report.oneOf.0.name","typeLabel":"string"},"kind":{"type":"string","enum":["metric","line","breakdown","donut","funnel"],"description":"`metric` is a number tile. `line` is a series; `area` and `bar` are its chart styles, set in `chart.type`. `breakdown` and `donut` split one metric by one dimension. `funnel` counts visitors through ordered steps.","uniqueKey":"data.cards.items.[INDEX].report.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"source":{"type":"string","enum":["catalog","query","funnel"],"uniqueKey":"data.cards.items.[INDEX].report.oneOf.0.source","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.cards.items.[INDEX].report.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Null when the report was deleted. The card stays in the layout.","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"kind":{"type":"string","enum":["metric","line","breakdown","donut","funnel"],"description":"`metric` is a number tile. `line` is a series; `area` and `bar` are its chart styles, set in `chart.type`. `breakdown` and `donut` split one metric by one dimension. `funnel` counts visitors through ordered steps."},"source":{"type":"string","enum":["catalog","query","funnel"]}},"uniqueKey":"data.cards.items.[INDEX].report.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.cards.items.[INDEX].report","typeLabel":"object | null"}},"uniqueKey":"data.cards.items.[INDEX]","typeLabel":"object"},"description":"One entry per layout card. Present on get, create and update; not on list.","uniqueKey":"data.cards","typeLabel":"object[]"},"created_by":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","enum":["user","api_key","oauth","legacy_key"],"uniqueKey":"data.created_by.type","typeLabel":"enum\u003cstring>"},"id":{"type":"string","uniqueKey":"data.created_by.id","typeLabel":"string"},"client_id":{"type":"string","description":"The OAuth client, for `type: oauth`.","uniqueKey":"data.created_by.client_id","typeLabel":"string"}},"uniqueKey":"data.created_by","typeLabel":"object"},"deleted_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"data.deleted_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"data.deleted_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.deleted_at","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"dry_run":true,"applied":true,"diff":{"action":"\u003cstring>","resource":{"type":"conversion_rule","id":"\u003cstring>","label":"\u003cstring>"},"prior_state":{},"new_state":{},"changes":[{"field":"\u003cstring>","from":"\u003cunknown>","to":"\u003cunknown>"}],"effects":[{"type":"postback_target","summary":"\u003cstring>","platform":"\u003cstring>","ad_account_id":"\u003cstring>","asset_id":"\u003cstring>","asset_field":"\u003cstring>","endpoint_url_masked":"\u003cstring>","trigger_event":"\u003cstring>","trigger_event_source":"\u003cstring>","platform_event":"\u003cstring>","active":true,"operation":"put","key":"\u003cstring>","path":"\u003cstring>","requires_approval":true,"approver_roles":["\u003cstring>"],"review_surface":"\u003cstring>","supersedes":["3c90c3cc-0d44-4b50-8888-8dd25736052a"]}]},"audit_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","layout":{"v":1,"cards":[{"report_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","size":"sm"}]},"date_range":{"from":"\u003cstring>","to":"\u003cstring>"},"filters":[{"dimension":"\u003cstring>","op":"eq","value":"\u003cstring>"}],"created_via":"dashboard","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","workspace_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","cards":[{"report_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","size":"sm","report":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","kind":"metric","source":"catalog"}}],"created_by":{"type":"user","id":"\u003cstring>","client_id":"\u003cstring>"},"deleted_at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"981fcb5a-97ea-4e71-b85f-b294972022cc":{"description":"Error response.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"b21b651d-3dc4-4e27-8fd7-7d7e383f53a4":{"description":"The key authenticated but does not carry the scope this route needs. This is fixable — ask for a key with that scope — and is distinct from a 401, which means the key is not valid at all.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["insufficient_scope"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"required_scope":{"oneOf":[{"type":"string","description":"A single scope, or the set of scopes any one of which would have been accepted (undo, where the exact scope depends on what is being undone).","uniqueKey":"required_scope.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"required_scope.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"A single scope, or the set of scopes any one of which would have been accepted (undo, where the exact scope depends on what is being undone).","uniqueKey":"required_scope.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"required_scope","typeLabel":"string | string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"insufficient_scope","required_scope":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"8870f7cf-5232-4eb5-97b5-2a2f83f35aaf":{"description":"Error response.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"12c35103-93cf-4035-b78f-bab4c6e86d24":{"description":"The dashboard, analysis or share link cannot be written as sent. Branch on `code`. `hint` says how to fix it.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["unknown_report","invalid_filters","invalid_embed","stale_dashboard","stale_analysis","dashboard_limit","analysis_limit","share_limit"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","uniqueKey":"hint","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"unknown_report","hint":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"edbdeb93-8b03-46d0-a036-ba3ce8eba352":{"description":"The dashboard, analysis or share link cannot be written as sent. Branch on `code`. `hint` says how to fix it.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","enum":["unknown_report","invalid_filters","invalid_embed","stale_dashboard","stale_analysis","dashboard_limit","analysis_limit","share_limit"],"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"hint":{"type":"string","uniqueKey":"hint","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"unknown_report","hint":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"eb3d9765-bf0f-416e-92dc-6e7f2eb8b022":{"description":"Error response.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6042b473-0802-451b-85ea-c4070c75d098":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Datalyr Agent key (dk_agent_…)","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"78ceae59-a477-4949-898e-d94f40b1c3ae":{"url":"https://api.datalyr.com/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"Datalyr Agent key (dk_agent_…)","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/read-api.yaml"},"subdomain":"datalyr","siteName":"Datalyr Docs","title":"Update a dashboard - Datalyr Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T15:48:27.057Z","originalFileLocation":"api-reference/dashboards/update-a-dashboard.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Rename a dashboard, or replace its layout, range or filters. Needs datalyr:write:reports. Send at least one field. Only the fields you send change. layout is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it. Send expected_updated_at from your last read to refuse the write when someone changed the dashboard in between: the request then returns 409 with code: stale_dashboard.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Datalyr Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update a dashboard - Datalyr Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Rename a dashboard, or replace its layout, range or filters. Needs datalyr:write:reports. Send at least one field. Only the fields you send change. layout is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it. Send expected_updated_at from your last read to refuse the write when someone changed the dashboard in between: the request then returns 409 with code: stale_dashboard.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Datalyr Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://datalyr.mintlify.site/_mintlify/api/og/v2?division=Dashboards%2C+analyses+and+share+links\u0026amp;title=Update+a+dashboard\u0026amp;description=Rename+a+dashboard%2C+or+replace+its+layout%2C+range+or+filters.+Needs+%60datalyr%3Awrite%3Areports%60.+Send+at+least+one+field.+Only+the+fields+you+send+change.%0A%0A%60layout%60+\u0026amp;theme=cfd8a5cf5a95aa7efc3c16b4\u0026amp;signature=00e8aaee515c089ac648fa18fe54ca3e9f2965a6d9168695353d95bf572e77f1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update a dashboard - Datalyr Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Rename a dashboard, or replace its layout, range or filters. Needs datalyr:write:reports. Send at least one field. Only the fields you send change. layout is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it. Send expected_updated_at from your last read to refuse the write when someone changed the dashboard in between: the request then returns 409 with code: stale_dashboard.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datalyr.mintlify.site/_mintlify/api/og/v2?division=Dashboards%2C+analyses+and+share+links\u0026amp;title=Update+a+dashboard\u0026amp;description=Rename+a+dashboard%2C+or+replace+its+layout%2C+range+or+filters.+Needs+%60datalyr%3Awrite%3Areports%60.+Send+at+least+one+field.+Only+the+fields+you+send+change.%0A%0A%60layout%60+\u0026amp;theme=cfd8a5cf5a95aa7efc3c16b4\u0026amp;signature=00e8aaee515c089ac648fa18fe54ca3e9f2965a6d9168695353d95bf572e77f1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/datalyr/OtXrSaasPyqjg3q6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Datalyr Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FC6600\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/dashboards/update-a-dashboard.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.datalyr.com/#organization\",\"name\":\"Datalyr Docs\",\"url\":\"https://docs.datalyr.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/datalyr/ROJj0wlntTvU8OM_/light.svg?fit=max\u0026auto=format\u0026n=ROJj0wlntTvU8OM_\u0026q=85\u0026s=29f98b487b8f65c3bd267065db18b4b9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.datalyr.com#website\",\"name\":\"Datalyr Docs\",\"url\":\"https://docs.datalyr.com\",\"publisher\":{\"@id\":\"https://docs.datalyr.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard#webpage\",\"url\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard\",\"name\":\"Update a dashboard\",\"description\":\"Rename a dashboard, or replace its layout, range or filters. Needs datalyr:write:reports. Send at least one field. Only the fields you send change. layout is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it. Send expected_updated_at from your last read to refuse the write when someone changed the dashboard in between: the request then returns 409 with code: stale_dashboard.\",\"dateModified\":\"2026-10-15T15:48:27.057Z\",\"isPartOf\":{\"@id\":\"https://docs.datalyr.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dashboards, analyses and share links\",\"item\":\"https://docs.datalyr.com/api-reference/dashboards/list-dashboards\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update a dashboard\",\"item\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard#apireference\",\"headline\":\"Update a dashboard\",\"name\":\"Update a dashboard\",\"description\":\"Rename a dashboard, or replace its layout, range or filters. Needs datalyr:write:reports. Send at least one field. Only the fields you send change. layout is a full replacement: send every card you want to keep, in order. That is how cards are added, removed, resized and reordered. A card already on the dashboard whose report was deleted since is kept, so a rename never fails on it. Send expected_updated_at from your last read to refuse the write when someone changed the dashboard in between: the request then returns 409 with code: stale_dashboard.\",\"url\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard\",\"mainEntityOfPage\":{\"@id\":\"https://docs.datalyr.com/api-reference/dashboards/update-a-dashboard#webpage\"},\"dateModified\":\"2026-10-15T15:48:27.057Z\",\"publisher\":{\"@id\":\"https://docs.datalyr.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.datalyr.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Datalyr Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Datalyr Docs","nav":{"global":null,"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":""}]},{"tab":"Use cases","pages":[{"title":"Use cases","href":"/use-cases/shopify"}]},{"tab":"API \u0026 MCP","groups":[{"group":"Agents and MCP","pages":[{"title":"Agent access","href":"/api-reference/agents"},{"title":"Agent-driven setup","href":"/developer/agent-driven-setup"},{"title":"Connect Claude or Codex","href":"/datalyr-mcp"}]},{"group":"Agent ads","pages":[{"title":"Agent ads","href":"/agent-ads/index"},{"title":"Create your first agent ad","href":"/agent-ads/get-started"},{"title":"How agents publish","href":"/agent-ads/how-publishing-works"},{"title":"The review page","href":"/agent-ads/review-page"},{"title":"Ad playbooks","href":"/agent-ads/playbook"},{"title":"Access levels and who uploads","href":"/agent-ads/access-and-approvals"},{"title":"Turn ads on within spend limits","href":"/agent-ads/live-ads-and-spend-limits"},{"title":"Change ads after launch","href":"/agent-ads/change-ads"},{"title":"Stop agent ads and alerts","href":"/agent-ads/stop-and-alerts"},{"title":"Add ad files","href":"/agent-ads/files"},{"title":"Meta","href":"/agent-ads/meta"},{"title":"TikTok","href":"/agent-ads/tiktok"},{"title":"Google Ads","href":"/agent-ads/google"},{"title":"Agent ad tools","href":"/agent-ads/tools"},{"title":"Troubleshoot agent ads","href":"/agent-ads/troubleshooting"}]},{"group":"API Reference","pages":[{"title":"API reference","href":"/api-reference/index"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"TypeScript client","href":"/api-reference/typescript-client"},{"title":"Errors and limits","href":"/api-reference/errors-and-limits"},{"title":"Ingest API","href":"/api-reference/ingest"}]},{"group":"Analytics","pages":[{"title":"Get overview","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /overview","href":"/api-reference/analytics/get-overview"},{"title":"Get traffic","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /traffic","href":"/api-reference/analytics/get-traffic"},{"title":"Get devices","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /devices","href":"/api-reference/analytics/get-devices"},{"title":"Get locations","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /locations","href":"/api-reference/analytics/get-locations"},{"title":"Get realtime activity","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /realtime","href":"/api-reference/analytics/get-realtime-activity"}]},{"group":"Events and users","pages":[{"title":"List events","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /events","href":"/api-reference/events-and-users/list-events"},{"title":"List event properties","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /events/properties","href":"/api-reference/events-and-users/list-event-properties"},{"title":"List event names","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /event-names","href":"/api-reference/events-and-users/list-event-names"},{"title":"List users","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /users","href":"/api-reference/events-and-users/list-users"},{"title":"Get user","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /users/{userId}","href":"/api-reference/events-and-users/get-user"}]},{"group":"Attribution and revenue","pages":[{"title":"Get attribution","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /attribution","href":"/api-reference/attribution-and-revenue/get-attribution"},{"title":"Get ad performance","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /ads","href":"/api-reference/attribution-and-revenue/get-ad-performance"},{"title":"Get certified commerce metrics","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /commerce-metrics","href":"/api-reference/attribution-and-revenue/get-certified-commerce-metrics"},{"title":"Get revenue","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /revenue","href":"/api-reference/attribution-and-revenue/get-revenue"},{"title":"Get trackable link tags","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /tags","href":"/api-reference/attribution-and-revenue/get-trackable-link-tags"}]},{"group":"Cohorts and funnels","pages":[{"title":"Get retention cohorts","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /retention","href":"/api-reference/events-and-users/get-retention-cohorts"},{"title":"Get cohort LTV","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /ltv","href":"/api-reference/events-and-users/get-cohort-ltv"},{"title":"Get a conversion funnel","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /funnel","href":"/api-reference/events-and-users/get-a-conversion-funnel"}]},{"group":"Metrics","pages":[{"title":"Query metrics","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /metrics","href":"/api-reference/attribution-and-revenue/query-metrics"},{"title":"List queryable metrics","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /metrics/catalog","href":"/api-reference/attribution-and-revenue/list-queryable-metrics"}]},{"group":"Query","pages":[{"title":"Run a query plan","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /query","href":"/api-reference/query/run-a-query-plan"},{"title":"List query dimensions","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dimensions","href":"/api-reference/query/list-query-dimensions"},{"title":"List dimension values","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dimension-values","href":"/api-reference/query/list-dimension-values"},{"title":"Get workspace context","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /context","href":"/api-reference/query/get-workspace-context"},{"title":"Find ids by name","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /search","href":"/api-reference/query/find-ids-by-name"},{"title":"Get subscription state","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /subscriptions","href":"/api-reference/query/get-subscription-state"}]},{"group":"Workspace","pages":[{"title":"Get workspace","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /workspace","href":"/api-reference/workspace/get-workspace"},{"title":"Get usage","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /usage","href":"/api-reference/workspace/get-usage"},{"title":"Get onboarding status","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /onboarding","href":"/api-reference/signup-and-onboarding/get-onboarding-status"},{"title":"Start a signup","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /signup","href":"/api-reference/signup-and-onboarding/start-a-signup"},{"title":"Get signup status","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /signup/{signupId}","href":"/api-reference/signup-and-onboarding/get-signup-status"},{"title":"Search documentation","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /docs/search","href":"/api-reference/documentation/search-documentation"}]},{"group":"Keys and approvals","pages":[{"title":"Request a key by approval link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /keys/requests","href":"/api-reference/keys-and-approvals/request-a-key-by-approval-link"},{"title":"Poll a key request","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /keys/requests/{requestId}","href":"/api-reference/keys-and-approvals/poll-a-key-request"},{"title":"Exchange an OAuth token for a key","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /keys","href":"/api-reference/keys-and-approvals/exchange-an-oauth-token-for-a-key"}]},{"group":"Conversion rules","pages":[{"title":"List conversion rules","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /rules","href":"/api-reference/write-api/list-conversion-rules"},{"title":"Create a conversion rule","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /rules","href":"/api-reference/write-api/create-a-conversion-rule"},{"title":"Update a conversion rule","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /rules/{ruleId}","href":"/api-reference/write-api/update-a-conversion-rule"},{"title":"Delete a conversion rule","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /rules/{ruleId}","href":"/api-reference/write-api/delete-a-conversion-rule"}]},{"group":"Trackable links","pages":[{"title":"List trackable links","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /links","href":"/api-reference/write-api/list-trackable-links"},{"title":"Create a trackable link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /links","href":"/api-reference/write-api/create-a-trackable-link"},{"title":"Update a trackable link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /links/{linkId}","href":"/api-reference/write-api/update-a-trackable-link"},{"title":"Delete a trackable link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /links/{linkId}","href":"/api-reference/write-api/delete-a-trackable-link"}]},{"group":"Saved reports","pages":[{"title":"List saved reports","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /reports","href":"/api-reference/saved-reports/list-saved-reports"},{"title":"Create a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /reports","href":"/api-reference/saved-reports/create-a-saved-report"},{"title":"Get a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /reports/{reportId}","href":"/api-reference/saved-reports/get-a-saved-report"},{"title":"Update a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /reports/{reportId}","href":"/api-reference/saved-reports/update-a-saved-report"},{"title":"Delete a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /reports/{reportId}","href":"/api-reference/saved-reports/delete-a-saved-report"},{"title":"Run a saved report","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /reports/{reportId}/run","href":"/api-reference/saved-reports/run-a-saved-report"},{"title":"Reorder saved reports","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /reports/reorder","href":"/api-reference/saved-reports/reorder-saved-reports"}]},{"group":"Dashboards, analyses and share links","pages":[{"title":"List dashboards","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dashboards","href":"/api-reference/dashboards/list-dashboards"},{"title":"Create a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /dashboards","href":"/api-reference/dashboards/create-a-dashboard"},{"title":"Get a dashboard","description":"One dashboard with its range, filters, layout and resolved `cards`. Needs `datalyr:read`. A card whose report was deleted reads `report: null`.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /dashboards/{dashboardId}","href":"/api-reference/dashboards/get-a-dashboard"},{"title":"Update a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /dashboards/{dashboardId}","href":"/api-reference/dashboards/update-a-dashboard"},{"title":"Delete a dashboard","description":"Delete a dashboard. Needs `datalyr:write:reports`. The reports on it are not touched.\n\nThe delete is soft. `data` carries the `id` and the `audit_id`; `POST /audit/{auditId}/undo` restores the dashboard under the same id. Share links to it stop working while it is deleted and work again after the undo.","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /dashboards/{dashboardId}","href":"/api-reference/dashboards/delete-a-dashboard"},{"title":"Run a dashboard","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /dashboards/{dashboardId}/run","href":"/api-reference/dashboards/run-a-dashboard"},{"title":"List analyses","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /analyses","href":"/api-reference/dashboards/list-analyses"},{"title":"Create an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /analyses","href":"/api-reference/dashboards/create-an-analysis"},{"title":"Get an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /analyses/{analysisId}","href":"/api-reference/dashboards/get-an-analysis"},{"title":"Update an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml patch /analyses/{analysisId}","href":"/api-reference/dashboards/update-an-analysis"},{"title":"Delete an analysis","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /analyses/{analysisId}","href":"/api-reference/dashboards/delete-an-analysis"},{"title":"List share links","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /share-links","href":"/api-reference/dashboards/list-share-links"},{"title":"Create a share link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /share-links","href":"/api-reference/dashboards/create-a-share-link"},{"title":"Revoke a share link","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml delete /share-links/{shareLinkId}","href":"/api-reference/dashboards/revoke-a-share-link"}]},{"group":"Session replay","pages":[{"title":"List recorded sessions","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /replay/sessions","href":"/api-reference/session-replay/list-recorded-sessions"},{"title":"Get session summaries","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /replay/summary","href":"/api-reference/session-replay/get-session-summaries"}]},{"group":"Exports","pages":[{"title":"List recent exports","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /exports","href":"/api-reference/exports/list-recent-exports"},{"title":"Start an export","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml post /exports","href":"/api-reference/exports/start-an-export"},{"title":"Get export status","deprecated":null,"version":null,"openapi":"/api-reference/read-api.yaml get /exports/{exportId}","href":"/api-reference/exports/get-export-status"}]}]},{"tab":"SDK Reference","pages":[{"title":"SDK Reference","href":"/sdk-reference"}]}]},"basePath":"","title":"Update a dashboard - Datalyr Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}