One endpoint, two mutually exclusive modes: update the graph (a new automationVersionId on the same automationId) or change lifecycle state (published, paused). The modes cannot be combined: update first, then PATCH { "published": true }.
Use when editing a graph or changing runtime state of an automation created with createAutomation. Manual-audience runs are controlled with pauseAudienceRun, resumeAudienceRun and cancelAudienceRun, not here.
Input Update: one or more of name, description, nodes, connections, triggerEventId, under the same typed condition contract as create (explicit type, canonical snake_case operator, no value for unary operators, type-correct values elsewhere); dryRun: true validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes NODE_ID_REPLACED reports. Lifecycle: published: true promotes the stored latest version live (optionally pin automationVersionId; the graph is validated first), published: false unpublishes, paused: true or false freezes or resumes future send steps (stopInFlight also stops runs already in progress).
Returns the bare automation row, or with dryRun: true a 200 AutomationDryRunReport{ valid, blockers[], warnings[], blockingIssues[], nodeCounts }: blockingIssues[] lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (fatal says what the reference would do: true for filter or split conditions and triple-brace {{{ }}} body tokens would break the run, false for subject, previewText, fromName, replyTo and double-brace body tags would render empty); valid is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, published describes the returned row, isLive, liveVersion and liveAutomationVersionId describe the automation, and warnings[] carries DRAFT_SAVED_NOT_LIVE. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and warnings[] carries TRIGGER_EVENT_NOT_RECEIVED saying what to set up.
Errors404 AUTOMATION_NOT_FOUND, AUTOMATION_VERSION_NOT_FOUND (pin liveAutomationVersionId, a versions[] id, or a run row’s automationVersionId), TRIGGER_EVENT_NOT_FOUND; 400 AUTOMATION_GRAPH_INVALID (details.issues[]); 409 AUTOMATION_VERSION_CONFLICT (re-read, reapply, retry); 422 PUBLISH_VALIDATION_FAILED (details.blockers[]; a cdn.brew.new image a step would send that does not exist is a blocker, listed in details.missingImages[], and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access), AUTOMATION_NOT_PUBLISHED (nothing to unpublish; with stopInFlight: true on a draft, also no contacts in flight to stop), AUTOMATION_NOT_PAUSABLE (a manual-audience automation pauses through its runs).
See alsocreateAutomation, testAutomation, runAutomation, listAutomationRuns.
The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise 400 BRAND_ID_REQUIRED — there is no default brand); list ids with GET /v1/brands. Brand-scoped credentials may omit it, and sending a different brand returns 403 BRAND_SCOPE_MISMATCH. A brand outside your organization returns 404 BRAND_NOT_FOUND.
The full edge list; it replaces the stored one. Omit to keep the stored edges (also when sending nodes); an edge whose end no longer exists is then refused with AUTOMATION_GRAPH_INVALID.
Optimistic concurrency guard: the automationVersionId read before deriving this update. The save is refused with a conflict when the automation has changed since.
Lifecycle action: true validates + publishes the STORED latest version (a saved edit goes live only after this); false unpublishes. Cannot be combined with field/graph updates — update first, then publish.
With published: false only — ALSO permanently stop contacts already mid-flow (default: they drain to completion). On an automation that is already a draft it only stops those contacts, and is a 422 AUTOMATION_NOT_PUBLISHED when none are in flight.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Brew Help Docs","colors":{"primary":"#FF772D","light":"#FF772D","dark":"#FF772D"},"logo":{"light":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/lightmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=5e906ff65142dc905a773e7747b47816","dark":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/darkmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=d9aa0d94ceaaf92451334849952286c9","href":"https://brew.new/"},"favicon":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/favicon.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=bb65587bb488372fc3a5faa7a6b4d2fe","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#f7f7f7","dark":"#262624"}},"navbar":{"links":[{"href":"https://cal.com/team/brewdotnew/brew-demo","label":"Talk with founders"}],"primary":{"type":"button","label":"Log In","href":"https://brew.new/sign-in"}},"footer":{"socials":{"website":"https://www.brew.new","youtube":"https://www.youtube.com/@brewdotnew","twitter":"https://x.com/brewdotnew","linkedin":"https://www.linkedin.com/company/brewdotnew"}},"search":{"prompt":"Ask any question about Brew"},"seo":{"metatags":{"og:image":"https://docs.brew.new/images/og/default.png","description":"Brew is the AI-native email platform for modern teams and AI agents. Describe the email and Brew designs it on brand, builds the audience, and sends it.","keywords":"AI email marketing, Brew, AI-native email platform, on-brand email, email automations, email analytics, AI agents, MCP email server","robots":"index, follow"},"indexing":"all"},"fonts":{"family":"Inter"},"contextual":{"options":["copy","view","claude","chatgpt","grok","perplexity","mcp","cursor","vscode","download-spec"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brew-796f053a","hasAudioNarration":false,"actualSubdomain":"brew-796f053a","customDomains":["docs.brew.new"],"gitSource":{"type":"github","owner":"getbrew","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af0a4d9c5f2ed8c323f69ae","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Developers","count":175},{"language":"default","tag":"Public API v1","count":126},{"language":"default","tag":"Changelog","count":96},{"language":"default","tag":"2026","count":42},{"language":"default","tag":"Docs","count":40},{"language":"default","tag":"Integrations","count":33},{"language":"default","tag":"Emails","count":30},{"language":"default","tag":"Automations","count":29},{"language":"default","tag":"Guides","count":27},{"language":"default","tag":"API Contracts","count":14}]},"assistantConfig":{"deflection":{"enabled":true,"email":"philip@brew.new","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/public-v1/automations/update-or-publish-an-automation","slug":"/api-reference/public-v1/automations/update-or-publish-an-automation","pageMetadata":{"title":"Update or publish an automation","description":"One endpoint, two mutually exclusive modes: update the graph (a new `automationVersionId` on the same `automationId`) or change lifecycle state (`published`, `paused`). The modes cannot be combined: update first, then `PATCH { \"published\": true }`.\n\n**Use when** editing a graph or changing runtime state of an automation created with `createAutomation`. Manual-audience runs are controlled with `pauseAudienceRun`, `resumeAudienceRun` and `cancelAudienceRun`, not here.\n\n**Input** Update: one or more of `name`, `description`, `nodes`, `connections`, `triggerEventId`, under the same typed condition contract as create (explicit `type`, canonical snake_case `operator`, no `value` for unary operators, type-correct values elsewhere); `dryRun: true` validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes `NODE_ID_REPLACED` reports. Lifecycle: `published: true` promotes the stored latest version live (optionally pin `automationVersionId`; the graph is validated first), `published: false` unpublishes, `paused: true` or `false` freezes or resumes future send steps (`stopInFlight` also stops runs already in progress).\n\n**Returns** the bare automation row, or with `dryRun: true` a `200 AutomationDryRunReport` `{ valid, blockers[], warnings[], blockingIssues[], nodeCounts }`: `blockingIssues[]` lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (`fatal` says what the reference would do: `true` for filter or split conditions and triple-brace `{{{ }}}` body tokens would break the run, `false` for subject, previewText, fromName, replyTo and double-brace body tags would render empty); `valid` is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, `published` describes the returned row, `isLive`, `liveVersion` and `liveAutomationVersionId` describe the automation, and `warnings[]` carries `DRAFT_SAVED_NOT_LIVE`. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and `warnings[]` carries `TRIGGER_EVENT_NOT_RECEIVED` saying what to set up.\n\n**Errors** `404 AUTOMATION_NOT_FOUND`, `AUTOMATION_VERSION_NOT_FOUND` (pin `liveAutomationVersionId`, a `versions[]` id, or a run row's `automationVersionId`), `TRIGGER_EVENT_NOT_FOUND`; `400 AUTOMATION_GRAPH_INVALID` (`details.issues[]`); `409 AUTOMATION_VERSION_CONFLICT` (re-read, reapply, retry); `422 PUBLISH_VALIDATION_FAILED` (`details.blockers[]`; a cdn.brew.new image a step would send that does not exist is a blocker, listed in `details.missingImages[]`, and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has `emails` access), `AUTOMATION_NOT_PUBLISHED` (nothing to unpublish; with `stopInFlight: true` on a draft, also no contacts in flight to stop), `AUTOMATION_NOT_PAUSABLE` (a manual-audience automation pauses through its runs).\n\n**See also** `createAutomation`, `testAutomation`, `runAutomation`, `listAutomationRuns`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/update-or-publish-an-automation","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"One endpoint, two mutually exclusive modes: update the graph (a new \", _jsx(_components.code, {\n children: \"automationVersionId\"\n }), \" on the same \", _jsx(_components.code, {\n children: \"automationId\"\n }), \") or change lifecycle state (\", _jsx(_components.code, {\n children: \"published\"\n }), \", \", _jsx(_components.code, {\n children: \"paused\"\n }), \"). The modes cannot be combined: update first, then \", _jsx(_components.code, {\n children: \"PATCH { \\\"published\\\": true }\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Use when\"\n }), \" editing a graph or changing runtime state of an automation created with \", _jsx(_components.code, {\n children: \"createAutomation\"\n }), \". Manual-audience runs are controlled with \", _jsx(_components.code, {\n children: \"pauseAudienceRun\"\n }), \", \", _jsx(_components.code, {\n children: \"resumeAudienceRun\"\n }), \" and \", _jsx(_components.code, {\n children: \"cancelAudienceRun\"\n }), \", not here.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Input\"\n }), \" Update: one or more of \", _jsx(_components.code, {\n children: \"name\"\n }), \", \", _jsx(_components.code, {\n children: \"description\"\n }), \", \", _jsx(_components.code, {\n children: \"nodes\"\n }), \", \", _jsx(_components.code, {\n children: \"connections\"\n }), \", \", _jsx(_components.code, {\n children: \"triggerEventId\"\n }), \", under the same typed condition contract as create (explicit \", _jsx(_components.code, {\n children: \"type\"\n }), \", canonical snake_case \", _jsx(_components.code, {\n children: \"operator\"\n }), \", no \", _jsx(_components.code, {\n children: \"value\"\n }), \" for unary operators, type-correct values elsewhere); \", _jsx(_components.code, {\n children: \"dryRun: true\"\n }), \" validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes \", _jsx(_components.code, {\n children: \"NODE_ID_REPLACED\"\n }), \" reports. Lifecycle: \", _jsx(_components.code, {\n children: \"published: true\"\n }), \" promotes the stored latest version live (optionally pin \", _jsx(_components.code, {\n children: \"automationVersionId\"\n }), \"; the graph is validated first), \", _jsx(_components.code, {\n children: \"published: false\"\n }), \" unpublishes, \", _jsx(_components.code, {\n children: \"paused: true\"\n }), \" or \", _jsx(_components.code, {\n children: \"false\"\n }), \" freezes or resumes future send steps (\", _jsx(_components.code, {\n children: \"stopInFlight\"\n }), \" also stops runs already in progress).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Returns\"\n }), \" the bare automation row, or with \", _jsx(_components.code, {\n children: \"dryRun: true\"\n }), \" a \", _jsx(_components.code, {\n children: \"200 AutomationDryRunReport\"\n }), \" \", _jsx(_components.code, {\n children: \"{ valid, blockers[], warnings[], blockingIssues[], nodeCounts }\"\n }), \": \", _jsx(_components.code, {\n children: \"blockingIssues[]\"\n }), \" lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (\", _jsx(_components.code, {\n children: \"fatal\"\n }), \" says what the reference would do: \", _jsx(_components.code, {\n children: \"true\"\n }), \" for filter or split conditions and triple-brace \", _jsx(_components.code, {\n children: \"{{{ }}}\"\n }), \" body tokens would break the run, \", _jsx(_components.code, {\n children: \"false\"\n }), \" for subject, previewText, fromName, replyTo and double-brace body tags would render empty); \", _jsx(_components.code, {\n children: \"valid\"\n }), \" is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, \", _jsx(_components.code, {\n children: \"published\"\n }), \" describes the returned row, \", _jsx(_components.code, {\n children: \"isLive\"\n }), \", \", _jsx(_components.code, {\n children: \"liveVersion\"\n }), \" and \", _jsx(_components.code, {\n children: \"liveAutomationVersionId\"\n }), \" describe the automation, and \", _jsx(_components.code, {\n children: \"warnings[]\"\n }), \" carries \", _jsx(_components.code, {\n children: \"DRAFT_SAVED_NOT_LIVE\"\n }), \". Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and \", _jsx(_components.code, {\n children: \"warnings[]\"\n }), \" carries \", _jsx(_components.code, {\n children: \"TRIGGER_EVENT_NOT_RECEIVED\"\n }), \" saying what to set up.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Errors\"\n }), \" \", _jsx(_components.code, {\n children: \"404 AUTOMATION_NOT_FOUND\"\n }), \", \", _jsx(_components.code, {\n children: \"AUTOMATION_VERSION_NOT_FOUND\"\n }), \" (pin \", _jsx(_components.code, {\n children: \"liveAutomationVersionId\"\n }), \", a \", _jsx(_components.code, {\n children: \"versions[]\"\n }), \" id, or a run row’s \", _jsx(_components.code, {\n children: \"automationVersionId\"\n }), \"), \", _jsx(_components.code, {\n children: \"TRIGGER_EVENT_NOT_FOUND\"\n }), \"; \", _jsx(_components.code, {\n children: \"400 AUTOMATION_GRAPH_INVALID\"\n }), \" (\", _jsx(_components.code, {\n children: \"details.issues[]\"\n }), \"); \", _jsx(_components.code, {\n children: \"409 AUTOMATION_VERSION_CONFLICT\"\n }), \" (re-read, reapply, retry); \", _jsx(_components.code, {\n children: \"422 PUBLISH_VALIDATION_FAILED\"\n }), \" (\", _jsx(_components.code, {\n children: \"details.blockers[]\"\n }), \"; a cdn.brew.new image a step would send that does not exist is a blocker, listed in \", _jsx(_components.code, {\n children: \"details.missingImages[]\"\n }), \", and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has \", _jsx(_components.code, {\n children: \"emails\"\n }), \" access), \", _jsx(_components.code, {\n children: \"AUTOMATION_NOT_PUBLISHED\"\n }), \" (nothing to unpublish; with \", _jsx(_components.code, {\n children: \"stopInFlight: true\"\n }), \" on a draft, also no contacts in flight to stop), \", _jsx(_components.code, {\n children: \"AUTOMATION_NOT_PAUSABLE\"\n }), \" (a manual-audience automation pauses through its runs).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"See also\"\n }), \" \", _jsx(_components.code, {\n children: \"createAutomation\"\n }), \", \", _jsx(_components.code, {\n children: \"testAutomation\"\n }), \", \", _jsx(_components.code, {\n children: \"runAutomation\"\n }), \", \", _jsx(_components.code, {\n children: \"listAutomationRuns\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update or publish an automation","description":"One endpoint, two mutually exclusive modes: update the graph (a new `automationVersionId` on the same `automationId`) or change lifecycle state (`published`, `paused`). The modes cannot be combined: update first, then `PATCH { \"published\": true }`.\n\n**Use when** editing a graph or changing runtime state of an automation created with `createAutomation`. Manual-audience runs are controlled with `pauseAudienceRun`, `resumeAudienceRun` and `cancelAudienceRun`, not here.\n\n**Input** Update: one or more of `name`, `description`, `nodes`, `connections`, `triggerEventId`, under the same typed condition contract as create (explicit `type`, canonical snake_case `operator`, no `value` for unary operators, type-correct values elsewhere); `dryRun: true` validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes `NODE_ID_REPLACED` reports. Lifecycle: `published: true` promotes the stored latest version live (optionally pin `automationVersionId`; the graph is validated first), `published: false` unpublishes, `paused: true` or `false` freezes or resumes future send steps (`stopInFlight` also stops runs already in progress).\n\n**Returns** the bare automation row, or with `dryRun: true` a `200 AutomationDryRunReport` `{ valid, blockers[], warnings[], blockingIssues[], nodeCounts }`: `blockingIssues[]` lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (`fatal` says what the reference would do: `true` for filter or split conditions and triple-brace `{{{ }}}` body tokens would break the run, `false` for subject, previewText, fromName, replyTo and double-brace body tags would render empty); `valid` is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, `published` describes the returned row, `isLive`, `liveVersion` and `liveAutomationVersionId` describe the automation, and `warnings[]` carries `DRAFT_SAVED_NOT_LIVE`. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and `warnings[]` carries `TRIGGER_EVENT_NOT_RECEIVED` saying what to set up.\n\n**Errors** `404 AUTOMATION_NOT_FOUND`, `AUTOMATION_VERSION_NOT_FOUND` (pin `liveAutomationVersionId`, a `versions[]` id, or a run row's `automationVersionId`), `TRIGGER_EVENT_NOT_FOUND`; `400 AUTOMATION_GRAPH_INVALID` (`details.issues[]`); `409 AUTOMATION_VERSION_CONFLICT` (re-read, reapply, retry); `422 PUBLISH_VALIDATION_FAILED` (`details.blockers[]`; a cdn.brew.new image a step would send that does not exist is a blocker, listed in `details.missingImages[]`, and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has `emails` access), `AUTOMATION_NOT_PUBLISHED` (nothing to unpublish; with `stopInFlight: true` on a draft, also no contacts in flight to stop), `AUTOMATION_NOT_PAUSABLE` (a manual-audience automation pauses through its runs).\n\n**See also** `createAutomation`, `testAutomation`, `runAutomation`, `listAutomationRuns`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/update-or-publish-an-automation","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/brew-796f053a/b7b4876a6d26628c/ask-ai-menu.js"],"openApiReferenceData":{"operation":{"operationId":"updateAutomation","tags":["Automations"],"summary":"Update or publish an automation","description":"One endpoint, two mutually exclusive modes: update the graph (a new `automationVersionId` on the same `automationId`) or change lifecycle state (`published`, `paused`). The modes cannot be combined: update first, then `PATCH { \"published\": true }`.\n\n**Use when** editing a graph or changing runtime state of an automation created with `createAutomation`. Manual-audience runs are controlled with `pauseAudienceRun`, `resumeAudienceRun` and `cancelAudienceRun`, not here.\n\n**Input** Update: one or more of `name`, `description`, `nodes`, `connections`, `triggerEventId`, under the same typed condition contract as create (explicit `type`, canonical snake_case `operator`, no `value` for unary operators, type-correct values elsewhere); `dryRun: true` validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes `NODE_ID_REPLACED` reports. Lifecycle: `published: true` promotes the stored latest version live (optionally pin `automationVersionId`; the graph is validated first), `published: false` unpublishes, `paused: true` or `false` freezes or resumes future send steps (`stopInFlight` also stops runs already in progress).\n\n**Returns** the bare automation row, or with `dryRun: true` a `200 AutomationDryRunReport` `{ valid, blockers[], warnings[], blockingIssues[], nodeCounts }`: `blockingIssues[]` lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (`fatal` says what the reference would do: `true` for filter or split conditions and triple-brace `{{{ }}}` body tokens would break the run, `false` for subject, previewText, fromName, replyTo and double-brace body tags would render empty); `valid` is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, `published` describes the returned row, `isLive`, `liveVersion` and `liveAutomationVersionId` describe the automation, and `warnings[]` carries `DRAFT_SAVED_NOT_LIVE`. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and `warnings[]` carries `TRIGGER_EVENT_NOT_RECEIVED` saying what to set up.\n\n**Errors** `404 AUTOMATION_NOT_FOUND`, `AUTOMATION_VERSION_NOT_FOUND` (pin `liveAutomationVersionId`, a `versions[]` id, or a run row's `automationVersionId`), `TRIGGER_EVENT_NOT_FOUND`; `400 AUTOMATION_GRAPH_INVALID` (`details.issues[]`); `409 AUTOMATION_VERSION_CONFLICT` (re-read, reapply, retry); `422 PUBLISH_VALIDATION_FAILED` (`details.blockers[]`; a cdn.brew.new image a step would send that does not exist is a blocker, listed in `details.missingImages[]`, and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has `emails` access), `AUTOMATION_NOT_PUBLISHED` (nothing to unpublish; with `stopInFlight: true` on a draft, also no contacts in flight to stop), `AUTOMATION_NOT_PAUSABLE` (a manual-audience automation pauses through its runs).\n\n**See also** `createAutomation`, `testAutomation`, `runAutomation`, `listAutomationRuns`.","parameters":["9af1a4f8-b76b-4885-9475-1c21b29695f2","e1ebf23d-0ae9-42b3-b77e-4d287e46aa91"],"requestBody":"14f6438f-cea2-494b-92d5-9543a2c21d59","responses":{"200":"5efab0ff-756b-4601-9baf-faa58178b930","400":"426f0c3b-6b28-43d2-b5fb-d10ae8317a15","401":"34001b0c-8d01-42b1-9563-0a2d220c755d","403":"44ffc7af-b260-49d3-94fd-5ee31345974e","404":"19044a56-98c7-4fc1-8319-14a250b5f1c3","409":"d0d76d45-0767-4ada-a536-a3f50ae79733","422":"43fc7ea5-8629-4d97-b5b3-acc2a3dc9371","429":"904f4037-2ae8-4bea-bd5b-bfba692a641e","500":"717453f1-6e06-491d-9825-35293cadb63b"},"x-brew-scope":"automations","x-brew-brand-scope":"brand","x-brew-idempotency":"none","x-brew-credited":false,"x-brew-rate-policy":"automations.write","method":"patch","type":"path","servers":["16779731-d97b-4178-b35d-ab9db802c966","d75b81f5-e341-4448-9191-a43a58d2508e"],"security":["3becd03d-c396-4bc3-84c1-231cdbf0a23e","a3a3e731-b20f-48f7-873a-3123be78670a"],"path":"/v1/automations/{automationId}","baseUrlOptions":["https://brew.new/api","http://localhost:3000/api"],"title":"Update or publish an automation","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"9af1a4f8-b76b-4885-9475-1c21b29695f2":{"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Automation id returned by `POST /v1/automations` and listed by `GET /v1/automations`.","example":"M3nRk8LqW2xT5vBp9YcZd","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"description":"Automation id returned by `POST /v1/automations` and listed by `GET /v1/automations`.","name":"automationId","in":"path"},"e1ebf23d-0ae9-42b3-b77e-4d287e46aa91":{"name":"X-Brand-Id","in":"header","required":false,"description":"The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise `400 BRAND_ID_REQUIRED` — there is no default brand); list ids with `GET /v1/brands`. Brand-scoped credentials may omit it, and sending a different brand returns `403 BRAND_SCOPE_MISMATCH`. A brand outside your organization returns `404 BRAND_NOT_FOUND`.","schema":{"type":"string","minLength":1,"maxLength":64,"isRequired":false,"description":"The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise `400 BRAND_ID_REQUIRED` — there is no default brand); list ids with `GET /v1/brands`. Brand-scoped credentials may omit it, and sending a different brand returns `403 BRAND_SCOPE_MISMATCH`. A brand outside your organization returns `404 BRAND_NOT_FOUND`.","uniqueKey":"","typeLabel":"string"},"example":"kx7b3s7fapqz8mjm12ekz1kxdx87yceg"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","maxLength":2000,"uniqueKey":"description","typeLabel":"string"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.label","typeLabel":"string"},"type":{"type":"string","enum":["trigger"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"config":{"oneOf":[{"type":"object","properties":{"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.0.actionType","typeLabel":"string"},"eventName":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.0.eventName","typeLabel":"string"},"mode":{"type":"string","enum":["event"],"uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"triggerEventId":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.0.triggerEventId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.0","typeLabel":"object"},{"type":"object","required":["mode","audienceId"],"properties":{"mode":{"type":"string","enum":["manualAudience"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"audienceId":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.1.audienceId","typeLabel":"string"},"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.1.actionType","typeLabel":"string"},"eventName":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.1.eventName","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.description","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.label","typeLabel":"string"},"type":{"type":"string","enum":["sendEmail"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"config":{"type":"object","properties":{"emailId":{"type":"string","minLength":1,"description":"Email design id — required for sendEmail.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.config.emailId","typeLabel":"string"},"emailVersionId":{"type":"string","minLength":1,"description":"Email version id to send — required. A pin to the latest version follows new versions (prompt edit, restore) into an unpublished draft; older pins stay.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.config.emailVersionId","typeLabel":"string"},"subject":{"type":"string","minLength":1,"description":"Inbox subject — required. Supports {{var | fallback}} interpolation.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.config.subject","typeLabel":"string"},"actionType":{"type":"string","description":"Informational duplicate of node.type; ignored.","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.actionType","typeLabel":"string"},"domainId":{"type":"string","minLength":1,"description":"Owned sending-domain id — optional at authoring; required, and verified (sendable: true), at publish and on every live run. A marketing domain enforces the unsubscribe link; a sendingPurpose \"transactional\" domain skips it and delivers even to unsubscribed contacts, so choose one only for genuinely transactional flows (receipts, password resets).","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.domainId","typeLabel":"string"},"previewText":{"type":"string","description":"Inbox preheader — optional; the email design's \u003cPreview> is the source of truth and wins when present.","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.previewText","typeLabel":"string"},"fromName":{"type":"string","minLength":1,"description":"Sender display name; resolved from the domain default when unset.","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.fromName","typeLabel":"string"},"replyTo":{"type":"string","format":"email","description":"Reply-to address; resolved from the domain default when unset.","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.replyTo","typeLabel":"string\u003cemail>"},"emailTitle":{"type":"string","description":"Informational email title mirror; tolerated for round-trips.","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.emailTitle","typeLabel":"string"},"fromAddress":{"type":"string","description":"Sender address on domainId's own domain; resolved from the domain default when unset.","uniqueKey":"nodes.items.[INDEX].oneOf.1.config.fromAddress","typeLabel":"string"}},"required":["emailId","emailVersionId","subject"],"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.description","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.label","typeLabel":"string"},"type":{"type":"string","enum":["wait"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"config":{"type":"object","properties":{"duration":{"type":"number","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.config.duration","typeLabel":"number"},"unit":{"type":"string","enum":["ms","seconds","minutes","hours","days","weeks"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.config.unit","typeLabel":"enum\u003cstring>"},"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.2.config.actionType","typeLabel":"string"}},"required":["duration","unit"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.2.description","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.label","typeLabel":"string"},"type":{"type":"string","enum":["filter"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"config":{"oneOf":[{"type":"object","required":["logicalOperator","conditions"],"properties":{"logicalOperator":{"type":"string","enum":["AND","OR"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.logicalOperator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","items":{"oneOf":[{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.0.field","typeLabel":"string"},"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["equals","not_equals","contains","not_contains","starts_with","ends_with"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.0.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"String value to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.0.value","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.1.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["equals","not_equals","gt","gte","lt","lte"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"number","description":"Finite numeric value to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2.field","typeLabel":"string"},"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["equals","not_equals","gt","gte","lt","lte"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2.operator","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"ISO date string or Unix timestamp in milliseconds to compare against.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2.value.oneOf.0","typeLabel":"string"},{"type":"number","description":"ISO date string or Unix timestamp in milliseconds to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2.value.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2.value","typeLabel":"string | number"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.3.field","typeLabel":"string"},"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["in","not_in","contains_any","not_contains_any"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.3.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.3.value.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"Non-empty array of string values to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.3.value","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.4.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["in","not_in"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.4.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"array","items":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.4.value.items.[INDEX]","typeLabel":"number"},"minItems":1,"description":"Non-empty array of finite numbers to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.4.value","typeLabel":"number[]"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["between"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5.value.[0]","typeLabel":"number"},"[1]":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5.value.[1]","typeLabel":"number"}},"description":"Inclusive [minimum, maximum] numeric bounds.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5.value","typeLabel":"tuple"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.field","typeLabel":"string"},"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["between"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"oneOf":[{"type":"string","minLength":1,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value.[0].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value.[0].oneOf.1","typeLabel":"number"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value.[0]","typeLabel":"string | number"},"[1]":{"oneOf":[{"type":"string","minLength":1,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value.[1].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value.[1].oneOf.1","typeLabel":"number"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value.[1]","typeLabel":"string | number"}},"description":"Inclusive [start, end] ISO-date or Unix-millisecond timestamp bounds.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6.value","typeLabel":"tuple"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.7.field","typeLabel":"string"},"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_empty","is_not_empty"],"description":"Unary empty check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.7.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.8.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_empty","is_not_empty"],"description":"Unary empty check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.8.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.9.field","typeLabel":"string"},"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_empty","is_not_empty"],"description":"Unary empty check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.9.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.10.field","typeLabel":"string"},"type":{"type":"string","enum":["bool"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_true","is_false"],"description":"Unary boolean check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.10.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX]","typeLabel":"object"},"minItems":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions","typeLabel":"object[]"},"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.actionType","typeLabel":"string"},"mode":{"type":"string","enum":["payload"],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0.mode","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.0","typeLabel":"object"},{"type":"object","required":["mode","sourceNodeId","window","branches"],"properties":{"mode":{"type":"string","enum":["engagement"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"sourceNodeId":{"type":"string","minLength":1,"description":"Id of the upstream sendEmail node this filter watches for opens/clicks.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.sourceNodeId","typeLabel":"string"},"window":{"type":"object","properties":{"duration":{"type":"number","minimum":0,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.window.duration","typeLabel":"number"},"unit":{"type":"string","enum":["ms","seconds","minutes","hours","days","weeks"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.window.unit","typeLabel":"enum\u003cstring>"}},"required":["duration","unit"],"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.window","typeLabel":"object"},"branches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"object","properties":{"kind":{"type":"string","enum":["engaged","not_engaged","clicked_link"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.kind","typeLabel":"enum\u003cstring>"},"events":{"type":"string","enum":["opened","clicked","opened_or_clicked"],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.events","typeLabel":"enum\u003cstring>"},"url":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.url","typeLabel":"string"},"position":{"type":"string","enum":["any","first","last"],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.position","typeLabel":"enum\u003cstring>"}},"required":["kind"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition","typeLabel":"object"},"label":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].label","typeLabel":"string"}},"required":["id","condition"],"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX]","typeLabel":"object"},"minItems":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches","typeLabel":"object[]"},"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1.actionType","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.3.description","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.label","typeLabel":"string"},"type":{"type":"string","enum":["split"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"config":{"oneOf":[{"type":"object","required":["mode","leftLabel","rightLabel","leftPercentage"],"properties":{"mode":{"type":"string","enum":["percentage"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"leftLabel":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0.leftLabel","typeLabel":"string"},"rightLabel":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0.rightLabel","typeLabel":"string"},"leftPercentage":{"type":"number","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0.leftPercentage","typeLabel":"number"},"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0.actionType","typeLabel":"string"},"seed":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0.seed","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.0","typeLabel":"object"},{"type":"object","required":["mode","leftLabel","rightLabel","logicalOperator","conditions"],"properties":{"mode":{"type":"string","enum":["condition"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"leftLabel":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.leftLabel","typeLabel":"string"},"rightLabel":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.rightLabel","typeLabel":"string"},"logicalOperator":{"type":"string","enum":["AND","OR"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.logicalOperator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","items":{"oneOf":[{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.0.field","typeLabel":"string"},"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["equals","not_equals","contains","not_contains","starts_with","ends_with"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.0.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"String value to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.0.value","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.1.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["equals","not_equals","gt","gte","lt","lte"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"number","description":"Finite numeric value to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2.field","typeLabel":"string"},"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["equals","not_equals","gt","gte","lt","lte"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2.operator","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","description":"ISO date string or Unix timestamp in milliseconds to compare against.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2.value.oneOf.0","typeLabel":"string"},{"type":"number","description":"ISO date string or Unix timestamp in milliseconds to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2.value.oneOf.1","typeLabel":"number"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2.value","typeLabel":"string | number"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.3.field","typeLabel":"string"},"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["in","not_in","contains_any","not_contains_any"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.3.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.3.value.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"Non-empty array of string values to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.3.value","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.4.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["in","not_in"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.4.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"array","items":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.4.value.items.[INDEX]","typeLabel":"number"},"minItems":1,"description":"Non-empty array of finite numbers to compare against.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.4.value","typeLabel":"number[]"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["between"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5.value.[0]","typeLabel":"number"},"[1]":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5.value.[1]","typeLabel":"number"}},"description":"Inclusive [minimum, maximum] numeric bounds.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5.value","typeLabel":"tuple"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["field","type","operator","value"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.field","typeLabel":"string"},"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["between"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.operator","typeLabel":"enum\u003cstring>"},"value":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"oneOf":[{"type":"string","minLength":1,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value.[0].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value.[0].oneOf.1","typeLabel":"number"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value.[0]","typeLabel":"string | number"},"[1]":{"oneOf":[{"type":"string","minLength":1,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value.[1].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value.[1].oneOf.1","typeLabel":"number"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value.[1]","typeLabel":"string | number"}},"description":"Inclusive [start, end] ISO-date or Unix-millisecond timestamp bounds.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6.value","typeLabel":"tuple"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.7.field","typeLabel":"string"},"type":{"type":"string","enum":["string"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_empty","is_not_empty"],"description":"Unary empty check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.7.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.8.field","typeLabel":"string"},"type":{"type":"string","enum":["number"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_empty","is_not_empty"],"description":"Unary empty check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.8.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.9.field","typeLabel":"string"},"type":{"type":"string","enum":["date"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_empty","is_not_empty"],"description":"Unary empty check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.9.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["field","type","operator"],"properties":{"field":{"type":"string","minLength":1,"description":"Trigger payload path (trackingNumber, order.total, items[0].sku) or contact.\u003cname> to read the recipient contact (contact.plan).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.10.field","typeLabel":"string"},"type":{"type":"string","enum":["bool"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"operator":{"type":"string","enum":["is_true","is_false"],"description":"Unary boolean check; do not provide a value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.10.operator","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"minItems":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions","typeLabel":"object[]"},"actionType":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1.actionType","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.4.description","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX]","typeLabel":"object"},"maxItems":500,"uniqueKey":"nodes","typeLabel":"object[]"},"connections":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"connections.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"connections.items.[INDEX].to","typeLabel":"string"},"branch":{"type":"string","minLength":1,"uniqueKey":"connections.items.[INDEX].branch","typeLabel":"string"}},"required":["from","to"],"additionalProperties":false,"uniqueKey":"connections.items.[INDEX]","typeLabel":"object"},"maxItems":1000,"description":"The full edge list; it replaces the stored one. Omit to keep the stored edges (also when sending `nodes`); an edge whose end no longer exists is then refused with `AUTOMATION_GRAPH_INVALID`.","uniqueKey":"connections","typeLabel":"object[]"},"triggerEventId":{"type":"string","minLength":1,"maxLength":256,"uniqueKey":"triggerEventId","typeLabel":"string"},"expectedBaseVersionId":{"type":"string","minLength":1,"maxLength":64,"description":"Optimistic concurrency guard: the `automationVersionId` read before deriving this update. The save is refused with a conflict when the automation has changed since.","uniqueKey":"expectedBaseVersionId","typeLabel":"string"},"expectedBaseDefinitionSha256":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Optional stricter guard: SHA-256 of the exact definition read before deriving this update. Requires expectedBaseVersionId.","uniqueKey":"expectedBaseDefinitionSha256","typeLabel":"string"},"dryRun":{"type":"boolean","description":"Validate only — runs the full publish-gate check and returns blockers/warnings without writing.","uniqueKey":"dryRun","typeLabel":"boolean"},"published":{"type":"boolean","description":"Lifecycle action: `true` validates + publishes the STORED latest version (a saved edit goes live only after this); `false` unpublishes. Cannot be combined with field/graph updates — update first, then publish.","uniqueKey":"published","typeLabel":"boolean"},"automationVersionId":{"type":"string","minLength":1,"maxLength":64,"description":"Exact version to publish; requires `published: true`.","uniqueKey":"automationVersionId","typeLabel":"string"},"stopInFlight":{"type":"boolean","description":"With `published: false` only — ALSO permanently stop contacts already mid-flow (default: they drain to completion). On an automation that is already a draft it only stops those contacts, and is a 422 AUTOMATION_NOT_PUBLISHED when none are in flight.","uniqueKey":"stopInFlight","typeLabel":"boolean"},"paused":{"type":"boolean","description":"Freeze (`true`) / resume (`false`) a LIVE automation without unpublishing; held contacts resume from the same point.","uniqueKey":"paused","typeLabel":"boolean"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"rename":{"title":"rename","value":{"name":"Welcome flow v2"}},"graph":{"title":"graph","value":{"nodes":[{"id":"trg","label":"On signup","type":"trigger","config":{"actionType":"trigger"}},{"id":"send_welcome","label":"Welcome","type":"sendEmail","config":{"actionType":"sendEmail","emailId":"V1StGXR8_Z5jdHi6B-myT","emailVersionId":"Ux8nW3qL1mP9zRv6TkYcB","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew, {{firstName | there}}!","previewText":"Thanks for signing up — get started in 2 minutes.","fromName":"Brew","replyTo":"support@example.com"}}],"connections":[{"from":"trg","to":"send_welcome"}]}},"dryRun":{"title":"dryRun","value":{"nodes":[{"id":"trg","label":"On signup","type":"trigger","config":{"actionType":"trigger"}},{"id":"send_welcome","label":"Welcome","type":"sendEmail","config":{"actionType":"sendEmail","emailId":"V1StGXR8_Z5jdHi6B-myT","emailVersionId":"Ux8nW3qL1mP9zRv6TkYcB","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew, {{firstName | there}}!","previewText":"Thanks for signing up — get started in 2 minutes.","fromName":"Brew","replyTo":"support@example.com"}}],"connections":[{"from":"trg","to":"send_welcome"}],"dryRun":true}},"publish":{"title":"publish","value":{"published":true}},"publishVersion":{"title":"publishVersion","value":{"published":true,"automationVersionId":"Kx9Pb2Nt6Wq4Ym8Lz1Rv3"}},"unpublish":{"title":"unpublish","value":{"published":false}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"5efab0ff-756b-4601-9baf-faa58178b930":{"description":"Updated / published / unpublished — the bare automation row. For `dryRun: true` update requests, an `AutomationDryRunReport` instead (no writes).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":100},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":99},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["automationId","automationVersionId","name","version","published","emailIds"],"properties":{"automationId":{"type":"string","minLength":1,"maxLength":64,"isRequired":true,"uniqueKey":"oneOf.0.automationId","typeLabel":"string"},"automationVersionId":{"type":"string","minLength":1,"maxLength":64,"isRequired":true,"uniqueKey":"oneOf.0.automationVersionId","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"oneOf.0.name","typeLabel":"string"},"version":{"oneOf":[{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.version.oneOf.0","typeLabel":"integer"},{"type":"string","enum":["latest"],"isRequired":true,"uniqueKey":"oneOf.0.version.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"oneOf.0.version","typeLabel":"integer | enum\u003cstring>"},"published":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.0.published","typeLabel":"boolean"},"emailIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"uniqueKey":"oneOf.0.emailIds.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"oneOf.0.emailIds","typeLabel":"string[]"},"triggerEventId":{"type":"string","minLength":1,"maxLength":256,"uniqueKey":"oneOf.0.triggerEventId","typeLabel":"string"},"description":{"type":"string","maxLength":2000,"uniqueKey":"oneOf.0.description","typeLabel":"string"},"isLive":{"type":"boolean","uniqueKey":"oneOf.0.isLive","typeLabel":"boolean"},"liveVersion":{"oneOf":[{"type":"integer","minimum":0,"uniqueKey":"oneOf.0.liveVersion.oneOf.0","typeLabel":"integer"},{"type":"string","enum":["latest"],"uniqueKey":"oneOf.0.liveVersion.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"oneOf.0.liveVersion","typeLabel":"integer | enum\u003cstring>"},"liveAutomationVersionId":{"type":"string","minLength":1,"maxLength":64,"uniqueKey":"oneOf.0.liveAutomationVersionId","typeLabel":"string"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["DRAFT_SAVED_NOT_LIVE","NODE_ID_REPLACED","TRIGGER_EVENT_NOT_RECEIVED","ENFORCEMENT_LOOSENED_WHILE_PUBLISHED","REQUIRED_FIELD_SATISFIED_BY_FALLBACK","RESUBSCRIBE_SKIPPED","CORE_FIELD_IGNORED","DATE_ORDER_ASSUMED","FIELD_TYPE_COERCED","CSV_ROW_SKIPPED","CONTACT_EXISTS_SKIPPED","CSV_COLUMN_IGNORED","VALIDATION_SKIPPED","RECIPIENTS_EXCLUDED","CONSENT_RECORD_MISSING"],"isRequired":true,"uniqueKey":"oneOf.0.warnings.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.warnings.items.[INDEX].message","typeLabel":"string"},"field":{"type":"string","uniqueKey":"oneOf.0.warnings.items.[INDEX].field","typeLabel":"string"}},"required":["code","message"],"additionalProperties":false,"uniqueKey":"oneOf.0.warnings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.warnings","typeLabel":"object[]"},"paused":{"type":"boolean","uniqueKey":"oneOf.0.paused","typeLabel":"boolean"},"pausedAt":{"type":"number","uniqueKey":"oneOf.0.pausedAt","typeLabel":"number"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.label","typeLabel":"string"},"type":{"type":"string","enum":["trigger"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"config":{"oneOf":[{"type":"object","properties":{"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.0.actionType","typeLabel":"string"},"eventName":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.0.eventName","typeLabel":"string"},"mode":{"type":"string","enum":["event"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"triggerEventId":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.0.triggerEventId","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.0","typeLabel":"object"},{"type":"object","required":["mode","audienceId"],"properties":{"mode":{"type":"string","enum":["manualAudience"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"audienceId":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.1.audienceId","typeLabel":"string"},"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.1.actionType","typeLabel":"string"},"eventName":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.1.eventName","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0.description","typeLabel":"string"}},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.label","typeLabel":"string"},"type":{"type":"string","enum":["sendEmail"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"config":{"type":"object","properties":{"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.actionType","typeLabel":"string"},"emailId":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.emailId","typeLabel":"string"},"emailVersionId":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.emailVersionId","typeLabel":"string"},"emailTitle":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.emailTitle","typeLabel":"string"},"subject":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.subject","typeLabel":"string"},"previewText":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.previewText","typeLabel":"string"},"fromName":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.fromName","typeLabel":"string"},"fromAddress":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.fromAddress","typeLabel":"string"},"domainId":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.domainId","typeLabel":"string"},"replyTo":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.replyTo","typeLabel":"string"},"to":{"oneOf":[{}],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.to","typeLabel":"any"},"html":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.html","typeLabel":"string"},"variables":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.variables.additionalProperties","typeLabel":"any"},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config.variables","typeLabel":"object"}},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1.description","typeLabel":"string"}},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.label","typeLabel":"string"},"type":{"type":"string","enum":["wait"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"config":{"type":"object","properties":{"duration":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.config.duration","typeLabel":"number"},"unit":{"type":"string","enum":["ms","seconds","minutes","hours","days","weeks"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.config.unit","typeLabel":"enum\u003cstring>"},"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.config.actionType","typeLabel":"string"}},"required":["duration","unit"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2.description","typeLabel":"string"}},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.label","typeLabel":"string"},"type":{"type":"string","enum":["filter"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"config":{"oneOf":[{"type":"object","required":["logicalOperator","conditions"],"properties":{"logicalOperator":{"type":"string","enum":["AND","OR"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.logicalOperator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].field","typeLabel":"string"},"operator":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].operator","typeLabel":"string"},"value":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"}],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[]"},"type":{"type":"string","enum":["string","number","date","bool"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX].type","typeLabel":"enum\u003cstring>"}},"required":["field","operator"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.conditions","typeLabel":"object[]"},"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.actionType","typeLabel":"string"},"mode":{"type":"string","enum":["payload"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0.mode","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.0","typeLabel":"object"},{"type":"object","required":["mode","sourceNodeId","window","branches"],"properties":{"mode":{"type":"string","enum":["engagement"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"sourceNodeId":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.sourceNodeId","typeLabel":"string"},"window":{"type":"object","properties":{"duration":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.window.duration","typeLabel":"number"},"unit":{"type":"string","enum":["ms","seconds","minutes","hours","days","weeks"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.window.unit","typeLabel":"enum\u003cstring>"}},"required":["duration","unit"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.window","typeLabel":"object"},"branches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].id","typeLabel":"string"},"condition":{"type":"object","properties":{"kind":{"type":"string","enum":["engaged","not_engaged","clicked_link"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.kind","typeLabel":"enum\u003cstring>"},"events":{"type":"string","enum":["opened","clicked","opened_or_clicked"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.events","typeLabel":"enum\u003cstring>"},"url":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.url","typeLabel":"string"},"position":{"type":"string","enum":["any","first","last"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition.position","typeLabel":"enum\u003cstring>"}},"required":["kind"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].condition","typeLabel":"object"},"label":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX].label","typeLabel":"string"}},"required":["id","condition"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.branches","typeLabel":"object[]"},"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1.actionType","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3.description","typeLabel":"string"}},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["id","label","type","config"],"properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"label":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.label","typeLabel":"string"},"type":{"type":"string","enum":["split"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"config":{"oneOf":[{"type":"object","required":["mode","leftLabel","rightLabel","leftPercentage"],"properties":{"mode":{"type":"string","enum":["percentage"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"leftLabel":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0.leftLabel","typeLabel":"string"},"rightLabel":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0.rightLabel","typeLabel":"string"},"leftPercentage":{"type":"number","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0.leftPercentage","typeLabel":"number"},"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0.actionType","typeLabel":"string"},"seed":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0.seed","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.0","typeLabel":"object"},{"type":"object","required":["mode","leftLabel","rightLabel","logicalOperator","conditions"],"properties":{"mode":{"type":"string","enum":["condition"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"leftLabel":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.leftLabel","typeLabel":"string"},"rightLabel":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.rightLabel","typeLabel":"string"},"logicalOperator":{"type":"string","enum":["AND","OR"],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.logicalOperator","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].field","typeLabel":"string"},"operator":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].operator","typeLabel":"string"},"value":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.3.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string | number"},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value.oneOf.3","typeLabel":"(string | number)[]"}],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].value","typeLabel":"string | number | boolean | (string | number)[]"},"type":{"type":"string","enum":["string","number","date","bool"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX].type","typeLabel":"enum\u003cstring>"}},"required":["field","operator"],"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.conditions","typeLabel":"object[]"},"actionType":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1.actionType","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.config","typeLabel":"object"},"description":{"type":"string","uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4.description","typeLabel":"string"}},"uniqueKey":"oneOf.0.nodes.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"oneOf.0.nodes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.nodes","typeLabel":"object[]"},"connections":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.connections.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.connections.items.[INDEX].to","typeLabel":"string"},"branch":{"type":"string","uniqueKey":"oneOf.0.connections.items.[INDEX].branch","typeLabel":"string"}},"required":["from","to"],"uniqueKey":"oneOf.0.connections.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.connections","typeLabel":"object[]"},"createdBy":{"type":"string","description":"Creator as Brew shows it: a name or \"Former member\", \"API\" or \"MCP\", or both joined (\"Name · MCP\"); absent when the creator cannot be named.","uniqueKey":"oneOf.0.createdBy","typeLabel":"string"},"createdByUserId":{"type":"string","description":"Creator user id; absent for an organization API key.","uniqueKey":"oneOf.0.createdByUserId","typeLabel":"string"},"publishedBy":{"type":"string","description":"Who published the live version; absent while not live.","uniqueKey":"oneOf.0.publishedBy","typeLabel":"string"},"publishedByUserId":{"type":"string","description":"Publisher user id of the live version.","uniqueKey":"oneOf.0.publishedByUserId","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.0.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.0.updatedAt","typeLabel":"string\u003cdate-time>"},"publishedAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.0.publishedAt","typeLabel":"string\u003cdate-time>"},"versions":{"type":"array","items":{"type":"object","properties":{"version":{"oneOf":[{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.versions.items.[INDEX].version.oneOf.0","typeLabel":"integer"},{"type":"string","enum":["latest"],"isRequired":true,"uniqueKey":"oneOf.0.versions.items.[INDEX].version.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"oneOf.0.versions.items.[INDEX].version","typeLabel":"integer | enum\u003cstring>"},"automationVersionId":{"type":"string","minLength":1,"maxLength":64,"isRequired":true,"uniqueKey":"oneOf.0.versions.items.[INDEX].automationVersionId","typeLabel":"string"}},"required":["version","automationVersionId"],"additionalProperties":false,"uniqueKey":"oneOf.0.versions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.versions","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["valid","blockers","warnings","nodeCounts"],"properties":{"valid":{"type":"boolean","description":"Whether the graph would publish cleanly. false when any `blockers[]` entry or any `blockingIssues[]` entry is present.","isRequired":true,"uniqueKey":"oneOf.1.valid","typeLabel":"boolean"},"blockers":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["error","warning"],"isRequired":true,"uniqueKey":"oneOf.1.blockers.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description of the finding.","isRequired":true,"uniqueKey":"oneOf.1.blockers.items.[INDEX].message","typeLabel":"string"},"nodeId":{"type":"string","description":"Id of the offending node. Absent on graph-level findings.","uniqueKey":"oneOf.1.blockers.items.[INDEX].nodeId","typeLabel":"string"},"nodeLabel":{"type":"string","description":"Label of the offending node. Absent on graph-level findings.","uniqueKey":"oneOf.1.blockers.items.[INDEX].nodeLabel","typeLabel":"string"}},"required":["severity","message"],"additionalProperties":false,"uniqueKey":"oneOf.1.blockers.items.[INDEX]","typeLabel":"object"},"description":"Publish blockers (`severity: \"error\"`). Publishing fails while any remain.","isRequired":true,"uniqueKey":"oneOf.1.blockers","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","enum":["error","warning"],"isRequired":true,"uniqueKey":"oneOf.1.warnings.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description of the finding.","isRequired":true,"uniqueKey":"oneOf.1.warnings.items.[INDEX].message","typeLabel":"string"},"nodeId":{"type":"string","description":"Id of the offending node. Absent on graph-level findings.","uniqueKey":"oneOf.1.warnings.items.[INDEX].nodeId","typeLabel":"string"},"nodeLabel":{"type":"string","description":"Label of the offending node. Absent on graph-level findings.","uniqueKey":"oneOf.1.warnings.items.[INDEX].nodeLabel","typeLabel":"string"}},"required":["severity","message"],"additionalProperties":false,"uniqueKey":"oneOf.1.warnings.items.[INDEX]","typeLabel":"object"},"description":"Advisory findings (`severity: \"warning\"`). Publishing succeeds despite them.","isRequired":true,"uniqueKey":"oneOf.1.warnings","typeLabel":"object[]"},"nodeCounts":{"type":"object","properties":{"sendEmail":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.nodeCounts.sendEmail","typeLabel":"integer"},"wait":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.nodeCounts.wait","typeLabel":"integer"},"filter":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.nodeCounts.filter","typeLabel":"integer"},"split":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.nodeCounts.split","typeLabel":"integer"}},"required":["sendEmail","wait","filter","split"],"additionalProperties":false,"description":"Per-kind node counts of the validated graph.","isRequired":true,"uniqueKey":"oneOf.1.nodeCounts","typeLabel":"object"},"blockingIssues":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].nodeId","typeLabel":"string"},"nodeLabel":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].nodeLabel","typeLabel":"string"},"surface":{"type":"string","enum":["triggerBinding","subject","previewText","fromName","replyTo","emailBody","filterCondition","splitCondition"],"description":"Where on the node the orphaned reference lives.","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].surface","typeLabel":"enum\u003cstring>"},"variable":{"type":"string","description":"The bare variable / field name that cannot be resolved.","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].variable","typeLabel":"string"},"reason":{"type":"string","description":"Short user-facing reason.","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].reason","typeLabel":"string"},"fatal":{"type":"boolean","description":"What the reference would do at send time. true — a filter/split condition or triple-brace `{{{ }}}` body token: the run would break. false — a subject/previewText/fromName/replyTo or double-brace body tag: it would render empty. Both block publish.","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].fatal","typeLabel":"boolean"},"hasFallback":{"type":"boolean","description":"The token carries an inline `{{ name | fallback }}` fallback. It still blocks publish: a fallback covers a missing value, not a field the trigger never declares.","isRequired":true,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX].hasFallback","typeLabel":"boolean"}},"required":["nodeId","nodeLabel","surface","variable","reason","fatal","hasFallback"],"additionalProperties":false,"uniqueKey":"oneOf.1.blockingIssues.items.[INDEX]","typeLabel":"object"},"description":"Trigger-payload / draft-variable compatibility findings. Present (possibly empty) on POST and PATCH dry-run responses. Every entry blocks publish, and `valid` is false when any is present.","uniqueKey":"oneOf.1.blockingIssues","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"updated":{"title":"updated","value":{"automationId":"M3nRk8LqW2xT5vBp9YcZd","automationVersionId":"Rt4Vw1KyPb6HZq7Lm2Nx8","triggerEventId":"user_signed_up","name":"Welcome flow","version":"latest","published":false,"isLive":true,"liveVersion":3,"liveAutomationVersionId":"Nt6Wq4Ym8Lz1Rv3Kx9Pb2","nodes":[{"id":"trg","label":"On signup","type":"trigger","config":{"actionType":"trigger"}},{"id":"send_welcome","label":"Welcome","type":"sendEmail","config":{"actionType":"sendEmail","emailId":"V1StGXR8_Z5jdHi6B-myT","emailVersionId":"Ux8nW3qL1mP9zRv6TkYcB","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew, {{firstName | there}}!","previewText":"Thanks for signing up — get started in 2 minutes.","fromName":"Brew","replyTo":"support@example.com"}}],"connections":[{"from":"trg","to":"send_welcome"}],"emailIds":["V1StGXR8_Z5jdHi6B-myT"],"createdBy":"Sam Rivera","createdByUserId":"user_2xK9mPq4Rt7Vw1Yb","publishedBy":"Sam Rivera","publishedByUserId":"user_2xK9mPq4Rt7Vw1Yb","createdAt":"2026-04-08T12:00:00.000Z","updatedAt":"2026-04-08T12:00:00.000Z"}},"dryRun":{"title":"dryRun","value":{"valid":false,"blockers":[],"warnings":[],"blockingIssues":[{"nodeId":"filter_a1b2","nodeLabel":"Paid plan","surface":"filterCondition","variable":"plan","reason":"Condition on \"plan\", which the trigger doesn't provide","fatal":true,"hasFallback":false}],"nodeCounts":{"sendEmail":1,"wait":0,"filter":1,"split":0}}}},"exampleType":"examples"}},"exampleType":"examples"},"426f0c3b-6b28-43d2-b5fb-d10ae8317a15":{"description":"`AUTOMATION_GRAPH_INVALID`: The nodes and connections do not form a valid graph; `details.issues[]` lists each problem with its `nodeId` and `kind`.\n\n`BRAND_ID_REQUIRED`: An organization-scoped credential called a brand-scoped operation without naming the brand.\n\n`INVALID_REQUEST`: The body or query failed validation: an unknown key, a wrong type, or a missing required field. `param` names the first offender; with more than one problem, `details.issues[]` lists each one (`{ param?, message }`, at most 20).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"automationGraphInvalid":{"title":"automationGraphInvalid","value":{"error":{"code":"AUTOMATION_GRAPH_INVALID","type":"invalid_request","message":"The nodes and connections do not form a valid graph; `details.issues[]` lists each problem with its `nodeId` and `kind`.","suggestion":"Fix every issue reported in `details.issues` then resubmit.","docs":"https://docs.brew.new/api-reference/api/errors","details":{"issues":[{"kind":"structure","code":"unreachable_node","nodeId":"wait-1","message":"Step \"Wait 1 day\" is not reachable from the trigger."}]}}}},"brandIdRequired":{"title":"brandIdRequired","value":{"error":{"code":"BRAND_ID_REQUIRED","type":"invalid_request","message":"An organization-scoped credential called a brand-scoped operation without naming the brand.","suggestion":"List brands with GET /v1/brands, then name one with the X-Brand-Id header. There is no default brand.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"invalidRequest":{"title":"invalidRequest","value":{"error":{"code":"INVALID_REQUEST","type":"invalid_request","message":"The body or query failed validation: an unknown key, a wrong type, or a missing required field. `param` names the first offender; with more than one problem, `details.issues[]` lists each one (`{ param?, message }`, at most 20).","suggestion":"Fix the field reported in `param`, and every entry in `details.issues[]` when present, then retry.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"34001b0c-8d01-42b1-9563-0a2d220c755d":{"description":"`API_KEY_REVOKED`: The API key was revoked.\n\n`AUTHENTICATION_REQUIRED`: No API key or session accompanied the request.\n\n`INVALID_API_KEY`: The API key is malformed or unknown.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"apiKeyRevoked":{"title":"apiKeyRevoked","value":{"error":{"code":"API_KEY_REVOKED","type":"authentication_error","message":"The API key was revoked.","suggestion":"Create a new active API key and retry.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"authenticationRequired":{"title":"authenticationRequired","value":{"error":{"code":"AUTHENTICATION_REQUIRED","type":"authentication_error","message":"No API key or session accompanied the request.","suggestion":"Provide a valid API key or sign in with an organization session.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"invalidApiKey":{"title":"invalidApiKey","value":{"error":{"code":"INVALID_API_KEY","type":"authentication_error","message":"The API key is malformed or unknown.","suggestion":"Check the API key format and retry with a valid active key.","docs":"https://docs.brew.new/api-reference/api/authentication"}}}},"exampleType":"examples"}},"exampleType":"examples"},"44ffc7af-b260-49d3-94fd-5ee31345974e":{"description":"`ACCOUNT_SUSPENDED`: The organization behind the credential is suspended.\n\n`BRAND_SCOPE_MISMATCH`: A brand-scoped credential named a brand other than the one it is bound to.\n\n`INSUFFICIENT_PERMISSIONS`: The credential lacks the permission scope the operation needs.\n\n`INSUFFICIENT_ROLE`: The caller lacks the access the operation needs: `param` names `member` (access to the brand) or `org_admin` (the organization role).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"accountSuspended":{"title":"accountSuspended","value":{"error":{"code":"ACCOUNT_SUSPENDED","type":"authorization_error","message":"The organization behind the credential is suspended.","suggestion":"The organization behind this credential is suspended. Contact support@brew.new; do not retry.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"brandScopeMismatch":{"title":"brandScopeMismatch","value":{"error":{"code":"BRAND_SCOPE_MISMATCH","type":"authorization_error","message":"A brand-scoped credential named a brand other than the one it is bound to.","suggestion":"Omit the brand to use the one this credential is bound to, or use an organization-scoped credential to reach other brands.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"insufficientPermissions":{"title":"insufficientPermissions","value":{"error":{"code":"INSUFFICIENT_PERMISSIONS","type":"authorization_error","message":"The credential lacks the permission scope the operation needs.","suggestion":"Use an API key or session with the required permission.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"insufficientRole":{"title":"insufficientRole","value":{"error":{"code":"INSUFFICIENT_ROLE","type":"authorization_error","message":"The caller lacks the access the operation needs: `param` names `member` (access to the brand) or `org_admin` (the organization role).","suggestion":"Ask an organization admin to run this, to add you to the brand, or to make you an admin.","docs":"https://docs.brew.new/api-reference/api/authentication"}}}},"exampleType":"examples"}},"exampleType":"examples"},"19044a56-98c7-4fc1-8319-14a250b5f1c3":{"description":"`AUTOMATION_NOT_FOUND`: No automation with that id exists in the brand.\n\n`AUTOMATION_VERSION_NOT_FOUND`: The automation has no version with that id.\n\n`BRAND_NOT_FOUND`: The named or bound brand does not exist in this organization (unknown, deleting, or another organization).\n\n`TRIGGER_EVENT_NOT_FOUND`: No trigger with that id exists in the brand.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"automationNotFound":{"title":"automationNotFound","value":{"error":{"code":"AUTOMATION_NOT_FOUND","type":"not_found","message":"No automation with that id exists in the brand.","suggestion":"List automations with GET /v1/automations.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"automationVersionNotFound":{"title":"automationVersionNotFound","value":{"error":{"code":"AUTOMATION_VERSION_NOT_FOUND","type":"not_found","message":"The automation has no version with that id.","suggestion":"List versions with GET /v1/automations/{automationId}?include=versions.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"brandNotFound":{"title":"brandNotFound","value":{"error":{"code":"BRAND_NOT_FOUND","type":"not_found","message":"The named or bound brand does not exist in this organization (unknown, deleting, or another organization).","suggestion":"List the brands this credential can reach with GET /v1/brands.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"triggerEventNotFound":{"title":"triggerEventNotFound","value":{"error":{"code":"TRIGGER_EVENT_NOT_FOUND","type":"not_found","message":"No trigger with that id exists in the brand.","suggestion":"List triggers with GET /v1/automations/triggers.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"d0d76d45-0767-4ada-a536-a3f50ae79733":{"description":"`AUTOMATION_VERSION_CONFLICT`: The automation changed since the version you edited was read.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"automationVersionConflict":{"title":"automationVersionConflict","value":{"error":{"code":"AUTOMATION_VERSION_CONFLICT","type":"conflict","message":"The automation changed since the version you edited was read.","suggestion":"Read the latest automation version, reapply the intended changes, and retry the update.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"43fc7ea5-8629-4d97-b5b3-acc2a3dc9371":{"description":"`AUTOMATION_NOT_PAUSABLE`: The automation runs against a manual audience, so it is paused through its runs, not the automation.\n\n`AUTOMATION_NOT_PUBLISHED`: The automation is not live, so there is nothing to unpublish; with `stopInFlight: true` it also has no contacts in flight to stop.\n\n`PUBLISH_VALIDATION_FAILED`: The saved graph cannot go live; `details.blockers[]` lists what publish requires.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"automationNotPausable":{"title":"automationNotPausable","value":{"error":{"code":"AUTOMATION_NOT_PAUSABLE","type":"invalid_request","message":"The automation runs against a manual audience, so it is paused through its runs, not the automation.","suggestion":"Use the audience-run control operations to pause or cancel an in-flight run.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"automationNotPublished":{"title":"automationNotPublished","value":{"error":{"code":"AUTOMATION_NOT_PUBLISHED","type":"invalid_request","message":"The automation is not live, so there is nothing to unpublish; with `stopInFlight: true` it also has no contacts in flight to stop.","suggestion":"Check the live state with GET /v1/automations/{automationId}.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"publishValidationFailed":{"title":"publishValidationFailed","value":{"error":{"code":"PUBLISH_VALIDATION_FAILED","type":"invalid_request","message":"The saved graph cannot go live; `details.blockers[]` lists what publish requires.","suggestion":"Fix every blocker reported in `details.blockers` then PATCH again with { published: true }.","docs":"https://docs.brew.new/api-reference/api/errors","details":{"blockers":[{"nodeId":"send-1","nodeLabel":"Welcome email","code":"domain_not_verified","message":"The sending domain is not verified."}]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"904f4037-2ae8-4bea-bd5b-bfba692a641e":{"description":"`RATE_LIMITED`: The credential exhausted the rolling window for this route policy; Retry-After is when the oldest recorded request leaves, and the refused request does not take a slot.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":60},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":0},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."},"Retry-After":{"schema":{"type":"integer","description":"Seconds to wait before retrying the request.","example":42},"required":true,"description":"Seconds to wait before retrying the request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"rateLimited":{"title":"rateLimited","value":{"error":{"code":"RATE_LIMITED","type":"rate_limit","message":"The credential exhausted the rolling window for this route policy; Retry-After is when the oldest recorded request leaves, and the refused request does not take a slot.","suggestion":"Wait the Retry-After time, then retry the same request.","docs":"https://docs.brew.new/api-reference/api/rate-limits","retryAfter":42,"details":{"scope":"credential","limit":60,"remaining":0,"reset":1712592360,"consumed":false}}}}},"exampleType":"examples"}},"exampleType":"examples"},"717453f1-6e06-491d-9825-35293cadb63b":{"description":"`INTERNAL_ERROR`: An unexpected failure; the x-request-id header identifies it.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"internalError":{"title":"internalError","value":{"error":{"code":"INTERNAL_ERROR","type":"internal_error","message":"An unexpected failure; the x-request-id header identifies it.","suggestion":"Retry the request. If it keeps failing, contact support with the x-request-id header.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"3becd03d-c396-4bc3-84c1-231cdbf0a23e":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","x-default":"Bearer brew_your_api_key","scopes":[],"schemeName":"bearerAuth"}},"a3a3e731-b20f-48f7-873a-3123be78670a":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","x-default":"brew_your_api_key","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"16779731-d97b-4178-b35d-ab9db802c966":{"url":"https://brew.new/api","description":"Production"},"d75b81f5-e341-4448-9191-a43a58d2508e":{"url":"http://localhost:3000/api","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","x-default":"Bearer brew_your_api_key","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","format":"bearer","default":"Bearer brew_your_api_key","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","x-default":"brew_your_api_key","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","isRequired":true,"default":"brew_your_api_key","typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"X-API-Key"}],"title":"apiKeyAuth"}]},"originalFileLocation":"api-reference/openapi-public-v1.yaml"},"subdomain":"brew-796f053a","siteName":"Brew Help Docs","title":"Update or publish an automation - Brew Help Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T17:55:00.107Z","originalFileLocation":"api-reference/public-v1/automations/update-or-publish-an-automation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"One endpoint, two mutually exclusive modes: update the graph (a new automationVersionId on the same automationId) or change lifecycle state (published, paused). The modes cannot be combined: update first, then PATCH { \u0026quot;published\u0026quot;: true }. Use when editing a graph or changing runtime state of an automation created with createAutomation. Manual-audience runs are controlled with pauseAudienceRun, resumeAudienceRun and cancelAudienceRun, not here. Input Update: one or more of name, description, nodes, connections, triggerEventId, under the same typed condition contract as create (explicit type, canonical snake_case operator, no value for unary operators, type-correct values elsewhere); dryRun: true validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes NODE_ID_REPLACED reports. Lifecycle: published: true promotes the stored latest version live (optionally pin automationVersionId; the graph is validated first), published: false unpublishes, paused: true or false freezes or resumes future send steps (stopInFlight also stops runs already in progress). Returns the bare automation row, or with dryRun: true a 200 AutomationDryRunReport { valid, blockers[], warnings[], blockingIssues[], nodeCounts }: blockingIssues[] lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (fatal says what the reference would do: true for filter or split conditions and triple-brace {{{ }}} body tokens would break the run, false for subject, previewText, fromName, replyTo and double-brace body tags would render empty); valid is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, published describes the returned row, isLive, liveVersion and liveAutomationVersionId describe the automation, and warnings[] carries DRAFT_SAVED_NOT_LIVE. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and warnings[] carries TRIGGER_EVENT_NOT_RECEIVED saying what to set up. Errors 404 AUTOMATION_NOT_FOUND, AUTOMATION_VERSION_NOT_FOUND (pin liveAutomationVersionId, a versions[] id, or a run row\u0026#x27;s automationVersionId), TRIGGER_EVENT_NOT_FOUND; 400 AUTOMATION_GRAPH_INVALID (details.issues[]); 409 AUTOMATION_VERSION_CONFLICT (re-read, reapply, retry); 422 PUBLISH_VALIDATION_FAILED (details.blockers[]; a cdn.brew.new image a step would send that does not exist is a blocker, listed in details.missingImages[], and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access), AUTOMATION_NOT_PUBLISHED (nothing to unpublish; with stopInFlight: true on a draft, also no contacts in flight to stop), AUTOMATION_NOT_PAUSABLE (a manual-audience automation pauses through its runs). See also createAutomation, testAutomation, runAutomation, listAutomationRuns.\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI email marketing, Brew, AI-native email platform, on-brand email, email automations, email analytics, AI agents, MCP email server\">\u003cmeta data-mint-head name=\"application-name\" content=\"Brew Help Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update or publish an automation - Brew Help Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"One endpoint, two mutually exclusive modes: update the graph (a new automationVersionId on the same automationId) or change lifecycle state (published, paused). The modes cannot be combined: update first, then PATCH { \u0026quot;published\u0026quot;: true }. Use when editing a graph or changing runtime state of an automation created with createAutomation. Manual-audience runs are controlled with pauseAudienceRun, resumeAudienceRun and cancelAudienceRun, not here. Input Update: one or more of name, description, nodes, connections, triggerEventId, under the same typed condition contract as create (explicit type, canonical snake_case operator, no value for unary operators, type-correct values elsewhere); dryRun: true validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes NODE_ID_REPLACED reports. Lifecycle: published: true promotes the stored latest version live (optionally pin automationVersionId; the graph is validated first), published: false unpublishes, paused: true or false freezes or resumes future send steps (stopInFlight also stops runs already in progress). Returns the bare automation row, or with dryRun: true a 200 AutomationDryRunReport { valid, blockers[], warnings[], blockingIssues[], nodeCounts }: blockingIssues[] lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (fatal says what the reference would do: true for filter or split conditions and triple-brace {{{ }}} body tokens would break the run, false for subject, previewText, fromName, replyTo and double-brace body tags would render empty); valid is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, published describes the returned row, isLive, liveVersion and liveAutomationVersionId describe the automation, and warnings[] carries DRAFT_SAVED_NOT_LIVE. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and warnings[] carries TRIGGER_EVENT_NOT_RECEIVED saying what to set up. Errors 404 AUTOMATION_NOT_FOUND, AUTOMATION_VERSION_NOT_FOUND (pin liveAutomationVersionId, a versions[] id, or a run row\u0026#x27;s automationVersionId), TRIGGER_EVENT_NOT_FOUND; 400 AUTOMATION_GRAPH_INVALID (details.issues[]); 409 AUTOMATION_VERSION_CONFLICT (re-read, reapply, retry); 422 PUBLISH_VALIDATION_FAILED (details.blockers[]; a cdn.brew.new image a step would send that does not exist is a blocker, listed in details.missingImages[], and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access), AUTOMATION_NOT_PUBLISHED (nothing to unpublish; with stopInFlight: true on a draft, also no contacts in flight to stop), AUTOMATION_NOT_PAUSABLE (a manual-audience automation pauses through its runs). See also createAutomation, testAutomation, runAutomation, listAutomationRuns.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Brew Help Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.brew.new/images/og/default.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update or publish an automation - Brew Help Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"One endpoint, two mutually exclusive modes: update the graph (a new automationVersionId on the same automationId) or change lifecycle state (published, paused). The modes cannot be combined: update first, then PATCH { \u0026quot;published\u0026quot;: true }. Use when editing a graph or changing runtime state of an automation created with createAutomation. Manual-audience runs are controlled with pauseAudienceRun, resumeAudienceRun and cancelAudienceRun, not here. Input Update: one or more of name, description, nodes, connections, triggerEventId, under the same typed condition contract as create (explicit type, canonical snake_case operator, no value for unary operators, type-correct values elsewhere); dryRun: true validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes NODE_ID_REPLACED reports. Lifecycle: published: true promotes the stored latest version live (optionally pin automationVersionId; the graph is validated first), published: false unpublishes, paused: true or false freezes or resumes future send steps (stopInFlight also stops runs already in progress). Returns the bare automation row, or with dryRun: true a 200 AutomationDryRunReport { valid, blockers[], warnings[], blockingIssues[], nodeCounts }: blockingIssues[] lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (fatal says what the reference would do: true for filter or split conditions and triple-brace {{{ }}} body tokens would break the run, false for subject, previewText, fromName, replyTo and double-brace body tags would render empty); valid is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, published describes the returned row, isLive, liveVersion and liveAutomationVersionId describe the automation, and warnings[] carries DRAFT_SAVED_NOT_LIVE. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and warnings[] carries TRIGGER_EVENT_NOT_RECEIVED saying what to set up. Errors 404 AUTOMATION_NOT_FOUND, AUTOMATION_VERSION_NOT_FOUND (pin liveAutomationVersionId, a versions[] id, or a run row\u0026#x27;s automationVersionId), TRIGGER_EVENT_NOT_FOUND; 400 AUTOMATION_GRAPH_INVALID (details.issues[]); 409 AUTOMATION_VERSION_CONFLICT (re-read, reapply, retry); 422 PUBLISH_VALIDATION_FAILED (details.blockers[]; a cdn.brew.new image a step would send that does not exist is a blocker, listed in details.missingImages[], and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access), AUTOMATION_NOT_PUBLISHED (nothing to unpublish; with stopInFlight: true on a draft, also no contacts in flight to stop), AUTOMATION_NOT_PAUSABLE (a manual-audience automation pauses through its runs). See also createAutomation, testAutomation, runAutomation, listAutomationRuns.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.brew.new/images/og/default.png\">\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/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Brew Help Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF772D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/public-v1/automations/update-or-publish-an-automation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.brew.new/#organization\",\"name\":\"Brew Help Docs\",\"url\":\"https://docs.brew.new\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/lightmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=5e906ff65142dc905a773e7747b47816\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.brew.new#website\",\"name\":\"Brew Help Docs\",\"url\":\"https://docs.brew.new\",\"publisher\":{\"@id\":\"https://docs.brew.new/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation#webpage\",\"url\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation\",\"name\":\"Update or publish an automation\",\"description\":\"One endpoint, two mutually exclusive modes: update the graph (a new automationVersionId on the same automationId) or change lifecycle state (published, paused). The modes cannot be combined: update first, then PATCH { \\\"published\\\": true }. Use when editing a graph or changing runtime state of an automation created with createAutomation. Manual-audience runs are controlled with pauseAudienceRun, resumeAudienceRun and cancelAudienceRun, not here. Input Update: one or more of name, description, nodes, connections, triggerEventId, under the same typed condition contract as create (explicit type, canonical snake_case operator, no value for unary operators, type-correct values elsewhere); dryRun: true validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes NODE_ID_REPLACED reports. Lifecycle: published: true promotes the stored latest version live (optionally pin automationVersionId; the graph is validated first), published: false unpublishes, paused: true or false freezes or resumes future send steps (stopInFlight also stops runs already in progress). Returns the bare automation row, or with dryRun: true a 200 AutomationDryRunReport { valid, blockers[], warnings[], blockingIssues[], nodeCounts }: blockingIssues[] lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (fatal says what the reference would do: true for filter or split conditions and triple-brace {{{ }}} body tokens would break the run, false for subject, previewText, fromName, replyTo and double-brace body tags would render empty); valid is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, published describes the returned row, isLive, liveVersion and liveAutomationVersionId describe the automation, and warnings[] carries DRAFT_SAVED_NOT_LIVE. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and warnings[] carries TRIGGER_EVENT_NOT_RECEIVED saying what to set up. Errors 404 AUTOMATION_NOT_FOUND, AUTOMATION_VERSION_NOT_FOUND (pin liveAutomationVersionId, a versions[] id, or a run row's automationVersionId), TRIGGER_EVENT_NOT_FOUND; 400 AUTOMATION_GRAPH_INVALID (details.issues[]); 409 AUTOMATION_VERSION_CONFLICT (re-read, reapply, retry); 422 PUBLISH_VALIDATION_FAILED (details.blockers[]; a cdn.brew.new image a step would send that does not exist is a blocker, listed in details.missingImages[], and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access), AUTOMATION_NOT_PUBLISHED (nothing to unpublish; with stopInFlight: true on a draft, also no contacts in flight to stop), AUTOMATION_NOT_PAUSABLE (a manual-audience automation pauses through its runs). See also createAutomation, testAutomation, runAutomation, listAutomationRuns.\",\"dateModified\":\"2026-11-06T17:55:00.107Z\",\"isPartOf\":{\"@id\":\"https://docs.brew.new#website\"},\"breadcrumb\":{\"@id\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Public API v1\",\"item\":\"https://docs.brew.new/api-reference/public-v1/emails/list-email-designs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automations\",\"item\":\"https://docs.brew.new/api-reference/public-v1/automations/list-automations\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update or publish an automation\",\"item\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation#apireference\",\"headline\":\"Update or publish an automation\",\"name\":\"Update or publish an automation\",\"description\":\"One endpoint, two mutually exclusive modes: update the graph (a new automationVersionId on the same automationId) or change lifecycle state (published, paused). The modes cannot be combined: update first, then PATCH { \\\"published\\\": true }. Use when editing a graph or changing runtime state of an automation created with createAutomation. Manual-audience runs are controlled with pauseAudienceRun, resumeAudienceRun and cancelAudienceRun, not here. Input Update: one or more of name, description, nodes, connections, triggerEventId, under the same typed condition contract as create (explicit type, canonical snake_case operator, no value for unary operators, type-correct values elsewhere); dryRun: true validates without persisting. Node ids are stored as sent, so renamed nodes keep their new ids, except the two shapes NODE_ID_REPLACED reports. Lifecycle: published: true promotes the stored latest version live (optionally pin automationVersionId; the graph is validated first), published: false unpublishes, paused: true or false freezes or resumes future send steps (stopInFlight also stops runs already in progress). Returns the bare automation row, or with dryRun: true a 200 AutomationDryRunReport { valid, blockers[], warnings[], blockingIssues[], nodeCounts }: blockingIssues[] lists per-node references the effective trigger or contact catalog cannot provide, and publish refuses every one of them, fallback or not (fatal says what the reference would do: true for filter or split conditions and triple-brace {{{ }}} body tokens would break the run, false for subject, previewText, fromName, replyTo and double-brace body tags would render empty); valid is false when any blocker or blocking issue is present. Updating a LIVE automation saves a draft and does not go live: the previously published version keeps serving until you republish, published describes the returned row, isLive, liveVersion and liveAutomationVersionId describe the automation, and warnings[] carries DRAFT_SAVED_NOT_LIVE. Publishing an automation whose integration trigger has not received its event on the current connection (a Shopify topic with no webhook) still succeeds, and warnings[] carries TRIGGER_EVENT_NOT_RECEIVED saying what to set up. Errors 404 AUTOMATION_NOT_FOUND, AUTOMATION_VERSION_NOT_FOUND (pin liveAutomationVersionId, a versions[] id, or a run row's automationVersionId), TRIGGER_EVENT_NOT_FOUND; 400 AUTOMATION_GRAPH_INVALID (details.issues[]); 409 AUTOMATION_VERSION_CONFLICT (re-read, reapply, retry); 422 PUBLISH_VALIDATION_FAILED (details.blockers[]; a cdn.brew.new image a step would send that does not exist is a blocker, listed in details.missingImages[], and a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access), AUTOMATION_NOT_PUBLISHED (nothing to unpublish; with stopInFlight: true on a draft, also no contacts in flight to stop), AUTOMATION_NOT_PAUSABLE (a manual-audience automation pauses through its runs). See also createAutomation, testAutomation, runAutomation, listAutomationRuns.\",\"url\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.brew.new/api-reference/public-v1/automations/update-or-publish-an-automation#webpage\"},\"image\":\"https://docs.brew.new/images/og/default.png\",\"dateModified\":\"2026-11-06T17:55:00.107Z\",\"publisher\":{\"@id\":\"https://docs.brew.new/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.brew.new#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Brew Help Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Brew Help Docs","nav":{"global":{},"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/get-started/welcome"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/brew-university"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/integrations"}]},{"tab":"Developers","groups":[{"group":"Start Here","pages":[{"title":"Build with Brew","href":"/api-reference/overview"},{"title":"API Introduction","href":"/api-reference/api/api-introduction"},{"title":"Send Your First Email from Code","href":"/api-reference/guides/send-your-first-email-from-code"},{"title":"API Catalog","href":"/api-reference/api/api-catalog"}]},{"group":"Public API v1","pages":[{"group":"Emails","pages":[{"title":"List email designs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails","href":"/api-reference/public-v1/emails/list-email-designs"},{"title":"Generate an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails","href":"/api-reference/public-v1/emails/generate-an-email-design"},{"title":"Get an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/get-an-email-design"},{"title":"Delete an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/delete-an-email-design"},{"title":"Edit an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/edit-an-email-design"},{"title":"Import an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/import","href":"/api-reference/public-v1/emails/import-an-email"},{"title":"Import a Figma frame","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/figma","href":"/api-reference/public-v1/emails/import-a-figma-frame"},{"title":"Clone an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/clone","href":"/api-reference/public-v1/emails/clone-an-email-design"},{"title":"Restore a historical version","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/restore","href":"/api-reference/public-v1/emails/restore-a-historical-version"},{"title":"Export a design to an ESP","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/export","href":"/api-reference/public-v1/emails/export-a-design-to-an-esp"},{"title":"Audit an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/audit","href":"/api-reference/public-v1/emails/audit-an-email"},{"title":"Preview across clients \u0026 devices","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/client-previews","href":"/api-reference/public-v1/emails/preview-across-clients-\u0026-devices"},{"title":"List inbox placement tests","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/inbox-placement-tests","href":"/api-reference/public-v1/emails/list-inbox-placement-tests"},{"title":"Run an inbox placement test","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/inbox-placement-tests","href":"/api-reference/public-v1/emails/run-an-inbox-placement-test"},{"title":"Get inbox placement test results","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/inbox-placement-tests/{testId}","href":"/api-reference/public-v1/emails/get-inbox-placement-test-results"},{"title":"Read a saved email audit","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/audits/{auditId}","href":"/api-reference/public-v1/emails/read-a-saved-email-audit"},{"title":"Read email rendering progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/client-previews/{previewId}","href":"/api-reference/public-v1/emails/read-email-rendering-progress"},{"title":"Create an authenticated email canvas embed session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/canvas/sessions","href":"/api-reference/public-v1/emails/create-an-authenticated-email-canvas-embed-session"},{"title":"Refresh a canvas session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/canvas/sessions/{sessionId}/refresh","href":"/api-reference/public-v1/emails/refresh-a-canvas-session"},{"title":"Revoke a canvas session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/canvas/sessions/{sessionId}","href":"/api-reference/public-v1/emails/revoke-a-canvas-session"},{"title":"List email groups","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/email-groups","href":"/api-reference/public-v1/emails/list-email-groups"},{"title":"Create an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/email-groups","href":"/api-reference/public-v1/emails/create-an-email-group"},{"title":"Get an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/get-an-email-group"},{"title":"Delete an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/delete-an-email-group"},{"title":"Update an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/update-an-email-group"},{"title":"Send an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends","href":"/api-reference/public-v1/emails/send-an-email"},{"title":"Cancel a send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/cancel","href":"/api-reference/public-v1/emails/cancel-a-send"},{"title":"Pause a gradual send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/pause","href":"/api-reference/public-v1/emails/pause-a-gradual-send"},{"title":"Resume a paused gradual send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/resume","href":"/api-reference/public-v1/emails/resume-a-paused-gradual-send"},{"title":"List email comments","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/comments","href":"/api-reference/public-v1/emails/list-email-comments"}]},{"group":"Sends","pages":[{"title":"List sends","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/sends","href":"/api-reference/public-v1/sends/list-sends"},{"title":"Get a send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/sends/{sendId}","href":"/api-reference/public-v1/sends/get-a-send"}]},{"group":"Analytics","pages":[{"title":"Brand overview (totals, rates, timeseries)","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/overview","href":"/api-reference/public-v1/analytics/brand-overview-totals-rates-timeseries"},{"title":"Automation performance","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/automations","href":"/api-reference/public-v1/analytics/automation-performance"},{"title":"Unified events feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/events","href":"/api-reference/public-v1/analytics/unified-events-feed"}]},{"group":"Automations","pages":[{"title":"List automations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations","href":"/api-reference/public-v1/automations/list-automations"},{"title":"Create an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations","href":"/api-reference/public-v1/automations/create-an-automation"},{"title":"Get an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/get-an-automation"},{"title":"Delete an automation","description":"Cascade-deletes the automation: every version row, runs, and logs. Referenced email DESIGNS are shared resources and always survive. Idempotent — an unknown id resolves with `deleted: false`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/delete-an-automation"},{"title":"Update or publish an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/update-or-publish-an-automation"},{"title":"Test an automation","description":"Runs the saved automation END-TO-END through the real workflow in TEST mode — works on drafts and for both event and manual-audience automations; every node executes (filters/splits evaluate against `payload`, and `contact.\u003cname>` conditions read the test recipient’s contact unless `payload` supplies that field — a flat `contact.\u003cname>` key or a `contact` object — and the trigger’s contract keeps extra keys; wait nodes fast-forward). Pass `testRecipient` to DELIVER each send-email node’s email for real to that address (real subject/preview/sender name; verified configured sender domains are preserved, otherwise delivery uses the Brew test domain; customer addresses are never hit; the address must be a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain, else `422 TEST_RECIPIENT_NOT_ALLOWED`) — omit it for a silent dry-run with no mail. Test runs are excluded from live analytics rollups. Real test deliveries consume send usage; dry runs do not. Test payloads never update real contact records. Returns `202` with the started run id; follow per-node status via `GET /v1/automations/runs/{automationRunId}?include=logs`. Optional `scenario` controls simulate timed opens/clicks at engagement-filter nodes and force left/right percentage-split choices (waits use a virtual clock; controls stay separate from `payload`, and simulated events never enter live analytics or send quotas); the run row’s `testCoverage` reports visited nodes, traversed connections, evaluated or forced decisions, uncovered paths and simulation limitations. On a Brew-event (unsubscribe) trigger, omit payload to use Brew’s sample event; supplied fields replace the sample’s. The run never creates or edits a contact.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/{automationId}/test","href":"/api-reference/public-v1/automations/test-an-automation"},{"title":"Run a manual-audience automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/{automationId}/run","href":"/api-reference/public-v1/automations/run-a-manual-audience-automation"},{"title":"List manual-audience runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/audience-runs","href":"/api-reference/public-v1/automations/list-manual-audience-runs"},{"title":"Get a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/audience-runs/{audienceRunId}","href":"/api-reference/public-v1/automations/get-a-manual-audience-run"},{"title":"Pause a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/pause","href":"/api-reference/public-v1/automations/pause-a-manual-audience-run"},{"title":"Resume a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/resume","href":"/api-reference/public-v1/automations/resume-a-manual-audience-run"},{"title":"Cancel a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/cancel","href":"/api-reference/public-v1/automations/cancel-a-manual-audience-run"},{"title":"List automation runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/runs","href":"/api-reference/public-v1/automations/list-automation-runs"},{"title":"Get an automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/runs/{automationRunId}","href":"/api-reference/public-v1/automations/get-an-automation-run"},{"title":"Cancel an automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/runs/{automationRunId}/cancel","href":"/api-reference/public-v1/automations/cancel-an-automation-run"},{"title":"Get or create an unsubscribe trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/brew-events","href":"/api-reference/public-v1/automations/get-or-create-an-unsubscribe-trigger"},{"title":"List triggers","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers","href":"/api-reference/public-v1/automations/list-triggers"},{"title":"Create a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers","href":"/api-reference/public-v1/automations/create-a-trigger"},{"title":"Get a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/get-a-trigger"},{"title":"Delete a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/delete-a-trigger"},{"title":"Update a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/update-a-trigger"},{"title":"Check a trigger is ready to fire","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}/readiness","href":"/api-reference/public-v1/automations/check-a-trigger-is-ready-to-fire"},{"title":"Fire a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/{triggerEventId}/fire","href":"/api-reference/public-v1/automations/fire-a-trigger"},{"title":"Get a trigger payload contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}/contract","href":"/api-reference/public-v1/automations/get-a-trigger-payload-contract"},{"title":"Declare a trigger payload contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml put /v1/automations/triggers/{triggerEventId}/contract","href":"/api-reference/public-v1/automations/declare-a-trigger-payload-contract"},{"title":"Validate a trigger payload","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/{triggerEventId}/contract/validate","href":"/api-reference/public-v1/automations/validate-a-trigger-payload"},{"title":"Infer a payload contract from an example","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/payload-contracts/infer","href":"/api-reference/public-v1/automations/infer-a-payload-contract-from-an-example"},{"title":"List trigger instances","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/trigger-instances","href":"/api-reference/public-v1/automations/list-trigger-instances"},{"title":"Get a trigger instance","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/trigger-instances/{triggerInstanceId}","href":"/api-reference/public-v1/automations/get-a-trigger-instance"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/contacts","href":"/api-reference/public-v1/contacts/list-contacts"},{"title":"Create or update contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts","href":"/api-reference/public-v1/contacts/create-or-update-contacts"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/get-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/delete-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/update-a-contact"},{"title":"Get contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/search","href":"/api-reference/public-v1/contacts/get-contacts"},{"title":"Validate email deliverability","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/validate","href":"/api-reference/public-v1/contacts/validate-email-deliverability"},{"title":"Bulk-import contacts from CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/import-csv","href":"/api-reference/public-v1/contacts/bulk-import-contacts-from-csv"},{"title":"Bulk-import contacts from JSON","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/import","href":"/api-reference/public-v1/contacts/bulk-import-contacts-from-json"},{"title":"Batch-delete contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/batch-delete","href":"/api-reference/public-v1/contacts/batch-delete-contacts"}]},{"group":"Contact Fields","pages":[{"title":"List contact fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/fields","href":"/api-reference/public-v1/contact-fields/list-contact-fields"},{"title":"Create a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/fields","href":"/api-reference/public-v1/contact-fields/create-a-contact-field"},{"title":"Get a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/fields/{fieldName}","href":"/api-reference/public-v1/contact-fields/get-a-contact-field"},{"title":"Delete a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/fields/{fieldName}","href":"/api-reference/public-v1/contact-fields/delete-a-contact-field"}]},{"group":"Audiences","pages":[{"title":"List audiences","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/audiences","href":"/api-reference/public-v1/audiences/list-audiences"},{"title":"Create an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences","href":"/api-reference/public-v1/audiences/create-an-audience"},{"title":"Get an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/get-an-audience"},{"title":"Delete an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/delete-an-audience"},{"title":"Update an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/update-an-audience"},{"title":"Create an audience from analytics events","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences/from-events","href":"/api-reference/public-v1/audiences/create-an-audience-from-analytics-events"},{"title":"Duplicate an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences/{audienceId}/duplicate","href":"/api-reference/public-v1/audiences/duplicate-an-audience"}]},{"group":"Domains","pages":[{"title":"List domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains","href":"/api-reference/public-v1/domains/list-domains"},{"title":"Add a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains","href":"/api-reference/public-v1/domains/add-a-domain"},{"title":"Get a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/get-a-domain"},{"title":"Delete a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/delete-a-domain"},{"title":"Update domain settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/update-domain-settings"},{"title":"Verify a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/verify","href":"/api-reference/public-v1/domains/verify-a-domain"},{"title":"List a domain's unsubscribes","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/unsubscribes","href":"/api-reference/public-v1/domains/list-a-domains-unsubscribes"},{"title":"Add addresses to a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/unsubscribes","href":"/api-reference/public-v1/domains/add-addresses-to-a-domains-unsubscribe-list"},{"title":"Remove an address from a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/domains/{domainId}/unsubscribes/{email}","href":"/api-reference/public-v1/domains/remove-an-address-from-a-domains-unsubscribe-list"},{"title":"Import a CSV into a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/unsubscribes/import","href":"/api-reference/public-v1/domains/import-a-csv-into-a-domains-unsubscribe-list"},{"title":"Export a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/unsubscribes/export","href":"/api-reference/public-v1/domains/export-a-domains-unsubscribe-list"},{"title":"Get domain health","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/health","href":"/api-reference/public-v1/domains/get-domain-health"}]},{"group":"Templates","pages":[{"title":"List templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/templates","href":"/api-reference/public-v1/templates/list-templates"},{"title":"Get a public template","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/templates/{templateId}","href":"/api-reference/public-v1/templates/get-a-public-template"},{"title":"List flows","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/flows","href":"/api-reference/public-v1/templates/list-flows"},{"title":"Get a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/flows/{slug}","href":"/api-reference/public-v1/templates/get-a-flow"}]},{"group":"Brand","pages":[{"title":"Get the brand bound to this API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brand","href":"/api-reference/public-v1/brand/get-the-brand-bound-to-this-api-key"},{"title":"Update brand identity + design system","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/brand","href":"/api-reference/public-v1/brand/update-brand-identity-+-design-system"},{"title":"Get brand images","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brand/images","href":"/api-reference/public-v1/brand/get-brand-images"},{"title":"Delete a brand image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/brand/images/{assetId}","href":"/api-reference/public-v1/brand/delete-a-brand-image"}]},{"group":"Brands","pages":[{"title":"List the brands this credential can reach","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brands","href":"/api-reference/public-v1/brands/list-the-brands-this-credential-can-reach"},{"title":"Create a brand and start its extraction","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/brands","href":"/api-reference/public-v1/brands/create-a-brand-and-start-its-extraction"},{"title":"Get one brand’s lifecycle state","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brands/{brandId}","href":"/api-reference/public-v1/brands/get-one-brand’s-lifecycle-state"}]},{"group":"Content","pages":[{"title":"Generate an image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/generate-image","href":"/api-reference/public-v1/content/generate-an-image"},{"title":"Generate a GIF","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/gif","href":"/api-reference/public-v1/content/generate-a-gif"},{"title":"Transform an image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/transform","href":"/api-reference/public-v1/content/transform-an-image"},{"title":"Render HTML to a PNG","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/html-to-png","href":"/api-reference/public-v1/content/render-html-to-a-png"},{"title":"Add image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/add-image","href":"/api-reference/public-v1/content/add-image"},{"title":"Create an image upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/image-uploads","href":"/api-reference/public-v1/content/create-an-image-upload"}]},{"group":"Usage","pages":[{"title":"Get usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/usage","href":"/api-reference/public-v1/usage/get-usage"}]},{"group":"Integrations","pages":[{"title":"List integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/integrations","href":"/api-reference/public-v1/integrations/list-integrations"}]},{"group":"API Keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/api-keys","href":"/api-reference/public-v1/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/api-keys","href":"/api-reference/public-v1/api-keys/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/api-keys/{keyId}","href":"/api-reference/public-v1/api-keys/revoke-an-api-key"}]},{"group":"Health","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/health","href":"/api-reference/public-v1/health/liveness-probe"}]},{"group":"Meta","pages":[{"title":"Machine-readable API catalog","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/help","href":"/api-reference/public-v1/meta/machine-readable-api-catalog"}]},{"group":"Chats","pages":[{"title":"List chats","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/chats","href":"/api-reference/public-v1/chats/list-chats"},{"title":"Get chat context","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/chats/{chatId}","href":"/api-reference/public-v1/chats/get-chat-context"}]},{"group":"Insights","pages":[{"title":"List insights","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/insights","href":"/api-reference/public-v1/insights/list-insights"},{"title":"Get an insight","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/insights/{insightId}","href":"/api-reference/public-v1/insights/get-an-insight"}]},{"group":"Notifications","pages":[{"title":"List notifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/notifications","href":"/api-reference/public-v1/notifications/list-notifications"}]}]},{"group":"API Contracts","pages":[{"title":"Authentication and Security","href":"/api-reference/api/authentication"},{"title":"Organization and Brand Credentials","href":"/api-reference/api/organization-and-brand-scope"},{"title":"Data Model","href":"/api-reference/api/data-model"},{"title":"Rate Limits","href":"/api-reference/api/rate-limits"},{"title":"Idempotency","href":"/api-reference/api/idempotency"},{"title":"Pagination","href":"/api-reference/api/pagination"},{"title":"Batch Operations","href":"/api-reference/api/batch-operations"},{"title":"Async Jobs and Polling","href":"/api-reference/api/async-jobs"},{"title":"API Credits","sidebarTitle":"Credits","href":"/api-reference/api/credits"},{"title":"Events and Webhooks","href":"/api-reference/api/events-and-webhooks"},{"title":"API Errors","sidebarTitle":"Errors","href":"/api-reference/api/errors"},{"title":"Response Headers","href":"/api-reference/api/response-headers"},{"title":"API Design Notes","href":"/api-reference/api/design-notes"},{"title":"Migrate to the New v1 Surface","href":"/api-reference/api/v1-migration"}]},{"group":"API Guides","pages":[{"title":"Check Brand Readiness Before Generating","href":"/api-reference/guides/check-brand-readiness"},{"title":"Upload a Local Image","href":"/api-reference/guides/upload-a-local-image"},{"title":"Monitor Email Sends","href":"/api-reference/guides/monitor-campaign-sends"},{"title":"Explore Per-Contact Engagement","href":"/api-reference/guides/per-contact-engagement"},{"title":"Read Brew Insights","href":"/api-reference/guides/read-brew-insights"},{"title":"Typed Payload Contracts","href":"/api-reference/guides/typed-payload-contracts"}]},{"group":"MCP Server","pages":[{"title":"Brew MCP Server","href":"/api-reference/mcp/overview"},{"title":"MCP Quickstart","href":"/api-reference/mcp/quickstart"},{"title":"Connect Your MCP Client","sidebarTitle":"Connect Your Client","href":"/api-reference/mcp/connect-your-client"},{"title":"MCP Tools","href":"/api-reference/mcp/tools"},{"title":"MCP Workflows","href":"/api-reference/mcp/workflows"},{"title":"Sync a CRM into Brew over MCP","href":"/api-reference/mcp/sync-a-crm"},{"title":"Sync Brew and Attio over MCP","href":"/api-reference/mcp/attio"},{"title":"MCP Authentication and Scoping","href":"/api-reference/mcp/authentication-and-scoping"}]},{"group":"CLI","pages":[{"title":"Brew CLI","href":"/api-reference/cli/overview"},{"title":"CLI Quickstart","href":"/api-reference/cli/quickstart"},{"title":"CLI Installation","sidebarTitle":"Installation","href":"/api-reference/cli/installation"},{"title":"CLI Authentication","sidebarTitle":"Authentication","href":"/api-reference/cli/authentication"},{"title":"CLI Commands","sidebarTitle":"Commands","href":"/api-reference/cli/commands"},{"title":"CLI Common Flows","sidebarTitle":"Common Flows","href":"/api-reference/cli/common-flows"},{"title":"Use the CLI from AI Agents","sidebarTitle":"Use from AI Agents","href":"/api-reference/cli/agents"}]},{"group":"SDKs","pages":[{"title":"SDK Overview","href":"/sdks/overview"},{"title":"SDK Authentication","sidebarTitle":"Authentication","href":"/sdks/authentication"},{"title":"Generate Your Own SDK","href":"/sdks/openapi-codegen"},{"title":"TypeScript Installation","href":"/sdks/typescript/installation"},{"title":"TypeScript Quickstart","href":"/sdks/typescript/quickstart"},{"title":"TypeScript Resource Surface","href":"/sdks/typescript/resources"},{"title":"Build a White-Label Email Editor","sidebarTitle":"White-Label Integration","href":"/sdks/typescript/white-label-email-editor"},{"title":"Embed the Email Canvas","href":"/sdks/typescript/embedded-email-canvas"},{"title":"TypeScript Error Handling","href":"/sdks/typescript/error-handling"},{"title":"Agentic Cookbook","href":"/sdks/typescript/agentic-cookbook"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]},{"tab":"Legal","pages":[{"title":"Legal","href":"/legal/terms-of-service"}]}]},"basePath":"","title":"Update or publish an automation - Brew Help Docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}