Optional unique value (e.g. a UUID v4) that lets you safely retry POST/PUT/PATCH/DELETE requests. The first request runs normally; subsequent requests with the same key replay the stored response (status + body) for 24 hours, so retries can never double-create or double-charge. Two concurrent requests with the same key return 409 IDEMPOTENCY_IN_PROGRESS. Generate a fresh key per logical operation.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Formo Docs","description":"Guides and API documentation for Formo, the analytics and attribution platform for onchain apps.","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/formo/Tkq8h2U3p6xcPPy8/logo/light.svg?fit=max\u0026auto=format\u0026n=Tkq8h2U3p6xcPPy8\u0026q=85\u0026s=44c0ee89d6c69a17e7599ec5db01b800","dark":"https://mintcdn.com/formo/Tkq8h2U3p6xcPPy8/logo/dark.svg?fit=max\u0026auto=format\u0026n=Tkq8h2U3p6xcPPy8\u0026q=85\u0026s=53db8fc67b12290b243ff6e94ecb9de4"},"favicon":"https://mintcdn.com/formo/Tkq8h2U3p6xcPPy8/favicon.svg?fit=max\u0026auto=format\u0026n=Tkq8h2U3p6xcPPy8\u0026q=85\u0026s=d395f9e73ddb75a465b56c9c9713e29e","api":{},"appearance":{"default":"light"},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://cal.com/formo/demo","label":"Book a demo"}],"primary":{"type":"button","label":"Sign in","href":"https://app.formo.so"}},"footer":{"socials":{"website":"https://formo.so","x":"https://x.com/getformo","linkedin":"https://linkedin.com/company/getformo","github":"https://github.com/getformo","youtube":"https://www.youtube.com/@getformo"}},"seo":{"metatags":{"msvalidate.01":"71E42B1EAE01EE25D08368832DB15087"}},"integrations":{"ga4":{"measurementId":"G-ZKSZ6S9EWJ"},"intercom":{"appId":"pggy8kos"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Changelog","icon":"map","href":"https://formo.so/changelog"},{"anchor":"Support","icon":"headset","href":"https://formo.so/support"},{"anchor":"Status","icon":"square-check","href":"https://status.formo.so"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"formo","hasAudioNarration":false,"actualSubdomain":"formo","customDomains":["docs.formo.so"],"gitSource":{"type":"github","owner":"getformo","repo":"docs.formo.so","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae43b9694210ab8c5fb0a8b","collectionId":"fe7910fc-5892-4fc7-b138-ce1087876e8f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae43b9694210ab8c5fb0a8b"},"feedback":{"thumbs":false,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{},"buildId":"6ae43b9694210ab8c5fb0a8b","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API","count":60},{"language":"default","tag":"Overview","count":33},{"language":"default","tag":"Features","count":30},{"language":"default","tag":"Query API","count":18},{"language":"default","tag":"Data","count":17},{"language":"default","tag":"Charts API","count":14},{"language":"default","tag":"Data catalog","count":14},{"language":"default","tag":"Analytics","count":14},{"language":"default","tag":"CLI","count":12},{"language":"default","tag":"Events","count":12}],"searchSettings":{"maxResults":6}},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/boards/move-chart","slug":"/api/boards/move-chart","pageMetadata":{"title":"Move Chart","description":"Move a chart to a different board in the same project. The target board must differ from the current one.","openapi":"PUT /v0/boards/{boardId}/charts/{chartId}/move","href":"/api/boards/move-chart"},"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: \"Move a chart to a different board in the same project. The target board must differ from the current one.\"\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":"Move Chart","description":"Move a chart to a different board in the same project. The target board must differ from the current one.","openapi":"PUT /v0/boards/{boardId}/charts/{chartId}/move","href":"/api/boards/move-chart"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"moveChart","summary":"Move chart to another board","description":"Move a chart to a different board in the same project. The target board must differ from the current one.","tags":["Charts"],"parameters":["7c2a242d-390c-45e1-8bd3-e5248fabc2ac","6ae1092f-dea1-4fdc-b87b-305c51b7632a","ce815fd3-6c79-4af7-a15b-e207208fcbd3"],"requestBody":"f29f12de-2846-4972-a9b0-dd1fe79be8a1","responses":{"200":"193efbba-0708-45c0-9f8f-f9bdff3441a1","400":"715bca5b-6219-4d63-962d-86821a1c4b4d","409":"a51975aa-eaf0-4faf-a8f4-9a1ec7ebd9af"},"x-required-scope":"boards:write","method":"put","type":"path","servers":["8aa94e95-0cb5-48a7-81cf-15ff04507779","2f4217cb-e041-4c6d-9dd3-f4994c54fd31"],"security":["650d4775-851d-4233-95f9-33ed3b93f5a5"],"path":"/v0/boards/{boardId}/charts/{chartId}/move","baseUrlOptions":["https://api.formo.so","https://events.formo.so"],"title":"Move chart to another board","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"7c2a242d-390c-45e1-8bd3-e5248fabc2ac":{"name":"boardId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"6ae1092f-dea1-4fdc-b87b-305c51b7632a":{"name":"chartId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"ce815fd3-6c79-4af7-a15b-e207208fcbd3":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255,"isRequired":false,"description":"Optional unique value (e.g. a UUID v4) that lets you safely retry POST/PUT/PATCH/DELETE requests. The first request runs normally; subsequent requests with the same key replay the stored response (status + body) for 24 hours, so retries can never double-create or double-charge. Two concurrent requests with the same key return `409 IDEMPOTENCY_IN_PROGRESS`. Generate a fresh key per logical operation.","uniqueKey":"","typeLabel":"string"},"description":"Optional unique value (e.g. a UUID v4) that lets you safely retry POST/PUT/PATCH/DELETE requests. The first request runs normally; subsequent requests with the same key replay the stored response (status + body) for 24 hours, so retries can never double-create or double-charge. Two concurrent requests with the same key return `409 IDEMPOTENCY_IN_PROGRESS`. Generate a fresh key per logical operation."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["targetBoardId"],"properties":{"targetBoardId":{"type":"string","description":"The board to move the chart to.","isRequired":true,"uniqueKey":"targetBoardId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"targetBoardId":"brd_f6e5d4c3b2a1"},"examples":{"Example":{"title":"Example","value":{"targetBoardId":"brd_f6e5d4c3b2a1"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"193efbba-0708-45c0-9f8f-f9bdff3441a1":{"description":"The moved chart","content":{"application/json":{"schema":{"type":"object","description":"A saved chart attached to a board.","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"chart_type":{"type":"string","enum":["table","number","funnel","bar","line","area","pie","stacked","user_paths","retention"],"description":"Visualization type.","isRequired":true,"uniqueKey":"chart_type","typeLabel":"enum\u003cstring>"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"query":{"type":"string","description":"SQL query powering the chart. For `funnel` and `retention` charts this is a system-managed placeholder.","isRequired":true,"uniqueKey":"query","typeLabel":"string"},"project_id":{"type":"string","isRequired":true,"uniqueKey":"project_id","typeLabel":"string"},"board_id":{"type":"string","isRequired":true,"uniqueKey":"board_id","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"x_axis":{"oneOf":[{"type":"string","description":"Column used as the X axis.","uniqueKey":"x_axis.oneOf.0","typeLabel":"string"},{"type":"null","description":"Column used as the X axis.","uniqueKey":"x_axis.oneOf.1","typeLabel":"null"}],"uniqueKey":"x_axis","typeLabel":"string | null"},"y_axis":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"y_axis.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Column(s) used as Y axis metric(s).","uniqueKey":"y_axis.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Column(s) used as Y axis metric(s).","uniqueKey":"y_axis.oneOf.1","typeLabel":"null"}],"uniqueKey":"y_axis","typeLabel":"string[] | null"},"group_by":{"oneOf":[{"type":"string","description":"Column used to group/stack series.","uniqueKey":"group_by.oneOf.0","typeLabel":"string"},{"type":"null","description":"Column used to group/stack series.","uniqueKey":"group_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"group_by","typeLabel":"string | null"},"steps":{"oneOf":[{"type":"array","items":{"type":"object","description":"A single funnel or user-path step. Event-property predicates are stored in `filters`, using the same canonical `{field, op, value}` envelope as every other filter surface. Funnel steps (not user-path anchors or retention filters) may also carry `events`, an OR group: the step then matches any listed event. `type`/`event` stay the step's primary event and are always part of the group; `filters` apply to the whole group.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"description":"`event`: built-in page/connect/transaction events; `track`: custom tracked events; `decoded_log`: decoded smart-contract events.","isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"description":"Event name (e.g. `page`, `connect`, `transaction`, or a custom track event name).","isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].event","typeLabel":"string"},"events":{"type":"array","maxItems":10,"items":{"type":"object","description":"One alternative inside a funnel step's OR group. `filters` uses the same canonical `{field, op, value}` envelope as `FunnelStep.filters` and binds to this member only: `(A AND filtersA) OR (B AND filtersB)`.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].event","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters.items.[INDEX]","typeLabel":"object"},"description":"Member-scoped predicates, AND-joined within this member.","uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX].filters","typeLabel":"object[]"}},"required":["type","event"],"uniqueKey":"steps.oneOf.0.items.[INDEX].events.items.[INDEX]","typeLabel":"object"},"description":"Optional OR group (funnel steps only, max 10). When present and non-empty the step matches any of these events, e.g. `[{\"type\":\"track\",\"event\":\"Swap Initiated\"},{\"type\":\"track\",\"event\":\"Limit Order Placed\"}]`. The primary `type`/`event` is always included.","uniqueKey":"steps.oneOf.0.items.[INDEX].events","typeLabel":"object[]"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"steps.oneOf.0.items.[INDEX].filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.oneOf.0.items.[INDEX].filters","typeLabel":"object[]"}},"required":["type","event"],"additionalProperties":true,"uniqueKey":"steps.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Ordered list of funnel steps. Only present when `chart_type` is `funnel`.","uniqueKey":"steps.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","description":"A single funnel or user-path step. Event-property predicates are stored in `filters`, using the same canonical `{field, op, value}` envelope as every other filter surface. Funnel steps (not user-path anchors or retention filters) may also carry `events`, an OR group: the step then matches any listed event. `type`/`event` stay the step's primary event and are always part of the group; `filters` apply to the whole group.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"description":"`event`: built-in page/connect/transaction events; `track`: custom tracked events; `decoded_log`: decoded smart-contract events."},"event":{"type":"string","minLength":1,"description":"Event name (e.g. `page`, `connect`, `transaction`, or a custom track event name)."},"events":{"type":"array","maxItems":10,"items":{"type":"object","description":"One alternative inside a funnel step's OR group. `filters` uses the same canonical `{field, op, value}` envelope as `FunnelStep.filters` and binds to this member only: `(A AND filtersA) OR (B AND filtersB)`.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"]},"event":{"type":"string","minLength":1},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter."},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token."},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$"},{"type":"number"}]},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."}]}},"required":["field","op"]},"description":"Member-scoped predicates, AND-joined within this member."}},"required":["type","event"]},"description":"Optional OR group (funnel steps only, max 10). When present and non-empty the step matches any of these events, e.g. `[{\"type\":\"track\",\"event\":\"Swap Initiated\"},{\"type\":\"track\",\"event\":\"Limit Order Placed\"}]`. The primary `type`/`event` is always included."},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter."},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token."},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$"},{"type":"number"}]},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator."}]}},"required":["field","op"]}}},"required":["type","event"],"additionalProperties":true},"description":"Ordered list of funnel steps. Only present when `chart_type` is `funnel`.","uniqueKey":"steps.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps","typeLabel":"object[] | null"},"settings":{"oneOf":[{"type":"object","description":"Type-specific configuration. See `ChartSettings` for all fields.","properties":{"funnelType":{"type":"string","enum":["closed","open"],"default":"closed","description":"**Funnel only.** `closed`: users must complete steps in strict order with no intervening events. `open`: users may complete steps in order but other events may occur between steps.","uniqueKey":"settings.oneOf.0.funnelType","typeLabel":"enum\u003cstring>"},"conversionWindow":{"type":"object","description":"**Funnel \u0026 user_paths.** Maximum time from Step 1 for a user to complete all steps.","properties":{"value":{"type":"integer","minimum":1,"description":"Number of time units.","isRequired":true,"uniqueKey":"settings.oneOf.0.conversionWindow.value","typeLabel":"integer"},"unit":{"type":"string","enum":["hour","day","week"],"description":"Time unit. `week` = 7 days.","isRequired":true,"uniqueKey":"settings.oneOf.0.conversionWindow.unit","typeLabel":"enum\u003cstring>"}},"required":["value","unit"],"uniqueKey":"settings.oneOf.0.conversionWindow","typeLabel":"object"},"breakdown":{"type":"string","enum":["device","browser","os","location","referrer","ref","utm_source","utm_medium","utm_campaign","utm_term","utm_content","builder_codes"],"description":"**Funnel only.** Split each funnel bar by this dimension. The top categories are shown individually; the rest are collapsed into 'Others'.","uniqueKey":"settings.oneOf.0.breakdown","typeLabel":"enum\u003cstring>"},"anchors":{"type":"array","minItems":1,"items":{"type":"object","description":"A single funnel or user-path step. Event-property predicates are stored in `filters`, using the same canonical `{field, op, value}` envelope as every other filter surface. Funnel steps (not user-path anchors or retention filters) may also carry `events`, an OR group: the step then matches any listed event. `type`/`event` stay the step's primary event and are always part of the group; `filters` apply to the whole group.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"description":"`event`: built-in page/connect/transaction events; `track`: custom tracked events; `decoded_log`: decoded smart-contract events.","isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"description":"Event name (e.g. `page`, `connect`, `transaction`, or a custom track event name).","isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].event","typeLabel":"string"},"events":{"type":"array","maxItems":10,"items":{"type":"object","description":"One alternative inside a funnel step's OR group. `filters` uses the same canonical `{field, op, value}` envelope as `FunnelStep.filters` and binds to this member only: `(A AND filtersA) OR (B AND filtersB)`.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].event","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters.items.[INDEX]","typeLabel":"object"},"description":"Member-scoped predicates, AND-joined within this member.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX].filters","typeLabel":"object[]"}},"required":["type","event"],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events.items.[INDEX]","typeLabel":"object"},"description":"Optional OR group (funnel steps only, max 10). When present and non-empty the step matches any of these events, e.g. `[{\"type\":\"track\",\"event\":\"Swap Initiated\"},{\"type\":\"track\",\"event\":\"Limit Order Placed\"}]`. The primary `type`/`event` is always included.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].events","typeLabel":"object[]"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX].filters","typeLabel":"object[]"}},"required":["type","event"],"additionalProperties":true,"uniqueKey":"settings.oneOf.0.anchors.items.[INDEX]","typeLabel":"object"},"description":"**user_paths (required).** Ordered path anchors. The first entry starts the flow; the last entry ends it. A single entry creates an open-ended flow.","uniqueKey":"settings.oneOf.0.anchors","typeLabel":"object[]"},"maxSteps":{"type":"integer","minimum":2,"maximum":5,"default":3,"description":"**user_paths.** Maximum number of steps to show in the flow (2 to 5). Values above 5 are clamped to 5.","uniqueKey":"settings.oneOf.0.maxSteps","typeLabel":"integer"},"nodesPerStep":{"type":"integer","minimum":2,"maximum":8,"default":5,"description":"**user_paths.** Maximum number of unique event nodes visible per step (2 to 8). Values above 8 are clamped to 8.","uniqueKey":"settings.oneOf.0.nodesPerStep","typeLabel":"integer"},"filters":{"type":"string","description":"**user_paths.** JSON-encoded string of additional filters applied to the path query.","uniqueKey":"settings.oneOf.0.filters","typeLabel":"string"},"retentionFilter":{"oneOf":[{"type":"object","description":"**retention.** Event that qualifies a returning visit as 'retained'. If `null`, any event counts as a return.","required":["type","event"],"properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"description":"`event`: built-in page/connect/transaction events; `track`: custom tracked events; `decoded_log`: decoded smart-contract events.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"description":"Event name (e.g. `page`, `connect`, `transaction`, or a custom track event name).","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.event","typeLabel":"string"},"events":{"type":"array","maxItems":10,"items":{"type":"object","description":"One alternative inside a funnel step's OR group. `filters` uses the same canonical `{field, op, value}` envelope as `FunnelStep.filters` and binds to this member only: `(A AND filtersA) OR (B AND filtersB)`.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].event","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX]","typeLabel":"object"},"description":"Member-scoped predicates, AND-joined within this member.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX].filters","typeLabel":"object[]"}},"required":["type","event"],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events.items.[INDEX]","typeLabel":"object"},"description":"Optional OR group (funnel steps only, max 10). When present and non-empty the step matches any of these events, e.g. `[{\"type\":\"track\",\"event\":\"Swap Initiated\"},{\"type\":\"track\",\"event\":\"Limit Order Placed\"}]`. The primary `type`/`event` is always included.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.events","typeLabel":"object[]"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0.filters","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.0","typeLabel":"object"},{"type":"null","description":"**retention.** Event that qualifies a returning visit as 'retained'. If `null`, any event counts as a return.","uniqueKey":"settings.oneOf.0.retentionFilter.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.retentionFilter","typeLabel":"object | null"},"entryFilter":{"oneOf":[{"type":"object","description":"**retention (required).** Event that places a user into the cohort. If `null`, any event counts as cohort entry. The key must be present even when its value is `null`.","required":["type","event"],"properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"description":"`event`: built-in page/connect/transaction events; `track`: custom tracked events; `decoded_log`: decoded smart-contract events.","isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"description":"Event name (e.g. `page`, `connect`, `transaction`, or a custom track event name).","isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.event","typeLabel":"string"},"events":{"type":"array","maxItems":10,"items":{"type":"object","description":"One alternative inside a funnel step's OR group. `filters` uses the same canonical `{field, op, value}` envelope as `FunnelStep.filters` and binds to this member only: `(A AND filtersA) OR (B AND filtersB)`.","properties":{"type":{"type":"string","enum":["event","track","decoded_log"],"isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"event":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].event","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters.items.[INDEX]","typeLabel":"object"},"description":"Member-scoped predicates, AND-joined within this member.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX].filters","typeLabel":"object[]"}},"required":["type","event"],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events.items.[INDEX]","typeLabel":"object"},"description":"Optional OR group (funnel steps only, max 10). When present and non-empty the step matches any of these events, e.g. `[{\"type\":\"track\",\"event\":\"Swap Initiated\"},{\"type\":\"track\",\"event\":\"Limit Order Placed\"}]`. The primary `type`/`event` is always included.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.events","typeLabel":"object[]"},"filters":{"type":"array","items":{"type":"object","description":"A canonical filter on a funnel, flow, retention, or user-path step.","properties":{"field":{"type":"string","description":"Column or property targeted by this filter.","isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","gt","lt","gte","lte","in","nin","startsWith","endsWith","contains","notEmpty","isEmpty"],"description":"Canonical comparison operator token.","isRequired":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","pattern":"^[^|]*$","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","minItems":1,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"},{"type":"null","description":"Value to compare against. Omit for `notEmpty` and `isEmpty`. For `in` / `nin`, pass a non-empty array or a pipe-delimited string. Array string members cannot contain a literal `|`, which is reserved as the Tinybird membership separator.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[] | null"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0.filters","typeLabel":"object[]"}},"additionalProperties":true,"uniqueKey":"settings.oneOf.0.entryFilter.oneOf.0","typeLabel":"object"},{"type":"null","description":"**retention (required).** Event that places a user into the cohort. If `null`, any event counts as cohort entry. The key must be present even when its value is `null`.","uniqueKey":"settings.oneOf.0.entryFilter.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings.oneOf.0.entryFilter","typeLabel":"object | null"},"retentionUserFilters":{"type":"array","items":{"type":"object","description":"A user-level retention cohort filter using the canonical `{field, op, value}` envelope.","properties":{"field":{"type":"string","description":"The user property to filter on (e.g. `device`, `browser`, `os`, `location`, `utm_source`, `utm_medium`, `utm_campaign`).","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionUserFilters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","in","nin","gt","gte","lt","lte","notEmpty","isEmpty"],"description":"Comparison operator. Only the canonical terse tokens are accepted (the retired long forms `greater`/`greaterOrEqual`/`less`/`lessOrEqual` are rejected). `notEmpty` (\"is not empty\") and `isEmpty` (\"is empty\") are value-less existence checks on a string user property; the `value` is ignored. Substring operators (`startsWith` / `endsWith` / `contains`) are not supported on retention user filters.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionUserFilters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"The value to compare against. Omit for `notEmpty` and `isEmpty`.","uniqueKey":"settings.oneOf.0.retentionUserFilters.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"The value to compare against. Omit for `notEmpty` and `isEmpty`.","uniqueKey":"settings.oneOf.0.retentionUserFilters.items.[INDEX].value.oneOf.1","typeLabel":"number"}],"uniqueKey":"settings.oneOf.0.retentionUserFilters.items.[INDEX].value","typeLabel":"string | number"}},"required":["field","op"],"uniqueKey":"settings.oneOf.0.retentionUserFilters.items.[INDEX]","typeLabel":"object"},"description":"**retention.** Zero or more user-segment filters that narrow the cohort (e.g. only desktop users, only users from a specific UTM source).","uniqueKey":"settings.oneOf.0.retentionUserFilters","typeLabel":"object[]"},"retentionSignalType":{"type":"string","enum":["event","label"],"default":"event","description":"**retention.** `event` (default): cohort and retention are driven by events. `label`: driven by a label value over time (see `retentionLabelSignal`); when `label`, the event fields are ignored.","uniqueKey":"settings.oneOf.0.retentionSignalType","typeLabel":"enum\u003cstring>"},"retentionLabelSignal":{"type":"object","description":"**retention.** The label predicate when `retentionSignalType` is `label`.","properties":{"field":{"type":"string","description":"The label tag to evaluate (the value of `tag_id` set via `POST /v0/profiles/:address/labels`).","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionLabelSignal.field","typeLabel":"string"},"op":{"type":"string","enum":["gt","gte","lt","lte","eq"],"default":"gt","description":"Comparison operator. Numeric operators coerce both sides via toFloat64OrZero, so a numeric op on a non-numeric value yields no match (not an error).","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionLabelSignal.op","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"The threshold/value to compare against. Always a string; numeric ops coerce it.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionLabelSignal.value","typeLabel":"string"},"chain_id":{"type":"string","default":"","description":"Optional chain scope. Empty string matches across all chains.","uniqueKey":"settings.oneOf.0.retentionLabelSignal.chain_id","typeLabel":"string"}},"required":["field","op","value"],"uniqueKey":"settings.oneOf.0.retentionLabelSignal","typeLabel":"object"},"retentionCohortLabelFilters":{"type":"array","description":"**retention.** Label predicates that restrict an event-based cohort.","items":{"type":"object","description":"A label predicate that restricts an event-based retention cohort. Uses the canonical filter envelope.","properties":{"field":{"type":"string","description":"The label tag to evaluate.","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionCohortLabelFilters.items.[INDEX].field","typeLabel":"string"},"op":{"type":"string","enum":["eq","neq","contains","gt","gte","lt","lte"],"default":"eq","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionCohortLabelFilters.items.[INDEX].op","typeLabel":"enum\u003cstring>"},"value":{"type":"string","isRequired":true,"uniqueKey":"settings.oneOf.0.retentionCohortLabelFilters.items.[INDEX].value","typeLabel":"string"},"chain_id":{"type":"string","default":"","description":"Optional chain scope. Empty string matches across all chains.","uniqueKey":"settings.oneOf.0.retentionCohortLabelFilters.items.[INDEX].chain_id","typeLabel":"string"}},"required":["field","op","value"],"uniqueKey":"settings.oneOf.0.retentionCohortLabelFilters.items.[INDEX]","typeLabel":"object"},"uniqueKey":"settings.oneOf.0.retentionCohortLabelFilters","typeLabel":"object[]"}},"uniqueKey":"settings.oneOf.0","typeLabel":"object"},{"type":"null","description":"Type-specific configuration. See `ChartSettings` for all fields.","uniqueKey":"settings.oneOf.1","typeLabel":"null"}],"uniqueKey":"settings","typeLabel":"object | null"}},"required":["id","chart_type","title","query","project_id","board_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","chart_type":"table","title":"\u003cstring>","query":"\u003cstring>","project_id":"\u003cstring>","board_id":"\u003cstring>","description":"\u003cstring>","x_axis":"\u003cstring>","y_axis":["\u003cstring>"],"group_by":"\u003cstring>","steps":[{"type":"event","event":"\u003cstring>","events":[{"type":"event","event":"\u003cstring>","filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]}],"filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]}],"settings":{"funnelType":"closed","conversionWindow":{"value":2,"unit":"hour"},"breakdown":"device","anchors":[{"type":"event","event":"\u003cstring>","events":[{"type":"event","event":"\u003cstring>","filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]}],"filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]}],"maxSteps":3,"nodesPerStep":5,"filters":"\u003cstring>","retentionFilter":{"type":"event","event":"\u003cstring>","events":[{"type":"event","event":"\u003cstring>","filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]}],"filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]},"entryFilter":{"type":"event","event":"\u003cstring>","events":[{"type":"event","event":"\u003cstring>","filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]}],"filters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}]},"retentionUserFilters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>"}],"retentionSignalType":"event","retentionLabelSignal":{"field":"\u003cstring>","op":"gt","value":"\u003cstring>","chain_id":""},"retentionCohortLabelFilters":[{"field":"\u003cstring>","op":"eq","value":"\u003cstring>","chain_id":""}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"715bca5b-6219-4d63-962d-86821a1c4b4d":{"description":"The request was rejected. `code` is either `INVALID_VALIDATION_REQUEST` (Zod schema mismatch; `details` carries a `{ fieldPath: message }` map) or `BAD_REQUEST` (semantic validation failure outside Zod, e.g. mismatched IDs, business-rule violations). Branch on `code`, not status, to tell the two apart.","content":{"application/json":{"schema":{"type":"object","description":"Standard error envelope returned by every public API endpoint for any non-2xx response. The HTTP status code carries success/failure; the body provides a machine-readable `code`, a human-readable `message`, and a `doc_url` pointing at the matching section of the docs so agents can fetch context on the fly.","properties":{"error":{"type":"object","required":["code","message","doc_url"],"properties":{"code":{"type":"string","description":"Stable, enumerated error codes. New codes may be added in any release; clients should treat unknown codes as the closest matching HTTP status family.","enum":["INTERNAL_SERVER_ERROR","INVALID_VALIDATION_REQUEST","UNAUTHORIZED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","INVALID_CHAIN_ID","CONTEXT_LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","TOO_MANY_REQUESTS","IDEMPOTENCY_IN_PROGRESS","INVALID_IDEMPOTENCY_KEY"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error description. Wording may change between releases, so branch on `code`, not `message`.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Link to the matching section of the errors reference at https://docs.formo.so/api/errors.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string\u003curi>"},"param":{"type":"string","description":"When the error pertains to a specific request field, the dotted path to that field (e.g. `body.trigger_filters.0.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Code-specific extra context. For `INVALID_VALIDATION_REQUEST` this is a `{ fieldPath: message }` map of every Zod validation failure.","uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"validation":{"title":"validation","value":{"error":{"code":"INVALID_VALIDATION_REQUEST","message":"Invalid request data","doc_url":"https://docs.formo.so/api/errors#invalid_validation_request","details":{"body.name":"String must contain at least 1 character(s)"}}}},"semantic":{"title":"semantic","value":{"error":{"code":"BAD_REQUEST","message":"Target board must be different from the current board","doc_url":"https://docs.formo.so/api/errors#bad_request"}}}},"exampleType":"examples"}},"exampleType":"examples"},"a51975aa-eaf0-4faf-a8f4-9a1ec7ebd9af":{"description":"The request conflicts with current resource state, or an `Idempotency-Key` request with the same key is currently in flight.","content":{"application/json":{"schema":{"type":"object","description":"Standard error envelope returned by every public API endpoint for any non-2xx response. The HTTP status code carries success/failure; the body provides a machine-readable `code`, a human-readable `message`, and a `doc_url` pointing at the matching section of the docs so agents can fetch context on the fly.","properties":{"error":{"type":"object","required":["code","message","doc_url"],"properties":{"code":{"type":"string","description":"Stable, enumerated error codes. New codes may be added in any release; clients should treat unknown codes as the closest matching HTTP status family.","enum":["INTERNAL_SERVER_ERROR","INVALID_VALIDATION_REQUEST","UNAUTHORIZED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","INVALID_CHAIN_ID","CONTEXT_LIMIT_EXCEEDED","SERVICE_UNAVAILABLE","TOO_MANY_REQUESTS","IDEMPOTENCY_IN_PROGRESS","INVALID_IDEMPOTENCY_KEY"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error description. Wording may change between releases, so branch on `code`, not `message`.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","format":"uri","description":"Link to the matching section of the errors reference at https://docs.formo.so/api/errors.","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string\u003curi>"},"param":{"type":"string","description":"When the error pertains to a specific request field, the dotted path to that field (e.g. `body.trigger_filters.0.value`).","uniqueKey":"error.param","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Code-specific extra context. For `INVALID_VALIDATION_REQUEST` this is a `{ fieldPath: message }` map of every Zod validation failure.","uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"IDEMPOTENCY_IN_PROGRESS","message":"A request with this Idempotency-Key is already in progress. Retry shortly.","doc_url":"https://docs.formo.so/api/errors#idempotency_in_progress"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"IDEMPOTENCY_IN_PROGRESS","message":"A request with this Idempotency-Key is already in progress. Retry shortly.","doc_url":"https://docs.formo.so/api/errors#idempotency_in_progress"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"650d4775-851d-4233-95f9-33ed3b93f5a5":{"WorkspaceApiKey":{"type":"http","scheme":"bearer","description":"Workspace API key (e.g. `formo_xxx`). Create one in the Formo dashboard under Team Settings > API.","scopes":[],"schemeName":"WorkspaceApiKey"}}},"servers":{"8aa94e95-0cb5-48a7-81cf-15ff04507779":{"url":"https://api.formo.so","description":"API Server (boards, alerts, contracts, segments, profiles, query, import)"},"2f4217cb-e041-4c6d-9dd3-f4994c54fd31":{"url":"https://events.formo.so","description":"Events Server (event ingestion)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Workspace API key (e.g. `formo_xxx`). Create one in the Formo dashboard under Team Settings > API.","scopes":[],"schemeName":"WorkspaceApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Workspace API key (e.g. `formo_xxx`). Create one in the Formo dashboard under Team Settings > API.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"WorkspaceApiKey","name":"Authorization"}],"title":"WorkspaceApiKey"}]},"originalFileLocation":"api/openapi.json"},"subdomain":"formo","siteName":"Formo Docs","title":"Move Chart - Formo Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-06T11:38:47.392Z","originalFileLocation":"api/boards/move-chart.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=\"light\"}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=\"Move a chart to a different board in the same project. The target board must differ from the current one.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Formo Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_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/formo/wOme_sxFSkOvt-zW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Move Chart - Formo Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Move a chart to a different board in the same project. The target board must differ from the current one.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Formo Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.formo.so/api/boards/move-chart\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://formo.mintlify.app/_mintlify/api/og/v2?division=Charts+API\u0026amp;title=Move+Chart\u0026amp;description=Move+a+chart+to+a+different+board+in+the+same+project.+The+target+board+must+differ+from+the+current+one.\u0026amp;theme=88189b71ebb8a1c71f9b558e\u0026amp;signature=712517130e07be624e0ded781b3c0102aab92673c0046cf7b7e4c42dd2c28728\">\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=\"Move Chart - Formo Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Move a chart to a different board in the same project. The target board must differ from the current one.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://formo.mintlify.app/_mintlify/api/og/v2?division=Charts+API\u0026amp;title=Move+Chart\u0026amp;description=Move+a+chart+to+a+different+board+in+the+same+project.+The+target+board+must+differ+from+the+current+one.\u0026amp;theme=88189b71ebb8a1c71f9b558e\u0026amp;signature=712517130e07be624e0ded781b3c0102aab92673c0046cf7b7e4c42dd2c28728\">\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/formo/wOme_sxFSkOvt-zW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Formo Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"71E42B1EAE01EE25D08368832DB15087\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.formo.so/api/boards/move-chart\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/boards/move-chart.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.formo.so/#organization\",\"name\":\"Formo Docs\",\"url\":\"https://docs.formo.so\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/formo/Tkq8h2U3p6xcPPy8/logo/light.svg?fit=max\u0026auto=format\u0026n=Tkq8h2U3p6xcPPy8\u0026q=85\u0026s=44c0ee89d6c69a17e7599ec5db01b800\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.formo.so#website\",\"name\":\"Formo Docs\",\"url\":\"https://docs.formo.so\",\"publisher\":{\"@id\":\"https://docs.formo.so/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.formo.so/api/boards/move-chart#webpage\",\"url\":\"https://docs.formo.so/api/boards/move-chart\",\"name\":\"Move Chart\",\"description\":\"Move a chart to a different board in the same project. The target board must differ from the current one.\",\"dateModified\":\"2026-08-06T11:38:47.392Z\",\"isPartOf\":{\"@id\":\"https://docs.formo.so#website\"},\"breadcrumb\":{\"@id\":\"https://docs.formo.so/api/boards/move-chart#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.formo.so/api/boards/move-chart#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Charts API\",\"item\":\"https://docs.formo.so/api/boards/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Move Chart\",\"item\":\"https://docs.formo.so/api/boards/move-chart\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.formo.so/api/boards/move-chart#apireference\",\"headline\":\"Move Chart\",\"name\":\"Move Chart\",\"description\":\"Move a chart to a different board in the same project. The target board must differ from the current one.\",\"url\":\"https://docs.formo.so/api/boards/move-chart\",\"mainEntityOfPage\":{\"@id\":\"https://docs.formo.so/api/boards/move-chart#webpage\"},\"dateModified\":\"2026-08-06T11:38:47.392Z\",\"publisher\":{\"@id\":\"https://docs.formo.so/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.formo.so#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Formo Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Formo Docs","nav":{"global":{"anchors":[{"anchor":"Changelog","icon":"map","href":"https://formo.so/changelog"},{"anchor":"Support","icon":"headset","href":"https://formo.so/support"},{"anchor":"Status","icon":"square-check","href":"https://status.formo.so"}]},"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/intro"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/onchain-attribution"}]},{"tab":"Data","pages":[{"title":"Data","href":"/data/what-we-collect"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdks/web"}]},{"tab":"API","groups":[{"group":"API Documentation","pages":[{"title":"API overview","sidebarTitle":"Overview","icon":"square-info","iconType":"solid","href":"/api/overview"},{"title":"Authentication","icon":"key","iconType":"solid","href":"/api/authentication"},{"title":"x402 / MPP","icon":"robot","href":"/api/x402"},{"title":"Idempotency","icon":"rotate","iconType":"solid","href":"/api/idempotency"},{"title":"Errors","icon":"triangle-exclamation","iconType":"solid","href":"/api/errors"}]},{"group":"Events API","pages":[{"title":"Track Event","openapi":"POST /v0/raw_events","href":"/api/events/track"}]},{"group":"Profiles API","pages":[{"title":"Get Profile","openapi":"GET /v0/profiles/{address}","href":"/api/profiles/get"},{"title":"Search Profiles","openapi":"GET /v0/profiles","href":"/api/profiles/search"},{"title":"Update Properties","openapi":"PUT /v0/profiles/{address}/properties","href":"/api/profiles/update-properties"},{"title":"Batch Update Properties","openapi":"POST /v0/profiles/properties","href":"/api/profiles/batch-update-properties"},{"title":"Add Labels","openapi":"POST /v0/profiles/{address}/labels","href":"/api/profiles/add-labels"},{"title":"Delete Label","openapi":"DELETE /v0/profiles/{address}/labels","href":"/api/profiles/delete-label"},{"title":"Batch Add Labels","openapi":"POST /v0/profiles/labels","href":"/api/profiles/batch-add-labels"},{"title":"Import Wallets","openapi":"POST /v0/import","href":"/api/profiles/import"}]},{"group":"Query API","pages":[{"title":"Send Query","openapi":"POST /v0/query","href":"/api/query"},{"title":"Get KPIs","openapi":"GET /v0/kpis","href":"/api/query/kpis"},{"title":"Get Top Pages","openapi":"GET /v0/top_pages","href":"/api/query/top-pages"},{"title":"Get Top Sources","openapi":"GET /v0/top_sources","href":"/api/query/top-sources"},{"title":"Get Top Locations","openapi":"GET /v0/top_locations","href":"/api/query/top-locations"},{"title":"Get Top Wallets","openapi":"GET /v0/top_wallets","href":"/api/query/top-wallets"},{"title":"Get Top Chains","openapi":"GET /v0/top_chains","href":"/api/query/top-chains"},{"title":"Get Top Events","openapi":"GET /v0/top_events","href":"/api/query/top-events"},{"title":"Get Revenue by Metric","openapi":"GET /v0/revenue_by_metric","href":"/api/query/revenue-by-metric"},{"title":"Get Volume by Metric","openapi":"GET /v0/volume_by_metric","href":"/api/query/volume-by-metric"},{"title":"Get Revenue Overview","openapi":"GET /v0/revenue_overview","href":"/api/query/revenue-overview"},{"title":"Get Revenue Timeseries","openapi":"GET /v0/revenue_timeseries","href":"/api/query/revenue-timeseries"},{"title":"Get Event Timeseries","openapi":"GET /v0/event_timeseries","href":"/api/query/event-timeseries"},{"title":"Get User Lifecycle","openapi":"GET /v0/lifecycle","href":"/api/query/user-lifecycle"},{"title":"Get User Frequency","openapi":"GET /v0/frequency","href":"/api/query/user-frequency"},{"title":"Get Retention","openapi":"GET /v0/retention","href":"/api/query/retention"},{"title":"Get Funnel","openapi":"GET /v0/funnel","href":"/api/query/funnel"},{"title":"Get Flow","openapi":"GET /v0/flow","href":"/api/query/flow"}]},{"group":"Alerts API","pages":[{"title":"List Alerts","openapi":"GET /v0/alerts","href":"/api/alerts/list"},{"title":"Get Alert","openapi":"GET /v0/alerts/{alertId}","href":"/api/alerts/get"},{"title":"Create Alert","openapi":"POST /v0/alerts","href":"/api/alerts/create"},{"title":"Update Alert","openapi":"PUT /v0/alerts/{alertId}","href":"/api/alerts/update"},{"title":"Delete Alert","openapi":"DELETE /v0/alerts/{alertId}","href":"/api/alerts/delete"},{"title":"Toggle Alert","openapi":"PATCH /v0/alerts/{alertId}","href":"/api/alerts/toggle"}]},{"group":"Charts API","pages":[{"title":"List Boards","openapi":"GET /v0/boards","href":"/api/boards/list"},{"title":"Get Board","openapi":"GET /v0/boards/{boardId}","href":"/api/boards/get"},{"title":"Create Board","openapi":"POST /v0/boards","href":"/api/boards/create"},{"title":"Update Board","openapi":"PATCH /v0/boards/{boardId}","href":"/api/boards/update"},{"title":"Delete Board","openapi":"DELETE /v0/boards/{boardId}","href":"/api/boards/delete"},{"title":"List Charts","openapi":"GET /v0/boards/{boardId}/charts","href":"/api/boards/list-charts"},{"title":"Get Chart","openapi":"GET /v0/boards/{boardId}/charts/{chartId}","href":"/api/boards/get-chart"},{"title":"Create Chart","openapi":"POST /v0/boards/{boardId}/charts","href":"/api/boards/create-chart"},{"title":"Update Chart","openapi":"PUT /v0/boards/{boardId}/charts/{chartId}","href":"/api/boards/update-chart"},{"title":"Delete Chart","openapi":"DELETE /v0/boards/{boardId}/charts/{chartId}","href":"/api/boards/delete-chart"},{"title":"Execute Saved Chart Query","openapi":"GET /v0/boards/{boardId}/charts/{chartId}/query","href":"/api/boards/query-chart"},{"title":"Duplicate Chart","description":"Create a copy of a chart on the same board. Returns the ID of the newly created chart.","openapi":"POST /v0/boards/{boardId}/charts/{chartId}/duplicate","href":"/api/boards/duplicate-chart"},{"title":"Move Chart","openapi":"PUT /v0/boards/{boardId}/charts/{chartId}/move","href":"/api/boards/move-chart"},{"title":"Reorder Charts","description":"Set the display order of a board's charts. Charts omitted from the list keep their relative order after the listed ones.","openapi":"PUT /v0/boards/{boardId}/charts/reorder","href":"/api/boards/reorder-charts"}]},{"group":"Contracts API","pages":[{"title":"List Contracts","openapi":"GET /v0/contracts","href":"/api/contracts/list"},{"title":"Get Contract","openapi":"GET /v0/contracts/{chain}/{address}","href":"/api/contracts/get"},{"title":"Add Contract","openapi":"POST /v0/contracts","href":"/api/contracts/create"},{"title":"Update Contract","openapi":"PUT /v0/contracts/{chain}/{address}","href":"/api/contracts/update"},{"title":"Delete Contract","openapi":"DELETE /v0/contracts/{chain}/{address}","href":"/api/contracts/delete"}]},{"group":"Segments API","pages":[{"title":"List Segments","openapi":"GET /v0/segments","href":"/api/segments/list"},{"title":"Create Segment","openapi":"POST /v0/segments","href":"/api/segments/create"},{"title":"Delete Segment","openapi":"DELETE /v0/segments/{segmentId}","href":"/api/segments/delete"}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"Security","pages":[{"title":"Security","href":"/security/overview"}]}]},"basePath":"","title":"Move Chart - Formo Docs","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}