Upsolve API key, generated under Account → Developer settings in the Upsolve Hub. Keys are user-scoped: pass organizationId alongside the key to select which org to act on.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Upsolve AI","colors":{"primary":"#F13470","light":"#F13470","dark":"#E05883"},"favicon":"https://mintcdn.com/upsolve/yo8HqJNiSHXxC-XO/favicon.svg?fit=max\u0026auto=format\u0026n=yo8HqJNiSHXxC-XO\u0026q=85\u0026s=9b9e554a8bc33ff2f4191464242d130d","logo":{"light":"https://mintcdn.com/upsolve/2iK7L-lfLcwqCcz_/logo/light_logo.svg?fit=max\u0026auto=format\u0026n=2iK7L-lfLcwqCcz_\u0026q=85\u0026s=e2c715b3dad371be16e683c74655b2a8","dark":"https://mintcdn.com/upsolve/2iK7L-lfLcwqCcz_/logo/dark_logo.svg?fit=max\u0026auto=format\u0026n=2iK7L-lfLcwqCcz_\u0026q=85\u0026s=e5b53eb0a41de94b806015890a6b4bdc","href":"https://upsolve.ai"},"api":{"openapi":["api-reference/upsolve.documentation.yaml"],"mdx":{"server":"https://api.upsolve.ai","auth":{"method":"bearer","name":null}}},"navbar":{"links":[{"label":"Support","href":"mailto:support@upsolve.ai"}],"primary":{"type":"button","label":"Request Access","href":"https://upsolve.ai/"}},"seo":{"metatags":{"slack-app-id":"A0C9DAKJQ49"},"indexing":"navigable"},"footer":{"socials":{"website":"https://upsolve.ai/","linkedin":"https://www.linkedin.com/company/upsolveai","hacker-news":"https://www.ycombinator.com/companies/upsolve-ai"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Impact Studies","href":"https://upsolve.ai/impact-study","icon":"newspaper"},{"anchor":"Security Trust Center","href":"https://trust.upsolve.ai","icon":"shield-halved"},{"anchor":"Community","href":"https://upsolve-ai-community.slack.com/join/shared_invite/zt-2x9oospxx-vv2uDP_20IafkekwCOMi4A#/shared-invite/email","icon":"slack"},{"anchor":"Blog","href":"https://www.upsolve.com/blog","icon":"newspaper"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"upsolve","hasAudioNarration":false,"actualSubdomain":"upsolve","customDomains":["docs.upsolve.ai"],"gitSource":{"type":"github","owner":"upsolve-labs","repo":"upsolve-core","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae5961f3badfbce406bc106","collectionId":"b9bdc751-1d37-437d-874e-7df730951060","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae5961f3badfbce406bc106"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae5a12a3db8daa46796990a","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":144},{"language":"default","tag":"API Documentation","count":143},{"language":"default","tag":"Integrations","count":116},{"language":"default","tag":"Documentation","count":48},{"language":"default","tag":"SQL Reference","count":48},{"language":"default","tag":"Canvases","count":29},{"language":"default","tag":"Workspace draft","count":29},{"language":"default","tag":"Functions","count":23},{"language":"default","tag":"Analytics Layer","count":22},{"language":"default","tag":"Connections \u0026 environments","count":19}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/endpoint/save-canvas-version","slug":"/api-reference/endpoint/save-canvas-version","pageMetadata":{"title":"Save Canvas Version","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/versions","description":"Save a canvas version","href":"/api-reference/endpoint/save-canvas-version"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Save a canvas version\"\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":"Save Canvas Version","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/versions","description":"Save a canvas version","href":"/api-reference/endpoint/save-canvas-version"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"PostV2ApiProjectsProjectIdWorkspacesWorkspaceIdCanvasesCanvasIdVersions","summary":"Save a canvas version","description":"Save a canvas version","parameters":["25143f9a-68f1-4ba2-832b-8b2ef36296bf","41699b86-6726-48b9-8552-6e06ee529272","56428dac-92d9-4dd9-8647-157ec9ae350c"],"requestBody":"840bf8bb-cc5c-4081-b3f4-d5bda79952f7","security":["17c1ee9c-b977-4169-b119-56b0b552d5a3"],"responses":{"201":"f2ad6cd9-d385-43af-b2e6-3807dfdd8d06","400":"94891da1-c138-483f-afa5-3980d390a20e"},"method":"post","type":"path","servers":["19da32c0-ae77-4cb9-938a-e7fa5193f9d7"],"path":"/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/versions","baseUrlOptions":["https://api.upsolve.ai"],"title":"Save a canvas version","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"25143f9a-68f1-4ba2-832b-8b2ef36296bf":{"name":"projectId","in":"path","required":true,"description":"The project in the URL. The caller's project user is read from it.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","description":"The project in the URL. The caller's project user is read from it.","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}},"41699b86-6726-48b9-8552-6e06ee529272":{"name":"workspaceId","in":"path","required":true,"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Parameter","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Parameter","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"56428dac-92d9-4dd9-8647-157ec9ae350c":{"name":"canvasId","in":"path","required":true,"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Parameter","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Parameter","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Request body","content":{"application/json":{"schema":{"type":"object","properties":{"apiKey":{"description":"Upsolve API key, generated under Account → Developer settings in the Upsolve Hub. Keys are user-scoped: pass organizationId alongside the key to select which org to act on.","type":"string","minLength":1,"uniqueKey":"apiKey","typeLabel":"string"},"organizationId":{"type":"string","description":"The ID of the organization. Required when using Supabase JWT authentication.","uniqueKey":"organizationId","typeLabel":"string"},"connectionId":{"type":"string","description":"The ID of the connection a guest has access to","uniqueKey":"connectionId","typeLabel":"string"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].id","typeLabel":"string"},"favorite_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"\\items.items.[INDEX].favorite_id","typeLabel":"string\u003cuuid>"},"x":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].x","typeLabel":"integer"},"y":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].y","typeLabel":"integer"},"w":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].w","typeLabel":"integer"},"h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].h","typeLabel":"integer"}},"required":["id","favorite_id","x","y","w","h"],"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"uniqueKey":"\\items","typeLabel":"object[]"},"display_mode":{"type":"string","enum":["live","snapshot"],"uniqueKey":"display_mode","typeLabel":"enum\u003cstring>"},"created_by":{"oneOf":[{"type":"string","uniqueKey":"created_by.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"created_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"created_by","typeLabel":"string | null"}},"required":[],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"apiKey":"\u003cstring>","organizationId":"\u003cstring>","connectionId":"\u003cstring>","items":[{"id":"\u003cstring>","favorite_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","x":0,"y":0,"w":0,"h":0}],"created_by":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"f2ad6cd9-d385-43af-b2e6-3807dfdd8d06":{"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Positive response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"success","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"data":{"type":"object","properties":{"version":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.id","typeLabel":"string\u003cuuid>"},"canvas_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.canvas_id","typeLabel":"string\u003cuuid>"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"data.version.version","typeLabel":"integer"},"display_mode":{"type":"string","enum":["live","snapshot"],"isRequired":true,"uniqueKey":"data.version.display_mode","typeLabel":"enum\u003cstring>"},"created_by":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.created_by.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.created_by.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.created_by","typeLabel":"string | null"},"created_at":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"data.version.created_at","typeLabel":"any"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].id","typeLabel":"string"},"favorite_id":{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite_id","typeLabel":"string"},"x":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].x","typeLabel":"integer"},"y":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].y","typeLabel":"integer"},"w":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].w","typeLabel":"integer"},"h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].h","typeLabel":"integer"},"favorite":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.id","typeLabel":"string\u003cuuid>"},"organization_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.organization_id","typeLabel":"string\u003cuuid>"},"created_by_project_user_id":{"oneOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.created_by_project_user_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.created_by_project_user_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.created_by_project_user_id","typeLabel":"string\u003cuuid> | null"},"type":{"type":"string","enum":["sql","chart","tool"],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.name","typeLabel":"string"},"thread_id":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.thread_id.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.thread_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.thread_id","typeLabel":"string | null"},"chart_config":{"oneOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart_config.oneOf.0.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart_config.oneOf.0","typeLabel":"object"},{"type":"null","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart_config.oneOf.1.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart_config.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart_config","typeLabel":"object | null"},"chart":{"type":"object","properties":{"v":{"type":"number","const":3,"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart.v","typeLabel":"number"}},"required":["v"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart.additionalProperties","typeLabel":"any"},"description":"The chart as v3 (query, shape, render): its stored v3 chart, or its chartsV2 config converted","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.chart","typeLabel":"object"},"connection_id":{"oneOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.connection_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.connection_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.connection_id","typeLabel":"string\u003cuuid> | null"},"thumbnail_url":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.thumbnail_url.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.thumbnail_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.thumbnail_url","typeLabel":"string | null"},"sql":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.sql.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.sql.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.sql","typeLabel":"string | null"},"snapshot_data":{"oneOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.snapshot_data.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.snapshot_data.oneOf.0.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.snapshot_data.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}]}},"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.snapshot_data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.snapshot_data","typeLabel":"object[] | null"},"is_archived":{"type":"boolean","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.is_archived","typeLabel":"boolean"},"created_at":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.created_at","typeLabel":"any"},"updated_at":{"oneOf":[{"isRequired":true}],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.updated_at","typeLabel":"any"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.workspace_id","typeLabel":"string\u003cuuid>"},"copied_from_favorite_id":{"oneOf":[{"description":"For a canvas tile's own chart: the saved favorite it was copied from, if any","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.copied_from_favorite_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"description":"For a canvas tile's own chart: the saved favorite it was copied from, if any","type":"null","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.copied_from_favorite_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.copied_from_favorite_id","typeLabel":"string\u003cuuid> | null"},"tool_call":{"oneOf":[{"description":"For a tool tile (type tool): the API connector operation it calls (connectorKind, connectorId, toolName, pinnedArgs)","type":"object","properties":{"connectorKind":{"type":"string","enum":["mcp","api"],"isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call.oneOf.0.connectorKind","typeLabel":"enum\u003cstring>"},"toolName":{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call.oneOf.0.toolName","typeLabel":"string"}},"required":["connectorKind","toolName"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call.oneOf.0","typeLabel":"object"},{"description":"For a tool tile (type tool): the API connector operation it calls (connectorKind, connectorId, toolName, pinnedArgs)","type":"null","properties":{"connectorKind":{"type":"string","enum":["mcp","api"]},"toolName":{"type":"string"}},"required":["connectorKind","toolName"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.tool_call","typeLabel":"object | null"},"row_transform":{"oneOf":[{"description":"For a tool tile: the BODY of the JavaScript function `transform(payload)` that turns the API's response into the tile's rows (a complete `function transform(payload) { ... }` is accepted too)","type":"string","uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_transform.oneOf.0","typeLabel":"string"},{"description":"For a tool tile: the BODY of the JavaScript function `transform(payload)` that turns the API's response into the tile's rows (a complete `function transform(payload) { ... }` is accepted too)","type":"null","uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_transform.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_transform","typeLabel":"string | null"},"row_columns":{"oneOf":[{"description":"For a tool tile: the columns its transform returns","type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns.oneOf.0.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns.oneOf.0.items.[INDEX].type","typeLabel":"string"}},"required":["name","type"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns.oneOf.0","typeLabel":"object[]"},{"description":"For a tool tile: the columns its transform returns","type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":{"oneOf":[{}]}},"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0.row_columns","typeLabel":"object[] | null"}},"required":["id","organization_id","created_by_project_user_id","type","name","thread_id","chart_config","chart","connection_id","thumbnail_url","sql","snapshot_data","is_archived","created_at","updated_at","workspace_id"],"additionalProperties":false,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"organization_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"created_by_project_user_id":{"oneOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}]},"type":{"type":"string","enum":["sql","chart","tool"]},"name":{"type":"string"},"thread_id":{"oneOf":[{"type":"string"},{"type":"null"}]},"chart_config":{"oneOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}]}},{"type":"null","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}]}}]},"chart":{"type":"object","properties":{"v":{"type":"number","const":3}},"required":["v"],"additionalProperties":{"oneOf":[{}]},"description":"The chart as v3 (query, shape, render): its stored v3 chart, or its chartsV2 config converted"},"connection_id":{"oneOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}]},"thumbnail_url":{"oneOf":[{"type":"string"},{"type":"null"}]},"sql":{"oneOf":[{"type":"string"},{"type":"null"}]},"snapshot_data":{"oneOf":[{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}]}}},{"type":"null","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}]}}}]},"is_archived":{"type":"boolean"},"copied_from_favorite_id":{"oneOf":[{"description":"For a canvas tile's own chart: the saved favorite it was copied from, if any","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"description":"For a canvas tile's own chart: the saved favorite it was copied from, if any","type":"null","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}]},"tool_call":{"oneOf":[{"description":"For a tool tile (type tool): the API connector operation it calls (connectorKind, connectorId, toolName, pinnedArgs)","type":"object","properties":{"connectorKind":{"type":"string","enum":["mcp","api"]},"toolName":{"type":"string"}},"required":["connectorKind","toolName"],"additionalProperties":{"oneOf":[{}]}},{"description":"For a tool tile (type tool): the API connector operation it calls (connectorKind, connectorId, toolName, pinnedArgs)","type":"null","properties":{"connectorKind":{"type":"string","enum":["mcp","api"]},"toolName":{"type":"string"}},"required":["connectorKind","toolName"],"additionalProperties":{"oneOf":[{}]}}]},"row_transform":{"oneOf":[{"description":"For a tool tile: the BODY of the JavaScript function `transform(payload)` that turns the API's response into the tile's rows (a complete `function transform(payload) { ... }` is accepted too)","type":"string"},{"description":"For a tool tile: the BODY of the JavaScript function `transform(payload)` that turns the API's response into the tile's rows (a complete `function transform(payload) { ... }` is accepted too)","type":"null"}]},"row_columns":{"oneOf":[{"description":"For a tool tile: the columns its transform returns","type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":{"oneOf":[{}]}}},{"description":"For a tool tile: the columns its transform returns","type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":{"oneOf":[{}]}}}]},"created_at":{"oneOf":[{}]},"updated_at":{"oneOf":[{}]},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}},"required":["id","organization_id","created_by_project_user_id","type","name","thread_id","chart_config","chart","connection_id","thumbnail_url","sql","snapshot_data","is_archived","created_at","updated_at","workspace_id"],"additionalProperties":false,"uniqueKey":"data.version.\\items.items.[INDEX].favorite.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.\\items.items.[INDEX].favorite","typeLabel":"object | null"}},"required":["id","favorite_id","x","y","w","h"],"additionalProperties":false,"uniqueKey":"data.version.\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.version.\\items","typeLabel":"object[]"},"design_file":{"oneOf":[{"description":"The canvas's design file as it was when this version was saved, or null.","type":"string","uniqueKey":"data.version.design_file.oneOf.0","typeLabel":"string"},{"description":"The canvas's design file as it was when this version was saved, or null.","type":"null","uniqueKey":"data.version.design_file.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.design_file","typeLabel":"string | null"},"filters":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].id","typeLabel":"string"},"filter_config":{"oneOf":[{"type":"object","required":["filterTargets","filterType","filterSubType","filterRestrictions","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Input","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterType","typeLabel":"string"},"filterSubType":{"type":"string","enum":["Input Equals","Input Starts with","Input Ends with","Input Contains"],"description":"Subtype of the input filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterSubType","typeLabel":"enum\u003cstring>"},"filterRestrictions":{"type":"null","description":"No specific restrictions for the input filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterRestrictions","typeLabel":"null"},"displayName":{"type":"string","description":"User-driven display name for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.displayName","typeLabel":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.i","typeLabel":"string"},"x":{"type":"number","description":"X position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.x","typeLabel":"number"},"y":{"type":"number","description":"Y position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.y","typeLabel":"number"},"w":{"type":"number","description":"Width in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.w","typeLabel":"number"},"h":{"type":"number","description":"Height in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.h","typeLabel":"number"},"minW":{"description":"Minimum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.minW","typeLabel":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.maxW","typeLabel":"number"},"minH":{"description":"Minimum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.minH","typeLabel":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.maxH","typeLabel":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.moved","typeLabel":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.static","typeLabel":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.isDraggable","typeLabel":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.isResizable","typeLabel":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.resizeHandles.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.resizeHandles","typeLabel":"enum\u003cstring>[]"},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout.isBounded","typeLabel":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.layout","typeLabel":"object"},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'Before logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.columns","typeLabel":"object[]"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.chartId","typeLabel":"string"},"targetTable":{"description":"Name of the target table.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.targetTable","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'After logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.columns","typeLabel":"object[]"},"targetTable":{"type":"null","description":"No target table needed for filters after logic.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.targetTable","typeLabel":"null"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.chartId","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets.items.[INDEX]","typeLabel":"object"},"description":"Array of targeted filter configurations.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filterTargets","typeLabel":"object[]"},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.controlKey","typeLabel":"string"},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.globalFilterColumns.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.globalFilterColumns","typeLabel":"string[]"},"selectedValue":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.4","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.5.items.[INDEX]","typeLabel":"string | number | boolean | null"},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue.oneOf.5","typeLabel":"(string | number | boolean | null)[]"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.selectedValue","typeLabel":"string | number | boolean | null | (string | number | boolean | null)[]"},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldKey","typeLabel":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef.kind","typeLabel":"enum\u003cstring>"},"table":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef.table.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef.table.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef.table","typeLabel":"string | null"},"column":{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef.column","typeLabel":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef.columnType","typeLabel":"enum\u003cstring>"}},"required":["kind","table","column"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldRef","typeLabel":"object"},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.itemIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.itemIds","typeLabel":"string[]"},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldKeys.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.fieldKeys","typeLabel":"string[]"},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.tileColumns.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.tileColumns.additionalProperties","typeLabel":"string[]"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.tileColumns","typeLabel":"object"},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.customFilterId","typeLabel":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0.filtersEveryTable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.0","typeLabel":"object"},{"type":"object","required":["filterTargets","filterType","filterSubType","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Select","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterType","typeLabel":"string"},"filterSubType":{"type":"string","enum":["Select Single","Select Multi"],"description":"Subtype of the select filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterSubType","typeLabel":"enum\u003cstring>"},"displayName":{"type":"string","description":"User-driven display name for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.displayName","typeLabel":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.i","typeLabel":"string"},"x":{"type":"number","description":"X position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.x","typeLabel":"number"},"y":{"type":"number","description":"Y position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.y","typeLabel":"number"},"w":{"type":"number","description":"Width in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.w","typeLabel":"number"},"h":{"type":"number","description":"Height in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.h","typeLabel":"number"},"minW":{"description":"Minimum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.minW","typeLabel":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.maxW","typeLabel":"number"},"minH":{"description":"Minimum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.minH","typeLabel":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.maxH","typeLabel":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.moved","typeLabel":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.static","typeLabel":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.isDraggable","typeLabel":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.isResizable","typeLabel":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.resizeHandles.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.resizeHandles","typeLabel":"enum\u003cstring>[]"},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout.isBounded","typeLabel":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.layout","typeLabel":"object"},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'Before logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.columns","typeLabel":"object[]"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.chartId","typeLabel":"string"},"targetTable":{"description":"Name of the target table.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.targetTable","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'After logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.columns","typeLabel":"object[]"},"targetTable":{"type":"null","description":"No target table needed for filters after logic.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.targetTable","typeLabel":"null"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.chartId","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets.items.[INDEX]","typeLabel":"object"},"description":"Array of targeted filter configurations.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterTargets","typeLabel":"object[]"},"filterRestrictions":{"oneOf":[{"description":"Allowed values for the select filter.","type":"object","properties":{"values":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictions.oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"An array of allowed string values.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictions.oneOf.0.values","typeLabel":"string[]"}},"required":["values"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictions.oneOf.0","typeLabel":"object"},{"description":"Allowed values for the select filter.","type":"null","properties":{"values":{"type":"array","items":{"type":"string"},"description":"An array of allowed string values."}},"required":["values"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictions","typeLabel":"object | null"},"filterRestrictionMethod":{"oneOf":[{"type":"object","description":"Method to compute the restrictions for this Select filter. Defaults to {filterType: 'Scan'} to scan the column it is pointing at","required":["filterType","options"],"properties":{"filterType":{"type":"string","const":"Manual","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.0.filterType","typeLabel":"string"},"options":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.0.options.items.[INDEX]","typeLabel":"string"},"description":"User provided options for this select filter","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.0.options","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.0","typeLabel":"object"},{"type":"object","description":"Method to compute the restrictions for this Select filter. Defaults to {filterType: 'Scan'} to scan the column it is pointing at","required":["filterType","query"],"properties":{"filterType":{"type":"string","const":"Query","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.1.filterType","typeLabel":"string"},"query":{"type":"string","description":"Query to run to populate this select filter","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.1.query","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.1","typeLabel":"object"},{"type":"object","description":"Method to compute the restrictions for this Select filter. Defaults to {filterType: 'Scan'} to scan the column it is pointing at","required":["filterType"],"properties":{"filterType":{"type":"string","const":"Scan","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.2.filterType","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod.oneOf.2","typeLabel":"object"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filterRestrictionMethod","typeLabel":"object"},"defaultValue":{"description":"The default value for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.defaultValue","typeLabel":"string"},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.controlKey","typeLabel":"string"},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.globalFilterColumns.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.globalFilterColumns","typeLabel":"string[]"},"selectedValue":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.4","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.5.items.[INDEX]","typeLabel":"string | number | boolean | null"},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue.oneOf.5","typeLabel":"(string | number | boolean | null)[]"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.selectedValue","typeLabel":"string | number | boolean | null | (string | number | boolean | null)[]"},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldKey","typeLabel":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef.kind","typeLabel":"enum\u003cstring>"},"table":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef.table.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef.table.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef.table","typeLabel":"string | null"},"column":{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef.column","typeLabel":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef.columnType","typeLabel":"enum\u003cstring>"}},"required":["kind","table","column"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldRef","typeLabel":"object"},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.itemIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.itemIds","typeLabel":"string[]"},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldKeys.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.fieldKeys","typeLabel":"string[]"},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.tileColumns.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.tileColumns.additionalProperties","typeLabel":"string[]"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.tileColumns","typeLabel":"object"},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.customFilterId","typeLabel":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1.filtersEveryTable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.1","typeLabel":"object"},{"type":"object","required":["filterTargets","filterType","filterSubType","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Number","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterType","typeLabel":"string"},"filterSubType":{"type":"string","enum":["Number Greater than","Number Greater than or equal to","Number Less than","Number Less than or equal to","Number Equal to"],"description":"Subtype of the number filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterSubType","typeLabel":"enum\u003cstring>"},"displayName":{"type":"string","description":"User-driven display name for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.displayName","typeLabel":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.i","typeLabel":"string"},"x":{"type":"number","description":"X position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.x","typeLabel":"number"},"y":{"type":"number","description":"Y position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.y","typeLabel":"number"},"w":{"type":"number","description":"Width in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.w","typeLabel":"number"},"h":{"type":"number","description":"Height in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.h","typeLabel":"number"},"minW":{"description":"Minimum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.minW","typeLabel":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.maxW","typeLabel":"number"},"minH":{"description":"Minimum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.minH","typeLabel":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.maxH","typeLabel":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.moved","typeLabel":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.static","typeLabel":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.isDraggable","typeLabel":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.isResizable","typeLabel":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.resizeHandles.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.resizeHandles","typeLabel":"enum\u003cstring>[]"},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout.isBounded","typeLabel":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.layout","typeLabel":"object"},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'Before logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.columns","typeLabel":"object[]"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.chartId","typeLabel":"string"},"targetTable":{"description":"Name of the target table.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.targetTable","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'After logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.columns","typeLabel":"object[]"},"targetTable":{"type":"null","description":"No target table needed for filters after logic.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.targetTable","typeLabel":"null"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.chartId","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets.items.[INDEX]","typeLabel":"object"},"description":"Array of targeted filter configurations.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterTargets","typeLabel":"object[]"},"filterRestrictions":{"oneOf":[{"description":"Allowed numeric range for the number filter.","type":"object","properties":{"min":{"type":"number","description":"The minimum allowed number.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterRestrictions.oneOf.0.min","typeLabel":"number"},"max":{"type":"number","description":"The maximum allowed number.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterRestrictions.oneOf.0.max","typeLabel":"number"}},"required":["min","max"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterRestrictions.oneOf.0","typeLabel":"object"},{"description":"Allowed numeric range for the number filter.","type":"null","properties":{"min":{"type":"number","description":"The minimum allowed number."},"max":{"type":"number","description":"The maximum allowed number."}},"required":["min","max"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterRestrictions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filterRestrictions","typeLabel":"object | null"},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.controlKey","typeLabel":"string"},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.globalFilterColumns.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.globalFilterColumns","typeLabel":"string[]"},"selectedValue":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.4","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.5.items.[INDEX]","typeLabel":"string | number | boolean | null"},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue.oneOf.5","typeLabel":"(string | number | boolean | null)[]"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.selectedValue","typeLabel":"string | number | boolean | null | (string | number | boolean | null)[]"},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldKey","typeLabel":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef.kind","typeLabel":"enum\u003cstring>"},"table":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef.table.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef.table.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef.table","typeLabel":"string | null"},"column":{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef.column","typeLabel":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef.columnType","typeLabel":"enum\u003cstring>"}},"required":["kind","table","column"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldRef","typeLabel":"object"},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.itemIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.itemIds","typeLabel":"string[]"},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldKeys.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.fieldKeys","typeLabel":"string[]"},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.tileColumns.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.tileColumns.additionalProperties","typeLabel":"string[]"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.tileColumns","typeLabel":"object"},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.customFilterId","typeLabel":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2.filtersEveryTable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.2","typeLabel":"object"},{"type":"object","required":["filterTargets","filterType","filterSubType","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Date","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterType","typeLabel":"string"},"filterSubType":{"type":"string","enum":["Date Single","Date Range","Date Range (No Timestamp)","Date After","Date Before"],"description":"Subtype of the date filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterSubType","typeLabel":"enum\u003cstring>"},"displayName":{"type":"string","description":"User-driven display name for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.displayName","typeLabel":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.i","typeLabel":"string"},"x":{"type":"number","description":"X position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.x","typeLabel":"number"},"y":{"type":"number","description":"Y position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.y","typeLabel":"number"},"w":{"type":"number","description":"Width in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.w","typeLabel":"number"},"h":{"type":"number","description":"Height in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.h","typeLabel":"number"},"minW":{"description":"Minimum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.minW","typeLabel":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.maxW","typeLabel":"number"},"minH":{"description":"Minimum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.minH","typeLabel":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.maxH","typeLabel":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.moved","typeLabel":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.static","typeLabel":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.isDraggable","typeLabel":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.isResizable","typeLabel":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.resizeHandles.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.resizeHandles","typeLabel":"enum\u003cstring>[]"},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout.isBounded","typeLabel":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.layout","typeLabel":"object"},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'Before logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.columns","typeLabel":"object[]"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.chartId","typeLabel":"string"},"targetTable":{"description":"Name of the target table.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.targetTable","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'After logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.columns","typeLabel":"object[]"},"targetTable":{"type":"null","description":"No target table needed for filters after logic.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.targetTable","typeLabel":"null"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.chartId","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets.items.[INDEX]","typeLabel":"object"},"description":"Array of targeted filter configurations.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterTargets","typeLabel":"object[]"},"filterRestrictions":{"oneOf":[{"description":"Allowed date range for the date filter.","type":"object","properties":{"min":{"type":"string","description":"The minimum allowed date.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterRestrictions.oneOf.0.min","typeLabel":"string"},"max":{"type":"string","description":"The maximum allowed date.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterRestrictions.oneOf.0.max","typeLabel":"string"}},"required":["min","max"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterRestrictions.oneOf.0","typeLabel":"object"},{"description":"Allowed date range for the date filter.","type":"null","properties":{"min":{"type":"string","description":"The minimum allowed date."},"max":{"type":"string","description":"The maximum allowed date."}},"required":["min","max"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterRestrictions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filterRestrictions","typeLabel":"object | null"},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.controlKey","typeLabel":"string"},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.globalFilterColumns.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.globalFilterColumns","typeLabel":"string[]"},"selectedValue":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.4","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.5.items.[INDEX]","typeLabel":"string | number | boolean | null"},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue.oneOf.5","typeLabel":"(string | number | boolean | null)[]"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.selectedValue","typeLabel":"string | number | boolean | null | (string | number | boolean | null)[]"},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldKey","typeLabel":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef.kind","typeLabel":"enum\u003cstring>"},"table":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef.table.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef.table.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef.table","typeLabel":"string | null"},"column":{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef.column","typeLabel":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef.columnType","typeLabel":"enum\u003cstring>"}},"required":["kind","table","column"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldRef","typeLabel":"object"},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.itemIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.itemIds","typeLabel":"string[]"},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldKeys.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.fieldKeys","typeLabel":"string[]"},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.tileColumns.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.tileColumns.additionalProperties","typeLabel":"string[]"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.tileColumns","typeLabel":"object"},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.customFilterId","typeLabel":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3.filtersEveryTable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.3","typeLabel":"object"},{"type":"object","required":["filterTargets","filterType","filterSubType","filterRestrictions","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Toggle","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterType","typeLabel":"string"},"filterSubType":{"type":"null","description":"No specific subtype for the toggle filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterSubType","typeLabel":"null"},"filterRestrictions":{"type":"null","description":"No specific restrictions for the toggle filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterRestrictions","typeLabel":"null"},"displayName":{"type":"string","description":"User-driven display name for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.displayName","typeLabel":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.i","typeLabel":"string"},"x":{"type":"number","description":"X position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.x","typeLabel":"number"},"y":{"type":"number","description":"Y position in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.y","typeLabel":"number"},"w":{"type":"number","description":"Width in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.w","typeLabel":"number"},"h":{"type":"number","description":"Height in grid units.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.h","typeLabel":"number"},"minW":{"description":"Minimum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.minW","typeLabel":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.maxW","typeLabel":"number"},"minH":{"description":"Minimum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.minH","typeLabel":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.maxH","typeLabel":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.moved","typeLabel":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.static","typeLabel":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.isDraggable","typeLabel":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.isResizable","typeLabel":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.resizeHandles.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.resizeHandles","typeLabel":"enum\u003cstring>[]"},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout.isBounded","typeLabel":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.layout","typeLabel":"object"},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'Before logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.columns","typeLabel":"object[]"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.chartId","typeLabel":"string"},"targetTable":{"description":"Name of the target table.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.targetTable","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.type","typeLabel":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"columnName":{"type":"string","description":"The name of the column.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnName","typeLabel":"string"},"columnMetadata":{"description":"The description of the column used for AI.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnMetadata","typeLabel":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values.items.[INDEX]","typeLabel":"any"},"description":"An array of example values summarizing the contents of the column","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.values","typeLabel":"any[]"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary.isExhaustive","typeLabel":"boolean"}},"required":["values","isExhaustive"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX].columnSummary","typeLabel":"object"}},"required":["type","columnName"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns.items.[INDEX]","typeLabel":"object"},"description":"List of simple columns for 'After logic'.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.columns","typeLabel":"object[]"},"targetTable":{"type":"null","description":"No target table needed for filters after logic.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.targetTable","typeLabel":"null"},"chartId":{"type":"string","description":"Identifier of the target chart.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.chartId","typeLabel":"string"},"targetColumn":{"description":"User-driven target column for the filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1.targetColumn","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets.items.[INDEX]","typeLabel":"object"},"description":"Array of targeted filter configurations.","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filterTargets","typeLabel":"object[]"},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.controlKey","typeLabel":"string"},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.globalFilterColumns.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.globalFilterColumns","typeLabel":"string[]"},"selectedValue":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.4","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"number"},{},{"type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"null"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.5.items.[INDEX]","typeLabel":"string | number | boolean | null"},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue.oneOf.5","typeLabel":"(string | number | boolean | null)[]"}],"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.selectedValue","typeLabel":"string | number | boolean | null | (string | number | boolean | null)[]"},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldKey","typeLabel":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef.kind","typeLabel":"enum\u003cstring>"},"table":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef.table.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef.table.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef.table","typeLabel":"string | null"},"column":{"type":"string","isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef.column","typeLabel":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts.","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef.columnType","typeLabel":"enum\u003cstring>"}},"required":["kind","table","column"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldRef","typeLabel":"object"},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.itemIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.itemIds","typeLabel":"string[]"},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldKeys.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.fieldKeys","typeLabel":"string[]"},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.tileColumns.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.tileColumns.additionalProperties","typeLabel":"string[]"},"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.tileColumns","typeLabel":"object"},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.customFilterId","typeLabel":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean","uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4.filtersEveryTable","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config.oneOf.4","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].filter_config","typeLabel":"object"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX].sort_order","typeLabel":"integer"}},"required":["id","filter_config","sort_order"],"additionalProperties":false,"uniqueKey":"data.version.filters.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.version.filters.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"id":{"type":"string"},"filter_config":{"oneOf":[{"type":"object","required":["filterTargets","filterType","filterSubType","filterRestrictions","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Input"},"filterSubType":{"type":"string","enum":["Input Equals","Input Starts with","Input Ends with","Input Contains"],"description":"Subtype of the input filter."},"filterRestrictions":{"type":"null","description":"No specific restrictions for the input filter."},"displayName":{"type":"string","description":"User-driven display name for the filter."},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided."},"x":{"type":"number","description":"X position in grid units."},"y":{"type":"number","description":"Y position in grid units."},"w":{"type":"number","description":"Width in grid units."},"h":{"type":"number","description":"Height in grid units."},"minW":{"description":"Minimum width in grid units.","type":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number"},"minH":{"description":"Minimum height in grid units.","type":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"]}},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter."},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on"}},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'Before logic'."},"targetTable":{"description":"Name of the target table.","type":"string"},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'After logic'."},"targetTable":{"type":"null","description":"No target table needed for filters after logic."},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false}]},"description":"Array of targeted filter configurations."},"selectedValue":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"}]},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter."}]},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"]},"table":{"oneOf":[{"type":"string"},{"type":"null"}]},"column":{"type":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts."}},"required":["kind","table","column"],"additionalProperties":false},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string"}},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string"}},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean"}},"additionalProperties":false},{"type":"object","required":["filterTargets","filterType","filterSubType","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Select"},"filterSubType":{"type":"string","enum":["Select Single","Select Multi"],"description":"Subtype of the select filter."},"filterRestrictions":{"oneOf":[{"description":"Allowed values for the select filter.","type":"object","properties":{"values":{"type":"array","items":{"type":"string"},"description":"An array of allowed string values."}},"required":["values"],"additionalProperties":false},{"description":"Allowed values for the select filter.","type":"null","properties":{"values":{"type":"array","items":{"type":"string"},"description":"An array of allowed string values."}},"required":["values"],"additionalProperties":false}]},"filterRestrictionMethod":{"oneOf":[{"type":"object","description":"Method to compute the restrictions for this Select filter. Defaults to {filterType: 'Scan'} to scan the column it is pointing at","required":["filterType","options"],"properties":{"filterType":{"type":"string","const":"Manual"},"options":{"type":"array","items":{"type":"string"},"description":"User provided options for this select filter"}},"additionalProperties":false},{"type":"object","description":"Method to compute the restrictions for this Select filter. Defaults to {filterType: 'Scan'} to scan the column it is pointing at","required":["filterType","query"],"properties":{"filterType":{"type":"string","const":"Query"},"query":{"type":"string","description":"Query to run to populate this select filter"}},"additionalProperties":false},{"type":"object","description":"Method to compute the restrictions for this Select filter. Defaults to {filterType: 'Scan'} to scan the column it is pointing at","required":["filterType"],"properties":{"filterType":{"type":"string","const":"Scan"}},"additionalProperties":false}]},"defaultValue":{"description":"The default value for the filter.","type":"string"},"displayName":{"type":"string","description":"User-driven display name for the filter."},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided."},"x":{"type":"number","description":"X position in grid units."},"y":{"type":"number","description":"Y position in grid units."},"w":{"type":"number","description":"Width in grid units."},"h":{"type":"number","description":"Height in grid units."},"minW":{"description":"Minimum width in grid units.","type":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number"},"minH":{"description":"Minimum height in grid units.","type":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"]}},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter."},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on"}},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'Before logic'."},"targetTable":{"description":"Name of the target table.","type":"string"},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'After logic'."},"targetTable":{"type":"null","description":"No target table needed for filters after logic."},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false}]},"description":"Array of targeted filter configurations."},"selectedValue":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"}]},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter."}]},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"]},"table":{"oneOf":[{"type":"string"},{"type":"null"}]},"column":{"type":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts."}},"required":["kind","table","column"],"additionalProperties":false},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string"}},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string"}},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean"}},"additionalProperties":false},{"type":"object","required":["filterTargets","filterType","filterSubType","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Number"},"filterSubType":{"type":"string","enum":["Number Greater than","Number Greater than or equal to","Number Less than","Number Less than or equal to","Number Equal to"],"description":"Subtype of the number filter."},"filterRestrictions":{"oneOf":[{"description":"Allowed numeric range for the number filter.","type":"object","properties":{"min":{"type":"number","description":"The minimum allowed number."},"max":{"type":"number","description":"The maximum allowed number."}},"required":["min","max"],"additionalProperties":false},{"description":"Allowed numeric range for the number filter.","type":"null","properties":{"min":{"type":"number","description":"The minimum allowed number."},"max":{"type":"number","description":"The maximum allowed number."}},"required":["min","max"],"additionalProperties":false}]},"displayName":{"type":"string","description":"User-driven display name for the filter."},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided."},"x":{"type":"number","description":"X position in grid units."},"y":{"type":"number","description":"Y position in grid units."},"w":{"type":"number","description":"Width in grid units."},"h":{"type":"number","description":"Height in grid units."},"minW":{"description":"Minimum width in grid units.","type":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number"},"minH":{"description":"Minimum height in grid units.","type":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"]}},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter."},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on"}},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'Before logic'."},"targetTable":{"description":"Name of the target table.","type":"string"},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'After logic'."},"targetTable":{"type":"null","description":"No target table needed for filters after logic."},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false}]},"description":"Array of targeted filter configurations."},"selectedValue":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"}]},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter."}]},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"]},"table":{"oneOf":[{"type":"string"},{"type":"null"}]},"column":{"type":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts."}},"required":["kind","table","column"],"additionalProperties":false},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string"}},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string"}},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean"}},"additionalProperties":false},{"type":"object","required":["filterTargets","filterType","filterSubType","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Date"},"filterSubType":{"type":"string","enum":["Date Single","Date Range","Date Range (No Timestamp)","Date After","Date Before"],"description":"Subtype of the date filter."},"filterRestrictions":{"oneOf":[{"description":"Allowed date range for the date filter.","type":"object","properties":{"min":{"type":"string","description":"The minimum allowed date."},"max":{"type":"string","description":"The maximum allowed date."}},"required":["min","max"],"additionalProperties":false},{"description":"Allowed date range for the date filter.","type":"null","properties":{"min":{"type":"string","description":"The minimum allowed date."},"max":{"type":"string","description":"The maximum allowed date."}},"required":["min","max"],"additionalProperties":false}]},"displayName":{"type":"string","description":"User-driven display name for the filter."},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided."},"x":{"type":"number","description":"X position in grid units."},"y":{"type":"number","description":"Y position in grid units."},"w":{"type":"number","description":"Width in grid units."},"h":{"type":"number","description":"Height in grid units."},"minW":{"description":"Minimum width in grid units.","type":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number"},"minH":{"description":"Minimum height in grid units.","type":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"]}},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter."},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on"}},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'Before logic'."},"targetTable":{"description":"Name of the target table.","type":"string"},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'After logic'."},"targetTable":{"type":"null","description":"No target table needed for filters after logic."},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false}]},"description":"Array of targeted filter configurations."},"selectedValue":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"}]},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter."}]},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"]},"table":{"oneOf":[{"type":"string"},{"type":"null"}]},"column":{"type":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts."}},"required":["kind","table","column"],"additionalProperties":false},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string"}},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string"}},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean"}},"additionalProperties":false},{"type":"object","required":["filterTargets","filterType","filterSubType","filterRestrictions","displayName","layout"],"properties":{"filterType":{"type":"string","const":"Toggle"},"filterSubType":{"type":"null","description":"No specific subtype for the toggle filter."},"filterRestrictions":{"type":"null","description":"No specific restrictions for the toggle filter."},"displayName":{"type":"string","description":"User-driven display name for the filter."},"controlKey":{"description":"User-driven key to identify the filter when controlled externally.","type":"string"},"layout":{"type":"object","properties":{"i":{"type":"string","description":"Component key or uses the index of components if not provided."},"x":{"type":"number","description":"X position in grid units."},"y":{"type":"number","description":"Y position in grid units."},"w":{"type":"number","description":"Width in grid units."},"h":{"type":"number","description":"Height in grid units."},"minW":{"description":"Minimum width in grid units.","type":"number"},"maxW":{"description":"Maximum width in grid units.","type":"number"},"minH":{"description":"Minimum height in grid units.","type":"number"},"maxH":{"description":"Maximum height in grid units.","type":"number"},"moved":{"description":"Set by DragEvents and ResizeEvents.","type":"boolean"},"static":{"description":"If true, equal to `isDraggable: false` and `isResizable: false`.","type":"boolean"},"isDraggable":{"description":"If false, will not be draggable. Overrides `static`.","type":"boolean"},"isResizable":{"description":"If false, will not be resizable. Overrides `static`.","type":"boolean"},"resizeHandles":{"description":"Array of resize handles.","type":"array","items":{"type":"string","enum":["s","w","e","n","sw","nw","se","ne"]}},"isBounded":{"description":"If true and draggable, item will be moved only within the grid.","type":"boolean"}},"required":["i","x","y","w","h"],"additionalProperties":false,"description":"User-driven layout configuration for the filter."},"globalFilterColumns":{"description":"Array of targeted filter configurations.","type":"array","items":{"type":"string","description":"Global column name to filter on"}},"filterTargets":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","columns","chartId"],"properties":{"type":{"type":"string","const":"Before logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'Before logic'."},"targetTable":{"description":"Name of the target table.","type":"string"},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false},{"type":"object","required":["type","columns","targetTable","chartId"],"properties":{"type":{"type":"string","const":"After logic"},"columns":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","date","mixed","json"],"description":"The data type of the column."},"columnName":{"type":"string","description":"The name of the column."},"columnMetadata":{"description":"The description of the column used for AI.","type":"string"},"columnSummary":{"description":"An object that summarizes the data in the column. Is only ever provided if dataIsVisibleToAi is set to true.","type":"object","properties":{"values":{"type":"array","items":{"oneOf":[{}]},"description":"An array of example values summarizing the contents of the column"},"isExhaustive":{"type":"boolean","description":"This is set to true if the values array is an exhaustive summary of the available values in the column. If it's set to false it represents just some examples."}},"required":["values","isExhaustive"],"additionalProperties":false}},"required":["type","columnName"],"additionalProperties":false},"description":"List of simple columns for 'After logic'."},"targetTable":{"type":"null","description":"No target table needed for filters after logic."},"chartId":{"type":"string","description":"Identifier of the target chart."},"targetColumn":{"description":"User-driven target column for the filter.","type":"string"}},"additionalProperties":false}]},"description":"Array of targeted filter configurations."},"selectedValue":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{},{"type":"boolean"},{"type":"null"}]},"description":"An array is used when multiple values are selected, as with the date range filter, or with a multi-select filter."}]},"fieldKey":{"description":"The catalog field this filter was created from.","type":"string"},"fieldRef":{"description":"On a filter whose fieldKey is not a `col:` key: the one table column ('raw') or tile result column ('output') it filters. Ignore it on a `col:` key.","type":"object","properties":{"kind":{"type":"string","enum":["raw","output"]},"table":{"oneOf":[{"type":"string"},{"type":"null"}]},"column":{"type":"string"},"columnType":{"type":"string","enum":["string","number","date","boolean"],"description":"The column's data type, which decides the filter types it accepts."}},"required":["kind","table","column"],"additionalProperties":false},"itemIds":{"description":"Tiles the filter is restricted to, when it was restricted.","type":"array","items":{"type":"string"}},"fieldKeys":{"description":"On a filter made from a custom filter: its columns, in order. Each tile filters on the first that applies there. With filtersEveryTable, tables picked under one name, each tile filtered on every one it reads.","type":"array","items":{"type":"string"}},"tileColumns":{"description":"On a filter made from a custom filter: the tiles given columns of their own, each filtered on every one of them.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"customFilterId":{"description":"The custom filter this filter was made from. Its columns, tiles and name follow that custom filter.","type":"string"},"filtersEveryTable":{"description":"True on a filter over tables picked under one column name (`fieldKeys`): each tile is filtered on every one of them it reads, or not at all.","type":"boolean"}},"additionalProperties":false}]},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","filter_config","sort_order"],"additionalProperties":false},"uniqueKey":"data.version.filters.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.version.filters","typeLabel":"object[] | null"}},"required":["id","canvas_id","version","display_mode","created_by","created_at","items"],"additionalProperties":false,"isRequired":true,"uniqueKey":"data.version","typeLabel":"object"}},"required":["version"],"additionalProperties":false,"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["status","data"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"success","data":{"version":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","canvas_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","version":0,"display_mode":"live","created_by":"\u003cstring>","created_at":"\u003cunknown>","items":[{"id":"\u003cstring>","favorite_id":"\u003cstring>","x":0,"y":0,"w":0,"h":0,"favorite":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","organization_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","created_by_project_user_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","type":"sql","name":"\u003cstring>","thread_id":"\u003cstring>","chart_config":{},"chart":{"v":3},"connection_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","thumbnail_url":"\u003cstring>","sql":"\u003cstring>","snapshot_data":[{}],"is_archived":true,"created_at":"\u003cunknown>","updated_at":"\u003cunknown>","workspace_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","copied_from_favorite_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","tool_call":{"connectorKind":"mcp","toolName":"\u003cstring>"},"row_transform":"\u003cstring>","row_columns":[{"name":"\u003cstring>","type":"\u003cstring>"}]}}],"design_file":"\u003cstring>","filters":[{"id":"\u003cstring>","filter_config":{"filterType":"Input","filterSubType":"Input Equals","filterRestrictions":null,"displayName":"\u003cstring>","layout":{"i":"\u003cstring>","x":123,"y":123,"w":123,"h":123,"minW":123,"maxW":123,"minH":123,"maxH":123,"moved":true,"static":true,"isDraggable":true,"isResizable":true,"resizeHandles":["s"],"isBounded":true},"filterTargets":[{"type":"Before logic","columns":[{"type":"string","columnName":"\u003cstring>","columnMetadata":"\u003cstring>","columnSummary":{"values":["\u003cunknown>"],"isExhaustive":true}}],"chartId":"\u003cstring>","targetTable":"\u003cstring>","targetColumn":"\u003cstring>"}],"controlKey":"\u003cstring>","globalFilterColumns":["\u003cstring>"],"selectedValue":"\u003cstring>","fieldKey":"\u003cstring>","fieldRef":{"kind":"raw","table":"\u003cstring>","column":"\u003cstring>","columnType":"string"},"itemIds":["\u003cstring>"],"fieldKeys":["\u003cstring>"],"tileColumns":{},"customFilterId":"\u003cstring>","filtersEveryTable":true},"sort_order":0}]}}}}},"exampleType":"generated"}},"exampleType":"generated"},"94891da1-c138-483f-afa5-3980d390a20e":{"description":"POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/versions Negative response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"error","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"error":{"type":"object","properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["message"],"additionalProperties":false,"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["status","error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"message":"\u003cstring>","code":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"17c1ee9c-b977-4169-b119-56b0b552d5a3":{"APIKEY_3":{"type":"apiKey","in":"header","name":"authorization","scopes":[],"schemeName":"APIKEY_3"}}},"servers":{"19da32c0-ae77-4cb9-938a-e7fa5193f9d7":{"url":"https://api.upsolve.ai"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"authorization","scopes":[],"schemeName":"APIKEY_3"},"schema":{"title":"authorization","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"APIKEY_3","name":"authorization"}],"title":"APIKEY_3"}]},"originalFileLocation":"api-reference/upsolve.documentation.yaml"},"subdomain":"upsolve","siteName":"Upsolve AI","title":"Save Canvas Version - Upsolve AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-31T08:05:26.489Z","originalFileLocation":"api-reference/endpoint/save-canvas-version.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=\"system\"}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=\"Save a canvas version\">\u003cmeta data-mint-head name=\"application-name\" content=\"Upsolve AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_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/upsolve/294UabaKv711UkJe/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Save Canvas Version - Upsolve AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Save a canvas version\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Upsolve AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://upsolve.mintlify.app/_mintlify/api/og/v2?division=Canvases\u0026amp;title=Save+Canvas+Version\u0026amp;description=Save+a+canvas+version\u0026amp;theme=ee308efe25f936e82bf32ff5\u0026amp;signature=7d9f861dddfc9b74be8713f8762d9c56705ff12d01ce6ebbef31fa5af0cde59e\">\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=\"Save Canvas Version - Upsolve AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Save a canvas version\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://upsolve.mintlify.app/_mintlify/api/og/v2?division=Canvases\u0026amp;title=Save+Canvas+Version\u0026amp;description=Save+a+canvas+version\u0026amp;theme=ee308efe25f936e82bf32ff5\u0026amp;signature=7d9f861dddfc9b74be8713f8762d9c56705ff12d01ce6ebbef31fa5af0cde59e\">\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/upsolve/294UabaKv711UkJe/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Upsolve AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F13470\">\u003cmeta data-mint-head name=\"slack-app-id\" content=\"A0C9DAKJQ49\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/save-canvas-version.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.upsolve.ai/#organization\",\"name\":\"Upsolve AI\",\"url\":\"https://docs.upsolve.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/upsolve/2iK7L-lfLcwqCcz_/logo/light_logo.svg?fit=max\u0026auto=format\u0026n=2iK7L-lfLcwqCcz_\u0026q=85\u0026s=e2c715b3dad371be16e683c74655b2a8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.upsolve.ai#website\",\"name\":\"Upsolve AI\",\"url\":\"https://docs.upsolve.ai\",\"publisher\":{\"@id\":\"https://docs.upsolve.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version#webpage\",\"url\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version\",\"name\":\"Save Canvas Version\",\"description\":\"Save a canvas version\",\"dateModified\":\"2026-10-31T08:05:26.489Z\",\"isPartOf\":{\"@id\":\"https://docs.upsolve.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Documentation\",\"item\":\"https://docs.upsolve.ai/api-reference/endpoint/create-embed-token\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Canvases\",\"item\":\"https://docs.upsolve.ai/api-reference/endpoint/list-canvases\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Save Canvas Version\",\"item\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version#apireference\",\"headline\":\"Save Canvas Version\",\"name\":\"Save Canvas Version\",\"description\":\"Save a canvas version\",\"url\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version\",\"mainEntityOfPage\":{\"@id\":\"https://docs.upsolve.ai/api-reference/endpoint/save-canvas-version#webpage\"},\"dateModified\":\"2026-10-31T08:05:26.489Z\",\"publisher\":{\"@id\":\"https://docs.upsolve.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.upsolve.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Upsolve AI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Upsolve AI","nav":{"global":{"anchors":[{"anchor":"Impact Studies","href":"https://upsolve.ai/impact-study","icon":"newspaper"},{"anchor":"Security Trust Center","href":"https://trust.upsolve.ai","icon":"shield-halved"},{"anchor":"Community","href":"https://upsolve-ai-community.slack.com/join/shared_invite/zt-2x9oospxx-vv2uDP_20IafkekwCOMi4A#/shared-invite/email","icon":"slack"},{"anchor":"Blog","href":"https://www.upsolve.com/blog","icon":"newspaper"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"Analytics Layer","pages":[{"title":"Analytics Layer","href":"/embedded-bi/introduction"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/introduction"}]},{"tab":"Chart Configurations","pages":[{"title":"Chart Configurations","href":"/content/charts/area-line-chart"}]},{"tab":"API Reference","groups":[{"group":"Applications (legacy)","pages":[{"title":"Migrate from v1 to v2","icon":"arrow-right-arrow-left","href":"/api-reference/v2/migrate-from-v1"}]},{"group":"API Documentation","pages":[{"group":"Embedding","pages":[{"title":"Get Embed Token","openapi":"post /v1/api/projects/embed-token","href":"/api-reference/endpoint/create-embed-token"},{"title":"List Project User Roles","openapi":"get /v1/api/projects/{projectId}/user-roles","href":"/api-reference/endpoint/list-project-user-roles"},{"title":"Create Project User Role","openapi":"post /v1/api/projects/{projectId}/user-roles","href":"/api-reference/endpoint/create-project-user-role"},{"title":"Get Project User Role","openapi":"get /v1/api/projects/{projectId}/user-roles/{projectUserRoleId}","href":"/api-reference/endpoint/get-project-user-role"},{"title":"Update Project User Role","openapi":"put /v1/api/projects/{projectId}/user-roles/{projectUserRoleId}","href":"/api-reference/endpoint/update-project-user-role"},{"title":"Delete Project User Role","openapi":"delete /v1/api/projects/{projectId}/user-roles/{projectUserRoleId}","href":"/api-reference/endpoint/delete-project-user-role"},{"title":"Update Project User","openapi":"put /v1/api/projects/{projectId}/users/{projectUserId}","href":"/api-reference/endpoint/update-project-user"},{"title":"Register Project Organization","openapi":"post /v1/api/projects/register-organization","href":"/api-reference/endpoint/register-project-organization"},{"title":"Register Project User","openapi":"post /v1/api/projects/register-user","href":"/api-reference/endpoint/register-project-user"},{"title":"Get Project User Token","openapi":"post /v1/api/projects/user-token","href":"/api-reference/endpoint/get-project-user-token"}]},{"group":"Workspaces","pages":[{"title":"List Workspaces","openapi":"get /v2/api/projects/{projectId}/workspaces","href":"/api-reference/endpoint/list-workspaces"},{"title":"Create Workspace","openapi":"post /v2/api/projects/{projectId}/workspaces","href":"/api-reference/endpoint/create-workspace"},{"title":"Get Workspace","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}","href":"/api-reference/endpoint/get-workspace"},{"title":"Update Workspace","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}","href":"/api-reference/endpoint/update-workspace"},{"title":"Delete Workspace","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}","href":"/api-reference/endpoint/delete-workspace"},{"title":"Duplicate Workspace","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/duplicate","href":"/api-reference/endpoint/duplicate-workspace"},{"title":"Validate Workspace","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/validate","href":"/api-reference/endpoint/validate-workspace"},{"title":"Change Workspace Connection","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/change-connection","href":"/api-reference/endpoint/change-workspace-connection"},{"title":"Get Workspace Affected Entities","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/affected-entities","href":"/api-reference/endpoint/get-workspace-affected-entities"},{"title":"Chat with a Workspace","href":"/api-reference/endpoint/chat-with-agent"}]},{"group":"Workspace draft","pages":[{"title":"Get Draft","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft","href":"/api-reference/endpoint/get-draft"},{"title":"Update Draft","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft","href":"/api-reference/endpoint/update-draft"},{"title":"Discard Draft","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft","href":"/api-reference/endpoint/discard-draft"},{"title":"Get Draft Diff","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/diff","href":"/api-reference/endpoint/get-draft-diff"},{"title":"Check Draft Compatibility","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/compatibility","href":"/api-reference/endpoint/check-draft-compatibility"},{"title":"Get Draft Default View","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/default-view","href":"/api-reference/endpoint/get-draft-default-view"},{"title":"Set Draft Default View","openapi":"put /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/default-view","href":"/api-reference/endpoint/set-draft-default-view"},{"title":"Get Draft Prompts","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/prompts","href":"/api-reference/endpoint/get-draft-prompts"},{"title":"Update Draft Prompts","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/prompts","href":"/api-reference/endpoint/update-draft-prompts"},{"title":"List Draft Skills","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/skills","href":"/api-reference/endpoint/list-draft-skills"},{"title":"Create Draft Skill","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/skills","href":"/api-reference/endpoint/create-draft-skill"},{"title":"Update Draft Skill","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/skills/{skillId}","href":"/api-reference/endpoint/update-draft-skill"},{"title":"Delete Draft Skill","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/skills/{skillId}","href":"/api-reference/endpoint/delete-draft-skill"},{"title":"List Draft Knowledge Base","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base","href":"/api-reference/endpoint/list-draft-knowledge-base"},{"title":"Create Draft Knowledge Base File","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base","href":"/api-reference/endpoint/create-draft-knowledge-base-file"},{"title":"Get Draft Knowledge Base File","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base/{slug}","href":"/api-reference/endpoint/get-draft-knowledge-base-file"},{"title":"Update Draft Knowledge Base File","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base/{slug}","href":"/api-reference/endpoint/update-draft-knowledge-base-file"},{"title":"Delete Draft Knowledge Base File","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base/{slug}","href":"/api-reference/endpoint/delete-draft-knowledge-base-file"},{"title":"List Draft Knowledge Base Tags","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base/tags","href":"/api-reference/endpoint/list-draft-knowledge-base-tags"},{"title":"Create Draft Knowledge Base Tag","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base/tags","href":"/api-reference/endpoint/create-draft-knowledge-base-tag"},{"title":"Delete Draft Knowledge Base Tag","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/knowledge-base/tags/{tagId}","href":"/api-reference/endpoint/delete-draft-knowledge-base-tag"},{"title":"List Draft Metrics","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/metrics","href":"/api-reference/endpoint/list-draft-metrics"},{"title":"Create Draft Metric","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/metrics","href":"/api-reference/endpoint/create-draft-metric"},{"title":"Get Draft Metric","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/metrics/{slug}","href":"/api-reference/endpoint/get-draft-metric"},{"title":"Update Draft Metric","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/metrics/{slug}","href":"/api-reference/endpoint/update-draft-metric"},{"title":"Delete Draft Metric","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/metrics/{slug}","href":"/api-reference/endpoint/delete-draft-metric"},{"title":"Create Draft RLS Rule","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/rls","href":"/api-reference/endpoint/create-draft-rls-rule"},{"title":"Update Draft RLS Rule","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/rls/{ruleId}","href":"/api-reference/endpoint/update-draft-rls-rule"},{"title":"Delete Draft RLS Rule","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/rls/{ruleId}","href":"/api-reference/endpoint/delete-draft-rls-rule"}]},{"group":"Versions \u0026 deployments","pages":[{"title":"Publish Workspace","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/publish","href":"/api-reference/endpoint/publish-workspace"},{"title":"List Versions","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions","href":"/api-reference/endpoint/list-versions"},{"title":"Get Version","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}","href":"/api-reference/endpoint/get-version"},{"title":"Get Version Publish Status","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/publish-status","href":"/api-reference/endpoint/get-version-publish-status"},{"title":"Retry Version Publish","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/publish/retry","href":"/api-reference/endpoint/retry-version-publish"},{"title":"Promote Version","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/promote","href":"/api-reference/endpoint/promote-version"},{"title":"Restore Version","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/restore","href":"/api-reference/endpoint/restore-version"},{"title":"Preview Version Restore","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/restore-preview","href":"/api-reference/endpoint/preview-version-restore"},{"title":"List Version Knowledge Base","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/knowledge-base","href":"/api-reference/endpoint/list-version-knowledge-base"},{"title":"Get Version Knowledge Base File","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/knowledge-base/{slug}","href":"/api-reference/endpoint/get-version-knowledge-base-file"},{"title":"List Version Metrics","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/metrics","href":"/api-reference/endpoint/list-version-metrics"},{"title":"Get Version Metric","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/versions/{version}/metrics/{slug}","href":"/api-reference/endpoint/get-version-metric"},{"title":"List Deployments","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/deployments","href":"/api-reference/endpoint/list-deployments"},{"title":"Get Deployment","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/deployments/{deploymentId}","href":"/api-reference/endpoint/get-deployment"},{"title":"Deploy To Environment","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/environments/{environment}/deployments","href":"/api-reference/endpoint/deploy-to-environment"}]},{"group":"Test cases \u0026 runs","pages":[{"title":"List Test Cases","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-cases","href":"/api-reference/endpoint/list-test-cases"},{"title":"Get Test Case","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-cases/{caseId}","href":"/api-reference/endpoint/get-test-case"},{"title":"Create Test Case","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-cases","href":"/api-reference/endpoint/create-test-case"},{"title":"Replace Test Case","openapi":"put /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-cases","href":"/api-reference/endpoint/replace-test-case"},{"title":"Delete Test Case","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-cases","href":"/api-reference/endpoint/delete-test-case"},{"title":"List Draft Test Cases","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/test-cases","href":"/api-reference/endpoint/list-draft-test-cases"},{"title":"Attach Draft Test Case","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/test-cases","href":"/api-reference/endpoint/attach-draft-test-case"},{"title":"Detach Draft Test Case","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/draft/test-cases/{assetId}","href":"/api-reference/endpoint/detach-draft-test-case"},{"title":"List Test Runs","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-runs","href":"/api-reference/endpoint/list-test-runs"},{"title":"Get Test Run","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-runs/{jobId}","href":"/api-reference/endpoint/get-test-run"},{"title":"Start Test Run","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-runs","href":"/api-reference/endpoint/start-test-run"},{"title":"Cancel Test Run","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/test-runs/{jobId}/cancel","href":"/api-reference/endpoint/cancel-test-run"}]},{"group":"Canvases","pages":[{"title":"List Canvases","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases","href":"/api-reference/endpoint/list-canvases"},{"title":"Create Canvas","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases","href":"/api-reference/endpoint/create-canvas"},{"title":"Rename Canvas","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}","href":"/api-reference/endpoint/rename-canvas"},{"title":"Delete Canvas","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}","href":"/api-reference/endpoint/delete-canvas"},{"title":"Fork Canvas","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/fork","href":"/api-reference/endpoint/fork-canvas"},{"title":"Get Canvas Design","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/design","href":"/api-reference/endpoint/get-canvas-design"},{"title":"Edit Canvas Design","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/design","href":"/api-reference/endpoint/edit-canvas-design"},{"title":"List Canvas Filterable Fields","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filterable-fields","href":"/api-reference/endpoint/list-canvas-filterable-fields"},{"title":"List Canvas Filters","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters","href":"/api-reference/endpoint/list-canvas-filters"},{"title":"Add Canvas Filter","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters","href":"/api-reference/endpoint/add-canvas-filter"},{"title":"Update Canvas Filter","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/{filterId}","href":"/api-reference/endpoint/update-canvas-filter"},{"title":"Remove Canvas Filter","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/{filterId}","href":"/api-reference/endpoint/remove-canvas-filter"},{"title":"List Canvas Filter Values","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values","href":"/api-reference/endpoint/list-canvas-filter-values"},{"title":"Get Canvas Items","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items","href":"/api-reference/endpoint/get-canvas-items"},{"title":"Add Canvas Item","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items","href":"/api-reference/endpoint/add-canvas-item"},{"title":"Replace Canvas Items","openapi":"put /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items","href":"/api-reference/endpoint/replace-canvas-items"},{"title":"Move Canvas Item","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items/{itemId}","href":"/api-reference/endpoint/move-canvas-item"},{"title":"Remove Canvas Item","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items/{itemId}","href":"/api-reference/endpoint/remove-canvas-item"},{"title":"Set Canvas Item Chart","openapi":"put /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items/{itemId}/chart","href":"/api-reference/endpoint/set-canvas-item-chart"},{"title":"Run Canvas Item","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/items/{itemId}/run","href":"/api-reference/endpoint/run-canvas-item"},{"title":"Get Canvas Link","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/link","href":"/api-reference/endpoint/get-canvas-link"},{"title":"Create Canvas Link","openapi":"put /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/link","href":"/api-reference/endpoint/create-canvas-link"},{"title":"Delete Canvas Link","openapi":"delete /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/link","href":"/api-reference/endpoint/delete-canvas-link"},{"title":"Get Canvas Share","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/share","href":"/api-reference/endpoint/get-canvas-share"},{"title":"Update Canvas Share","openapi":"put /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/share","href":"/api-reference/endpoint/update-canvas-share"},{"title":"List Canvas Share People","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/share/people","href":"/api-reference/endpoint/list-canvas-share-people"},{"title":"List Canvas Versions","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/versions","description":"List saved canvas versions","href":"/api-reference/endpoint/list-canvas-versions"},{"title":"Save Canvas Version","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/versions","href":"/api-reference/endpoint/save-canvas-version"},{"title":"Restore Canvas Version","openapi":"post /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/versions/{version}/restore","description":"Restore a saved version of a canvas: the canvas is made to match it (its tiles, design file, filters and time zone) and saved again as the newest version. Versions saved since stay in the history. Tiles whose chart no longer exists are left out.","href":"/api-reference/endpoint/restore-canvas-version"}]},{"group":"Rules","pages":[{"title":"List Rules","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/rules","href":"/api-reference/endpoint/list-rules"},{"title":"List Rule Runs","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/rule-runs","href":"/api-reference/endpoint/list-rule-runs"}]},{"group":"Projects \u0026 users","pages":[{"title":"List Projects","openapi":"get /v1/api/projects","href":"/api-reference/endpoint/list-projects"},{"title":"Get Project","openapi":"get /v1/api/projects/{projectId}","href":"/api-reference/endpoint/get-project"},{"title":"Create Project","openapi":"post /v1/api/projects","href":"/api-reference/endpoint/create-project"},{"title":"Update Project","openapi":"put /v1/api/projects/{projectId}","href":"/api-reference/endpoint/update-project"},{"title":"Delete Project","openapi":"delete /v1/api/projects/{projectId}","href":"/api-reference/endpoint/delete-project"},{"title":"List Project Organizations","openapi":"get /v1/api/projects/{projectId}/organizations","href":"/api-reference/endpoint/list-project-organizations"},{"title":"Get Project Organization","openapi":"get /v1/api/projects/{projectId}/organizations/{projectOrganizationId}","href":"/api-reference/endpoint/get-project-organization"},{"title":"Create Project Organization","openapi":"post /v1/api/projects/{projectId}/organizations","href":"/api-reference/endpoint/create-project-organization"},{"title":"Update Project Organization","openapi":"put /v1/api/projects/{projectId}/organizations/{projectOrganizationId}","href":"/api-reference/endpoint/update-project-organization"},{"title":"Delete Project Organization","openapi":"delete /v1/api/projects/{projectId}/organizations/{projectOrganizationId}","href":"/api-reference/endpoint/delete-project-organization"},{"title":"Move Project Organization Environment","openapi":"post /v1/api/projects/{projectId}/organizations/{projectOrganizationId}/environment","href":"/api-reference/endpoint/move-project-organization-environment"},{"title":"List Project Users","openapi":"get /v1/api/projects/{projectId}/users","href":"/api-reference/endpoint/list-project-users"},{"title":"Get Project User","openapi":"get /v1/api/projects/{projectId}/users/{projectUserId}","href":"/api-reference/endpoint/get-project-user"},{"title":"Delete Project User","openapi":"delete /v1/api/projects/{projectId}/users/{projectUserId}","href":"/api-reference/endpoint/delete-project-user"},{"title":"Move Project User Environment","openapi":"post /v1/api/projects/{projectId}/users/{projectUserId}/environment","href":"/api-reference/endpoint/move-project-user-environment"}]},{"group":"Connections \u0026 environments","pages":[{"title":"Create Connection","openapi":"post /v1/api/connection/create-connection","href":"/api-reference/endpoint/create-connection"},{"title":"Get Connections","openapi":"get /v1/api/connection","href":"/api-reference/endpoint/get-connections"},{"title":"Get Connection","openapi":"get /v1/api/connection/{connectionId}","href":"/api-reference/endpoint/get-connection"},{"title":"Update Connection","openapi":"patch /v1/api/connection","href":"/api-reference/endpoint/update-connection"},{"title":"Delete Connection","openapi":"delete /v1/api/connection","href":"/api-reference/endpoint/delete-connection"},{"title":"Get Connection Affected Data Models","openapi":"get /v1/api/connection/get-affected-data-models","href":"/api-reference/endpoint/get-connection-affected-data-models"},{"title":"Get Enriched Connections","openapi":"get /v1/api/connection/get-enriched-connections","href":"/api-reference/endpoint/get-enriched-connections"},{"title":"Start Connection Metadata Job","openapi":"post /v1/api/connection/compute-metadata-job","href":"/api-reference/endpoint/start-connection-metadata-job"},{"title":"Get Connection Metadata Job","openapi":"get /v1/api/connection/metadata-job/{jobId}","href":"/api-reference/endpoint/get-connection-metadata-job"},{"title":"List Environments","openapi":"get /v2/api/projects/{projectId}/environments","href":"/api-reference/endpoint/list-environments"},{"title":"Create Environment","openapi":"post /v2/api/projects/{projectId}/environments","href":"/api-reference/endpoint/create-environment"},{"title":"Rename Environment","openapi":"patch /v2/api/projects/{projectId}/environments/{environment}","href":"/api-reference/endpoint/rename-environment"},{"title":"Delete Environment","openapi":"delete /v2/api/projects/{projectId}/environments/{environment}","href":"/api-reference/endpoint/delete-environment"},{"title":"Map Environment Connection","openapi":"put /v2/api/projects/{projectId}/environments/{environment}/connections/{sourceConnectionId}","href":"/api-reference/endpoint/map-environment-connection"},{"title":"Remove Environment Connection","openapi":"delete /v2/api/projects/{projectId}/environments/{environment}/connections/{sourceConnectionId}","href":"/api-reference/endpoint/remove-environment-connection"},{"title":"Create Environment Connection Database","openapi":"post /v2/api/projects/{projectId}/environments/{environment}/connections/{sourceConnectionId}/database","href":"/api-reference/endpoint/create-environment-connection-database"},{"title":"Check Environment Connection Compatibility","openapi":"get /v2/api/projects/{projectId}/environments/{environment}/connections/{sourceConnectionId}/compatibility","href":"/api-reference/endpoint/check-environment-connection-compatibility"},{"title":"List Workspace Environments","openapi":"get /v2/api/projects/{projectId}/workspaces/{workspaceId}/environments","href":"/api-reference/endpoint/list-workspace-environments"},{"title":"Set Workspace Environment","openapi":"patch /v2/api/projects/{projectId}/workspaces/{workspaceId}/environments/{environment}","href":"/api-reference/endpoint/set-workspace-environment"}]},{"group":"Dashboard Sync (.ucf)","pages":[{"title":"Overview","href":"/api-reference/endpoint/dashboard-sync-overview"},{"title":"Import Dashboards (.ucf)","openapi":"post /v1/api/ucf/dashboards/import","href":"/api-reference/endpoint/import-dashboards-ucf"}]}]}]},{"tab":"SQL Reference","pages":[{"title":"SQL Reference","href":"/sql/introduction"}]},{"tab":"Demo","pages":[{"title":"Demo","href":"/demo/product-walkthrough"}]}]},"basePath":"","title":"Save Canvas Version - Upsolve AI","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}