using Novu;
using Novu.Models.Components;
using System.Collections.Generic;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
var res = await sdk.Workflows.UpdateAsync(
workflowId: "<id>",
updateWorkflowDto: new UpdateWorkflowDto() {
Name = "<value>",
Steps = new List<UpdateWorkflowDtoSteps>() {},
Preferences = new PreferencesRequestDto() {
User = User.CreateUserWorkflowPreferencesDto(
new UserWorkflowPreferencesDto() {
All = UserAll.CreateWorkflowPreferenceDto(
new WorkflowPreferenceDto() {}
),
Channels = new Dictionary<string, ChannelPreferenceDto>() {
{ "email", new ChannelPreferenceDto() {} },
{ "sms", new ChannelPreferenceDto() {
Enabled = false,
} },
},
}
),
Workflow = new PreferencesRequestDtoWorkflow() {
All = PreferencesRequestDtoAll.CreateWorkflowPreferenceDto(
new WorkflowPreferenceDto() {}
),
Channels = new Dictionary<string, ChannelPreferenceDto>() {
{ "email", new ChannelPreferenceDto() {} },
{ "sms", new ChannelPreferenceDto() {
Enabled = false,
} },
},
},
},
}
);
// handle response
declare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$updateWorkflowDto = new Components\UpdateWorkflowDto(
name: '<value>',
steps: [],
preferences: new Components\PreferencesRequestDto(
user: new Components\UserWorkflowPreferencesDto(
all: new Components\WorkflowPreferenceDto(),
channels: [
'email' => new Components\ChannelPreferenceDto(),
'sms' => new Components\ChannelPreferenceDto(
enabled: false,
),
],
),
workflow: new Components\PreferencesRequestDtoWorkflow(
all: new Components\WorkflowPreferenceDto(),
channels: [
'email' => new Components\ChannelPreferenceDto(),
'sms' => new Components\ChannelPreferenceDto(
enabled: false,
),
],
),
),
);
$response = $sdk->workflows->update(
workflowId: '<id>',
updateWorkflowDto: $updateWorkflowDto
);
if ($response->workflowResponseDto !== null) {
// handle response
}
using Novu;
using Novu.Models.Components;
using System.Collections.Generic;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
var res = await sdk.Workflows.UpdateAsync(
workflowId: "<id>",
updateWorkflowDto: new UpdateWorkflowDto() {
Name = "<value>",
Steps = new List<UpdateWorkflowDtoSteps>() {},
Preferences = new PreferencesRequestDto() {
User = User.CreateUserWorkflowPreferencesDto(
new UserWorkflowPreferencesDto() {
All = UserAll.CreateWorkflowPreferenceDto(
new WorkflowPreferenceDto() {}
),
Channels = new Dictionary<string, ChannelPreferenceDto>() {
{ "email", new ChannelPreferenceDto() {} },
{ "sms", new ChannelPreferenceDto() {
Enabled = false,
} },
},
}
),
Workflow = new PreferencesRequestDtoWorkflow() {
All = PreferencesRequestDtoAll.CreateWorkflowPreferenceDto(
new WorkflowPreferenceDto() {}
),
Channels = new Dictionary<string, ChannelPreferenceDto>() {
{ "email", new ChannelPreferenceDto() {} },
{ "sms", new ChannelPreferenceDto() {
Enabled = false,
} },
},
},
},
}
);
// handle response
declare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$updateWorkflowDto = new Components\UpdateWorkflowDto(
name: '<value>',
steps: [],
preferences: new Components\PreferencesRequestDto(
user: new Components\UserWorkflowPreferencesDto(
all: new Components\WorkflowPreferenceDto(),
channels: [
'email' => new Components\ChannelPreferenceDto(),
'sms' => new Components\ChannelPreferenceDto(
enabled: false,
),
],
),
workflow: new Components\PreferencesRequestDtoWorkflow(
all: new Components\WorkflowPreferenceDto(),
channels: [
'email' => new Components\ChannelPreferenceDto(),
'sms' => new Components\ChannelPreferenceDto(
enabled: false,
),
],
),
),
);
$response = $sdk->workflows->update(
workflowId: '<id>',
updateWorkflowDto: $updateWorkflowDto
);
if ($response->workflowResponseDto !== null) {
// handle response
}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Novu","description":"The open-source notification infrastructure for agents and products. Send, receive, and track notifications across channels.","colors":{"primary":"#0e121b","light":"#FFFFFF","dark":"#FFFFFF"},"logo":{"light":"https://mintcdn.com/novu-c5de82d9/2Q_L4HxwUfLmJjB8/logo/light.svg?fit=max\u0026auto=format\u0026n=2Q_L4HxwUfLmJjB8\u0026q=85\u0026s=23e7050191303b6a0ac4a671dfed8df4","dark":"https://mintcdn.com/novu-c5de82d9/2Q_L4HxwUfLmJjB8/logo/dark.svg?fit=max\u0026auto=format\u0026n=2Q_L4HxwUfLmJjB8\u0026q=85\u0026s=bd7c54f6b7a7b5002ea7b525af3e169c","href":"https://docs.novu.co"},"favicon":"https://mintcdn.com/novu-c5de82d9/ZUl3xXp-4AASlrcI/favicon.svg?fit=max\u0026auto=format\u0026n=ZUl3xXp-4AASlrcI\u0026q=85\u0026s=b53c3afb6a8eaf11aff9db2c5d3f05a1","api":{"openapi":"https://spec.speakeasy.com/novu/novu/json-development-with-code-samples","examples":{"prefill":true}},"background":{},"navbar":{"links":[{"href":"https://novu.co/contact-us","label":"Contact Us"}],"primary":{"type":"button","label":"Get Started","href":"https://dashboard.novu.co/auth/sign-up"}},"footer":{"socials":{"x":"https://x.com/novuhq","github":"https://github.com/novuhq/novu","linkedin":"https://www.linkedin.com/company/novuco"},"links":[{"header":"Comparison","items":[{"label":"Novu vs Courier","href":"https://novu.co/comparison/courier"},{"label":"Novu vs Knock","href":"https://novu.co/comparison/knock"},{"label":"Novu vs MagicBell","href":"https://novu.co/comparison/magicbell"},{"label":"Novu vs SuprSend","href":"https://novu.co/comparison/suprsend"},{"label":"Novu vs In-house","href":"https://novu.co/comparison/building-in-house"}]},{"header":"Resources","items":[{"label":"Contact Support","href":"mailto:support@novu.co"},{"label":"Changelog","href":"https://go.novu.co/changelog?utm_source=docs_footer"},{"label":"Roadmap","href":"https://roadmap.novu.co/roadmap"},{"label":"Contact Sales","href":"https://novu.co/contact-us"},{"label":"Read llms.txt","href":"/llms.txt"}]}]},"seo":{"metatags":{"og:type":"website","twitter:card":"summary_large_image"},"indexing":"all"},"icons":{"library":"lucide"},"integrations":{"gtm":{"tagId":"GTM-KXMC4XP2"},"plausible":{"domain":"docs.novu.co"}},"contextual":{"options":["copy","view","cursor","claude","chatgpt","mcp","add-mcp"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/novu-c5de82d9/vncv7ET97M5-dM6d/images/og/og-image-docs-v2.jpg?fit=max\u0026auto=format\u0026n=vncv7ET97M5-dM6d\u0026q=85\u0026s=26b59f5c597b5b1bea44cbc57cad5e3a","fonts":{"family":"Inter"}},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"novu-c5de82d9","hasAudioNarration":false,"actualSubdomain":"novu-c5de82d9","customDomains":["docs.novu.co"],"gitSource":{"type":"github","owner":"novuhq","repo":"novu","deployBranch":"next","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"313ea6a7-dc00-4182-b4a8-2d4cea7d9086","liveDeploymentHistoryId":"6ae2023c201cdb70a5227b24","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2023c201cdb70a5227b24"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6ae2023c201cdb70a5227b24","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Notify","count":217},{"language":"default","tag":"API Reference","count":160},{"language":"default","tag":"Resources","count":107},{"language":"default","tag":"Integrate Channels Providers","count":93},{"language":"default","tag":"Guides","count":86},{"language":"default","tag":"Data","count":63},{"language":"default","tag":"Getting Started","count":62},{"language":"default","tag":"Framework","count":52},{"language":"default","tag":"Agent Connect","count":41},{"language":"default","tag":"Sms","count":38}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@novu.co","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@media (min-width:1024px){#sidebar-content{width:16rem;min-width:16rem;max-width:16rem}}body:has(#home-content) nav[aria-label=Main] a[aria-current=location]{background:0 0!important;color:rgb(75 85 99)}html.dark body:has(#home-content) nav[aria-label=Main] a[aria-current=location]{color:rgb(156 163 175)}body:has(#home-content) nav[aria-label=Main] a[aria-current=location]:hover{background:rgb(3 7 18/.03)!important;color:rgb(17 24 39)}html.dark body:has(#home-content) nav[aria-label=Main] a[aria-current=location]:hover{background:rgb(255 255 255/.03)!important;color:rgb(229 231 235)}#home-content .hero-cards{margin-top:1.5rem}#home-content .card [data-component-part=card-image]{width:107.5%;max-width:none;margin:-3.75% -3.75% 0}"}],"page":{"pagePath":"api-reference/workflows/update-a-workflow","slug":"/api-reference/workflows/update-a-workflow","pageMetadata":{"title":"Update a workflow","openapi":"PUT /v2/workflows/{workflowId}","description":"Updates the details of an existing workflow, here **workflowId** is the identifier of the workflow","href":"/api-reference/workflows/update-a-workflow"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Updates the details of an existing workflow, here \", _jsx(_components.strong, {\n children: \"workflowId\"\n }), \" is the identifier of the workflow\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update a workflow","openapi":"PUT /v2/workflows/{workflowId}","description":"Updates the details of an existing workflow, here **workflowId** is the identifier of the workflow","href":"/api-reference/workflows/update-a-workflow"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"WorkflowController_update","summary":"Update a workflow","description":"Updates the details of an existing workflow, here **workflowId** is the identifier of the workflow","parameters":["963b262e-7b43-4d85-9036-22be219f27a6","cca83d48-5adf-4db5-a5d6-8be5b406df8f"],"requestBody":"20ccf447-49dd-458f-b0a9-b44cfb05b229","responses":{"200":"524d08ce-9ec6-4a43-873b-ccfa11284b8e","400":"2ca5d59a-9925-4e6e-a18d-4e1e559f5637","401":"c1e14097-7c9b-4c61-b5f8-b314d7a236e0","403":"f41f0a00-9979-4f6a-bec1-ba76349aa4ad","404":"18924c71-8127-4fe7-b83d-8033ca8a6b3b","405":"71abfd23-a79a-4ef4-8cd3-8ccc5c8a1fe6","409":"a66f0482-dc49-4403-add6-65e819f03d3f","413":"f75de544-df44-440e-b7be-18bc55a9faa3","414":"de7b3779-d5fc-4a56-bf4b-649545c82904","415":"8730a5ea-9be9-4875-b238-bdbf33d98d5c","422":"6ed013f8-ccb5-4292-a0ad-e00c7b9fcd85","429":"ef4d3126-b599-4ec7-9062-a7414334ec20","500":"d213ab3e-4a5f-478a-9653-71e883f199d1","503":"76269246-86ef-4d8f-9f7a-b588c533dd12"},"tags":["Workflows"],"security":["9fe3fcd5-77de-4369-a71e-145f28676422"],"x-codeSamples":[{"lang":"go","label":"Go","source":"package main\n\nimport(\n\t\"context\"\n\t\"github.com/novuhq/novu-go/v3\"\n\t\"github.com/novuhq/novu-go/v3/models/components\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n s := v3.New(\n v3.WithSecurity(\"YOUR_SECRET_KEY_HERE\"),\n )\n\n res, err := s.Workflows.Update(ctx, \"\u003cid>\", components.UpdateWorkflowDto{\n Name: \"\u003cvalue>\",\n Steps: []components.UpdateWorkflowDtoSteps{},\n Preferences: components.PreferencesRequestDto{\n User: v3.Pointer(components.CreateUserUserWorkflowPreferencesDto(\n components.UserWorkflowPreferencesDto{\n All: components.CreateUserAllWorkflowPreferenceDto(\n components.WorkflowPreferenceDto{},\n ),\n Channels: map[string]components.ChannelPreferenceDto{\n \"email\": components.ChannelPreferenceDto{},\n \"sms\": components.ChannelPreferenceDto{\n Enabled: v3.Pointer(false),\n },\n },\n },\n )),\n Workflow: \u0026components.PreferencesRequestDtoWorkflow{\n All: components.CreatePreferencesRequestDtoAllWorkflowPreferenceDto(\n components.WorkflowPreferenceDto{},\n ),\n Channels: map[string]components.ChannelPreferenceDto{\n \"email\": components.ChannelPreferenceDto{},\n \"sms\": components.ChannelPreferenceDto{\n Enabled: v3.Pointer(false),\n },\n },\n },\n },\n }, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.WorkflowResponseDto != nil {\n // handle response\n }\n}"},{"lang":"typescript","label":"TypeScript","source":"import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n secretKey: \"YOUR_SECRET_KEY_HERE\",\n});\n\nasync function run() {\n const result = await novu.workflows.update({\n name: \"\u003cvalue>\",\n steps: [],\n preferences: {\n user: {\n all: {\n enabled: true,\n readOnly: false,\n },\n channels: {\n \"email\": {\n enabled: true,\n },\n \"sms\": {\n enabled: false,\n },\n },\n },\n workflow: {\n all: {\n enabled: true,\n readOnly: false,\n },\n channels: {\n \"email\": {},\n \"sms\": {\n enabled: false,\n },\n },\n },\n },\n }, \"\u003cid>\");\n\n console.log(result);\n}\n\nrun();"},{"lang":"csharp","label":"Csharp (SDK)","source":"using Novu;\nusing Novu.Models.Components;\nusing System.Collections.Generic;\n\nvar sdk = new NovuSDK(secretKey: \"YOUR_SECRET_KEY_HERE\");\n\nvar res = await sdk.Workflows.UpdateAsync(\n workflowId: \"\u003cid>\",\n updateWorkflowDto: new UpdateWorkflowDto() {\n Name = \"\u003cvalue>\",\n Steps = new List\u003cUpdateWorkflowDtoSteps>() {},\n Preferences = new PreferencesRequestDto() {\n User = User.CreateUserWorkflowPreferencesDto(\n new UserWorkflowPreferencesDto() {\n All = UserAll.CreateWorkflowPreferenceDto(\n new WorkflowPreferenceDto() {}\n ),\n Channels = new Dictionary\u003cstring, ChannelPreferenceDto>() {\n { \"email\", new ChannelPreferenceDto() {} },\n { \"sms\", new ChannelPreferenceDto() {\n Enabled = false,\n } },\n },\n }\n ),\n Workflow = new PreferencesRequestDtoWorkflow() {\n All = PreferencesRequestDtoAll.CreateWorkflowPreferenceDto(\n new WorkflowPreferenceDto() {}\n ),\n Channels = new Dictionary\u003cstring, ChannelPreferenceDto>() {\n { \"email\", new ChannelPreferenceDto() {} },\n { \"sms\", new ChannelPreferenceDto() {\n Enabled = false,\n } },\n },\n },\n },\n }\n);\n\n// handle response"},{"lang":"php","label":"PHP","source":"declare(strict_types=1);\n\nrequire 'vendor/autoload.php';\n\nuse novu;\nuse novu\\Models\\Components;\n\n$sdk = novu\\Novu::builder()\n ->setSecurity(\n 'YOUR_SECRET_KEY_HERE'\n )\n ->build();\n\n$updateWorkflowDto = new Components\\UpdateWorkflowDto(\n name: '\u003cvalue>',\n steps: [],\n preferences: new Components\\PreferencesRequestDto(\n user: new Components\\UserWorkflowPreferencesDto(\n all: new Components\\WorkflowPreferenceDto(),\n channels: [\n 'email' => new Components\\ChannelPreferenceDto(),\n 'sms' => new Components\\ChannelPreferenceDto(\n enabled: false,\n ),\n ],\n ),\n workflow: new Components\\PreferencesRequestDtoWorkflow(\n all: new Components\\WorkflowPreferenceDto(),\n channels: [\n 'email' => new Components\\ChannelPreferenceDto(),\n 'sms' => new Components\\ChannelPreferenceDto(\n enabled: false,\n ),\n ],\n ),\n ),\n);\n\n$response = $sdk->workflows->update(\n workflowId: '\u003cid>',\n updateWorkflowDto: $updateWorkflowDto\n\n);\n\nif ($response->workflowResponseDto !== null) {\n // handle response\n}"},{"lang":"python","label":"Python","source":"import novu_py\nfrom novu_py import Novu\n\n\nwith Novu(\n secret_key=\"YOUR_SECRET_KEY_HERE\",\n) as novu:\n\n res = novu.workflows.update(workflow_id=\"\u003cid>\", update_workflow_dto=novu_py.UpdateWorkflowDto(\n name=\"\u003cvalue>\",\n steps=[],\n preferences=novu_py.PreferencesRequestDto(\n user=novu_py.UserWorkflowPreferencesDto(\n all=novu_py.WorkflowPreferenceDto(\n enabled=True,\n read_only=False,\n ),\n channels={\n \"email\": novu_py.ChannelPreferenceDto(\n enabled=True,\n ),\n \"sms\": novu_py.ChannelPreferenceDto(\n enabled=False,\n ),\n },\n ),\n workflow=novu_py.PreferencesRequestDtoWorkflow(\n all=novu_py.WorkflowPreferenceDto(\n enabled=True,\n read_only=False,\n ),\n channels={\n \"email\": novu_py.ChannelPreferenceDto(),\n \"sms\": novu_py.ChannelPreferenceDto(\n enabled=False,\n ),\n },\n ),\n ),\n ))\n\n # Handle response\n print(res)"}],"method":"put","type":"path","servers":["29cc13d7-64c7-40f9-8a35-9c01537b78f4","7588375a-aa7e-462d-a5bf-d94b8564f985"],"path":"/v2/workflows/{workflowId}","baseUrlOptions":["https://api.novu.co","https://eu.api.novu.co"],"title":"Update a workflow","codeSamples":[{"label":"Go","lang":"go","source":"package main\n\nimport(\n\t\"context\"\n\t\"github.com/novuhq/novu-go/v3\"\n\t\"github.com/novuhq/novu-go/v3/models/components\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n s := v3.New(\n v3.WithSecurity(\"YOUR_SECRET_KEY_HERE\"),\n )\n\n res, err := s.Workflows.Update(ctx, \"\u003cid>\", components.UpdateWorkflowDto{\n Name: \"\u003cvalue>\",\n Steps: []components.UpdateWorkflowDtoSteps{},\n Preferences: components.PreferencesRequestDto{\n User: v3.Pointer(components.CreateUserUserWorkflowPreferencesDto(\n components.UserWorkflowPreferencesDto{\n All: components.CreateUserAllWorkflowPreferenceDto(\n components.WorkflowPreferenceDto{},\n ),\n Channels: map[string]components.ChannelPreferenceDto{\n \"email\": components.ChannelPreferenceDto{},\n \"sms\": components.ChannelPreferenceDto{\n Enabled: v3.Pointer(false),\n },\n },\n },\n )),\n Workflow: \u0026components.PreferencesRequestDtoWorkflow{\n All: components.CreatePreferencesRequestDtoAllWorkflowPreferenceDto(\n components.WorkflowPreferenceDto{},\n ),\n Channels: map[string]components.ChannelPreferenceDto{\n \"email\": components.ChannelPreferenceDto{},\n \"sms\": components.ChannelPreferenceDto{\n Enabled: v3.Pointer(false),\n },\n },\n },\n },\n }, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.WorkflowResponseDto != nil {\n // handle response\n }\n}"},{"label":"TypeScript","lang":"typescript","source":"import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n secretKey: \"YOUR_SECRET_KEY_HERE\",\n});\n\nasync function run() {\n const result = await novu.workflows.update({\n name: \"\u003cvalue>\",\n steps: [],\n preferences: {\n user: {\n all: {\n enabled: true,\n readOnly: false,\n },\n channels: {\n \"email\": {\n enabled: true,\n },\n \"sms\": {\n enabled: false,\n },\n },\n },\n workflow: {\n all: {\n enabled: true,\n readOnly: false,\n },\n channels: {\n \"email\": {},\n \"sms\": {\n enabled: false,\n },\n },\n },\n },\n }, \"\u003cid>\");\n\n console.log(result);\n}\n\nrun();"},{"label":"Csharp (SDK)","lang":"csharp","source":"using Novu;\nusing Novu.Models.Components;\nusing System.Collections.Generic;\n\nvar sdk = new NovuSDK(secretKey: \"YOUR_SECRET_KEY_HERE\");\n\nvar res = await sdk.Workflows.UpdateAsync(\n workflowId: \"\u003cid>\",\n updateWorkflowDto: new UpdateWorkflowDto() {\n Name = \"\u003cvalue>\",\n Steps = new List\u003cUpdateWorkflowDtoSteps>() {},\n Preferences = new PreferencesRequestDto() {\n User = User.CreateUserWorkflowPreferencesDto(\n new UserWorkflowPreferencesDto() {\n All = UserAll.CreateWorkflowPreferenceDto(\n new WorkflowPreferenceDto() {}\n ),\n Channels = new Dictionary\u003cstring, ChannelPreferenceDto>() {\n { \"email\", new ChannelPreferenceDto() {} },\n { \"sms\", new ChannelPreferenceDto() {\n Enabled = false,\n } },\n },\n }\n ),\n Workflow = new PreferencesRequestDtoWorkflow() {\n All = PreferencesRequestDtoAll.CreateWorkflowPreferenceDto(\n new WorkflowPreferenceDto() {}\n ),\n Channels = new Dictionary\u003cstring, ChannelPreferenceDto>() {\n { \"email\", new ChannelPreferenceDto() {} },\n { \"sms\", new ChannelPreferenceDto() {\n Enabled = false,\n } },\n },\n },\n },\n }\n);\n\n// handle response"},{"label":"PHP","lang":"php","source":"declare(strict_types=1);\n\nrequire 'vendor/autoload.php';\n\nuse novu;\nuse novu\\Models\\Components;\n\n$sdk = novu\\Novu::builder()\n ->setSecurity(\n 'YOUR_SECRET_KEY_HERE'\n )\n ->build();\n\n$updateWorkflowDto = new Components\\UpdateWorkflowDto(\n name: '\u003cvalue>',\n steps: [],\n preferences: new Components\\PreferencesRequestDto(\n user: new Components\\UserWorkflowPreferencesDto(\n all: new Components\\WorkflowPreferenceDto(),\n channels: [\n 'email' => new Components\\ChannelPreferenceDto(),\n 'sms' => new Components\\ChannelPreferenceDto(\n enabled: false,\n ),\n ],\n ),\n workflow: new Components\\PreferencesRequestDtoWorkflow(\n all: new Components\\WorkflowPreferenceDto(),\n channels: [\n 'email' => new Components\\ChannelPreferenceDto(),\n 'sms' => new Components\\ChannelPreferenceDto(\n enabled: false,\n ),\n ],\n ),\n ),\n);\n\n$response = $sdk->workflows->update(\n workflowId: '\u003cid>',\n updateWorkflowDto: $updateWorkflowDto\n\n);\n\nif ($response->workflowResponseDto !== null) {\n // handle response\n}"},{"label":"Python","lang":"python","source":"import novu_py\nfrom novu_py import Novu\n\n\nwith Novu(\n secret_key=\"YOUR_SECRET_KEY_HERE\",\n) as novu:\n\n res = novu.workflows.update(workflow_id=\"\u003cid>\", update_workflow_dto=novu_py.UpdateWorkflowDto(\n name=\"\u003cvalue>\",\n steps=[],\n preferences=novu_py.PreferencesRequestDto(\n user=novu_py.UserWorkflowPreferencesDto(\n all=novu_py.WorkflowPreferenceDto(\n enabled=True,\n read_only=False,\n ),\n channels={\n \"email\": novu_py.ChannelPreferenceDto(\n enabled=True,\n ),\n \"sms\": novu_py.ChannelPreferenceDto(\n enabled=False,\n ),\n },\n ),\n workflow=novu_py.PreferencesRequestDtoWorkflow(\n all=novu_py.WorkflowPreferenceDto(\n enabled=True,\n read_only=False,\n ),\n channels={\n \"email\": novu_py.ChannelPreferenceDto(),\n \"sms\": novu_py.ChannelPreferenceDto(\n enabled=False,\n ),\n },\n ),\n ),\n ))\n\n # Handle response\n print(res)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.name":"\u003cstring>","body.steps.items.0.oneOf.0.name":"\u003cstring>","body.steps.items.0.oneOf.0._id":"\u003cstring>","body.steps.items.0.oneOf.0.stepId":"\u003cstring>","body.steps.items.0.oneOf.0.controlValues.oneOf.0.skip":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"body.steps.items.0.oneOf.0.controlValues.oneOf.0.body":"\u003cstring>","body.steps.items.0.oneOf.0.controlValues.oneOf.0.subject":"\u003cstring>","body.steps.items.0.oneOf.0.controlValues.oneOf.0.avatar":"\u003cstring>","body.steps.items.0.oneOf.0.controlValues.oneOf.0.primaryAction.label":"\u003cstring>","body.steps.items.0.oneOf.0.controlValues.oneOf.0.secondaryAction.label":"\u003cstring>","body.steps.items.0.oneOf.0.controlValues.oneOf.0.disableOutputSanitization":false,"body.steps.items.0.oneOf.0.controlValues.oneOf.0.data":{},"body.preferences.user.oneOf.0.all.enabled":true,"body.preferences.user.oneOf.0.all.readOnly":false,"body.preferences.user.oneOf.0.channels.email.enabled":true,"body.preferences.user.oneOf.0.channels.sms.enabled":false,"body.preferences.workflow.oneOf.0.all.enabled":true,"body.preferences.workflow.oneOf.0.all.readOnly":false,"body.preferences.workflow.oneOf.0.channels.email.enabled":true,"body.preferences.workflow.oneOf.0.channels.sms.enabled":false,"body.description":"\u003cstring>","body.tags.items.0":"\u003cstring>","body.active":false,"body.validatePayload":true,"body.payloadSchema.oneOf.0":{},"body.isTranslationEnabled":false,"body.agent.oneOf.0.identifier":"\u003cstring>","body.workflowId":"\u003cstring>"}]},"dependencies":{"parameters":{"963b262e-7b43-4d85-9036-22be219f27a6":{"name":"workflowId","required":true,"in":"path","schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"cca83d48-5adf-4db5-a5d6-8be5b406df8f":{"name":"idempotency-key","in":"header","description":"A header for idempotency purposes","required":false,"schema":{"type":"string","isRequired":false,"description":"A header for idempotency purposes","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"description":"Workflow update details","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the workflow","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"steps":{"type":"array","description":"Steps of the workflow","items":{"oneOf":[{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.0._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.0.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the In-App step.","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.skip","typeLabel":"object"},"body":{"type":"string","description":"Content/body of the in-app message. Required if subject is empty.","minLength":1,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.body","typeLabel":"string"},"subject":{"type":"string","description":"Subject/title of the in-app message. Required if body is empty.","minLength":1,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.subject","typeLabel":"string"},"avatar":{"type":"string","description":"URL for an avatar image. Must be a valid URL or start with / or {{ variable }}.","uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.avatar","typeLabel":"string"},"primaryAction":{"type":"object","description":"Primary action button details.","properties":{"label":{"type":"string","description":"Label for the action button.","uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.primaryAction.label","typeLabel":"string"},"redirect":{"type":"object","description":"Redirect configuration for the action.","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.primaryAction.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.primaryAction.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.primaryAction.redirect","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.primaryAction","typeLabel":"object"},"secondaryAction":{"type":"object","description":"Secondary action button details.","properties":{"label":{"type":"string","description":"Label for the action button.","uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.secondaryAction.label","typeLabel":"string"},"redirect":{"type":"object","description":"Redirect configuration for the action.","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.secondaryAction.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.secondaryAction.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.secondaryAction.redirect","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.secondaryAction","typeLabel":"object"},"redirect":{"type":"object","description":"Redirection URL configuration for the main content click (if no actions defined/clicked)..","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.redirect","typeLabel":"object"},"disableOutputSanitization":{"type":"boolean","description":"Disable sanitization of the output.","default":false,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.disableOutputSanitization","typeLabel":"boolean"},"data":{"type":"object","description":"Additional data payload for the step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0.data","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the In-App step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.1._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.1.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Email step.","required":["subject","body"],"properties":{"subject":{"type":"string","description":"Subject of the email.","minLength":1,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.subject","typeLabel":"string"},"body":{"type":"string","description":"Body content of the email, either a valid Maily JSON object, or html string.","default":"","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.body","typeLabel":"string"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.skip","typeLabel":"object"},"editorType":{"type":"string","description":"Type of editor to use for the body.","enum":["block","html"],"default":"block","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.editorType","typeLabel":"enum\u003cstring>"},"disableOutputSanitization":{"type":"boolean","description":"Disable sanitization of the output.","default":false,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.disableOutputSanitization","typeLabel":"boolean"},"layoutId":{"oneOf":[{"type":"string","description":"Layout ID to use for the email. Null means no layout, undefined means default layout.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.layoutId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Layout ID to use for the email. Null means no layout, undefined means default layout.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.layoutId.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.layoutId","typeLabel":"string | null"},"from":{"type":"object","description":"Sender name and email overrides for this step.","properties":{"email":{"type":"string","description":"Sender email address override for this step.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.from.email","typeLabel":"string"},"name":{"type":"string","description":"Sender display name override for this step.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.from.name","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.from","typeLabel":"object"},"useProviderDefaults":{"type":"boolean","description":"When true, sender name/email use the primary email integration defaults and skip workflow agent defaults.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.useProviderDefaults","typeLabel":"boolean"},"replyTo":{"type":"string","description":"Step-level Reply-To override. When unset, inherits the workflow agent reply-to.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.replyTo","typeLabel":"string"},"preheader":{"type":"string","description":"One-line inbox preview text shown next to the subject.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0.preheader","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Email step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.2._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.2.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the SMS step.","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues.oneOf.0.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the SMS message.","uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues.oneOf.0.body","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the SMS step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.3._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.3.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Push step.","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.oneOf.0.skip","typeLabel":"object"},"subject":{"type":"string","description":"Subject/title of the push notification.","uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.oneOf.0.subject","typeLabel":"string"},"body":{"type":"string","description":"Body content of the push notification.","uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.oneOf.0.body","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Push step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.4._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.4.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Chat step.","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.oneOf.0.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the chat message.","uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.oneOf.0.body","typeLabel":"string"},"editorType":{"type":"string","description":"Type of editor to use for the body. When omitted, inferred from the body: Maily JSON is \"block\", otherwise \"text\".","enum":["block","text"],"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.oneOf.0.editorType","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Chat step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`). Omit to leave unchanged; pass null to delete all provider overrides; pass an object to replace the full set.","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`). Omit to leave unchanged; pass null to delete all provider overrides; pass an object to replace the full set.","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides","typeLabel":"object | null"}},"uniqueKey":"steps.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.5._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.5.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Delay step.","required":["type"],"properties":{"type":{"type":"string","description":"Type of the delay. Currently only 'regular' is supported by the schema.","enum":["regular","timed"],"default":"regular","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.0.type","typeLabel":"enum\u003cstring>"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.0.skip","typeLabel":"object"},"amount":{"type":"number","description":"Amount of time to delay.","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.0.amount","typeLabel":"number"},"unit":{"type":"string","description":"Unit of time for the delay amount.","enum":["seconds","minutes","hours","days","weeks","months"],"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"cron":{"type":"string","description":"Cron expression for the delay. Min length 1.","uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.0.cron","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Delay step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.6._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.6.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Digest step.","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.skip","typeLabel":"object"},"type":{"type":"string","description":"The type of digest strategy. Determines which fields are applicable.","enum":["regular","timed"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.type","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"The amount of time for the digest interval (for REGULAR type). Min 1.","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.amount","typeLabel":"number"},"unit":{"type":"string","description":"The unit of time for the digest interval (for REGULAR type).","enum":["seconds","minutes","hours","days","weeks","months"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"lookBackWindow":{"type":"object","description":"Configuration for look-back window (for REGULAR type).","required":["amount","unit"],"properties":{"amount":{"type":"number","description":"Amount of time for the look-back window.","minimum":1,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.lookBackWindow.amount","typeLabel":"number"},"unit":{"type":"string","description":"Unit of time for the look-back window.","enum":["seconds","minutes","hours","days","weeks","months"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.lookBackWindow.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.lookBackWindow","typeLabel":"object"},"cron":{"type":"string","description":"Cron expression for TIMED digest. Min length 1.","uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.cron","typeLabel":"string"},"digestKey":{"type":"string","description":"Specify a custom key for digesting events instead of the default event key.","uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0.digestKey","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Digest step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.7._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.7.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Throttle step.","required":["type"],"properties":{"type":{"type":"string","description":"The type of throttle window.","enum":["fixed","dynamic"],"default":"fixed","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.type","typeLabel":"enum\u003cstring>"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.skip","typeLabel":"object"},"amount":{"type":"number","description":"The amount of time for the throttle window (required for fixed type).","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.amount","typeLabel":"number"},"unit":{"type":"string","description":"The unit of time for the throttle window (required for fixed type).","enum":["minutes","hours","days"],"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.unit","typeLabel":"enum\u003cstring>"},"dynamicKey":{"type":"string","description":"Key path to retrieve dynamic window value (required for dynamic type).","example":"payload.timestamp","uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.dynamicKey","typeLabel":"string"},"threshold":{"type":"number","description":"The maximum number of executions allowed within the window. Defaults to 1.","minimum":1,"default":1,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.threshold","typeLabel":"number"},"throttleKey":{"type":"string","description":"Optional key for grouping throttle rules. If not provided, defaults to workflow and subscriber combination.","uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0.throttleKey","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Throttle step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.8._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.8.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Tool step.","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.oneOf.0.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the tool payload.","uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.oneOf.0.body","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Tool step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`). Omit to leave unchanged; pass null to delete all provider overrides; pass an object to replace the full set.","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`). Omit to leave unchanged; pass null to delete all provider overrides; pass an object to replace the full set.","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides","typeLabel":"object | null"}},"uniqueKey":"steps.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.9._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.9.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the Custom step.","properties":{"custom":{"type":"object","description":"Custom control values for the step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.oneOf.0.custom","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the Custom step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.name","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"_id":{"type":"string","description":"Database identifier of the step. Used for updating the step.","uniqueKey":"steps.items.[INDEX].oneOf.10._id","typeLabel":"string"},"stepId":{"type":"string","pattern":"SLUG_IDENTIFIER_REGEX","description":"Unique identifier for the step","uniqueKey":"steps.items.[INDEX].oneOf.10.stepId","typeLabel":"string"},"controlValues":{"oneOf":[{"type":"object","description":"Control values for the HTTP Request step.","required":["method","url"],"properties":{"method":{"type":"string","description":"HTTP method","enum":["GET","POST","PUT","DELETE","PATCH"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"Target URL for the HTTP request","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.url","typeLabel":"string"},"headers":{"description":"Request headers as key-value pairs","type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.headers.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Value of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.headers.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.headers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.headers","typeLabel":"object[]"},"body":{"oneOf":[{"type":"string","description":"Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.","uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.body.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.body.oneOf.1.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Value of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.body.oneOf.1.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.body.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.","uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.body.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.body","typeLabel":"string | object[]"},"responseBodySchema":{"type":"object","description":"JSON schema to validate response body against","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.responseBodySchema","typeLabel":"object"},"enforceSchemaValidation":{"type":"boolean","description":"Whether to enforce response body schema validation","uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.enforceSchemaValidation","typeLabel":"boolean"},"continueOnFailure":{"type":"boolean","description":"Whether to continue workflow execution on failure","uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0.continueOnFailure","typeLabel":"boolean"}},"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.0","typeLabel":"object"},{"type":"object","description":"Control values for the HTTP Request step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"preferences":{"type":"object","description":"Workflow preferences","properties":{"user":{"oneOf":[{"type":"object","description":"User workflow preferences","required":["all","channels"],"properties":{"all":{"type":"object","description":"A preference for the workflow. The values specified here will be used if no preference is specified for a channel.","required":["enabled","readOnly"],"properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the workflow. If true, notification delivery is enabled by default for all channels. This setting can be overridden by the channel preferences.","default":true,"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.all.enabled","typeLabel":"boolean"},"readOnly":{"type":"boolean","description":"A flag specifying if the preference is read-only. If true, the preference cannot be changed by the Subscriber.","default":false,"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.all.readOnly","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.all","typeLabel":"object"},"channels":{"type":"object","description":"Preferences for different communication channels","additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the channel. If true, notification delivery is enabled.","default":true,"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.channels.additionalProperties.enabled","typeLabel":"boolean"}},"required":["enabled"],"uniqueKey":"preferences.user.oneOf.0.channels.additionalProperties","typeLabel":"object"},"example":{"email":{"enabled":true},"sms":{"enabled":false}},"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.channels","typeLabel":"object"}},"uniqueKey":"preferences.user.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"preferences.user.oneOf.1","typeLabel":"null"}],"uniqueKey":"preferences.user","typeLabel":"object | null"},"workflow":{"oneOf":[{"type":"object","description":"Workflow-specific preferences","required":["all","channels"],"properties":{"all":{"type":"object","description":"A preference for the workflow. The values specified here will be used if no preference is specified for a channel.","required":["enabled","readOnly"],"properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the workflow. If true, notification delivery is enabled by default for all channels. This setting can be overridden by the channel preferences.","default":true,"isRequired":true,"uniqueKey":"preferences.workflow.oneOf.0.all.enabled","typeLabel":"boolean"},"readOnly":{"type":"boolean","description":"A flag specifying if the preference is read-only. If true, the preference cannot be changed by the Subscriber.","default":false,"isRequired":true,"uniqueKey":"preferences.workflow.oneOf.0.all.readOnly","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"preferences.workflow.oneOf.0.all","typeLabel":"object"},"channels":{"type":"object","description":"Preferences for different communication channels","additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the channel. If true, notification delivery is enabled.","default":true,"isRequired":true,"uniqueKey":"preferences.workflow.oneOf.0.channels.additionalProperties.enabled","typeLabel":"boolean"}},"required":["enabled"],"uniqueKey":"preferences.workflow.oneOf.0.channels.additionalProperties","typeLabel":"object"},"example":{"email":{"enabled":true},"sms":{"enabled":false}},"isRequired":true,"uniqueKey":"preferences.workflow.oneOf.0.channels","typeLabel":"object"}},"uniqueKey":"preferences.workflow.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"preferences.workflow.oneOf.1","typeLabel":"null"}],"uniqueKey":"preferences.workflow","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"preferences","typeLabel":"object"},"description":{"type":"string","description":"Description of the workflow","uniqueKey":"description","typeLabel":"string"},"tags":{"description":"Tags associated with the workflow","type":"array","items":{"type":"string","uniqueKey":"tags.items.[INDEX]","typeLabel":"string"},"uniqueKey":"tags","typeLabel":"string[]"},"active":{"type":"boolean","description":"Whether the workflow is active","default":false,"uniqueKey":"active","typeLabel":"boolean"},"validatePayload":{"type":"boolean","description":"Enable or disable payload schema validation","uniqueKey":"validatePayload","typeLabel":"boolean"},"payloadSchema":{"oneOf":[{"type":"object","description":"The payload JSON Schema for the workflow","additionalProperties":true,"uniqueKey":"payloadSchema.oneOf.0","typeLabel":"object"},{"type":"null","description":"The payload JSON Schema for the workflow","additionalProperties":true,"uniqueKey":"payloadSchema.oneOf.1","typeLabel":"null"}],"uniqueKey":"payloadSchema","typeLabel":"object | null"},"isTranslationEnabled":{"type":"boolean","description":"Enable or disable translations for this workflow","default":false,"uniqueKey":"isTranslationEnabled","typeLabel":"boolean"},"agent":{"oneOf":[{"type":"object","description":"Optional agent assignment used to route this workflow through an agent's connected channels. Pass null to clear.","required":["identifier"],"properties":{"identifier":{"type":"string","description":"Public agent identifier used to route this workflow through an agent's connected channels.","isRequired":true,"uniqueKey":"agent.oneOf.0.identifier","typeLabel":"string"},"providers":{"type":"object","description":"Optional per-provider overrides keyed by providerId (e.g. novu-email-agent). Today only Novu Email replyTo is supported.","additionalProperties":{"type":"object","properties":{"replyTo":{"type":"string","uniqueKey":"agent.oneOf.0.providers.additionalProperties.replyTo","typeLabel":"string"}},"uniqueKey":"agent.oneOf.0.providers.additionalProperties","typeLabel":"object"},"uniqueKey":"agent.oneOf.0.providers","typeLabel":"object"}},"uniqueKey":"agent.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"agent.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent","typeLabel":"object | null"},"workflowId":{"type":"string","description":"Workflow ID (allowed only for code-first workflows)","uniqueKey":"workflowId","typeLabel":"string"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"uniqueKey":"origin","typeLabel":"enum\u003cstring>"},"severity":{"type":"string","description":"Severity of the workflow","enum":["high","medium","low","none"],"uniqueKey":"severity","typeLabel":"enum\u003cstring>"}},"required":["name","steps","preferences"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","steps":[{"name":"\u003cstring>","_id":"\u003cstring>","stepId":"\u003cstring>","controlValues":{"skip":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"body":"\u003cstring>","subject":"\u003cstring>","avatar":"\u003cstring>","primaryAction":{"label":"\u003cstring>"},"secondaryAction":{"label":"\u003cstring>"},"disableOutputSanitization":false,"data":{}}}],"preferences":{"user":{"all":{"enabled":true,"readOnly":false},"channels":{"email":{"enabled":true},"sms":{"enabled":false}}},"workflow":{"all":{"enabled":true,"readOnly":false},"channels":{"email":{"enabled":true},"sms":{"enabled":false}}}},"description":"\u003cstring>","tags":["\u003cstring>"],"active":false,"validatePayload":true,"payloadSchema":{},"isTranslationEnabled":false,"agent":{"identifier":"\u003cstring>","providers":{}},"workflowId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"524d08ce-9ec6-4a43-873b-ccfa11284b8e":{"description":"OK","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the workflow","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the workflow","isRequired":true,"uniqueKey":"_id","typeLabel":"string"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"workflowId","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the workflow","isRequired":true,"uniqueKey":"slug","typeLabel":"string"},"updatedAt":{"type":"string","description":"Last updated timestamp","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string"},"createdAt":{"type":"string","description":"Creation timestamp","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string"},"steps":{"type":"array","description":"Steps of the workflow","items":{"oneOf":[{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the in-app step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to In-App","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.skip","typeLabel":"object"},"body":{"type":"string","description":"Content/body of the in-app message. Required if subject is empty.","minLength":1,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.body","typeLabel":"string"},"subject":{"type":"string","description":"Subject/title of the in-app message. Required if body is empty.","minLength":1,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.subject","typeLabel":"string"},"avatar":{"type":"string","description":"URL for an avatar image. Must be a valid URL or start with / or {{ variable }}.","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.avatar","typeLabel":"string"},"primaryAction":{"type":"object","description":"Primary action button details.","properties":{"label":{"type":"string","description":"Label for the action button.","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.primaryAction.label","typeLabel":"string"},"redirect":{"type":"object","description":"Redirect configuration for the action.","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.primaryAction.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.primaryAction.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.primaryAction.redirect","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.primaryAction","typeLabel":"object"},"secondaryAction":{"type":"object","description":"Secondary action button details.","properties":{"label":{"type":"string","description":"Label for the action button.","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.secondaryAction.label","typeLabel":"string"},"redirect":{"type":"object","description":"Redirect configuration for the action.","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.secondaryAction.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.secondaryAction.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.secondaryAction.redirect","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.secondaryAction","typeLabel":"object"},"redirect":{"type":"object","description":"Redirection URL configuration for the main content click (if no actions defined/clicked)..","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.redirect","typeLabel":"object"},"disableOutputSanitization":{"type":"boolean","description":"Disable sanitization of the output.","default":false,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.disableOutputSanitization","typeLabel":"boolean"},"data":{"type":"object","description":"Additional data payload for the step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values.data","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the in-app step","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.skip","typeLabel":"object"},"body":{"type":"string","description":"Content/body of the in-app message. Required if subject is empty.","minLength":1,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.body","typeLabel":"string"},"subject":{"type":"string","description":"Subject/title of the in-app message. Required if body is empty.","minLength":1,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.subject","typeLabel":"string"},"avatar":{"type":"string","description":"URL for an avatar image. Must be a valid URL or start with / or {{ variable }}.","uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.avatar","typeLabel":"string"},"primaryAction":{"type":"object","description":"Primary action button details.","properties":{"label":{"type":"string","description":"Label for the action button.","uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.primaryAction.label","typeLabel":"string"},"redirect":{"type":"object","description":"Redirect configuration for the action.","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.primaryAction.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.primaryAction.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.primaryAction.redirect","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.primaryAction","typeLabel":"object"},"secondaryAction":{"type":"object","description":"Secondary action button details.","properties":{"label":{"type":"string","description":"Label for the action button.","uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.secondaryAction.label","typeLabel":"string"},"redirect":{"type":"object","description":"Redirect configuration for the action.","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.secondaryAction.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.secondaryAction.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.secondaryAction.redirect","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.secondaryAction","typeLabel":"object"},"redirect":{"type":"object","description":"Redirection URL configuration for the main content click (if no actions defined/clicked)..","required":["url"],"properties":{"url":{"type":"string","description":"URL to redirect to","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.redirect.url","typeLabel":"string"},"target":{"type":"string","description":"Target attribute for the redirect link","enum":["_self","_blank","_parent","_top","_unfencedTop"],"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.redirect.target","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.redirect","typeLabel":"object"},"disableOutputSanitization":{"type":"boolean","description":"Disable sanitization of the output.","default":false,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.disableOutputSanitization","typeLabel":"boolean"},"data":{"type":"object","description":"Additional data payload for the step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues.data","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.0.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.0.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.0.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.0.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.0.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the email step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Email","required":["subject","body"],"properties":{"subject":{"type":"string","description":"Subject of the email.","minLength":1,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.subject","typeLabel":"string"},"body":{"type":"string","description":"Body content of the email, either a valid Maily JSON object, or html string.","default":"","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.body","typeLabel":"string"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.skip","typeLabel":"object"},"editorType":{"type":"string","description":"Type of editor to use for the body.","enum":["block","html"],"default":"block","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.editorType","typeLabel":"enum\u003cstring>"},"disableOutputSanitization":{"type":"boolean","description":"Disable sanitization of the output.","default":false,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.disableOutputSanitization","typeLabel":"boolean"},"layoutId":{"oneOf":[{"type":"string","description":"Layout ID to use for the email. Null means no layout, undefined means default layout.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.layoutId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Layout ID to use for the email. Null means no layout, undefined means default layout.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.layoutId.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.layoutId","typeLabel":"string | null"},"from":{"type":"object","description":"Sender name and email overrides for this step.","properties":{"email":{"type":"string","description":"Sender email address override for this step.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.from.email","typeLabel":"string"},"name":{"type":"string","description":"Sender display name override for this step.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.from.name","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.from","typeLabel":"object"},"useProviderDefaults":{"type":"boolean","description":"When true, sender name/email use the primary email integration defaults and skip workflow agent defaults.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.useProviderDefaults","typeLabel":"boolean"},"replyTo":{"type":"string","description":"Step-level Reply-To override. When unset, inherits the workflow agent reply-to.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.replyTo","typeLabel":"string"},"preheader":{"type":"string","description":"One-line inbox preview text shown next to the subject.","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values.preheader","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.1.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the email step","required":["subject","body"],"properties":{"subject":{"type":"string","description":"Subject of the email.","minLength":1,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.subject","typeLabel":"string"},"body":{"type":"string","description":"Body content of the email, either a valid Maily JSON object, or html string.","default":"","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.body","typeLabel":"string"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.skip","typeLabel":"object"},"editorType":{"type":"string","description":"Type of editor to use for the body.","enum":["block","html"],"default":"block","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.editorType","typeLabel":"enum\u003cstring>"},"disableOutputSanitization":{"type":"boolean","description":"Disable sanitization of the output.","default":false,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.disableOutputSanitization","typeLabel":"boolean"},"layoutId":{"oneOf":[{"type":"string","description":"Layout ID to use for the email. Null means no layout, undefined means default layout.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.layoutId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Layout ID to use for the email. Null means no layout, undefined means default layout.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.layoutId.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.layoutId","typeLabel":"string | null"},"from":{"type":"object","description":"Sender name and email overrides for this step.","properties":{"email":{"type":"string","description":"Sender email address override for this step.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.from.email","typeLabel":"string"},"name":{"type":"string","description":"Sender display name override for this step.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.from.name","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.from","typeLabel":"object"},"useProviderDefaults":{"type":"boolean","description":"When true, sender name/email use the primary email integration defaults and skip workflow agent defaults.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.useProviderDefaults","typeLabel":"boolean"},"replyTo":{"type":"string","description":"Step-level Reply-To override. When unset, inherits the workflow agent reply-to.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.replyTo","typeLabel":"string"},"preheader":{"type":"string","description":"One-line inbox preview text shown next to the subject.","uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues.preheader","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.1.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.1.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.1.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.1.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.1.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the SMS step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to SMS","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.values.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the SMS message.","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.values.body","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.2.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the SMS step","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the SMS message.","uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues.body","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.2.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.2.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.2.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.2.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.2.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.2.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the push step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Push","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.values.skip","typeLabel":"object"},"subject":{"type":"string","description":"Subject/title of the push notification.","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.values.subject","typeLabel":"string"},"body":{"type":"string","description":"Body content of the push notification.","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.values.body","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.3.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the push step","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.skip","typeLabel":"object"},"subject":{"type":"string","description":"Subject/title of the push notification.","uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.subject","typeLabel":"string"},"body":{"type":"string","description":"Body content of the push notification.","uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues.body","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.3.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.3.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.3.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.3.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.3.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.3.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the chat step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Chat","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.values.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the chat message.","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.values.body","typeLabel":"string"},"editorType":{"type":"string","description":"Type of editor to use for the body. When omitted, inferred from the body: Maily JSON is \"block\", otherwise \"text\".","enum":["block","text"],"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.values.editorType","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.4.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the chat step","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the chat message.","uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.body","typeLabel":"string"},"editorType":{"type":"string","description":"Type of editor to use for the body. When omitted, inferred from the body: Maily JSON is \"block\", otherwise \"text\".","enum":["block","text"],"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues.editorType","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.4.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.4.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.4.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.4.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the delay step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Delay","required":["type"],"properties":{"type":{"type":"string","description":"Type of the delay. Currently only 'regular' is supported by the schema.","enum":["regular","timed"],"default":"regular","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.values.type","typeLabel":"enum\u003cstring>"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.values.skip","typeLabel":"object"},"amount":{"type":"number","description":"Amount of time to delay.","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.values.amount","typeLabel":"number"},"unit":{"type":"string","description":"Unit of time for the delay amount.","enum":["seconds","minutes","hours","days","weeks","months"],"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.values.unit","typeLabel":"enum\u003cstring>"},"cron":{"type":"string","description":"Cron expression for the delay. Min length 1.","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.values.cron","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.5.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the delay step","required":["type"],"properties":{"type":{"type":"string","description":"Type of the delay. Currently only 'regular' is supported by the schema.","enum":["regular","timed"],"default":"regular","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.type","typeLabel":"enum\u003cstring>"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.skip","typeLabel":"object"},"amount":{"type":"number","description":"Amount of time to delay.","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.amount","typeLabel":"number"},"unit":{"type":"string","description":"Unit of time for the delay amount.","enum":["seconds","minutes","hours","days","weeks","months"],"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.unit","typeLabel":"enum\u003cstring>"},"cron":{"type":"string","description":"Cron expression for the delay. Min length 1.","uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues.cron","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.5.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.5.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.5.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.5.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.5.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.5.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the digest step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Digest","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.skip","typeLabel":"object"},"type":{"type":"string","description":"The type of digest strategy. Determines which fields are applicable.","enum":["regular","timed"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.type","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"The amount of time for the digest interval (for REGULAR type). Min 1.","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.amount","typeLabel":"number"},"unit":{"type":"string","description":"The unit of time for the digest interval (for REGULAR type).","enum":["seconds","minutes","hours","days","weeks","months"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.unit","typeLabel":"enum\u003cstring>"},"lookBackWindow":{"type":"object","description":"Configuration for look-back window (for REGULAR type).","required":["amount","unit"],"properties":{"amount":{"type":"number","description":"Amount of time for the look-back window.","minimum":1,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.lookBackWindow.amount","typeLabel":"number"},"unit":{"type":"string","description":"Unit of time for the look-back window.","enum":["seconds","minutes","hours","days","weeks","months"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.lookBackWindow.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.lookBackWindow","typeLabel":"object"},"cron":{"type":"string","description":"Cron expression for TIMED digest. Min length 1.","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.cron","typeLabel":"string"},"digestKey":{"type":"string","description":"Specify a custom key for digesting events instead of the default event key.","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values.digestKey","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.6.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the digest step","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.skip","typeLabel":"object"},"type":{"type":"string","description":"The type of digest strategy. Determines which fields are applicable.","enum":["regular","timed"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.type","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"The amount of time for the digest interval (for REGULAR type). Min 1.","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.amount","typeLabel":"number"},"unit":{"type":"string","description":"The unit of time for the digest interval (for REGULAR type).","enum":["seconds","minutes","hours","days","weeks","months"],"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.unit","typeLabel":"enum\u003cstring>"},"lookBackWindow":{"type":"object","description":"Configuration for look-back window (for REGULAR type).","required":["amount","unit"],"properties":{"amount":{"type":"number","description":"Amount of time for the look-back window.","minimum":1,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.lookBackWindow.amount","typeLabel":"number"},"unit":{"type":"string","description":"Unit of time for the look-back window.","enum":["seconds","minutes","hours","days","weeks","months"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.lookBackWindow.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.lookBackWindow","typeLabel":"object"},"cron":{"type":"string","description":"Cron expression for TIMED digest. Min length 1.","uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.cron","typeLabel":"string"},"digestKey":{"type":"string","description":"Specify a custom key for digesting events instead of the default event key.","uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues.digestKey","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.6.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.6.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.6.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.6.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.6.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.6.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the custom step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Custom step","properties":{"custom":{"type":"object","description":"Custom control values for the step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.values.custom","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.7.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the custom step","properties":{"custom":{"type":"object","description":"Custom control values for the step.","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues.custom","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.7.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.7.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.7.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.7.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.7.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.7.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the throttle step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Throttle","required":["type"],"properties":{"type":{"type":"string","description":"The type of throttle window.","enum":["fixed","dynamic"],"default":"fixed","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.type","typeLabel":"enum\u003cstring>"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.skip","typeLabel":"object"},"amount":{"type":"number","description":"The amount of time for the throttle window (required for fixed type).","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.amount","typeLabel":"number"},"unit":{"type":"string","description":"The unit of time for the throttle window (required for fixed type).","enum":["minutes","hours","days"],"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.unit","typeLabel":"enum\u003cstring>"},"dynamicKey":{"type":"string","description":"Key path to retrieve dynamic window value (required for dynamic type).","example":"payload.timestamp","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.dynamicKey","typeLabel":"string"},"threshold":{"type":"number","description":"The maximum number of executions allowed within the window. Defaults to 1.","minimum":1,"default":1,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.threshold","typeLabel":"number"},"throttleKey":{"type":"string","description":"Optional key for grouping throttle rules. If not provided, defaults to workflow and subscriber combination.","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values.throttleKey","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.8.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the throttle step","required":["type"],"properties":{"type":{"type":"string","description":"The type of throttle window.","enum":["fixed","dynamic"],"default":"fixed","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.type","typeLabel":"enum\u003cstring>"},"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.skip","typeLabel":"object"},"amount":{"type":"number","description":"The amount of time for the throttle window (required for fixed type).","minimum":1,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.amount","typeLabel":"number"},"unit":{"type":"string","description":"The unit of time for the throttle window (required for fixed type).","enum":["minutes","hours","days"],"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.unit","typeLabel":"enum\u003cstring>"},"dynamicKey":{"type":"string","description":"Key path to retrieve dynamic window value (required for dynamic type).","example":"payload.timestamp","uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.dynamicKey","typeLabel":"string"},"threshold":{"type":"number","description":"The maximum number of executions allowed within the window. Defaults to 1.","minimum":1,"default":1,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.threshold","typeLabel":"number"},"throttleKey":{"type":"string","description":"Optional key for grouping throttle rules. If not provided, defaults to workflow and subscriber combination.","uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues.throttleKey","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.8.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.8.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.8.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.8.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the HTTP request step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to HTTP Request step","required":["method","url"],"properties":{"method":{"type":"string","description":"HTTP method","enum":["GET","POST","PUT","DELETE","PATCH"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"Target URL for the HTTP request","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.url","typeLabel":"string"},"headers":{"description":"Request headers as key-value pairs","type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.headers.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Value of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.headers.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.headers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.headers","typeLabel":"object[]"},"body":{"oneOf":[{"type":"string","description":"Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.body.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.body.oneOf.1.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Value of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.body.oneOf.1.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.body.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.body.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.body","typeLabel":"string | object[]"},"responseBodySchema":{"type":"object","description":"JSON schema to validate response body against","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.responseBodySchema","typeLabel":"object"},"enforceSchemaValidation":{"type":"boolean","description":"Whether to enforce response body schema validation","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.enforceSchemaValidation","typeLabel":"boolean"},"continueOnFailure":{"type":"boolean","description":"Whether to continue workflow execution on failure","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values.continueOnFailure","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.9.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the HTTP request step","required":["method","url"],"properties":{"method":{"type":"string","description":"HTTP method","enum":["GET","POST","PUT","DELETE","PATCH"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"Target URL for the HTTP request","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.url","typeLabel":"string"},"headers":{"description":"Request headers as key-value pairs","type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.headers.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Value of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.headers.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.headers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.headers","typeLabel":"object[]"},"body":{"oneOf":[{"type":"string","description":"Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.","uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.body.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.body.oneOf.1.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Value of the key-value pair","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.body.oneOf.1.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.body.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.","uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.body.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.body","typeLabel":"string | object[]"},"responseBodySchema":{"type":"object","description":"JSON schema to validate response body against","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.responseBodySchema","typeLabel":"object"},"enforceSchemaValidation":{"type":"boolean","description":"Whether to enforce response body schema validation","uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.enforceSchemaValidation","typeLabel":"boolean"},"continueOnFailure":{"type":"boolean","description":"Whether to continue workflow execution on failure","uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues.continueOnFailure","typeLabel":"boolean"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.9.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.9.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.9.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.9.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["controls","variables","stepId","_id","name","slug","type","origin","workflowId","workflowDatabaseId"],"properties":{"controls":{"type":"object","description":"Controls metadata for the tool step","required":["values"],"properties":{"values":{"type":"object","description":"Control values specific to Tool","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.values.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the tool payload.","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.values.body","typeLabel":"string"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.values","typeLabel":"object"},"dataSchema":{"type":"object","description":"JSON Schema for data","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.dataSchema","typeLabel":"object"},"uiSchema":{"type":"object","description":"UI Schema for rendering","properties":{"group":{"type":"string","description":"Group of the UI Schema","enum":["IN_APP","EMAIL","DIGEST","DELAY","THROTTLE","SMS","CHAT","PUSH","TOOL","SKIP","LAYOUT","HTTP_REQUEST"],"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.group","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.component","typeLabel":"enum\u003cstring>"},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.0","typeLabel":"string"},{"type":"number","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.2","typeLabel":"boolean"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.3","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.2","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4.items.[INDEX]","typeLabel":"string | number | boolean | object"},"description":"Placeholder for the UI Schema Property","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.4","typeLabel":"(string | number | boolean | object)[]"},{"type":"null","uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder.oneOf.5","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.placeholder","typeLabel":"string | number | boolean | object | (string | number | boolean | object)[] | null"},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"},"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties.properties","typeLabel":"object"}},"required":["component"],"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema.properties","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.10.controls.uiSchema","typeLabel":"object"}},"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controls","typeLabel":"object"},"variables":{"type":"object","description":"JSON Schema for variables, follows the JSON Schema standard","additionalProperties":true,"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.variables","typeLabel":"object"},"stepId":{"type":"string","description":"Unique identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.stepId","typeLabel":"string"},"_id":{"type":"string","description":"Database identifier of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10._id","typeLabel":"string"},"name":{"type":"string","description":"Name of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.name","typeLabel":"string"},"slug":{"type":"string","description":"Slug of the step","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.slug","typeLabel":"string"},"type":{"type":"string","description":"Type of the step","enum":["in_app","email","sms","chat","push","tool","digest","trigger","delay","throttle","custom","http_request"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.origin","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.workflowId","typeLabel":"string"},"workflowDatabaseId":{"type":"string","description":"Workflow database identifier","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.workflowDatabaseId","typeLabel":"string"},"controlValues":{"type":"object","description":"Control values for the tool step","properties":{"skip":{"type":"object","description":"JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.","example":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.skip","typeLabel":"object"},"body":{"type":"string","description":"Content of the tool payload.","uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues.body","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.controlValues","typeLabel":"object"},"providerOverrides":{"oneOf":[{"type":"object","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.providerOverrides.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.10.providerOverrides.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider content overrides keyed by providerId. Stored separately from controlValues and merged over the default body at send time. Keys are ChatProviderIdEnum / ToolProviderIdEnum values (e.g. `slack`, `whatsapp-business`, `pagerduty`).","example":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"additionalProperties":{"type":"object","additionalProperties":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.providerOverrides.oneOf.1.additionalProperties","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.10.providerOverrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].oneOf.10.providerOverrides","typeLabel":"object | null"},"issues":{"type":"object","description":"Issues associated with the step","properties":{"controls":{"type":"object","description":"Controls-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of step content issue","enum":["ILLEGAL_VARIABLE_IN_CONTROL_VALUE","INVALID_FILTER_ARG_IN_VARIABLE","INVALID_URL","MISSING_VALUE","TIER_LIMIT_EXCEEDED","UNSUPPORTED_PROPERTY","CHAT_CARD_LIMIT_EXCEEDED","CHAT_CARD_INVALID_BUTTON"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.controls","typeLabel":"object"},"integration":{"type":"object","description":"Integration-related issues","additionalProperties":{"type":"array","items":{"type":"object","properties":{"issueType":{"type":"string","description":"Type of integration issue","enum":["MISSING_INTEGRATION","INBOX_NOT_CONNECTED"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration.additionalProperties.items.[INDEX].issueType","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed message describing the issue","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration.additionalProperties.items.[INDEX].message","typeLabel":"string"},"variableName":{"type":"string","description":"Name of the variable related to the issue","uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration.additionalProperties.items.[INDEX].variableName","typeLabel":"string"},"severity":{"type":"string","description":"Blocking severity of the issue. `error` (default when omitted) blocks save; `warning` is a non-blocking notice.","enum":["error","warning"],"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration.additionalProperties.items.[INDEX].severity","typeLabel":"enum\u003cstring>"}},"required":["issueType","message"],"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration.additionalProperties.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration.additionalProperties","typeLabel":"object[]"},"uniqueKey":"steps.items.[INDEX].oneOf.10.issues.integration","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX].oneOf.10.issues","typeLabel":"object"},"stepResolverHash":{"type":"string","description":"Hash identifying the deployed Cloudflare Worker for this step","uniqueKey":"steps.items.[INDEX].oneOf.10.stepResolverHash","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"origin":{"type":"string","description":"Origin of the layout","enum":["novu-cloud","novu-cloud-v1","external"],"isRequired":true,"uniqueKey":"origin","typeLabel":"enum\u003cstring>"},"preferences":{"type":"object","description":"Preferences for the workflow","required":["default"],"properties":{"default":{"type":"object","description":"Default workflow preferences","required":["all","channels"],"properties":{"all":{"type":"object","description":"A preference for the workflow. The values specified here will be used if no preference is specified for a channel.","required":["enabled","readOnly"],"properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the workflow. If true, notification delivery is enabled by default for all channels. This setting can be overridden by the channel preferences.","default":true,"isRequired":true,"uniqueKey":"preferences.default.all.enabled","typeLabel":"boolean"},"readOnly":{"type":"boolean","description":"A flag specifying if the preference is read-only. If true, the preference cannot be changed by the Subscriber.","default":false,"isRequired":true,"uniqueKey":"preferences.default.all.readOnly","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"preferences.default.all","typeLabel":"object"},"channels":{"type":"object","description":"Preferences for different communication channels","additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the channel. If true, notification delivery is enabled.","default":true,"isRequired":true,"uniqueKey":"preferences.default.channels.additionalProperties.enabled","typeLabel":"boolean"}},"required":["enabled"],"uniqueKey":"preferences.default.channels.additionalProperties","typeLabel":"object"},"example":{"email":{"enabled":true},"sms":{"enabled":false}},"isRequired":true,"uniqueKey":"preferences.default.channels","typeLabel":"object"}},"isRequired":true,"uniqueKey":"preferences.default","typeLabel":"object"},"user":{"oneOf":[{"type":"object","description":"User-specific workflow preferences","required":["all","channels"],"properties":{"all":{"type":"object","description":"A preference for the workflow. The values specified here will be used if no preference is specified for a channel.","required":["enabled","readOnly"],"properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the workflow. If true, notification delivery is enabled by default for all channels. This setting can be overridden by the channel preferences.","default":true,"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.all.enabled","typeLabel":"boolean"},"readOnly":{"type":"boolean","description":"A flag specifying if the preference is read-only. If true, the preference cannot be changed by the Subscriber.","default":false,"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.all.readOnly","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.all","typeLabel":"object"},"channels":{"type":"object","description":"Preferences for different communication channels","additionalProperties":{"type":"object","properties":{"enabled":{"type":"boolean","description":"A flag specifying if notification delivery is enabled for the channel. If true, notification delivery is enabled.","default":true,"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.channels.additionalProperties.enabled","typeLabel":"boolean"}},"required":["enabled"],"uniqueKey":"preferences.user.oneOf.0.channels.additionalProperties","typeLabel":"object"},"example":{"email":{"enabled":true},"sms":{"enabled":false}},"isRequired":true,"uniqueKey":"preferences.user.oneOf.0.channels","typeLabel":"object"}},"uniqueKey":"preferences.user.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"preferences.user.oneOf.1","typeLabel":"null"}],"uniqueKey":"preferences.user","typeLabel":"object | null"}},"isRequired":true,"uniqueKey":"preferences","typeLabel":"object"},"status":{"type":"string","description":"Status of the workflow","enum":["ACTIVE","INACTIVE","ERROR"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"severity":{"type":"string","description":"Severity of the workflow","enum":["high","medium","low","none"],"isRequired":true,"uniqueKey":"severity","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Description of the workflow","uniqueKey":"description","typeLabel":"string"},"tags":{"description":"Tags associated with the workflow","type":"array","items":{"type":"string","uniqueKey":"tags.items.[INDEX]","typeLabel":"string"},"uniqueKey":"tags","typeLabel":"string[]"},"active":{"type":"boolean","description":"Whether the workflow is active","default":false,"uniqueKey":"active","typeLabel":"boolean"},"validatePayload":{"type":"boolean","description":"Enable or disable payload schema validation","uniqueKey":"validatePayload","typeLabel":"boolean"},"payloadSchema":{"oneOf":[{"type":"object","description":"The payload JSON Schema for the workflow","additionalProperties":true,"uniqueKey":"payloadSchema.oneOf.0","typeLabel":"object"},{"type":"null","description":"The payload JSON Schema for the workflow","additionalProperties":true,"uniqueKey":"payloadSchema.oneOf.1","typeLabel":"null"}],"uniqueKey":"payloadSchema","typeLabel":"object | null"},"isTranslationEnabled":{"type":"boolean","description":"Enable or disable translations for this workflow","default":false,"uniqueKey":"isTranslationEnabled","typeLabel":"boolean"},"agent":{"oneOf":[{"type":"object","description":"Optional agent assignment used to route this workflow through an agent's connected channels. Null when unassigned.","required":["identifier"],"properties":{"identifier":{"type":"string","description":"Public agent identifier used to route this workflow through an agent's connected channels.","isRequired":true,"uniqueKey":"agent.oneOf.0.identifier","typeLabel":"string"},"providers":{"type":"object","description":"Optional per-provider overrides keyed by providerId (e.g. novu-email-agent). Today only Novu Email replyTo is supported.","additionalProperties":{"type":"object","properties":{"replyTo":{"type":"string","uniqueKey":"agent.oneOf.0.providers.additionalProperties.replyTo","typeLabel":"string"}},"uniqueKey":"agent.oneOf.0.providers.additionalProperties","typeLabel":"object"},"uniqueKey":"agent.oneOf.0.providers","typeLabel":"object"}},"uniqueKey":"agent.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"agent.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent","typeLabel":"object | null"},"updatedBy":{"oneOf":[{"type":"object","description":"User who last updated the workflow","required":["_id"],"properties":{"_id":{"type":"string","description":"User ID","isRequired":true,"uniqueKey":"updatedBy.oneOf.0._id","typeLabel":"string"},"firstName":{"oneOf":[{"type":"string","description":"User first name","uniqueKey":"updatedBy.oneOf.0.firstName.oneOf.0","typeLabel":"string"},{"type":"null","description":"User first name","uniqueKey":"updatedBy.oneOf.0.firstName.oneOf.1","typeLabel":"null"}],"uniqueKey":"updatedBy.oneOf.0.firstName","typeLabel":"string | null"},"lastName":{"oneOf":[{"type":"string","description":"User last name","uniqueKey":"updatedBy.oneOf.0.lastName.oneOf.0","typeLabel":"string"},{"type":"null","description":"User last name","uniqueKey":"updatedBy.oneOf.0.lastName.oneOf.1","typeLabel":"null"}],"uniqueKey":"updatedBy.oneOf.0.lastName","typeLabel":"string | null"},"externalId":{"oneOf":[{"type":"string","description":"User external ID","uniqueKey":"updatedBy.oneOf.0.externalId.oneOf.0","typeLabel":"string"},{"type":"null","description":"User external ID","uniqueKey":"updatedBy.oneOf.0.externalId.oneOf.1","typeLabel":"null"}],"uniqueKey":"updatedBy.oneOf.0.externalId","typeLabel":"string | null"}},"uniqueKey":"updatedBy.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"updatedBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"updatedBy","typeLabel":"object | null"},"lastPublishedAt":{"oneOf":[{"type":"string","description":"Timestamp of the last workflow publication","uniqueKey":"lastPublishedAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Timestamp of the last workflow publication","uniqueKey":"lastPublishedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"lastPublishedAt","typeLabel":"string | null"},"lastPublishedBy":{"oneOf":[{"type":"object","description":"User who last published the workflow","required":["_id"],"properties":{"_id":{"type":"string","description":"User ID","isRequired":true,"uniqueKey":"lastPublishedBy.oneOf.0._id","typeLabel":"string"},"firstName":{"oneOf":[{"type":"string","description":"User first name","uniqueKey":"lastPublishedBy.oneOf.0.firstName.oneOf.0","typeLabel":"string"},{"type":"null","description":"User first name","uniqueKey":"lastPublishedBy.oneOf.0.firstName.oneOf.1","typeLabel":"null"}],"uniqueKey":"lastPublishedBy.oneOf.0.firstName","typeLabel":"string | null"},"lastName":{"oneOf":[{"type":"string","description":"User last name","uniqueKey":"lastPublishedBy.oneOf.0.lastName.oneOf.0","typeLabel":"string"},{"type":"null","description":"User last name","uniqueKey":"lastPublishedBy.oneOf.0.lastName.oneOf.1","typeLabel":"null"}],"uniqueKey":"lastPublishedBy.oneOf.0.lastName","typeLabel":"string | null"},"externalId":{"oneOf":[{"type":"string","description":"User external ID","uniqueKey":"lastPublishedBy.oneOf.0.externalId.oneOf.0","typeLabel":"string"},{"type":"null","description":"User external ID","uniqueKey":"lastPublishedBy.oneOf.0.externalId.oneOf.1","typeLabel":"null"}],"uniqueKey":"lastPublishedBy.oneOf.0.externalId","typeLabel":"string | null"}},"uniqueKey":"lastPublishedBy.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"lastPublishedBy.oneOf.1","typeLabel":"null"}],"uniqueKey":"lastPublishedBy","typeLabel":"object | null"},"issues":{"type":"object","description":"Runtime issues for workflow creation and update","additionalProperties":{"type":"object","properties":{},"uniqueKey":"issues.additionalProperties","typeLabel":"object"},"uniqueKey":"issues","typeLabel":"object"},"lastTriggeredAt":{"oneOf":[{"type":"string","description":"Timestamp of the last workflow trigger","uniqueKey":"lastTriggeredAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Timestamp of the last workflow trigger","uniqueKey":"lastTriggeredAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"lastTriggeredAt","typeLabel":"string | null"},"payloadExample":{"oneOf":[{"type":"object","description":"Generated payload example based on the payload schema","additionalProperties":true,"uniqueKey":"payloadExample.oneOf.0","typeLabel":"object"},{"type":"null","description":"Generated payload example based on the payload schema","additionalProperties":true,"uniqueKey":"payloadExample.oneOf.1","typeLabel":"null"}],"uniqueKey":"payloadExample","typeLabel":"object | null"}},"required":["name","_id","workflowId","slug","updatedAt","createdAt","steps","origin","preferences","status","severity"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","_id":"\u003cstring>","workflowId":"\u003cstring>","slug":"\u003cstring>","updatedAt":"\u003cstring>","createdAt":"\u003cstring>","steps":[{"controls":{"values":{"skip":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"body":"\u003cstring>","subject":"\u003cstring>","avatar":"\u003cstring>","primaryAction":{"label":"\u003cstring>","redirect":{"url":"\u003cstring>","target":"_self"}},"secondaryAction":{"label":"\u003cstring>","redirect":{"url":"\u003cstring>","target":"_self"}},"redirect":{"url":"\u003cstring>","target":"_self"},"disableOutputSanitization":false,"data":{}},"dataSchema":{},"uiSchema":{"group":"IN_APP","properties":{}}},"variables":{},"stepId":"\u003cstring>","_id":"\u003cstring>","name":"\u003cstring>","slug":"\u003cstring>","type":"in_app","origin":"novu-cloud","workflowId":"\u003cstring>","workflowDatabaseId":"\u003cstring>","controlValues":{"skip":{"and":[{"==":[{"var":"payload.tier"},"pro"]},{"==":[{"var":"subscriber.data.role"},"admin"]},{">":[{"var":"payload.amount"},"4"]}]},"body":"\u003cstring>","subject":"\u003cstring>","avatar":"\u003cstring>","primaryAction":{"label":"\u003cstring>","redirect":{"url":"\u003cstring>","target":"_self"}},"secondaryAction":{"label":"\u003cstring>","redirect":{"url":"\u003cstring>","target":"_self"}},"redirect":{"url":"\u003cstring>","target":"_self"},"disableOutputSanitization":false,"data":{}},"providerOverrides":{"slack":{"text":"{{payload.title}}","blocks":[{"type":"divider"}]},"whatsapp-business":{"type":"text","text":{"body":"{{payload.title}}"}},"pagerduty":{"severity":"warning","source":"novu","summary":"{{payload.title}}"}},"issues":{"controls":{},"integration":{}},"stepResolverHash":"\u003cstring>"}],"origin":"novu-cloud","preferences":{"default":{"all":{"enabled":true,"readOnly":false},"channels":{"email":{"enabled":true},"sms":{"enabled":false}}},"user":{"all":{"enabled":true,"readOnly":false},"channels":{"email":{"enabled":true},"sms":{"enabled":false}}}},"status":"ACTIVE","severity":"high","description":"\u003cstring>","tags":["\u003cstring>"],"active":false,"validatePayload":true,"payloadSchema":{},"isTranslationEnabled":false,"agent":{"identifier":"\u003cstring>","providers":{}},"updatedBy":{"_id":"\u003cstring>","firstName":"\u003cstring>","lastName":"\u003cstring>","externalId":"\u003cstring>"},"lastPublishedAt":"\u003cstring>","lastPublishedBy":{"_id":"\u003cstring>","firstName":"\u003cstring>","lastName":"\u003cstring>","externalId":"\u003cstring>"},"issues":{},"lastTriggeredAt":"\u003cstring>","payloadExample":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"2ca5d59a-9925-4e6e-a18d-4e1e559f5637":{"description":"Bad Request","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"c1e14097-7c9b-4c61-b5f8-b314d7a236e0":{"description":"Unauthorized","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"f41f0a00-9979-4f6a-bec1-ba76349aa4ad":{"description":"Forbidden","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"18924c71-8127-4fe7-b83d-8033ca8a6b3b":{"description":"Not Found","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"71abfd23-a79a-4ef4-8cd3-8ccc5c8a1fe6":{"description":"Method Not Allowed","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"a66f0482-dc49-4403-add6-65e819f03d3f":{"description":"Conflict","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"f75de544-df44-440e-b7be-18bc55a9faa3":{"description":"Payload Too Large","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"de7b3779-d5fc-4a56-bf4b-649545c82904":{"description":"URI Too Long","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"8730a5ea-9be9-4875-b238-bdbf33d98d5c":{"description":"Unsupported Media Type","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"6ed013f8-ccb5-4292-a0ad-e00c7b9fcd85":{"description":"Unprocessable Entity","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"errors":{"type":"object","description":"A record of validation errors keyed by field name","additionalProperties":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.messages.items.[INDEX]","typeLabel":"string"},"description":"List of validation error messages","example":["Field is required","Invalid format"],"isRequired":true,"uniqueKey":"errors.additionalProperties.messages","typeLabel":"string[]"},"value":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.4","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.5","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"errors.additionalProperties.value","typeLabel":"string | null | number | boolean | object | (string | null | number | boolean | object)[]"}},"required":["messages"],"uniqueKey":"errors.additionalProperties","typeLabel":"object"},"example":{"fieldName1":{"messages":["Field is required","Must be a valid email address"],"value":"invalidEmail"},"fieldName2":{"messages":["Must be at least 18 years old"],"value":17},"fieldName3":{"messages":["Must be a boolean value"],"value":true},"fieldName4":{"messages":["Must be a valid object"],"value":{"key":"value"}},"fieldName5":{"messages":["Field is missing"],"value":null},"fieldName6":{"messages":["Undefined value"]}},"isRequired":true,"uniqueKey":"errors","typeLabel":"object"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","errors":{"fieldName1":{"messages":["Field is required","Must be a valid email address"],"value":"invalidEmail"},"fieldName2":{"messages":["Must be at least 18 years old"],"value":17},"fieldName3":{"messages":["Must be a boolean value"],"value":true},"fieldName4":{"messages":["Must be a valid object"],"value":{"key":"value"}},"fieldName5":{"messages":["Field is missing"],"value":null},"fieldName6":{"messages":["Undefined value"]}},"message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"ef4d3126-b599-4ec7-9062-a7414334ec20":{"description":"The client has sent too many requests in a given amount of time. ","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"},"Retry-After":{"required":false,"description":"The number of seconds after which the client may retry the request that was previously rejected.","schema":{"type":"string"},"example":"8"}},"content":{"application/json":{"schema":{"type":"string","example":"API rate limit exceeded","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"API rate limit exceeded"}},"exampleType":"generated"}},"exampleType":"generated"},"d213ab3e-4a5f-478a-9653-71e883f199d1":{"description":"Internal Server Error","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"76269246-86ef-4d8f-9f7a-b588c533dd12":{"description":"The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"},"Retry-After":{"required":false,"description":"The number of seconds after which the client may retry the request that was previously rejected.","schema":{"type":"string"},"example":"8"}},"content":{"application/json":{"schema":{"type":"string","example":"Please wait some time, then try again.","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Please wait some time, then try again."}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"9fe3fcd5-77de-4369-a71e-145f28676422":{"secretKey":{"type":"apiKey","name":"Authorization","in":"header","description":"API key authentication. Allowed headers-- \"Authorization: ApiKey \u003cnovu_secret_key>\".","x-speakeasy-example":"YOUR_SECRET_KEY_HERE","scopes":[]}}},"servers":{"29cc13d7-64c7-40f9-8a35-9c01537b78f4":{"url":"https://api.novu.co"},"7588375a-aa7e-462d-a5bf-d94b8564f985":{"url":"https://eu.api.novu.co"}},"schemas":{"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd":{"type":"object","properties":{"component":{"type":"string","description":"Component type for the UI Schema Property","enum":["EMAIL_EDITOR_SELECT","CHAT_EDITOR_SELECT","LAYOUT_SELECT","BLOCK_EDITOR","EMAIL_BODY","TEXT_FULL_LINE","TEXT_INLINE_LABEL","IN_APP_BODY","IN_APP_AVATAR","IN_APP_PRIMARY_SUBJECT","IN_APP_BUTTON_DROPDOWN","IN_APP_DISABLE_SANITIZATION_SWITCH","DISABLE_SANITIZATION_SWITCH","URL_TEXT_BOX","DIGEST_AMOUNT","DIGEST_UNIT","DIGEST_TYPE","DIGEST_KEY","DIGEST_CRON","DELAY_AMOUNT","DELAY_UNIT","DELAY_TYPE","DELAY_CRON","DELAY_DYNAMIC_KEY","THROTTLE_TYPE","THROTTLE_WINDOW","THROTTLE_UNIT","THROTTLE_DYNAMIC_KEY","THROTTLE_THRESHOLD","THROTTLE_KEY","EXTEND_TO_SCHEDULE","SMS_BODY","CHAT_BODY","PUSH_BODY","TOOL_BODY","PUSH_SUBJECT","QUERY_EDITOR","DATA","LAYOUT_EMAIL","DESTINATION_METHOD","DESTINATION_URL","DESTINATION_HEADERS","DESTINATION_BODY","DESTINATION_RESPONSE_BODY_SCHEMA","DESTINATION_ENFORCE_SCHEMA_VALIDATION","DESTINATION_CONTINUE_ON_FAILURE","DESTINATION_TIMEOUT"],"x-speakeasy-unknown-values":"allow","isRequired":true},"placeholder":{"oneOf":[{"type":"string","description":"Placeholder for the UI Schema Property"},{"type":"number","description":"Placeholder for the UI Schema Property"},{"type":"boolean","description":"Placeholder for the UI Schema Property"},{"type":"object","description":"Placeholder for the UI Schema Property","additionalProperties":true},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"object","additionalProperties":true}]},"description":"Placeholder for the UI Schema Property"},{"type":"null"}]},"properties":{"type":"object","description":"Properties of the UI Schema","additionalProperties":{"$circularRef":"c11953c7-e7f2-453b-9bf8-5a6f2ccdf2bd"}}},"required":["component"]}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","name":"Authorization","in":"header","description":"API key authentication. Allowed headers-- \"Authorization: ApiKey \u003cnovu_secret_key>\".","x-speakeasy-example":"YOUR_SECRET_KEY_HERE","scopes":[]},"schema":{"title":"Authorization","type":"string","description":"API key authentication. Allowed headers-- \"Authorization: ApiKey \u003cnovu_secret_key>\".","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"secretKey","name":"Authorization"}],"title":"secretKey"}]},"originalFileLocation":"https://spec.speakeasy.com/novu/novu/json-development-with-code-samples"},"subdomain":"novu-c5de82d9","siteName":"Novu","title":"Update a workflow - Novu","contextualStarterQuestions":[{"_id":"6a4617931acb1ee4e52cba86","deploymentId":"6a3b890b89d2acbacf3fa68a","questionText":"Can I modify existing workflows?","status":"active","generatedBy":"contextual","path":"api-reference/workflows/update-a-workflow","createdAt":"2026-07-02T07:47:31.609Z","updatedAt":"2026-07-02T07:47:31.609Z","__v":0},{"_id":"6a4617931acb1ee4e52cba85","deploymentId":"6a3b890b89d2acbacf3fa68a","questionText":"What auth is required for updates?","status":"active","generatedBy":"contextual","path":"api-reference/workflows/update-a-workflow","createdAt":"2026-07-02T07:47:31.609Z","updatedAt":"2026-07-02T07:47:31.609Z","__v":0},{"_id":"6a4617931acb1ee4e52cba84","deploymentId":"6a3b890b89d2acbacf3fa68a","questionText":"How do I update a workflow?","status":"active","generatedBy":"contextual","path":"api-reference/workflows/update-a-workflow","createdAt":"2026-07-02T07:47:31.609Z","updatedAt":"2026-07-02T07:47:31.609Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-09T07:59:58.591Z","originalFileLocation":"api-reference/workflows/update-a-workflow.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=\"Updates the details of an existing workflow, here workflowId is the identifier of the workflow\">\u003cmeta data-mint-head name=\"application-name\" content=\"Novu\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update a workflow - Novu\">\u003cmeta data-mint-head property=\"og:description\" content=\"Updates the details of an existing workflow, here workflowId is the identifier of the workflow\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Novu\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.novu.co/api-reference/workflows/update-a-workflow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://novu-c5de82d9.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Update+a+workflow\u0026amp;description=Updates+the+details+of+an+existing+workflow%2C+here+**workflowId**+is+the+identifier+of+the+workflow\u0026amp;theme=1ee19fc55ed421ff750b0681\u0026amp;signature=cd032836b7ba54e251e80c63b99ac5c24b508fdb5dd2ab6fafcf20140207b581\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update a workflow - Novu\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Updates the details of an existing workflow, here workflowId is the identifier of the workflow\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://novu-c5de82d9.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Update+a+workflow\u0026amp;description=Updates+the+details+of+an+existing+workflow%2C+here+**workflowId**+is+the+identifier+of+the+workflow\u0026amp;theme=1ee19fc55ed421ff750b0681\u0026amp;signature=cd032836b7ba54e251e80c63b99ac5c24b508fdb5dd2ab6fafcf20140207b581\">\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/novu-c5de82d9/hif-BqO_gbG8zfWr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Novu\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0e121b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.novu.co/api-reference/workflows/update-a-workflow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/workflows/update-a-workflow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.novu.co/#organization\",\"name\":\"Novu\",\"url\":\"https://docs.novu.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/novu-c5de82d9/2Q_L4HxwUfLmJjB8/logo/light.svg?fit=max\u0026auto=format\u0026n=2Q_L4HxwUfLmJjB8\u0026q=85\u0026s=23e7050191303b6a0ac4a671dfed8df4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.novu.co#website\",\"name\":\"Novu\",\"url\":\"https://docs.novu.co\",\"publisher\":{\"@id\":\"https://docs.novu.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow#webpage\",\"url\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow\",\"name\":\"Update a workflow\",\"description\":\"Updates the details of an existing workflow, here workflowId is the identifier of the workflow\",\"dateModified\":\"2026-07-09T07:59:58.591Z\",\"isPartOf\":{\"@id\":\"https://docs.novu.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workflows \u0026 content\",\"item\":\"https://docs.novu.co/api-reference/workflows/workflow-schema\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workflows\",\"item\":\"https://docs.novu.co/api-reference/workflows/workflow-schema\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update a workflow\",\"item\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow#apireference\",\"headline\":\"Update a workflow\",\"name\":\"Update a workflow\",\"description\":\"Updates the details of an existing workflow, here workflowId is the identifier of the workflow\",\"url\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.novu.co/api-reference/workflows/update-a-workflow#webpage\"},\"dateModified\":\"2026-07-09T07:59:58.591Z\",\"publisher\":{\"@id\":\"https://docs.novu.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.novu.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Novu\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Novu","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Notify","pages":[{"title":"Notify","href":"/platform"}]},{"tab":"Agent Connect","pages":[{"title":"Agent Connect","href":"/agents"}]},{"tab":"API Reference","groups":[{"group":"Getting Started","pages":[{"title":"Novu REST API Reference","sidebarTitle":"Overview","href":"/api-reference"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Errors","href":"/api-reference/errors"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Rate Limiting","href":"/api-reference/rate-limiting"},{"title":"Idempotency","href":"/api-reference/idempotency"},{"title":"Payload Limits","href":"/api-reference/payload-limits"}]},{"group":"Notification delivery","icon":"send","pages":[{"group":"Events","expanded":false,"pages":[{"title":"Trigger event","openapi":"POST /v1/events/trigger","href":"/api-reference/events/trigger-event"},{"title":"Bulk trigger event","openapi":"POST /v1/events/trigger/bulk","href":"/api-reference/events/bulk-trigger-event"},{"title":"Broadcast event to all","openapi":"POST /v1/events/trigger/broadcast","href":"/api-reference/events/broadcast-event-to-all"},{"title":"Cancel triggered event","openapi":"DELETE /v1/events/trigger/{transactionId}","href":"/api-reference/events/cancel-triggered-event"}]},{"group":"Notifications","expanded":false,"pages":[{"title":"Notification event schema","sidebarTitle":"Schema","href":"/api-reference/notifications/notification-event-schema"},{"title":"List all events","openapi":"GET /v1/notifications","href":"/api-reference/notifications/list-all-events"},{"title":"Retrieve an event","openapi":"GET /v1/notifications/{notificationId}","href":"/api-reference/notifications/retrieve-an-event"}]},{"group":"Messages","expanded":false,"pages":[{"title":"Message schema","sidebarTitle":"Schema","href":"/api-reference/messages/message-schema"},{"title":"List all messages","openapi":"GET /v1/messages","href":"/api-reference/messages/list-all-messages"},{"title":"Delete a message","openapi":"DELETE /v1/messages/{messageId}","href":"/api-reference/messages/delete-a-message"},{"title":"Delete messages by transactionId","openapi":"DELETE /v1/messages/transaction/{transactionId}","href":"/api-reference/messages/delete-messages-by-transactionid"}]},{"group":"Activity","expanded":false,"pages":[{"title":"Track activity and engagement events","openapi":"POST /v2/inbound-webhooks/delivery-providers/{environmentId}/{integrationId}","href":"/api-reference/activity/track-activity-and-engagement-events"}]}]},{"group":"Agents","icon":"bot","pages":[{"title":"Agent schema","sidebarTitle":"Schema","href":"/api-reference/agents/agent-schema"},{"group":"Management","expanded":false,"pages":[{"title":"Create an agent","openapi":"POST /v1/agents","href":"/api-reference/agents/create-an-agent"},{"title":"List all agents","openapi":"GET /v1/agents","href":"/api-reference/agents/list-all-agents"},{"title":"Retrieve an agent","openapi":"GET /v1/agents/{identifier}","href":"/api-reference/agents/retrieve-an-agent"},{"title":"Update an agent","openapi":"PATCH /v1/agents/{identifier}","href":"/api-reference/agents/update-an-agent"},{"title":"Delete an agent","openapi":"DELETE /v1/agents/{identifier}","href":"/api-reference/agents/delete-an-agent"}]},{"group":"Runtime","expanded":false,"pages":[{"title":"Update an agent bridge","openapi":"PUT /v1/agents/{identifier}/bridge","href":"/api-reference/agents/update-an-agent-bridge"},{"title":"Send an agent reply","openapi":"POST /v1/agents/{agentId}/reply","href":"/api-reference/agents/send-an-agent-reply"}]},{"group":"Integrations","expanded":false,"pages":[{"title":"Create an agent integration","openapi":"POST /v1/agents/{identifier}/integrations","href":"/api-reference/agents/create-an-agent-integration"},{"title":"List agent integrations","openapi":"GET /v1/agents/{identifier}/integrations","href":"/api-reference/agents/list-agent-integrations"},{"title":"Update an agent integration","openapi":"PATCH /v1/agents/{identifier}/integrations/{agentIntegrationId}","href":"/api-reference/agents/update-an-agent-integration"},{"title":"Delete an agent integration","openapi":"DELETE /v1/agents/{identifier}/integrations/{agentIntegrationId}","href":"/api-reference/agents/delete-an-agent-integration"}]}]},{"group":"Data","icon":"database","pages":[{"group":"Subscribers","expanded":false,"pages":[{"title":"Subscriber schema","sidebarTitle":"Schema","href":"/api-reference/subscribers/subscriber-schema"},{"group":"Management","expanded":false,"pages":[{"title":"Create a subscriber","openapi":"POST /v2/subscribers","href":"/api-reference/subscribers/create-a-subscriber"},{"title":"Retrieve a subscriber","openapi":"GET /v2/subscribers/{subscriberId}","href":"/api-reference/subscribers/retrieve-a-subscriber"},{"title":"Update a subscriber","openapi":"PATCH /v2/subscribers/{subscriberId}","href":"/api-reference/subscribers/update-a-subscriber"},{"title":"Delete a subscriber","openapi":"DELETE /v2/subscribers/{subscriberId}","href":"/api-reference/subscribers/delete-a-subscriber"},{"title":"Search subscribers","openapi":"GET /v2/subscribers","href":"/api-reference/subscribers/search-subscribers"},{"title":"Bulk create subscribers","openapi":"POST /v1/subscribers/bulk","href":"/api-reference/subscribers/bulk-create-subscribers"}]},{"group":"Subscriptions","expanded":false,"pages":[{"title":"Retrieve subscriber subscriptions","openapi":"GET /v2/subscribers/{subscriberId}/subscriptions","href":"/api-reference/subscribers/retrieve-subscriber-subscriptions"}]},{"group":"Preferences","expanded":false,"pages":[{"title":"Retrieve subscriber preferences","openapi":"GET /v2/subscribers/{subscriberId}/preferences","href":"/api-reference/subscribers/retrieve-subscriber-preferences"},{"title":"Update subscriber preferences","openapi":"PATCH /v2/subscribers/{subscriberId}/preferences","href":"/api-reference/subscribers/update-subscriber-preferences"},{"title":"Bulk update subscriber preferences","openapi":"PATCH /v2/subscribers/{subscriberId}/preferences/bulk","href":"/api-reference/subscribers/bulk-update-subscriber-preferences"}]},{"group":"Credentials","expanded":false,"pages":[{"title":"Update provider credentials","openapi":"PUT /v1/subscribers/{subscriberId}/credentials","href":"/api-reference/subscribers/update-provider-credentials"},{"title":"Upsert provider credentials","openapi":"PATCH /v1/subscribers/{subscriberId}/credentials","href":"/api-reference/subscribers/upsert-provider-credentials"},{"title":"Delete provider credentials","openapi":"DELETE /v1/subscribers/{subscriberId}/credentials/{providerId}","href":"/api-reference/subscribers/delete-provider-credentials"}]},{"group":"Notification state","expanded":false,"pages":[{"title":"Retrieve subscriber notifications","openapi":"GET /v1/subscribers/{subscriberId}/notifications/feed","href":"/api-reference/subscribers/retrieve-subscriber-notifications"},{"title":"Update notifications state","openapi":"POST /v1/subscribers/{subscriberId}/messages/mark-as","href":"/api-reference/subscribers/update-notifications-state"},{"title":"Update all notifications state","openapi":"POST /v1/subscribers/{subscriberId}/messages/mark-all","href":"/api-reference/subscribers/update-all-notifications-state"},{"title":"Update subscriber online status","openapi":"PATCH /v1/subscribers/{subscriberId}/online-status","href":"/api-reference/subscribers/update-subscriber-online-status"},{"title":"Retrieve unseen notifications count","openapi":"GET /v1/subscribers/{subscriberId}/notifications/unseen","href":"/api-reference/subscribers/retrieve-unseen-notifications-count"},{"title":"Update notification action status","openapi":"POST /v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}","href":"/api-reference/subscribers/update-notification-action-status"}]}]},{"group":"Inbox","expanded":false,"pages":[{"group":"Counts","expanded":false,"pages":[{"title":"Retrieve subscriber notifications count","openapi":"GET /v2/subscribers/{subscriberId}/notifications/count","href":"/api-reference/subscribers/retrieve-subscriber-notifications-count"}]},{"group":"Read \u0026 seen","expanded":false,"pages":[{"title":"Mark a notification as read","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/read","href":"/api-reference/subscribers/mark-a-notification-as-read"},{"title":"Mark a notification as unread","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/unread","href":"/api-reference/subscribers/mark-a-notification-as-unread"},{"title":"Mark all notifications as read","openapi":"POST /v2/subscribers/{subscriberId}/notifications/read","href":"/api-reference/subscribers/mark-all-notifications-as-read"},{"title":"Mark notifications as seen","openapi":"POST /v2/subscribers/{subscriberId}/notifications/seen","href":"/api-reference/subscribers/mark-notifications-as-seen"}]},{"group":"Snooze","expanded":false,"pages":[{"title":"Snooze a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/snooze","href":"/api-reference/subscribers/snooze-a-notification"},{"title":"Unsnooze a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/unsnooze","href":"/api-reference/subscribers/unsnooze-a-notification"}]},{"group":"Archive","expanded":false,"pages":[{"title":"Archive a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/archive","href":"/api-reference/subscribers/archive-a-notification"},{"title":"Unarchive a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/unarchive","href":"/api-reference/subscribers/unarchive-a-notification"},{"title":"Archive all notifications","openapi":"POST /v2/subscribers/{subscriberId}/notifications/archive","href":"/api-reference/subscribers/archive-all-notifications"},{"title":"Archive all read notifications","openapi":"POST /v2/subscribers/{subscriberId}/notifications/read-archive","href":"/api-reference/subscribers/archive-all-read-notifications"}]},{"group":"Delete","expanded":false,"pages":[{"title":"Delete a notification","openapi":"DELETE /v2/subscribers/{subscriberId}/notifications/{notificationId}","href":"/api-reference/subscribers/delete-a-notification"},{"title":"Delete all notifications","openapi":"POST /v2/subscribers/{subscriberId}/notifications/delete","href":"/api-reference/subscribers/delete-all-notifications"}]},{"group":"Actions","expanded":false,"pages":[{"title":"Complete a notification action","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/complete","href":"/api-reference/subscribers/complete-a-notification-action"},{"title":"Revert a notification action","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/revert","href":"/api-reference/subscribers/revert-a-notification-action"}]}]},{"group":"Topics","expanded":false,"pages":[{"title":"Topic schema","sidebarTitle":"Schema","href":"/api-reference/topics/topic-schema"},{"group":"Management","expanded":false,"pages":[{"title":"Create a topic","openapi":"POST /v2/topics","href":"/api-reference/topics/create-a-topic"},{"title":"Retrieve a topic","openapi":"GET /v2/topics/{topicKey}","href":"/api-reference/topics/retrieve-a-topic"},{"title":"Update a topic","openapi":"PATCH /v2/topics/{topicKey}","href":"/api-reference/topics/update-a-topic"},{"title":"Delete a topic","openapi":"DELETE /v2/topics/{topicKey}","href":"/api-reference/topics/delete-a-topic"},{"title":"List all topics","openapi":"GET /v2/topics","href":"/api-reference/topics/list-all-topics"}]},{"group":"Subscriptions","expanded":false,"pages":[{"title":"Create topic subscriptions","openapi":"POST /v2/topics/{topicKey}/subscriptions","href":"/api-reference/topics/create-topic-subscriptions"},{"title":"Delete topic subscriptions","openapi":"DELETE /v2/topics/{topicKey}/subscriptions","href":"/api-reference/topics/delete-topic-subscriptions"},{"title":"Update a topic subscription","openapi":"PATCH /v2/topics/{topicKey}/subscriptions/{identifier}","href":"/api-reference/topics/update-a-topic-subscription"},{"title":"List topic subscriptions","openapi":"GET /v2/topics/{topicKey}/subscriptions","href":"/api-reference/topics/list-topic-subscriptions"},{"title":"Check topic subscriber","openapi":"GET /v1/topics/{topicKey}/subscribers/{externalSubscriberId}","href":"/api-reference/topics/check-topic-subscriber"},{"title":"Retrieve a topic subscription","openapi":"GET /v2/topics/{topicKey}/subscriptions/{identifier}","href":"/api-reference/topics/retrieve-a-topic-subscription"}]}]},{"group":"Contexts","expanded":false,"pages":[{"title":"Context schema","sidebarTitle":"Schema","href":"/api-reference/contexts/context-schema"},{"title":"Create a context","openapi":"POST /v2/contexts","href":"/api-reference/contexts/create-a-context"},{"title":"Retrieve a context","openapi":"GET /v2/contexts/{type}/{id}","href":"/api-reference/contexts/retrieve-a-context"},{"title":"Update a context","openapi":"PATCH /v2/contexts/{type}/{id}","href":"/api-reference/contexts/update-a-context"},{"title":"Delete a context","openapi":"DELETE /v2/contexts/{type}/{id}","href":"/api-reference/contexts/delete-a-context"},{"title":"List all contexts","openapi":"GET /v2/contexts","href":"/api-reference/contexts/list-all-contexts"}]},{"group":"Channel Connections","expanded":false,"pages":[{"title":"Create a channel connection","openapi":"POST /v1/channel-connections","href":"/api-reference/channel-connections/create-a-channel-connection"},{"title":"Retrieve a channel connection","openapi":"GET /v1/channel-connections/{identifier}","href":"/api-reference/channel-connections/retrieve-a-channel-connection"},{"title":"Update a channel connection","openapi":"PATCH /v1/channel-connections/{identifier}","href":"/api-reference/channel-connections/update-a-channel-connection"},{"title":"Delete a channel connection","openapi":"DELETE /v1/channel-connections/{identifier}","href":"/api-reference/channel-connections/delete-a-channel-connection"},{"title":"List all channel connections","openapi":"GET /v1/channel-connections","href":"/api-reference/channel-connections/list-all-channel-connections"}]},{"group":"Channel Endpoints","expanded":false,"pages":[{"title":"Create a channel endpoint","openapi":"POST /v1/channel-endpoints","href":"/api-reference/channel-endpoints/create-a-channel-endpoint"},{"title":"Retrieve a channel endpoint","openapi":"GET /v1/channel-endpoints/{identifier}","href":"/api-reference/channel-endpoints/retrieve-a-channel-endpoint"},{"title":"Update a channel endpoint","openapi":"PATCH /v1/channel-endpoints/{identifier}","href":"/api-reference/channel-endpoints/update-a-channel-endpoint"},{"title":"Delete a channel endpoint","openapi":"DELETE /v1/channel-endpoints/{identifier}","href":"/api-reference/channel-endpoints/delete-a-channel-endpoint"},{"title":"List all channel endpoints","openapi":"GET /v1/channel-endpoints","href":"/api-reference/channel-endpoints/list-all-channel-endpoints"}]}]},{"group":"Workflows \u0026 content","icon":"git-branch","pages":[{"group":"Workflows","expanded":false,"pages":[{"title":"Workflow schema","sidebarTitle":"Schema","href":"/api-reference/workflows/workflow-schema"},{"title":"Create a workflow","openapi":"POST /v2/workflows","href":"/api-reference/workflows/create-a-workflow"},{"title":"Retrieve a workflow","openapi":"GET /v2/workflows/{workflowId}","description":"Fetches details of a specific workflow by its unique identifier **workflowId**","href":"/api-reference/workflows/retrieve-a-workflow"},{"title":"Update a workflow","openapi":"PUT /v2/workflows/{workflowId}","href":"/api-reference/workflows/update-a-workflow"},{"title":"Delete a workflow","openapi":"DELETE /v2/workflows/{workflowId}","description":"Removes a specific workflow by its unique identifier **workflowId**","href":"/api-reference/workflows/delete-a-workflow"},{"title":"List all workflows","openapi":"GET /v2/workflows","href":"/api-reference/workflows/list-all-workflows"},{"title":"Sync a workflow","openapi":"PUT /v2/workflows/{workflowId}/sync","href":"/api-reference/workflows/sync-a-workflow"},{"title":"Retrieve workflow step","openapi":"GET /v2/workflows/{workflowId}/steps/{stepId}","href":"/api-reference/workflows/retrieve-workflow-step"},{"title":"Generate a step preview","openapi":"POST /v2/workflows/{workflowId}/step/{stepId}/preview","href":"/api-reference/workflows/generate-a-step-preview"}]},{"group":"Translations","expanded":false,"pages":[{"title":"Create a translation","openapi":"POST /v2/translations","href":"/api-reference/translations/create-a-translation"},{"title":"Retrieve a translation","openapi":"GET /v2/translations/{resourceType}/{resourceId}/{locale}","href":"/api-reference/translations/retrieve-a-translation"},{"title":"Delete a translation","openapi":"DELETE /v2/translations/{resourceType}/{resourceId}/{locale}","href":"/api-reference/translations/delete-a-translation"},{"title":"Retrieve a translation group","openapi":"GET /v2/translations/group/{resourceType}/{resourceId}","href":"/api-reference/translations/retrieve-a-translation-group"},{"title":"Delete a translation group","openapi":"DELETE /v2/translations/{resourceType}/{resourceId}","href":"/api-reference/translations/delete-a-translation-group"},{"title":"Import master translations JSON","openapi":"POST /v2/translations/master-json","href":"/api-reference/translations/import-master-translations-json"},{"title":"Retrieve master translations JSON","openapi":"GET /v2/translations/master-json","href":"/api-reference/translations/retrieve-master-translations-json"},{"title":"Upload master translations JSON file","openapi":"POST /v2/translations/master-json/upload","href":"/api-reference/translations/upload-master-translations-json-file"},{"title":"Upload translation files","openapi":"POST /v2/translations/upload","href":"/api-reference/translations/upload-translation-files"}]},{"group":"Layouts","expanded":false,"pages":[{"title":"Create a layout","openapi":"POST /v2/layouts","href":"/api-reference/layouts/create-a-layout"},{"title":"Delete a layout","openapi":"DELETE /v2/layouts/{layoutId}","href":"/api-reference/layouts/delete-a-layout"},{"title":"Duplicate a layout","openapi":"POST /v2/layouts/{layoutId}/duplicate","href":"/api-reference/layouts/duplicate-a-layout"},{"title":"Generate layout preview","openapi":"POST /v2/layouts/{layoutId}/preview","href":"/api-reference/layouts/generate-layout-preview"},{"title":"Get layout usage","openapi":"GET /v2/layouts/{layoutId}/usage","href":"/api-reference/layouts/get-layout-usage"},{"title":"List all layouts","openapi":"GET /v2/layouts","href":"/api-reference/layouts/list-all-layouts"},{"title":"Retrieve a layout","openapi":"GET /v2/layouts/{layoutId}","href":"/api-reference/layouts/retrieve-a-layout"},{"title":"Update a layout","openapi":"PUT /v2/layouts/{layoutId}","href":"/api-reference/layouts/update-a-layout"}]}]},{"group":"Platform \u0026 channels","icon":"settings","pages":[{"group":"Environments","expanded":false,"pages":[{"title":"Environment schema","sidebarTitle":"Schema","href":"/api-reference/environments/environment-schema"},{"title":"Create an environment","openapi":"POST /v1/environments","href":"/api-reference/environments/create-an-environment"},{"title":"Update an environment","openapi":"PUT /v1/environments/{environmentId}","href":"/api-reference/environments/update-an-environment"},{"title":"Delete an environment","openapi":"DELETE /v1/environments/{environmentId}","href":"/api-reference/environments/delete-an-environment"},{"title":"List all environments","openapi":"GET /v1/environments","href":"/api-reference/environments/list-all-environments"},{"title":"List environment tags","openapi":"GET /v2/environments/{environmentId}/tags","href":"/api-reference/environments/list-environment-tags"},{"title":"Compare resources between environments","openapi":"POST /v2/environments/{targetEnvironmentId}/diff","href":"/api-reference/environments/compare-resources-between-environments"},{"title":"Publish resources to target environment","openapi":"POST /v2/environments/{targetEnvironmentId}/publish","href":"/api-reference/environments/publish-resources-to-target-environment"}]},{"group":"Environment Variables","expanded":false,"pages":[{"title":"Environment variable schema","sidebarTitle":"Schema","href":"/api-reference/environment-variables/environment-variable-schema"},{"title":"Create a variable","openapi":"POST /v1/environment-variables","href":"/api-reference/environment-variables/create-a-variable"},{"title":"Retrieve a variable","openapi":"GET /v1/environment-variables/{variableKey}","href":"/api-reference/environment-variables/retrieve-a-variable"},{"title":"Update a variable","openapi":"PATCH /v1/environment-variables/{variableKey}","href":"/api-reference/environment-variables/update-a-variable"},{"title":"Delete a variable","openapi":"DELETE /v1/environment-variables/{variableKey}","href":"/api-reference/environment-variables/delete-a-variable"},{"title":"List all variables","openapi":"GET /v1/environment-variables","href":"/api-reference/environment-variables/list-all-variables"},{"title":"Retrieve a variable usage","openapi":"GET /v1/environment-variables/{variableKey}/usage","href":"/api-reference/environment-variables/retrieve-a-variable-usage"}]},{"group":"Integrations","expanded":false,"pages":[{"title":"Integration schema","sidebarTitle":"Schema","href":"/api-reference/integrations/integration-schema"},{"title":"Create an integration","openapi":"POST /v1/integrations","href":"/api-reference/integrations/create-an-integration"},{"title":"Update an integration","openapi":"PUT /v1/integrations/{integrationId}","href":"/api-reference/integrations/update-an-integration"},{"title":"Delete an integration","openapi":"DELETE /v1/integrations/{integrationId}","href":"/api-reference/integrations/delete-an-integration"},{"title":"List all integrations","openapi":"GET /v1/integrations","href":"/api-reference/integrations/list-all-integrations"},{"title":"List active integrations","openapi":"GET /v1/integrations/active","href":"/api-reference/integrations/list-active-integrations"},{"title":"Update integration as primary","openapi":"POST /v1/integrations/{integrationId}/set-primary","href":"/api-reference/integrations/update-integration-as-primary"},{"title":"Generate chat OAuth URL","openapi":"POST /v1/integrations/chat/oauth","href":"/api-reference/integrations/generate-chat-oauth-url"},{"title":"Auto-configure an integration for inbound webhooks","openapi":"POST /v1/integrations/{integrationId}/auto-configure","href":"/api-reference/integrations/auto-configure-an-integration-for-inbound-webhooks"}]}]}]},{"tab":"Resources","menu":[{"item":"Guides","pages":[{"title":"Guides","href":"/guides"}]},{"item":"Framework","pages":[{"title":"Framework","href":"/framework"}]},{"item":"Community","pages":[{"title":"Community","href":"/community"}]}],"pages":[{"title":"Resources","href":"/guides"}]}]},"title":"Update a workflow - Novu","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CBCH2P7b.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}